oAW (openArchitectureWare)

openArchitectureWare (oAW) ist die Bezeichnung für ein Generator-Framework zur Unterstützung Modell-getriebener Software-Entwicklung, Model Driven Software Development (MDSD). Model Driven Architecture (MDA) ist ein Standard der Object Management Group (OMG) zur Modell-basierten Software-Entwicklung. Dabei realisiert oAW sowohl die Prüfung von Modellen als auch deren Transformation sowie die Generierung von Programmcode. Das Framework selbst ist in Java implementiert und bündelt verschiedene Werkzeuge.


OaW unterstützt die Verarbeitung von verschiedenen Modellen, wie Eclipse Modelling Framework (EMF), XMI-Dialekte von unterschiedlichen UML-Werkzeugen, das Eclipse UML2- XMI Format und XML. Für jedes dieser Formate ist ein sogenannter Adapter vorhanden, der die Abbildung des Formates auf interne Modell-Instanzen realisiert. Damit kann das Framework flexibel auf Erweiterungen reagieren, indem für neue Formate entsprechende Adapter generiert werden. Für die Instanziierung der Modelle nutzt oAW das Ecore-Metamodell des Eclipse Modelling Framework (EMF), welches ein als Open Source verfügbares Framework ist, das speziell die Generierung von Java-Programmcode aus Modellen unterstützt. Das Generator-Framework ist mit seinen Komponenten Workflow Engine, Xpand, Xtend, Check und Xtext Teil des Eclipse Modeling Projects und unter dem u.g. Link als Open Source verfügbar. Das Framework ermöglicht die Wiederverwendung bereits existierender Eclipse-Projekte und integriert sich zudem ohne Übergang in die Eclipse Entwicklungsumgebung. Von Vorteil ist die Verwendung vor allem in größeren und komplexeren Projekten. Als ein aktives Projekt der Eclipse Foundation unterliegt oAW einer stabilen, weiteren Entwicklung.

openArchitectureWare mit Java-Framework

openArchitectureWare (oAW) ist ein auf Basis von Java implementiertes Framework, das beliebige Transformationen von Modellen unterstützt. So sind neben Modell-zu-Modell-Transformationen auch Modell-zu-Code-Transformationen möglich, so dass sich oAW nicht nur auf die Generierung von Programmcode beschränkt. Darüber hinaus werden Funktionen zur Validierung von Modellen, Testen und Debugging zur Verfügung gestellt.

Überblick über das 
   openArchitectureWare-Framework

Überblick über das openArchitectureWare-Framework

In der Abbildung sind die wesentlichen Komponenten des Frameworks dargestellt. Dadurch das oAW modular aufgebaut ist, können alle Komponenten dynamisch erweitert und ausgetauscht werden. So können beliebige Modelltypen verwendet werden und es bestehen keinerlei sprachlichen Einschränkungen. Ebenso wird deutlich, dass die Template-Sprache Xpand, die funktionale Sprache Xtend und die Sprache Check alle auf demselben Typ- und Expression-System basieren. Die oAW-Sprachen werden alle durch komfortable Eclipse-Editoren unterstützt, die die Arbeit stark vereinfachen.

Es folgt eine kurze Beschreibung der einzelnen Komponenten:

Workflow-Engine. Realisiert einen Generator für beliebige Modell-Transformationen zum Beispiel zur Java-Code-Generierung. Die Workflow-Engine wird aus sogenannten Cartridges zusammengesetzt. Als Workflow wird eine Liste von Komponenten auf Basis von XML-Syntax bezeichnet. Die Komponenten (Workflow Components) werden nacheinander ausgeführt und kommunizieren über sogenannte Slots miteinander.

Xtext. Ein Framework, das auf Basis der Grammatik einer Domänen-spezifischen Sprache, den dazu passenden Parser, das Meta-Modell sowie einen in Eclipse integrierten Editor generiert.

Typsystem. Ein einheitliches Typsystem unterstützt das Zusammenwirken von Komponenten und Metamodellen.

Expression-System. Legt eine gemeinsame Basis aus einer Kombination von Java und Object Cons-traint Language (OCL) für die Sprach-Konstrukte von oAW fest.

Xpand. Definiert eine Template-Sprache zur Beschreibung der Regeln einer Modell-Transformation. Damit können u.a. die Regeln beschrieben werden, um aus einer Modell-Struktur Java Programcode zu generieren.

Xtend. Funktionale Sprache zur Erweiterung der Metamodell-Typen.

Check. Beschreibt die Randbedingungen der Metamodelle in einer OCL-ähnlichen Sprache.

Die zentrale Steuerung der Code-Generierung erfolgt über die Workflow-Engine. Ein einfaches Beispiel für den Ablauf bei der Ausführung einer Workflow-Datei könnte wie folgt aussehen:

  1. In einer Variablen wird der Zielordner für den zu generierenden Programmcode abgelegt.
  2. Um ein Modell zu laden, wird die Komponente X aufgerufen. Das Modell wird im Output-Slot abgelegt, so dass es für die anderen Komponenten verfügbar ist.
  3. Zur Überprüfung des Modells auf Korrektheit wird die Komponente Y aufgerufen. Bei einem Fehler wird der Workflow beendet und dieser in einem Log vermerkt.
  4. Die Komponente Xpand-Generator wird initiiert, der Java Programmcode wird generiert und im Zielordner abgelegt. Zudem sorgt ein JavaBeautifier für eine tadellose Optik des generierten Codes.
Dadurch das openArchitectureWare (oAW) von einer großen Entwicklergemeinde ständig weiterentwickelt und seit mehreren Jahren auch aktiv in der Industrie eingesetzt wird, hat sich oAW zu einem mächtigen Werkzeug entwickelt. OaW beschränkt sich nicht auf ein einziges Metametamodell und auch die Codegenerierung ist nicht nur auf eine vorgegebene Sprache ausgerichtet, da diese beliebig durch Xpand festgelegt werden kann. Dies ist schon ein erheblicher Fortschritt gegenüber den früher propagierten Case-Tools.

Dass oAW mittlerweile ein ausgereiftes Modellierungs-Framework realisiert, ist sicherlich auch an dessen Aufnahme in das Eclipse Modeling Project zu erkennen. Sofern es sich um Domänen-spezifische Problemstellungen handelt, bietet sich der Einsatz von Xtext auch aus Gründen der Flexibilität und Portierbarkeit an. Da die Entwicklung einer neuen Domain Specific Language (DSL) aufwändig ist, sollte Xtext jedoch nur zur Vereinfachung der Entwicklung auf längere Sicht gesehen oder sofern noch keine entsprechenden Modellierungs-Tools existieren, eingesetzt werden.

http://www.openarchitectureware.org/

http://www.eclipse.org/modeling/

http://www.oaw-dev.de/

Informationen zum Artikel
Deutsch:
Englisch: openArchitectureWare - oAW
Veröffentlicht: 27.10.2013
Wörter: 811
Tags: #Entwicklung, Codierung
Links: active, Adapter, cartridge, Code, Debugger