AndroMDA
230 likes | 313 Vues
AndroMDA. Vortrag im Rahmen des Seminars "Software Engineering" Irina Thome. Agenda. AndroMDA Einführung Komponenten Funktionsweise Arbeiten mit AndroMDA Entwicklungsumgebung Beispiel Kritische Würdigung Fazit. Agenda. AndroMDA Einführung Komponenten Funktionsweise
AndroMDA
E N D
Presentation Transcript
AndroMDA Vortrag im Rahmen des Seminars "Software Engineering" Irina Thome
Agenda • AndroMDA • Einführung • Komponenten • Funktionsweise • Arbeiten mit AndroMDA • Entwicklungsumgebung • Beispiel • Kritische Würdigung • Fazit
Agenda • AndroMDA • Einführung • Komponenten • Funktionsweise • Arbeiten mit AndroMDA • Entwicklungsumgebung • Beispiel • Kritische Würdigung • Fazit
AndroMDA • Open Source MDA-Generator • Dokumentation und Support unter www.andromda.org • Eingesetzt u.a. bei Lufthansa Systems • Letzte stabile Version: AndroMDA 3.2 • Neueste verfügbare Version: AndroMDA 4.0-M1-Snapshot
AndroMDA • Codegenerierungs-Framework • Hohe Anpassbarkeit durch modulare Architektur • Kernkomponente: template-basierter Generator • Ziel: Transformation von PIM in PSM und von PSM in Code
AndroMDA • Automatisierung von redundanten Standard-Aufgaben (bis zu 90% des Aufwands) • Nur Geschäftslogik muss weiterhin von Hand implementiert werden • Prototypische Implementierung einer Onlinebibliothek mit rudimentärem UI ergibt:
Aufbau von AndroMDA Quelle: vgl. Dewanto (2006)
MetaData Repository • Einlesen einer XMI Datei • Abbildung als instanziiertes Metamodell im Speicher • Interne Repräsentation der Modellelemente als Java-Objekte • z.B. Modellklasse Kunde Java-Objekt der Klasse Class;Name-Attribut hat den Wert Kunde • Zugriff über JMI (Java Metadata Interface) möglich • Grundlage für weitere Transformation
Cartridges • JAR-Archive mit Templates, Metafacades und Deskriptoren • Zentrale Komponente der Codegenerierung • Erlauben Verarbeitung von Modellelementen, die mit Stereotypen gekennzeichnet sind oder deren Abhängigkeit sich aus bestimmten Konditionen ergibt • Zur Verfügung stehen Cartridges für: • BPM4Struts, jBPM, JSF, EJB, Hibernate, Java, Meta, Spring, WebService, XmlSchema • Erstellung von weiteren Cartridges für individuellen Bedarf möglich
Metafacades und Templates • Metafacades ermöglichen Zugriff auf Modell-Objekte vom MDR • verstecken Komplexität des JMI hinter simplen Schnittstellen-Klassen • weitere Aufgaben: • Validierung des Metamodells • Umsetzung der Translation Libraries und der Datatype Mappings • Templates ermöglichen Zugriff auf Methoden der Metafacade-Klassen
Template Engine • Verarbeitung der Templates • Unterstützt: Velocity und FreeMarker Quelle: Karner (2006)
OCL (Object Constraint Language): context Kunde::getKandidaten(wohnort: String, mindestalter: Integer): Collection(Kunde) body getKandidatenBody: allInstances()-> select (Kunde|Kunde.ort = wohnort and Kunde.alter >= mindestalter) Hibernate Query Language: from seminar.Kunde as kunde where kunde.ort = :wohnort and kunde.alter >= :mindestalter EJB Query Language: SELECT DISTINCT OBJECT(kunde)FROM Kunde kunde WHERE kunde.ort = ?1 AND kunde.alter >= ?2 Translation Libraries • Verarbeitung von Ausdrücken in OCL, z.B. für Datenbankanfragen
Datatype Mappings • Übersetzung von Datentypen des Modells in Zielsprache <mappings name="Java"> </mapping> ... <mapping> <from>guarded</from> <to>synchronized</to> </mapping> <mapping> <from>sequential</from> <to/> </mapping> <mapping> <from>datatype::File</from> <to>java.io.File</to> </mapping> <mapping> <from>datatype::String</from> <to>java.lang.String</to> </mapping> ... <mapping> <from>datatype::void</from> <to>void</to> </mapping> <mapping> <from>datatype::ContentHandler</from> <to>org.xml.sax.ContentHandler</to> </mapping> … </mappings>
AndroMDA Framework Quelle: Karner (2006)
Funktionsweise von AndroMDA • Überführen eines UML-Modells im XMI-Format • Einlesen der XMI-Datei von Repository-Komponente • Abbildung im Speicher als instanziiertes UML-Metamodell in Form von Java-Objekten • Zugriff über Metafacades und Templates einer Cartridge • Steuerung der Codegenerierung durch Template Engine
Agenda • AndroMDA • Einführung • Komponenten • Funktionsweise • Arbeiten mit AndroMDA • Entwicklungsumgebung • Beispiel • Kritische Würdigung • Fazit
Entwicklungsumgebung • Steuerung über Maven-Plugin • Maven: auf Java basierendes Build Management Tool • Lädt sämtliche benötigten Plugin's automatisch übers Internet • UML-Modellierungswerkzeug: MagicDraw 9.5 Community Edition • Datenbank: MySQL Server 5.0 • Java Development Kit 1.0.5 • JBoss Application Server 5.0.5 • Eclipse
Beispielanwendung • Anlegen eines AndroMDA-Projektes • Entstehende Ordnerstruktur: • mda: UML-Modell der Anwendung • common: Klassen und Ressourcen, auf die von mehreren Teilprojekten zugegriffen wird • core: Klassen und Ressourcen, die Spring (und optional Hibernate und/oder EJB) verwenden • web: Klassen und Ressourcen der Präsentationsschicht • app: Klassen und Ressourcen, die zum Bilden der .ear Files benötigt werden
Beispielanwendung • Codegenerierung • Für eine Klasse User mit Stereotyp <<Entity>> werden erzeugt: • User.java: abstrakte Klasse; implementiert die User-Entität • UserImpl.java: konkrete Erweiterung von User.java (vom Entwickler zu ergänzen) • UserDao.java: Interface; definiert Methoden für das Data Access Object • UserDaoBase.java: implementiert die Methoden von UserDao.java • UserDaoImpl.java: konkrete Erweiterung für UserDao (vom Entwickler zu ergänzen)
Bewertung des Entwicklungsprozesses Positiv • Die meisten Werkzeuge sind Open Source • Code-Generierung funktioniert gut • AndroMDA übernimmt die lästigen, zeitraubenden Aufgaben • Entwickler kann sich auf das Wesentliche konzentrieren
Bewertung des Entwicklungsprozesses Negativ • Kompatibilitätsprobleme beim Einrichten der Entwicklungs-umgebung • Teils fehlende oder lückenhafte Dokumentation, tote Links auf der Support-Webseite • Für unerfahrene Benutzer schwierige Bedienung über Kommandozeile
Agenda • AndroMDA • Einführung • Komponenten • Funktionsweise • Arbeiten mit AndroMDA • Entwicklungsumgebung • Beispiel • Kritische Würdigung • Fazit
Fazit • MDA soll Vorteile bei Software-Entwicklung bringen • AndroMDA setzt MDA-Idee um • Fast 100% automatische Codegenerierung im Back-End möglich • Unterstützung der Transformation von Modellen zu Code • Nicht triviale Installation und Bedienung, mangelnde Dokumentation • Daher eher für erfahrene Anwender empfehlenswert