Modellgetriebene Softwareentwicklung (MDSD)
Aktualisiert (Mittwoch, den 16. Juni 2010 um 21:55 Uhr) Geschrieben von: Thomas Schütz Samstag, den 03. April 2010 um 03:51 Uhr
Die Modellgetriebene Softwareentwicklung (engl. Model Driven Software Development oder MDSD) stellt formale Modelle ins Zentrum der Softwareentwicklung. Dadurch kann ein höherer Grad an Abstraktion und Automatisierung erreicht werden.
Abstraktion
Durch Abstraktion können wesentliche Prinzipien und Begriffe eines Anwendungsgebiets (einer Domäne) wie auch deren Beziehungen untereinander erfasst und formalisiert werden. Dadurch können Fakten und Zusammenhänge der Domäne sehr kompakt und präzise ausgedrückt werden. Die Arbeit des Domänenspezialisten kann dadurch wesentlich produktiver werden, manchmal um eine ganze Größenordnung. Auch die Nachvollziehbarkeit durch Dritte wird erheblich verbessert, da gute Abstraktionen zu einem hohen Grad an Selbstdokumentation führen.
Automatisierung
Die oben beschriebene Abstraktion erlaubt gleichzeitig die Automatisierung typischer Aufgaben und Abläufe. So können etwa durch Generierung von Code, Dokumentation und Tests aus den formalen Modellen viele Routinearbeiten ohne manuellen Eingriff erledigt werden. Das führt nicht nur zu einer beträchtlichen Beschleunigung der Entwicklung, sondern auch zu einer wesentlich verbesserten Qualität. Ein weiterer Vorzug der Formalisierung besteht in der Möglichkeit zu automatischer Validierung auf Modellebene.
Domänenspezifische Sprachen (DSL)
Das Ergebnis des oben beschriebenen Abstraktionsschrittes kann in eine Domänenspezifische Sprache (engl. Domain Specific Language oder DSL) gefasst werden. Man unterscheidet dabei textuelle und grafische DSLs.
Eine konkrete Syntax definiert die Art in der der Anwender Modelle editieren kann.
Textuelle DSLs
Die konkrete textuelle Syntax kann als Grammatik, häufig in Form einer EBNF, spezifiziert werden. Der Anwender kann mittels geeigneter Texteditoren die Modelle bearbeiten. Dies ist oft der schnellste und einfachste Weg zu konkreten Editoren.
Grafische DSLs
Eine konkrete, grafische Syntax entsteht, wenn den Elementen des Metamodells grafische Notationen zugeordnet werden. Beispiele für grafische DSLs sind Zustandsautomaten oder Workflow-Diagramme. Grafische Editoren sind aufwendiger in der Umsetzung als textuelle, sind jedoch für viele Anwendungsfälle übersichtlicher.
Metamodelle
Das Metamodell entspricht der abstrakten Syntax der DSL. Begriffe einer Domänenspezifischen Sprache können in Klassen und Assoziationen eines Metamodells übersetzt werden. Damit ist es möglich, einen "Satz" der DSL in eine Instanz des zugehörigen Metamodells zu übersetzen. Vom Metamodell aus können Transformationen in textuelle Sprachen (Codegeneratoren) oder andere Modelle (Model to Model Transformationen) erfolgen.
Codegenerierung
Neben nützlichen Dingen wie der Generierung von Dokumentation aus einem Modell erlaubt die Codegenerierung insbsondere die Erzeugung von Quelltext einer Programmiersprache. Dieser wird dann compiliert und womöglich mit einer Laufzeitbibliothek gebunden. Auf diese Weise kann man direkt aus dem Modell ausführbare Programme erzeugen.




