26.10.2014 Aufrufe

Ausarbeitung

Ausarbeitung

Ausarbeitung

MEHR ANZEIGEN
WENIGER ANZEIGEN

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 Software­Entwicklung 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.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!