Ausarbeitung
Ausarbeitung
Ausarbeitung
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Westfälische Wilhelms-Universität Münster<br />
<strong>Ausarbeitung</strong><br />
AndroMDA<br />
im Rahmen des Seminars „Ausgewählte Themen des Software Engineering“<br />
Irina Thome<br />
Themensteller: Prof. Dr. Herbert Kuchen<br />
Betreuer: Christian Arndt<br />
Institut für Wirtschaftsinformatik<br />
Praktische Informatik in der Wirtschaft
Inhaltsverzeichnis<br />
1 Einleitung................................................................................................................... 3<br />
2 Model Driven Architecture........................................................................................ 4<br />
3 AndroMDA................................................................................................................ 7<br />
3.1 Architektur von AndroMDA ............................................................................ 7<br />
3.2 Die Funktionsweise von AndroMDA ............................................................... 8<br />
3.3 AndroMDA Cartridges ..................................................................................... 9<br />
4 Arbeiten mit AndroMDA ........................................................................................ 12<br />
4.1 Entwicklungsumgebung.................................................................................. 12<br />
4.2 Implementierung eines Shop-Systems als Beispielanwendung...................... 13<br />
4.3 Kritische Würdigung des Entwicklungsprozesses mit AndroMDA ............... 15<br />
5 Zusammenfassung und Ausblick............................................................................. 17<br />
6 Literaturverzeichnis ................................................................................................. 18<br />
II
Kapitel 1: Einleitung<br />
1 Einleitung<br />
Model Driven Architecture (MDA) verändert die Sichtweise auf die Entwicklung von<br />
Software grundlegend. Modelle werden in den Mittelpunkt des Entwicklungsprozesses<br />
gestellt und dienen nicht länger nur als Dokumentation, sondern als wesentliche<br />
Grundlage für den erstellten Quellcode. Software-Entwickler sollen durch Tools dabei<br />
unterstützt werden, Code aus den Modellen zu generieren. Ferner wird eine<br />
Unabhängigkeit von und Portabilität zwischen verschiedenen Plattformen angestrebt.<br />
AndroMDA ist ein weit verbreitetes Open-Source-Tool, das dem MDA-Paradigma<br />
entspricht. Die vorliegende Arbeit soll einen Einblick darin geben, wie MDA-<br />
Anforderungen durch AndroMDA umgesetzt werden. Dazu wird – nach einer kurzen<br />
Klärung der Begriffe rund um MDA – die Architektur von AndroMDA beschrieben. Im<br />
Anschluss wird der Prozess der Codegenerierung dargestellt. Wegen der zentralen Rolle<br />
von Cartridges für AndroMDA werden diese herausgegriffen und eingehend betrachtet.<br />
Dieser theoretische Teil wird im dritten Abschnitt an Hand eines praktischen Beispiels<br />
näher erläutert und demonstriert. Dabei sollen die Grundprinzipien von MDA<br />
veranschaulicht werden. Den Abschluss bildet ein Fazit, das die Möglichkeiten von<br />
AndroMDA bezüglich der automatisierten Codegenerierung zusammenfasst.<br />
3
Kapitel 2: Model Driven Architecture<br />
2 Model Driven Architecture<br />
Model Driven Architecture (MDA) stellt ein Framework für die Entwicklung von<br />
Software dar. MDA wurde von der Object Management Group (OMG) entwickelt und<br />
in [OMG03] spezifiziert. Bei der OMG handelt es sich um ein internationales<br />
Konsortium, das sich mit der Entwicklung von herstellerunabhängigen Standards für die<br />
objektorientierte Programmierung beschäftigt.<br />
Die traditionelle Methode zur Software-Entwicklung folgt nach [KWB03, Kapitel 1] in<br />
der Regel einem ähnlichen Ablauf wie dem in Abb. 1 dargestellten. Besonders in den<br />
frühen Phasen werden neben textuellen Beschreibungen auch Modelle generiert, die im<br />
späteren Entwicklungsprozess jedoch lediglich zur Dokumentation dienen. Da in der<br />
Praxis Iterationen des Prozesses aus Zeit- und Kostengründen hauptsächlich die<br />
späteren Entwicklungsphasen umfassen, entfernt sich die tatsächliche Implementierung<br />
zunehmend von den Modellen, die so ihre Bedeutung verlieren. Das führt zu Problemen<br />
bei der Wartung und Weiterentwicklung der Systeme, wenn außer den initialen<br />
Beschreibungen und Modellen keine aktuelle Dokumentation vorhanden ist. Weitere<br />
Schwierigkeiten ergeben sich aus der schnellen technologischen Entwicklung im<br />
Bereich der Software-Industrie und der damit entstehenden Notwendigkeit, Systeme<br />
portabel und interoperabel zu gestalten.<br />
MDA stellt im Gegensatz zum traditionellen Ansatz Modelle in den Mittelpunkt des<br />
Software-Entwicklungs-Prozesses. Obwohl die Phasen des Entwicklungsprozesses<br />
gleich bleiben (vgl. Abb. 1), werden nunmehr als Hauptartefakte formale Modelle<br />
generiert, die von einem Computer verarbeitet werden können. Es existieren die<br />
folgenden Modelltypen (vgl. [OMG03]):<br />
Computer Independent Model (CIM): Das CIM beschreibt die fachlichen<br />
Anforderungen an das spätere System und beinhaltet Geschäftsabläufe, Mitarbeiter,<br />
Schnittstellen usw.<br />
Platform Independent Model (PIM): Ein Model mit hohem Abstraktionsniveau, welches<br />
die Struktur des Systems unabhängig von der späteren Implementierung beschreibt. Das<br />
PIM enthält „die zu verwendenden Komponenten sowie deren Funktionalitäten und<br />
Interaktionen“ [TBH04, S. 349].<br />
4
Kapitel 2: Model Driven Architecture<br />
Platform Specific Model (PSM): Ein PIM wird in ein oder mehrere PSM transformiert,<br />
die aus Entwicklersicht auf Details der Implementierung eingehen. In der Regel wird für<br />
jede Plattform ein eigenes PSM erstellt, das typischerweise Konstrukte und Begriffe der<br />
jeweiligen Technologie enthält.<br />
Code: Abschließend werden die PSM in Code umgewandelt. Diese Umwandlung wird<br />
durch die große Nähe eines PSM zu der entsprechenden Technologie vereinfacht.<br />
Traditioneller Ablauf der Software<br />
Entwicklung<br />
Anforderungen<br />
Hauptsächlich<br />
Text<br />
Ablauf der SoftwareEntwicklung mit<br />
MDA<br />
Anforderungen<br />
CIM<br />
Analyse<br />
Diagramme<br />
und Text<br />
Analyse<br />
PIM<br />
Systemnahes Design<br />
Diagramme<br />
und Text<br />
Systemnahes Design<br />
PSM<br />
Code<br />
Code<br />
Code<br />
Code<br />
Testen<br />
Testen<br />
Code<br />
Code<br />
Deployen<br />
Deployen<br />
Abbildung 1: Ablauf der Software-Entwicklung mit und ohne MDA (vgl. [KWB03], S. 3, S. 7)<br />
Die Umwandlung von PIM zu PSM und von PSM zu Code wird im MDA-Prozess<br />
durch entsprechende Werkzeuge unterstützt. Eine vollständige Generierung von<br />
Anwendungen aus einem PIM ist zur Zeit zwar nicht möglich, jedoch können lauffähige<br />
Anwendungen mit Basisfunktionalitäten bereits automatisiert erstellt werden.<br />
Das Augenmerk der Entwickler verlagert sich im MDA-Prozess auf die Entwicklung<br />
des PIM. [KWB03] beschreibt die Vorteile durch den Einsatz von MDA wie folgt: Die<br />
Produktivität kann deutlich gesteigert werden, wenn ein Großteil des Codes automatisch<br />
erstellt wird. Ferner wird die Portabilität erhöht, da verschiedene plattformspezifische<br />
Modelle aus demselben PIM generiert werden können. Zur Verbesserung der<br />
5
Kapitel 2: Model Driven Architecture<br />
Interoperabilität bietet MDA die Möglichkeit, sog. Bridges zu generieren, die eine<br />
Übersetzung zwischen Modellen für verschiedene Plattformen auf PSM- oder Code-<br />
Ebene ermöglichen. Schließlich wird die Dokumentation und Wartung der Systeme<br />
erleichtert, da die Modelle konsistent und aktuell gehalten werden. [TBH04] nennt die<br />
durch MDA gesteigerte Qualität der Software als weiteren Vorteil.<br />
6
Kapitel 3: AndroMDA<br />
3 AndroMDA<br />
3.1 Architektur von AndroMDA<br />
Bei AndroMDA (gesprochen: Andromeda) handelt es sich um einen Open Source<br />
MDA-Generator, der über das Webportal „SourceForge.net“ verwaltet wird. Die<br />
offizielle Homepage unter [And07a] beinhaltet die Dokumentation und ein Forum für<br />
den Support. Die aktuelle stabile Version ist AndroMDA 3.2. Kurz vor Fertigstellung<br />
der vorliegenden Arbeit wurde AndroMDA 4.0-M1-SNAPSHOT veröffentlicht, jedoch<br />
konnten die Eigenschaften dieser Version hier nicht weiter berücksichtigt werden.<br />
Das Ziel von AndroMDA ist es, die Arbeit der Entwickler zu erleichtern und die<br />
Transformation von PIM in PSM zu übernehmen. Es kann zwar keine vollständige<br />
Anwendung aus einem PIM direkt erstellt werden, der Entwickler kann sich jedoch auf<br />
die Implementierung der Geschäftslogik konzentrieren. Langwierige, redundante<br />
Aufgaben werden von AndroMDA automatisiert erledigt.<br />
Abbildung 2: Architektur von AndroMDA (in Anlehnung an [Dew06] und [Kar06])<br />
AndroMDA weist eine modulare Struktur auf (vgl. Abb. 2). Die Kernkomponente stellt<br />
ein template-basierter Generator dar. Dieser erhält Modelle im XMI-Format (XML<br />
Metadata Exchange) als Input und generiert aus diesen Komponenten der Anwendung,<br />
entweder als vollständigen Code oder als vom Entwickler anzupassende<br />
7
Kapitel 3: AndroMDA<br />
Codefragmente. Mit Hilfe von Plugins (sog. Cartridges und Translation Libraries)<br />
können Komponenten für verschiedene Programmiersprachen oder Technologien<br />
erstellt werden. Durch das Auswechseln der Plugins kann aus einem Modell der<br />
Quellcode für jede beliebige Plattform generiert werden.<br />
Das MetaData Repository dient zum Einlesen einer XMI-Datei und der internen<br />
Abbildung der Daten. Es ist auch möglich, Repositories für andere Formate zu erstellen.<br />
Cartridges stellen JAR-Archive mit Templates und Metafacades dar. Mit Hilfe von<br />
Metafacades kann auf die von MetaData Repository geladenen Modell-Objekte<br />
zugegriffen werden. Die Templates ihrerseits ermöglichen den Zugriff auf die<br />
Methoden der Metafacade-Klassen. Eine Reihe verschiedener Cartridges liegt bereits<br />
vor, z. B. für EJB, Spring, Struts oder Hibernate. Den Anwendern ist es jedoch jederzeit<br />
möglich, eigene Cartridges für ihre speziellen Bedürfnisse zu programmieren.<br />
Die Template Engine verarbeitet die Templates. AndroMDA verwendet standardmäßig<br />
Velocity 1.4, eine auf Java basierende Open-Source Template Engine (nähere<br />
Informationen hierzu unter [Vel07]).<br />
Translation Libraries werden verwendet, um auf Modellebene Ausdrücke zu<br />
verarbeiten, die in OCL (Object Constraint Language) geschrieben sind. Solche<br />
Ausdrücke können dazu dienen, die Modelle zu validieren oder Datenbankabfragen<br />
unabhängig von einer Plattform zu formulieren.<br />
3.2 Die Funktionsweise von AndroMDA<br />
Grundlage der Codegenerierung mit AndroMDA bilden i. d. R. UML-Modelle. Dabei<br />
kann es sich sowohl um Struktur- als auch um Verhaltensdiagramme handeln. Die<br />
Modelle müssen ins XMI-Format exportiert werden, damit sie von der Repository-<br />
Komponente von AndroMDA gelesen werden können. Aus dem eingelesenen Modell<br />
wird im Speicher ein instanziiertes UML-Metamodell in Form von Java-Objekten<br />
erzeugt.<br />
Um die Erstellung des Metamodells zu ermöglichen werden UML-Stereotypen und<br />
Eigenschaftswerte, sog. tagged values bei der Modellierung verwendet. Mit Hilfe von<br />
Stereotypen ist es möglich, Modellelemente zu klassifizieren und den passenden<br />
Quellcode zu dieser Klasse durch entsprechende Templates einer Cartridge zu<br />
generieren. Wird z. B. der Stereotyp einer Klasse zugeordnet, dann wird<br />
8
Kapitel 3: AndroMDA<br />
für die Codegenerierung eine Persistenz-Cartridge mit geeigneten Templates verwendet.<br />
Ferner können Detailinformationen zu einer Klasse über die Eigenschaftswerte ihrer<br />
Attribute oder Operationen festgelegt werden. Zulässige Stereotype und<br />
Eigenschaftswerte der jeweiligen Cartridges werden in UML-Profilen<br />
zusammengefasst, die als XMI-Dateien importiert werden können.<br />
Für die Formulierung von Datenbankabfragen wird OCL unterstützt. OCL-Ausdrücke<br />
können in Abfragen für unterschiedliche Plattformen übersetzt werden.<br />
Mit Hilfe von AndroMDA-Cartridges können zwei verschiedene Arten von Quellcode<br />
generiert werden:<br />
• vollständig generierten Code, der nicht manuell verändert werden sollte; dieser<br />
Code wird bei einer erneuten Generierung neu erstellt, wodurch Änderungen<br />
überschrieben und verloren gehen würden, sowie<br />
• Rahmen für vom Entwickler zu schreibenden Code, der bei einer erneuten<br />
Generierung nicht überschrieben wird. Dabei handelt es sich in der Regel um die<br />
Geschäftslogik der Anwendung.<br />
Aus diesen Bestandteilen entsteht die fertige Anwendung.<br />
3.3 AndroMDA Cartridges<br />
Cartridges stellen die zentrale Komponente zur Steuerung der Codegenerierung mit<br />
AndroMDA dar. Mit ihrer Hilfe können Modellelemente, die mit Stereotypen<br />
gekennzeichnet sind, oder Elemente, deren Abhängigkeit sich aus bestimmten<br />
Konditionen ergibt, verarbeitet werden (vgl. [And06]). Über Templates wird der zu<br />
generierende Code vorgegeben.<br />
Jede Cartridge enthält einen Cartridge Descriptor und einen Metafacade Descriptor. Der<br />
Cartridge Descriptor enthält Informationen in XML-Form über die Templates, die in der<br />
Cartridge zur Verfügung stehen. Der Metafacade Descriptor definiert und steuert die<br />
Metafacade-Klassen.<br />
Unter [And07a] wird eine Reihe von fertigen Cartridges für folgende Technologien zur<br />
Verfügung gestellt:<br />
9
Kapitel 3: AndroMDA<br />
Name<br />
BPM4Struts<br />
jBPM<br />
JSF<br />
EJB<br />
Hibernate<br />
Java<br />
Meta<br />
Spring<br />
WebService<br />
XmlSchema<br />
Beschreibung<br />
Business Process Modelling for Struts: generiert Struts-Webseiten aus<br />
UML-Modellen, in denen Abläufe der Anwendung modelliert sind<br />
JBOSS BPM: generiert Prozesssdefinitionen und Handler für die jBPM-<br />
Workflow-Engine aus UML-Aktivitätsdiagrammen und Use-Case-<br />
Diagrammen<br />
Basiert auf dem JavaServer Faces Framework, einem serverseitigen UI<br />
Komponenten-Framework für Java-basierte Web-Anwendungen<br />
Enterprise JavaBeans: generiert CMP (Container Managed Persistence)<br />
EJBs und Session Beans<br />
Generiert das gesamte objektrelationale Mapping von AndroMDA<br />
Generiert Java-Code<br />
Generiert AndroMDA MetaFacades<br />
Generiert Code basierend auf dem Spring Framework<br />
Generiert WSDD- (Web Service Deployment Description) und WSDL-<br />
(Web Service Definition Language) Files für Apache AXIS<br />
Generiert XML-Schemata aus Klassendiagrammen<br />
Tabelle 1: AndroMDA Cartridges (vgl. [Kar06])<br />
Darüber hinaus können Anwender Cartridges für ihre eigenen Zwecke programmieren<br />
oder bestehende Cartridges anpassen. Unter [And07a] wird eine 10-Schritt-Anleitung<br />
zur Erstellung einer Cartridge angeboten. Demnach beinhaltet der Entwicklungsprozess<br />
für eine Cartridge die folgenden Schritte:<br />
Vorgehensschritt<br />
Ergebnis<br />
1<br />
Zieltechnologie (PSM) Kernkonzepte und Dateiformate der<br />
analysieren<br />
verwendeten Technologie<br />
2<br />
PSM Metaklassen identifizieren, Ergebnis ist ein UML-Klassendiagramm der<br />
entwickeln und generieren Metaklassen<br />
3<br />
Regeln zur Transformation von PIM-<br />
Transformationsregeln<br />
Elementen in PSM-Elemente, die als<br />
identifizieren<br />
Metafacade-Operationen implementiert sind<br />
4<br />
Metafacades modellieren, Die benötigten Metafacade-Klassen, in denen<br />
generieren und schreiben Transformationsregeln enthalten sind<br />
5 Templates schreiben Templates zum Transformieren der Inhalte<br />
10
Kapitel 3: AndroMDA<br />
eines Project-Objekts in eine XML-Datei (oder<br />
ein anderes Austauschformat)<br />
6<br />
Deployment-Deskriptoren Die Deskriptoren des Cartridges als XMLschreiben<br />
Dateien<br />
7 Ein UML-Profil erstellen<br />
Ein UML-Profil, das als<br />
Modellierungsanleitung für Anwender dient<br />
8<br />
Test-Modell für die Cartridge Mit Hilfe des UML-Profils wird ein<br />
erstellen<br />
Testmodell erstellt<br />
9 Cartridge testen Möglichst fehlerfreie Cartridge<br />
10 Cartridge deployen Fertige Cartridge<br />
Tabelle 2: Vorgehensmodell zur Erstellung einer Cartridge<br />
Die eigenhändige Erstellung einer Cartridge erfordert eine intensive Einarbeitung in die<br />
jeweilige Zieltechnologie und ist für unerfahrene Anwender nicht zu empfehlen.<br />
Erfahrende Entwickler, die eine Unterstützung der von ihnen bevorzugten Technologie<br />
vermissen, sollten jedoch in der Lage sein, eine eigene Cartridge zu schreiben oder eine<br />
bestehende Cartridge entsprechend anzupassen. Diese sollte dann auf der<br />
Projekthomepage von AndroMDA anderen Anwendern zur Verfügung gestellt werden.<br />
Bei der Entwicklung eigener Cartridges sollte berücksichtigt werden, dass die Online-<br />
Tutorials unter [And07a] unvollständig sind. Das erschwert die Einarbeitung und<br />
erfordert u. U. intensive Recherche im Supportforum der AndroMDA-<br />
Projekthomepage, in anderen Internet-Foren oder weiteren Quellen. Auch aus diesem<br />
Grund ist die Entwicklung eigener Cartridges nur für erfahrene Entwickler zu<br />
empfehlen.<br />
11
Kapitel 4: Arbeiten mit AndroMDA<br />
4 Arbeiten mit AndroMDA<br />
4.1 Entwicklungsumgebung<br />
AndroMDA wird i. d. R. über Maven gesteuert, ein Build-Tool der Apache Software<br />
Foundation. Maven wird über ein spezielles Plugin an AndroMDA angebunden und<br />
ermöglicht dem Anwender die Steuerung der Codegenerierung über Kommandos, die<br />
Goals genannt werden. Die dazu benötigten Informationen werden in XML-<br />
Dokumenten abgelegt. Maven bietet Goals für den Generierungsprozess, das<br />
Kompilieren, Testen, das Deployen im Applikationsserver und das Erzeugen von<br />
Datenbankschemata. Maven kann unter [Mav07] kostenlos bezogen werden und liegt in<br />
der Version 2.0.6 vor; aus Kompatibilitätsgründen wurde für das hier beschriebene<br />
Beispiel jedoch auf Maven 2.0.5 zurückgegriffen.<br />
Neben Maven beinhaltet die Entwicklungsumgebung eine Reihe weiterer Werkzeuge.<br />
So werden z. B. ein UML-Modellierungswerkzeug und eine Datenbank benötigt. Für<br />
die Wahl eines Modellierungswerkzeugs ist entscheidend, ob die Modelle in ein von<br />
AndroMDA unterstütztes Format exportiert werden können. Momentan unterstützt<br />
AndroMDA UML 1.4/XMI sowie UML 2/EMF. Somit kommt eine Reihe von<br />
Modellierungstools in Frage; die Projekthomepage von AndroMDA beinhaltet Tutorien<br />
für folgende Tools: ArgoUML, MagicDraw 9.x, MagicDraw 11.5 und Rational<br />
Software Modeller / Architect 6. Die Entscheidung für ein bestimmtes Produkt liegt<br />
beim Entwickler.<br />
Im Rahmen dieser Arbeit wurden die unter [And07a] für die Entwicklung empfohlenen<br />
Werkzeuge gewählt. So bestand die Entwicklungsumgebung aus dem Java<br />
Development Kit 1.0.5 (JDK 1.0.5, zu beziehen unter [Sun07]), einem JBoss<br />
Application Server (Homepage unter [JBo07], einem MySQL Server 5.0 samt<br />
dazugehörigen Tools (weitere Informationen unter [SQL07], sowie Eclipse (unter<br />
[Ecl07]. Das vom AndroMDA entwickelte Eclipse-Plugin Android erleichtert die<br />
Integration von Eclipse und AndroMDA Für das Erstellen der UML-Modelle wurde<br />
MagicDraw Community Edition 9.5 (herunterladbar unter [Mag07]) verwendet; auf die<br />
Verwendung von MagicDraw 11.5 wurde aus Kompatibilitätsgründen verzichtet.<br />
12
Kapitel 4: Arbeiten mit AndroMDA<br />
4.2 Implementierung eines Shop-Systems als Beispielanwendung<br />
Die Beispielanwendung beschreibt eine simple Version eines Online-Shops. Es gibt<br />
Kunden, die über eine Webseite Produkte bestellen können. Ein Kunde kann beliebig<br />
viele Bestellungen aufgeben, die ihrerseits aus beliebig vielen Bestellpositionen<br />
bestehen können. Bestellpositionen setzen sich aus Produkten des Online-Shops<br />
zusammen. Die Produkte sind in einer hierarchischen Struktur kategorisiert. Abb. 3<br />
zeigt das entsprechende Klassendiagramm.<br />
Abbildung 3: Klassendiagramm<br />
13
Kapitel 4: Arbeiten mit AndroMDA<br />
Ein Kunde hat auf der Webseite die Möglichkeit, eine Bestellung anzulegen und<br />
Bestellpositionen hinzuzufügen. Dazu wählt er aus der Produktliste ein Produkt aus,<br />
gibt die gewünschte Menge an und fügt die Bestellposition seinem Warenkorb hinzu.<br />
Das kann beliebig oft wiederholt werden. Ist die Bestellung vollständig, übermittelt der<br />
Kunde seine Auswahl an den Anbieter und erhält eine Bestätigung. Beim Anlegen einer<br />
neuen Bestellung sowie bei der Durchführung einer Bestellung muss sich der Kunde<br />
gegenüber dem System identifizieren. Abb. 4 verdeutlicht dies in einem<br />
Anwendungsfalldiagramm.<br />
Abbildung 4: Anwendungsfalldiagramm<br />
Um die Beispielanwendung zu implementieren, ist eine Reihe von weiteren UML-<br />
Diagrammen und Klassen erforderlich, die aus Platzgründen nicht präsentiert werden<br />
können.<br />
Bei der Modellierung sind verschiedene Regeln zu beachten. Zum einen sollten alle<br />
Klassen mit UML-Stereotypen verknüpft werden, weil der Prozess der Codegenerierung<br />
auf Basis dieser Stereotype abläuft. Jedem Stereotyp entsprechen bestimmte Templates<br />
in der jeweiligen Cartridge, aus denen Code erzeugt wird. Ferner existiert eine Reihe<br />
von Standardregeln, um die syntaktische und semantische Korrektheit der Modelle<br />
sicherzustellen (vgl. [And07b]). Diese entsprechen weitgehend den allgemeinen Regeln<br />
für die Erstellung von UML-Modellen. AndroMDA-spezifisch sind u. a. folgende<br />
Forderungen:<br />
• Es sollten keine getter- und setter-Methoden für Attribute benutzt werden. Alle<br />
benötigten Methoden werden während der Codegenerierung von der Cartridge<br />
erzeugt.<br />
14
Kapitel 4: Arbeiten mit AndroMDA<br />
• Aus dem selben Grund sollten keine getter- und setter-Methoden für<br />
Assoziationsenden benutzt werden.<br />
• Für einfache Datentypen wie String oder Collection sollten allgemeine UML<br />
Datentypen anstelle von technologie-spezifischen Typen benutzt werden. Auf<br />
diese Weise bleiben die Modelle so weit wie möglich plattformunabhängig.<br />
Cartridges finden mit Hilfe von Mapping-Tabellen die technologie-spezifischen<br />
Datentypen zur Generierungszeit. Für Java beispielsweise würde die Transformation<br />
wie folgt aussehen: String --> java.lang.String oder Collection --><br />
java.util.Collection.<br />
Nach erfolgter Modellierung wurde mit Hilfe von AndroMDA automatisch Code für die<br />
Anwendung generiert. Die dabei erzeugten Dokumente kann man grob in zwei Gruppen<br />
gliedern: fertigen Code und Codefragmente. Codefragmente stellen dabei konkrete<br />
Erweiterungen der automatisch erstellen Klassen dar und sollen als Container für<br />
jeglichen zusätzlichen Code dienen, der von den Entwicklern hinzugefügt wird.<br />
Codefragmente kann man an dem Kürzel „Impl“ im Namen erkennen, so ist z. B.<br />
KundeImpl.java die Erweiterung für Kunde.java.<br />
4.3 Kritische Würdigung des Entwicklungsprozesses mit AndroMDA<br />
Nach der Implementierung der Beispielanwendung lässt der Entwicklungsprozess mit<br />
AndroMDA sich wie folgt bewerten:<br />
Bereits das Einrichten der Entwicklungsumgebung gestaltete sich problematisch. Eine<br />
Vielzahl von unterschiedlichen Werkzeugen musste einzeln herunter geladen und<br />
installiert werden. Dabei ergaben sich an mehreren Stellen Kompatibilitätsprobleme<br />
zwischen den einzelnen Tools. So traten z. B. mehrmals Schwierigkeiten bei der<br />
Benutzung von MagicDraw 11.5 auf, weswegen zu MagicDraw 9.5 gewechselt werden<br />
musste. Gerade für unerfahrene Benutzer nicht trivial ist auch das notwendige manuelle<br />
Setzen von Umgebungsvariablen und die stellenweise erforderliche Manipulation von<br />
XML-Dokumenten.<br />
Gerade bei auftretenden Problemen wurden die Schwächen des AndroMDA-Supports<br />
deutlich, die durch den Open-Source-Charakter des Projekts begünstigt werden. Negativ<br />
aufgefallen sind die stark schwankende Qualität der Dokumentation, die wenig<br />
hilfreiche FAQ-Liste, sowie eine Reihe von „toten“ Links auf der Webseite. Die<br />
15
Kapitel 4: Arbeiten mit AndroMDA<br />
vorhandenen Online-Tutorials enthalten z. T. Fehler oder sind unvollständig. So bricht<br />
die Einleitung zur Erstellung einer Cartridge nach der Hälfte der notwendigen Schritte<br />
ab; die entsprechenden Webseiten enthalten seit März 2006 lediglich den Hinweis auf<br />
den geplanten Inhalt. Positiv sticht das Online-Forum hervor, in dem schnell und<br />
kompetent auf Fragen und Probleme eingegangen wird.<br />
Der Entwicklungsprozess erfordert eine intensive Einarbeitung in die verwendeten<br />
Werkzeuge. Gerade weil wenig Unterstützung bei auftretenden Schwierigkeiten zu<br />
erwarten ist, sollten Werkzeuge gewählt werden, die entweder dem Entwickler gut<br />
bekannt oder ausführlich dokumentiert sind.<br />
Nach Bewältigung der Anfangsschwierigkeiten funktionierte die Code-Generierung mit<br />
AndroMDA gut. Ein Großteil des Code kann automatisch aus den Modellen generiert<br />
werden. Gerade die langwierigen, lästigen Aufgaben werden dem Entwickler<br />
abgenommen; manuell zu implementieren ist lediglich die Geschäftslogik. Das<br />
verringert die Entwicklungskosten und enthebt den Entwickler von der Notwendigkeit,<br />
einen Großteil der Zeit mit eher langweiligen Standardaufgaben zu verbringen.<br />
16
Kapitel 5: Zusammenfassung und Ausblick<br />
5 Zusammenfassung und Ausblick<br />
Diese Arbeit hatte das Ziel, den Entwicklungsprozess mit AndroMDA zu untersuchen.<br />
Nach einer kurzen Darstellung von MDA wurden der Aufbau und die Funktionsweise<br />
von AndroMDA beleuchtet; speziell hervorgehoben wurde die Rolle der Cartridges im<br />
AndroMDA-Framework. Im zweiten Teil der Arbeit wurde ein Ausblick auf das<br />
Arbeiten unter AndroMDA gegeben und die Implementierung einer Beispielanwendung<br />
vorgestellt.<br />
Zusammenfassend lässt sich sagen, dass es sich bei AndroMDA um ein mächtiges und<br />
flexibles Werkzeug zum Einsatz von MDA in der Software-Entwicklung handelt. Eine<br />
Vielzahl von Technologien und Plattformen wird bereits unterstützt. Wo das nicht der<br />
Fall ist, steht es dem Anwender frei, die von ihm präferierte Technologie in das<br />
Framework einzubinden.<br />
Jedoch lässt die Benutzerfreundlichkeit von AndroMDA zu wünschen übrig. Die<br />
aufwändige Installation, die mangelhafte Dokumentation und die nicht mehr zeitgemäße<br />
Bedienung über die Kommandozeile erschweren gerade ungeübten Benutzern den<br />
Einstieg.<br />
Bevor über den Einsatz von AndroMDA fundiert entschieden werden kann, ist jedoch<br />
der Vergleich mit anderen MDA-Werkzeugen angebracht. Die Flexibilität und<br />
Anpassbarkeit von AndroMDA könnte gegenüber kommerziellen Produkten einen<br />
großen Vorteil darstellen. Eine Verbesserung der Benutzerfreundlichkeit bleibt<br />
abzuwarten.<br />
17
6 Literaturverzeichnis<br />
[And07a]<br />
[And07b]<br />
[Dew06]<br />
[Ecl07]<br />
[JBo07]<br />
[Kar06]<br />
[KWB03]<br />
[Mag07]<br />
[Mav07]<br />
[MSUW04]<br />
[OMG03]<br />
[SQL07]<br />
[Sun07]<br />
[TBH04]<br />
AndroMDA: Homepage.<br />
URL: http://www.andromda.org, Abrufdatum: 12. Mai 2007<br />
AndroMDA: Modeling for AndroMDA.<br />
URL: http://galaxy.andromda.org/docs/modeling.html, Abrufdatum:<br />
12. Mai 2007.<br />
Blasius Lofi Dewanto: The Enterprise Java Open Source Architecture<br />
Template, 2006.<br />
URL:http://www.jaxmagazine.com/itr/online_artikel/psecom,id,653,node<br />
id,147.html, Abrufdatum: 12. Mai 2007<br />
Eclipse: Homepage,<br />
URL: http://www.eclipse.org, Abrufdatum: 12. Mai 2007.<br />
JBoss Application Server: Homepage,<br />
URL: http://labs.jboss.com/jbossas, Abrufdatum: 12. Mai 2007.<br />
Arnold Karner: Model Driven Architecture – Vollständige<br />
Codegenerierung mittels AndroMDA, TU Wien, 2006.<br />
URL:http://big.tuwien.ac.at/research/publications/diplomatheses/karner.p<br />
df, Abrufdatum: 12. Mai 2007<br />
Anneke Kleppe, Jos Warmer, Wim Bast: MDA Explained, The Model<br />
Driven Architecture: Practice and Promise, Addison-Wesley, 2003.<br />
MagicDraw: Homepage.<br />
URL: http://www.magicdraw.com. Abrufdatum: 12. Mai 2007<br />
Apache Maven Project: Homepage.<br />
URL: http://maven.apache.org, Abrufdatum: 12. Mai 2007.<br />
Stephen J. Mellor, Kendall Scott, Axel Uhl, Dirk Weise: MDA Distilled,<br />
Principles of Model-Driven Architecture, Addison-Wesley, 2004.<br />
Object Management Group: Technical Guide to Model Driven<br />
Architecture: The MDA Guide Version 1.0.1, 2003<br />
MySQL Developer Zone: Homepage,<br />
URL: http://dev.mysql.com, Abrufdatum: 12. Mai 2007.<br />
Sun Developer Network: JAVA SE Downloads,<br />
URL:http://java.sun.com/javase/downloads/index_jdk5.jsp, Abrufdatum:<br />
12. Mai 2007.<br />
Rainer Thome, Martin Böhn, Alexander Hagn: Model Driven<br />
Architecture, WISU 3/04, S. 348-357, Lange Verlag, 2004.
[Vel07]<br />
Apache Velocity Project: Homepage.<br />
URL: http://velocity.apache.org, Abrufdatum: 12. Mai 2007.