Model-Driven Development

von Daniel Kiesenhofer

Mit stetig steigender Komplexität von IT-Projekten sind Modelle ein wesentlicher Faktor, um ein gemeinsames Verständnis der zu entwickelten Software zu bilden - sowohl für Entwickler als auch Fachabteilungen. Denn anders als Code sind Modelle auch für Projektbeteiligte ohne Programmiererfahrung lesbar. Der Model-Driven Development (= MDD) Ansatz macht sich diesen wesentlichen Vorteil zu Nutze. Dabei werden Softwaremodelle ins Zentrum der Entwicklung gehoben und Codegeneratoren, um auf Basis der Modelle Teile der Software automatisiert zu erzeugen, verwendet.

Ist MDD für jede Art von Projekt geeignet?

Nein, es eignet sich vor allem für komplexe Software mit vielen an der Entwicklung beteiligten Stakeholdern. Denn durch den höheren Detailgrad an zu entwickelnden Code steigt auch der Mehrwert von Modellen, welche durch Abstraktion diesen Detailgrad verringern und nur ein vereinfachtes Bild der Realität abbilden. Zudem eignet sich MDD sehr gut in Projekten bei denen die Funktionalität laufend erweitert wird. Für das Hinzufügen einer neuen Programmschnittstelle muss beispielsweise nur ein neues Schnittstellenmodell erstellt werden. Der Code für die Realisierung der Schnittstelle wird dann auf Basis dieses Modells automatisch erzeugt. Bei kleineren Projekten übersteigt jedoch der zusätzliche Entwicklungsaufwand den Nutzen und MDD könnte zu einem Overhead werden.

Step by Step Umsetzung

SEQIS GmbH

SEQIS GmbH

1. Auswahl Projektteam
Vor dem Projektstart ist die Auswahl des Entwicklungsteams ein wesentlicher Erfolgsfaktor. Denn MDD ist kein Selbstläufer. Es erfordert zumindest einen MDD-erfahrenen Entwickler, der den Rest des Teams in Bezug auf Methodik und Tools coacht. Auch ein guter Kontakt zu den Fachabteilungen ist wichtig, denn diese stellen domänenspezifisches Wissen bereit, welches für die Modellbildung benötigt wird.

2. Toolauswahl
Um die Modelle bestmöglich in den Entwicklungsprozess einzugliedern und daraus Code zu generieren müssen dafür die richtigen Tools ausgewählt werden. Ein in diesem Bereich verbreitetes Tool ist das Modelling Framework von Eclipse (EMF). Dieses macht Gebrauch von etablierten Modellierungssprachen wie UML um die zu entwickelnde Applikation in einem zusammenhängenden Model abzubilden, dem sogenannten ECore Model. Die im EMF-Framework integrierten Codegeneratoren können im Anschluss per Mausklick den modellbasierten Applikationscode erzeugen.

3. Abstimmung und Spezifikation
Ein weiteres Erfolgskriterium ist die Kommunikation zwischen Fachbereich und Entwicklung. Für die Modellerstellung ist beides erforderlich: Domänenspezifisches und technisches Wissen. Und nur durch gute Abstimmung kann daraus ein harmonisches Softwarekonzept entstehen.

4. Implementierung
Sobald die Modelle in einem release-fertigen Zustand sind, kann davon der Softwarecode erzeugt werden. Dieser reicht je nach Detailgrad der Modelle von einem Grundgerüst der Programmarchitektur bis zu einer vollständigen Implementierung der Software. Üblicherweise sind jedoch nicht alle Codeteile durch Modelle abbildbar bzw. ist dies aus Kostengründen nicht vertretbar. Als Entscheidungskriterien dafür dienen Wiederverwendbarkeit von Code, Time-To-Market von Releases und Softwarequalität. Je wichtiger diese sind, desto sinnvoller eignet sich die modellbasierte Implementierung.

Abbildung: https://wiki.eclipse.org/images/8/8d/Using_MDD_Eclipse_Technology_to_implement_SOA.pdf

Abbildung: https://wiki.eclipse.org/images/8/8d/Using_MDD_Eclipse_Technology_to_implement_SOA.pdf

Parameter, welche dagegen sprechen, sind Geschäftslogiken wie etwa mathematische Berechnungen, welche nicht sinnvoll modelliert werden können oder einfachere, änderungsresistente Programmteile wie eine Loginmaske. Die letztendliche Entscheidung über die Sinnhaftigkeit sollte gemeinsam durch MDD-Experten und Management getroffen werden. Dann folgt nach Erzeugung des Grundgerüsts (auch Skeleton genannt) eine nachfolgende Implementierung der fehlenden Geschäftslogik. MDD eignet sich auch für agile Entwicklungsmethoden, da iterative Erweiterungen in den Modellen auch immer automatisch die entsprechenden Programmteile erweitern.

5. Erweiterung
Mit steigender Anzahl der zu entwickelnden Systemkomponenten steigt der Vorteil von MDD, da Modelle bzw. deren Konzepte wiederverwendet werden können. Das Hinzufügen von neuen Schnittstellen oder Klassen ist daher sehr einfach. Komplett neue Programmlogiken hingegen erfordern initialen Mehraufwand bei der Modellierung und man sollte daher immer abwägen, ob dies vorteilhafter als eine manuelle Implementierung ist.

Fazit

Der MDD-Ansatz kann die Komplexität von großen Softwareprojekten wesentlich reduzieren und so zu einem besseren Gesamtverständnis aller Stakeholder beitragen. Dies resultiert in einer guten Kommunikation und Umsetzung der Anforderungen sowie Kontrolle, ob diese im System umgesetzt wurden. Bei kleinen Projekten steht jedoch der zusätzliche Aufwand für die Modellierung und Tooleinbettung in keinem guten Verhältnis zum zusätzlichen Nutzen und es soll daher auf andere Entwicklungsmodelle ausgewichen werden.

MDD Gegenüberstellung

Vorteile:

  • Steigende Qualität durch verbessertes Softwareverständnis und Zusammenarbeit aller Stakeholder
  • Reduktion von Entwicklungszeit durch Codegenerierung
  • Bessere Wiederverwendbarkeit aufgrund adaptierbarer Modelle
  • Up-To-Date Modelle bieten gute Projektdokumentation

Nachteile:

  • Zusätzliches Wissen über Modelle und Tools erforderlich
  • Modelle können oft nicht die gesamte Funktionalität der Software darstellen
  • Es kann oft nur ein Grundgerüst der zu entwickelnden Software automatisiert auf Basis der Modelle generiert werden
Artikel teilen
SEQIS News RSS
Newsletter

Um neue Beiträge per E-Mail zu erhalten, hier die E-Mail-Adresse eingeben.

Unsere Autoren

Informieren Sie sich über unsere Autoren und erfahren Sie mehr über unsere Spezialisten und ihre Fachbereiche:

Zu den Autoren

Sie haben eine Frage?

Zurück

Kommentare
(Bitte geben Sie eine gültige URL mit "http://" ein.)
  • SEQIS
  • Model-Driven Development
Zum Seitenanfang navigieren