Modellierung mit OpenArchitectureWare

09.03.2009

Die modellgetriebene Softwareentwicklung ist mittlerweile ein Standard in vielen Projekten. Insbesondere das modellgestützte Generieren von Datenzugriffen oder Pflegemasken bringt viele Vorteile. Dafür einen Generator von Grund auf selbst zu bauen ist allerdings wenig sinnvoll. Der Markt bietet mittlerweile eine große Auswahl von Werkzeugen für den professionellen Einsatz. Ein ausgereifter Open-Source-Generator ist "OpenArchitectureWare" (OAW). Dieser ist in Java implementiert und als Eclipse-Plug-in verfügbar. Bei der Installation müssen Abhängigkeiten beachtet werden, die aber auf der Web-Seite dokumentiert sind.

Im modellgetriebenen Projekt beschreiben abstrakte Modelle auf einem höheren Abstraktionsniveau wesentliche Teile der Fachlichkeit. Eine Stärke von OAW ist der Import vieler unterschiedlicher Modellarten: ob klassische UML-Modelle, XML oder textbasierende DSLs (domain specific languages) –

OAW definiert eine eigene Template-Sprache, mit der die Baumuster für die zu erzeugenden Artefakte beschrieben werden. Die Modellinformationen fließen in diese Muster ein und vervollständigen die zu generierenden Artefakte. OAW bietet den üblichen Eclipse-Komfort wie Syntax-Highlighting, Eclipse-Linking und Debugging der Generierung. Die Einarbeitung in OAW und der Umgang damit funktionieren sehr gut. Anleitungen und Beispielprojekte sind verfügbar.

Die Konfiguration der Generierung erfolgt über XML-Dateien, die die wesentlichen Komponenten und das Zusammenspiel organisieren: Import der Modelle, Definieren der Ausgabeverzeichnisse und Starten der Templates.

Mit OAW bekommt man alles an die Hand, um sich individuelle Templates zu erstellen. Besonders der pragmatische Ansatz mit frei definierten Modellen als DSLs hilft auch in großen Projekten, flexibel und produktiv zu sein. Fertige Templates (zum Beispiel Spring und Hibernate) sind auf der Fornax-Plattform zu finden.

(Heiko Spindler, Architect bei Opitz Consulting, Bad Homburg)

CW-Fazit: OAW ist ein ausgereiftes Werkzeug für die modellgetriebene Entwicklung in Softwareprojekten.