MDA, MDE, MDSD, CASE,… Oder doch lieber klassisch?

Möchte man bei der Entwicklung etwas neues probieren, so stößt man häufig auf die Idee der Modellgetriebenen Entwicklung. Doch bereits nach kurzer Recherche erweckt es den Anschein, dass es eine schier unendliche Anzahl von Ideen und Systemen gibt. Doch wie so häufig verbirgt sich hinter einer Vielzahl von Bezeichnungen ein und dasselbe System. Ich möchte hier einmal einen kurzen Überblick bieten, wie das Chaos der Modellgetriebenen Architektur halbwegs greifbarer wird und zukünftige Recherchen möglicherweise erleichtert.
Als allgemeinen Gedanken kann man die sogenannte “Model Driven Architecture” (kurz: MDA) sehen. Diese beschreibt den Ansatz, bereits bei der Konzeptionierung und der anschließenden Modellierung eine klare Trennung von Funktionalität und Technik klarzustellen. Dabei unterteilt man eine solche Architektur in drei große Einzelbereiche:

  • Computation Independent Model (CIM)
  • Platform Independent Model (PIM)
  • Platform Specific Model (PSM)

In der ersten Instanz, der CIM, werden jegliche Modelle erfasst, die das Projekt / die Software umgangssprachlich beschreiben. Hier werden dem Team keine Grenzen gesetzt, welche Informationen sie in welchem Detailierungsgrad aufführt(durchaus auch in Fließtextform). Steht das ganze, kann nun zu der Plattform-unabhängigen Modellierung übergegangen werden. Dieser Schritt beinhaltet das Entwickeln von beispielsweise UML-Modellen, um Prozesse und Anwendung des Systems grafisch und abstrahiert darzustellen(Use-Case, Zustandsdiagramm, Prozessdiagramm, etc.).
Die ersten zwei Schritte benötigen keinerlei technischen Entwicklerkentnisse. Im letzten Schritt kommen wir schließlich zu der eigentlichen Modellgetriebenen Entwicklung. Der Grundgedanke hier ist, aus Plattformspezifischen Modellen Code zu generieren. Dabei stoßt man hier auf eine Vielzahl von Bezeichnungen für ein und das selbe Prinzip: MDSD (Model Driven Software Development), MDE (Model Driven Engineering), MDSE (Model Driven Software Engineering) oder einfach nur MDD (Model Driven Development). Durch die grafische Modellierung von beispielsweise Klassen und deren Attributen und Relationen zueinander erreicht man eine hohe Anschaulichkeit und die Möglichkeit, Standardcode bzw. die Programmstruktur zu generieren. Lediglich Funktionen und Methoden müssen noch hinzugefügt werden.
Diese Art der Entwicklung ist natürlich kein Wunderwerkzeug und entfaltet sein volles Potenzial erst bei wirklich großen Projekten, die über einen längeren Zeitraum gehen. Alleingestellt passiert es auch häufig, dass die Entwicklung mit Modellen nur zu Beginn genutzt wird oder aber der Aufwand der Modellierung als zu groß empfunden wird und somit schlechte Erfahrungen damit gemacht wurden. Deshalb empfiehlt sich der MDA-Ansatz, da für eine gewisse Dokumentation gesorgt wird und auch Abseits der Entwicklung Leute mitreden können, während es den Entwicklern selbst frei überlassen bleibt, in wie weit sie sprachenspezifisch Modelle erstellen und wie viel sie lieber klassisch entwickeln, denn die Basis ist trotzdem vorhanden.