Im Mittelpunkt des Seminars stehen konkrete Tools, die die MDD-Vision, direkt aus Modellen weitere Modelle oder Code zu generieren, Wirklichkeit werden lassen. Dazu sollen einige Tools aus dem Open-Source-Bereich, aber auch kommerzielle Produkte untersucht werden.
Als "Testfall" für die Tools sollen dabei die in den Kursen 1793 (Software Engineering I -- Grundkonzepte der objektorientierten Softwareentwicklung) und 1794 (Software Engineering II -- Methodische Entwicklung von Benutzungsschnittstellen für Webapplikationen) vorgestellten Methoden umgesetzt werden. Konkret bedeutet dies etwa die Entwicklung von Transformationen, um automatisch
zu erzeugen. Teilweise werden die Methoden aus den Kursen nicht anwendbar sein, insbesondere bei der Untersuchung der kommerziellen Tools -- hier müssen dann Anpassungen an der Methodik vorgenommen werden bzw. die Methodik des Tools herausgearbeitet werden. Der Vorteil der oben genannten Transformationen ist, dass sie in den Kursen ausführlich behandelt wurden und daher als bekannt vorausgesetzt werden können.
Manche Tools sind aus CASE-Tools hervorgegangen und unterschiedlich an MDD/MDA-Bedürfnisse angepaßt worden (von der Ersetzung des Wortes "CASE" durch "MDA" in den Werbeprospekten bis hin zu vollständigen Neuentwicklungen).
Für alle Themen sind Grundbegriffe der MDD/MDA unabdingbar. Allerdings gibt es wahrscheinlich so viele Vorstellungen über MDD wie es Bücher zu dem Thema gibt -- auch wenn es sicherlich einen gemeinsamen Nenner gibt. Um innerhalb des Seminars eine sinnvolle Kommunikation zu ermöglichen, lesen Sie bitte die in der Literaturliste aufgeführten "obligatorischen" Artikel. Zu den einzelnen Tools und Themen ist jeweils eigene Literatur aufgeführt, i.A. wird hier die Dokumentation der Tools genannt.
Im Rahmen der Ausarbeitung und des Vortrags sollen bei allen Tools und Frameworks die Konzepte und Funktionen vorgestellt werden. Eine Beispielanwendung soll diese näher erläutern und Vor- und Nachteile des Tools zeigen. Stellen Sie dabei auch Konzepte und Ideen der MDD/MDA vor, insofern diese nicht in den obligatorischen Papieren ausführlich vorgestellt wurden, und beschreiben Sie, welche Sichtweise auf die MDD/MDA die Tools einnehmen.
Das Eclipse Modeling Framework (EMF) stellt in etwa eine Java-Implementierung der EMOF (Essential MOF, Teil der MOF) dar. Vereinfacht dargestellt können mit EMF Klassenmodelle als Java-Code generiert werden und so etwa m:n-Assoziationen einfach umgesetzt werden. Neben dem Metamodell (ecore) bietet EMF einen JSP-ähnlichen Codegenerator, der neben der Modellimplementierung auch baumbasierte Editoren als Eclipse-Plug-Ins generieren kann -- oder über eigene, sogenannte Java Emitter Templates (JET) beliebigen Text auf Basis von EMF-Modellen.
open ArchitectureWare (oAW) ist eines bekanntesten Open-Source-Werkzeuge im Bereich MDD. Es ist als Eclipse-Plug-In realisiert und in seiner aktuellen Version (4.0) sehr weit fortgeschritten. Es bietet eine eigene Template-Sprache und -Engine zur Codegenerierung und in der neuen Version auch eine Sprache für Modell-zu-Modell-Transformationen. In [SV05] wird oAW ebenfalls als Beispieltool verwendet.
AndroMDA ist ebenfalls ein MDA-Framework zur Code-Generierung. AndroMDA wird über die Kommandozeile mittels Maven/Ant bedient. In der aktuellen Version kann androMDA etwa mit MagicDraw oder Poseidon erstellte Modelle verarbeiten, dabei neben der Code-Generierung auch (OCL-)Constraints verarbeiten und weitere Tools, etwa ATL, anstoßen.
openMDX behauptet von sich, die "leading open source MDA platform" zu sein. Leider ist der Begriff "platform" ein nicht gerade gut definierter Begriff in der MDA, eine der gängigsten Definitionen findet sich in [MSUW04]: We define a platform as the specification of an execution environment for a set of models. openMDX stellt eine Plattform in diesem Sinne da, als abstrakte Modelle automatisch mittels openMDX auf eine technische Platform übertragen werden und dann, ohne dass die darunterliegende Platform weiter beachtet werden muss, ausführbar werden -- für den Entwickler ist dann openMDX die Platform. Die Geschäftslogik wird in Form von "Pure Java" implementiert und als Plug-In eingebunden.
Eclipse UML2 ist eine EMF-basierte Implementierung des Metamodells UML 2.0. Es bietet dabei alle Möglichkeiten der UML 2.0, insbesondere Profile. Über mitgelieferte Tools können UML2-Klassenmodelle in EMF-Modelle überführt werden, so dass diese dann der weiteren Verarbeitung etwa in EMF zu Verfügung stehen. Alternativ können die Modelle natürlich direkt weiterverarbeitet werden, UML2 bietet dafür XMI-Export an. Das Framework bringt keinen graphischen Editor mit sondern nur einen baumbasierten Editor als Eclipse-Plugin. Interessant ist insbesondere der Einsatz von Profilen, um so die UML um eigene domänenspezifische Konzepte zu erweitern.
Ein wichtiges Konzept bilden Domain Specific Languages (DSLs). DSLs ermöglichen eine problemadäquate Modellierung unter Einbeziehung der Domänenexperten. Um Modelle auf Grundlage von DSLs zu erstellen und zu editieren sind graphische Editoren ein wichtiges Hilfsmittel. GMF ermöglicht die automatische Erstellung von graphischen Editoren auf Basis EMF-basierter Modelle und des Eclipse Graphical Editing Frameworks (GEF).
Hinweis: Am 3. März 2006 soll mit Milestone 5 eine API-stabile Version von GMF herauskommen. Da GMF noch in der Entwicklung ist, müssen Sie bei Tutorials auf die richtigen Versionen achten!
Die ATL hat sich zu einer der verbreitesten Transformationssprachen entwickelt und wird auch von Tools wie oAW oder AndroMDA verwendet. ATL ist mittlerweile im Rahmen des Eclipse Generative Model Transformer (GMT) Projects verfügbar, für die Transformationssprache existiert ein Editor als Eclipse-Plugin. Außerdem sind zahlreiche vordefinierte Transformationen vorhanden.
2002 veröffentlichte die OMG ein "Request for Proposal" für eine Sprache "Query / View / Transformations" (QVT) für Modelltransformationen. Aus den eingereichten Vorschlägen hat die OMG nun eine Spezifikation erarbeitet, die die Syntax und Semantik dieser Sprache festlegt. Allerdings sind bislang keine vollständigen Implementierungen dieser Transformationssprache bekannt. Together 2006 beinhaltet erstmals wenigstens eine teilweise Umsetzung der QVT für operational formulierte Transformationsregeln. UMLX ist ein Plug-In für Eclipse zur graphischen Darstellung von Transformationsregeln unter Verwendung der QVT-Notation.
Laut Produktseite implementiert OptimalJ "modellgestützte Architektur Model Driven Architecture (MDA) komplett". Die Frage lautet dabei: Was versteht OptimalJ unter MDA -- QVT wird bspw. (noch) nicht unterstützt. Transformationen (von PIM nach PSM und von dort zum Code) werden über Patterns durchgeführt, wofür es eigene Sprache gibt. In [KWB03] wird die MDA anhand von OptimalJ erklärt.
ArcStyler unterstützt die Erstellung von Domänenklassenmodellen und die automatische Generierung von Code für J2EE- oder .net-Plattformen. ArcStyler ist eine "Architectural IDE" wie sie in [Hub02] beschrieben wird. Neben vorgefertigten können eigene Transformationen in ArcStyler eingebunden werden. interactive objects hat mit "Atomistic Information Mapping" (AIM) eine eigene Einsendung auf den OMG RFP "QVT" [OMG02a] vorgelegt, AIM kann als optionales Modul in ArcStyler verwendet werden.
"MDD wird wie MDA häufig mit den Zielen Portabilität und Interoperabilität verknüpft. objectiF setzt einen anderen Schwerpunkt: Abstraktion & Automation.". Dies bedeutet negativ betrachtet: objectiF legt den Schwerpunkt nicht auf eigene Transformationen und Flexibilität. Postiv betrachtet bietet objectiF ein mächtiges Werkzeug, um J2EE- und .net-Anwendungen zu erstellen.
Innovator bietet die typischen Funktionen eines Modellierungstools zum (graphischen) Erstellen von Modellen. Das Mapping zwischen Modellen geschieht über vordefinierte Mappings oder frei über spezielle Editiermöglichkeiten. Für die Textgenerierung wird oAW eingesetzt.
FernUniversität in Hagen, Lehrgebiet Software Engineering, D-58084 Hagen, Telefon: +49 (2331) 987-2964