MDA
Modellgetriebene Architektur (MDA; engl. Model Driven Architecture, MDA) bezeichnet einen Modellgetriebenen Softwareentwicklungsansatz, der auf einer klaren Trennung von Funktionalität und Technik beruht.
MDA bezeichnet die Verwendung von Modellen und Generatoren zur Verbesserung der Softwareentwicklung. Dieses Konzept ist nicht neu. Schon in den Anfangszeiten der Informatik stützte man sich auf Modelle und entwickelte Generatoren, um schematischen Quellcode daraus zu erzeugen. MDA wird gelegentlich mit den CASE-Ansätzen der 1990er Jahre verwechselt. MDA und CASE unterscheiden sich jedoch in ihren grundlegenden Zielen.
Ziel der CASE-Ansätze war und ist es, Software möglichst vollständig automatisiert aus fachlichen Beschreibungen zu erstellen. Da sich die Automatisierung dabei auch auf den Bereich der Softwarearchitektur erstreckt, erwiesen sich die CASE-Ansätze als sehr unflexibel. Diese Tatsache sorgte in Verbindung mit der Proprietät der verfügbaren Werkzeuge dazu, dass sich CASE nicht durchsetzen konnte.
MDA verfolgt ein anderes Ziel. Es wird keine hundertprozentige Automatisierung angestrebt, sondern ein sinnvoller Anteil. Dieser variiert je nach fachlicher Anforderung zwischen 20 und 80 Prozent. Da die Architektur eines Systems vollständig manuell erzeugt wird, ist MDA hochgradig flexibel und gewährt, im Gegensatz zum CASE-Ansatz, die vollständige Kontrolle während des Entwicklungsprozesses.
Einer der wesentlichen Vorteile von MDA besteht darin, Systemdesigner und Softwareentwickler zu einer sorgfältigeren Konzeption der zu erstellenden Programme in der Entwurfsphase anzuhalten, was bei sehr komplexer Software, insbesondere bei der Erstellung von Standardsoftware, von großer Wichtigkeit ist.
Nachteilig ist der sehr hohe Abstraktionsgrad, der den Softwareentwicklern abverlangt wird. Bei kleineren oder weniger komplexen Anwendungen, z. B. bei Datenbankanwendungen als Individuallösung zur Unterstützung typischer Verwaltungsabläufe, wird der Aufwand einer abstrakten Definition aller Objekte und Prozesse oft als unangemessen hoch empfunden. Mit demselben Zeitaufwand lässt sich bei einigen alternativen Softwaretechnologien bereits die Software selbst erstellen.
Des weiteren erfordert eine automatisierte Transformation eines Modells häufig eine wesentlich formalere Beschreibung, als dies für die Transformation durch einen Menschen erforderlich ist. Beispielsweise sei eine Klasse Person mit dem Attribut geborenAm gegeben. Ein Programmierer braucht keine besonders detaillierte Beschreibung, um die Funktion gibAlterInJahren zu implementieren. Für eine automatische Transformation (zu Quellcode oder in ein anderes Modell) muss jedoch eine genaue Spezifikation vorliegen.
Vorteilhaft ist, dass Änderungen an der Anwendung im Modell vorgenommen werden. Diese werden durch eine erneute Codegenerierung in den Quellcode übernommen. Somit wird das Auseinanderlaufen von Modell und Code unterbunden. Insbesondere ein wild hacking, bei dem Änderungen im Quellcode nicht in das ursprünglich zugrunde liegende Modell übernommen werden und somit das Modell mit der Zeit fehlerhaft und letztendlich unbrauchbar wird, wird vermieden. Daraus ergibt sich, dass gerade der MDA-Ansatz optimal für ein iterativ-inkrementelles Vorgehensmodell geeignet ist und keineswegs einen Wasserfallansatz unterstützt oder gar fordert.


