Einführung in die Modell-getriebene Software-Entwicklung

Vor einigen Jahren gab es große Erwartungen an die modellgetriebene Software-Entwicklung. Recht bekannt ist der Ansatz der „Model Driven Architecture“ (MDA) der Object Management Group (OMG). Zwischenzeitlich ist es um das Thema recht ruhig geworden. Der erwartete Run auf die modellgetriebenen Ansätze ist ausgeblieben. Nach wie vor wird der größte Teil der Software von Hand codiert. Das englischsprachige Buch „Model-Driven Software Engineering in Practice“ (Anzeige) macht deutlich, dass sich einiges getan hat und dass es durchaus lohnenswert sein könnte, sich ernsthaft mit den Potenzialen der modellgetriebenen Software-Entwicklung auseinanderzusetzen.

Das Buch gibt einen wirklich umfassenden Überblick über das Thema und erklärt die diversen Konzepte verständlich und nachvollziehbar. Einen gewissen IT-Hintergrund und Kenntnisse der Software-Entwicklung sollte man allerdings schon haben. In den ersten Kapiteln erläutern die Autoren die Grundlagen und Einsatzmöglichkeiten des Modell-Driven Software Engineering (MDSE). Hier erfährt man, wie die einzelnen Puzzle-Stücke des MDSE-Ansatzes zusammenpassen. Als normaler Entwickler hat man meist wenig mit Meta-Modellierung und Modell-Transformationen zu tun. Wer sich mit MDSE beschäftigt, muss sich hingegen schon mit diesen Begriffen auseinandersetzen. MDSE kann nicht nur eingesetzt werden um Quellcode zu generieren. Mann kann beispielsweise auch Dokumentationen und Testspezifikationen aus Modellen erzeugen. Auch die Integration unterschiedlicher Systeme und das Reverse Engineering von Altsystemen lassen sich durch den modellgetriebenen Ansatz unterstützen.

Der Einsatz modellgetriebener Verfahren hat Auswirkungen auf den Software-Entwicklungsprozess. Schließlich wird der Anteil der eigentlichen Programmiertätigkeit zugunsten der Modellierung reduziert. Insbesondere in der agilen Entwicklung wird eine umfassende Modellierung häufig kritisch betrachtet. Andererseits sind Modelle im MDSE keine bloßen Dokumentationen mehr, sondern letztlich ausführbare Artefakte. Anders als bei manuell umzusetzenden Spezifikationen können Modelländerungen sehr schnell durchgeführt und in lauffähige Software überführt werden. Dies lässt sich hervorragend mit den kurzen Iterationszyklen agiler Entwicklungsmodelle vereinbaren.

Ausführlich beschäftigt sich das Buch mit Modellierungssprachen. Ursprünglich wollte man die UML (Unified Modeling Language) als einheitliche Sprache für möglichst viele Bereiche nutzen. Allerdings stellte man fest, dass die Anforderungen verschiedener Anwendungsbereiche zu unterschiedlich waren um sie komplett durch eine einzige Sprache abzudecken. Eine Möglichkeit besteht darin, die UML mit Hilfe verschiedener Mechanismen um Konstrukte für verschiedene Einsatzzwecke zu erweitern, z. B. für die Spezifikation von Tests, Service-orientierten Architekturen oder Echtzeitsystemen. Alternativ kann man speziell auf bestimmte Anwendungsdomänen zugeschnittene Sprachen verwenden. Beispielsweise ist BPMN eine solche Domain-specific Language (DSL) für die Domäne der Geschäftsprozesse.

Liegt für den gewünschten Anwendungsbereich keine geeignete Sprache vor, so kann man eine eigene DSL entwickeln. Die Autoren erläutern den Entwurf und den Einsatz einer solchen Sprache am Beispiel der Spezifikation einfacher Webanwendungen zur Erfassung und Pflege von Daten. Hierbei müssen die abstrakte Syntax und die konkrete Syntax spezifiziert werden. Es muss also einerseits definiert werden, welche Inhalte und Zusammenhänge modellierbar sein sollen, andererseits muss festgelegt werden, wie diese Inhalte grafisch oder textuell dargestellt werden. Eine neue Sprache ist aber nicht besonders nützlich, wenn es keine geeigneten Tools, wie z. B. Editoren und Transformatoren gibt, die Modelle in dieser Sprache verstehen. Die Autoren stellen verschiedene Werkzeuge zur Spezifikation und späteren Nutzung von DSLs vor, unter anderem das Eclipse Modeling Framework (EMF) mit der Metamodellierungssprache Ecore und das Graphical Modeling Framework (GMF) für die grafische Notation.

Hat man die geeignete Sprache gefunden oder selbst entwickelt, so kann man nun Modelle erstellen. Damit aus ihnen ausführbarer Code wird, müssen sie übersetzt werden. Hierfür benötigt man geeignete Transformationen, die selbst wiederum mit Hilfe von Transformationssprachen beschrieben werden müssen, damit sie von einem entsprechenden Generator übersetzt werden können. Häufig erfolgt die Transformation in mehreren Schritten. Zum Beispiel kann ein fachlich orientiertes, Plattform-unabhängiges Modell zunächst in ein Modell für eine spezifische technische Plattform überführt werden (eine sogenannte Modell-zu-Modell-Transformation). Dieses wird dann mit Hilfe einer Modell-zu-Text-Transformation in ausführbaren Code übertragen. Wie man solche Transformationen entwickelt und welche Tools hierfür eingesetzt werden können, wird wiederum detailliert und gut nachvollziehbar anhand der Beispiel-Domäne „Web-Anwendung“ beschrieben.

Beim Lesen des Buches wird deutlich, dass der Einsatz von modellgetriebener Software-Entwicklung zumindest derzeit noch recht aufwändig ist. Die beschriebenen Vorgehensweisen dürften sich meist erst dann lohnen, wenn ein Team oder eine Softwarefirma eine Vielzahl von vergleichbaren Anwendungen entwickeln möchte. Schließlich stellt die Entwicklung oder Anpassung einer Modellierungssprache und die Programmierung von Transformationen einen Aufwand dar, der sich erst bezahlt macht, wenn diese mehrfach wiederverwendet werden. Es wäre hilfreich, wenn die MDSE-Community nicht nur Konzepte und Werkzeuge für die Entwicklung von Sprachen und Transformationen bereitstellen würde, sondern auch bereits fertige Domänen-spezifische Sprachen und Generatoren für bestimmte Anwendungsgebiete.

Interessanterweise gibt es dafür ein Beispiel: Die Firma Webratio bietet ein Tool für die modellbasierte Entwicklung von Web-Anwendungen, das auf dem beschriebenen MDSE-Konzept basiert. Das ist kein Zufall. Einer der Autoren gehört zu den Gründern von Webratio. Auch wenn es prinzipiell lobenswert ist, dass er das Buch nicht als Werbeplattform nutzt, wäre eine kurze Beschreibung des Webratio-Ansatzes als Beispiel für eine kommerzielle Umsetzung eine sinnvolle Ergänzung gewesen. Solange nur ein generischer Baukasten verschiedener Open Source-Tools zur Verfügung steht, dürfte die Eingangshürde für die meisten Entwicklungsteams zu hoch sein.


Marco Brambilla, Jordi Cabot, Manuel Wimmer:
Model-Driven Software Engineering in Practice.
Morgan & Claypool 2012.
Das Buch bei amazon (Anzeige)