WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK AndroMDA Vortrag im Rahmen des Seminars "Software Engineering" Irina Thome Agenda WIRTSCHAFTS INFORMATIK 1. AndroMDA 1. Einführung 2. Komponenten 3. Funktionsweise 2. Arbeiten mit AndroMDA 1. Entwicklungsumgebung 2. Beispiel 3. Kritische Würdigung 3. Fazit 2 Agenda WIRTSCHAFTS INFORMATIK 1. AndroMDA 1. Einführung 2. Komponenten 3. Funktionsweise 3. Arbeiten mit AndroMDA 3. Entwicklungsumgebung 4. Beispiel 5. Kritische Würdigung 4. Fazit 3 AndroMDA WIRTSCHAFTS INFORMATIK 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 4 AndroMDA WIRTSCHAFTS INFORMATIK Codegenerierungs-Framework Hohe Anpassbarkeit durch modulare Architektur Kernkomponente: template-basierter Generator Ziel: Transformation von PIM in PSM und von PSM in Code 5 AndroMDA WIRTSCHAFTS INFORMATIK 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: Code LOC % generiert 8144 99,742 manuell 21 0,258 6 Aufbau von AndroMDA WIRTSCHAFTS INFORMATIK Modell (XMI) AndroMDA Cartridge Translation Libraries Template Engine Datatype Mappings Vollständiger Code MetaData Repository Templates Metafacades Codefragmente Quelle: vgl. Dewanto (2006) 7 MetaData Repository WIRTSCHAFTS INFORMATIK Einlesen einer XMI Datei Abbildung als instanziiertes Metamodell im Speicher Interne Repräsentation der Modellelemente als JavaObjekte - 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 8 Cartridges WIRTSCHAFTS INFORMATIK 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 9 Metafacades und Templates WIRTSCHAFTS INFORMATIK 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 10 Template Engine WIRTSCHAFTS INFORMATIK Verarbeitung der Templates Unterstützt: Velocity und FreeMarker Quelle: Karner (2006) 11 Translation Libraries WIRTSCHAFTS INFORMATIK Verarbeitung von Ausdrücken in OCL, z.B. für Datenbankanfragen 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 12 Datatype Mappings WIRTSCHAFTS INFORMATIK Ü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::ContentHandle r</from> <to>org.xml.sax.ContentHandle r</to> </mapping> … </mappings> 13 AndroMDA Framework WIRTSCHAFTS INFORMATIK Quelle: Karner (2006) 14 Funktionsweise von AndroMDA WIRTSCHAFTS INFORMATIK Ü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 15 Agenda WIRTSCHAFTS INFORMATIK 1. AndroMDA 1. Einführung 2. Komponenten 3. Funktionsweise 2. Arbeiten mit AndroMDA 1. Entwicklungsumgebung 2. Beispiel 3. Kritische Würdigung 3. Fazit 16 Entwicklungsumgebung WIRTSCHAFTS INFORMATIK 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 17 Beispielanwendung WIRTSCHAFTS INFORMATIK 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 18 Beispielanwendung WIRTSCHAFTS INFORMATIK 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) 19 Bewertung des Entwicklungsprozesses WIRTSCHAFTS INFORMATIK 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 20 Bewertung des Entwicklungsprozesses WIRTSCHAFTS INFORMATIK Negativ Kompatibilitätsprobleme beim Einrichten der Entwicklungsumgebung Teils fehlende oder lückenhafte Dokumentation, tote Links auf der Support-Webseite Für unerfahrene Benutzer schwierige Bedienung über Kommandozeile 21 Agenda WIRTSCHAFTS INFORMATIK 1. AndroMDA 1. Einführung 2. Komponenten 3. Funktionsweise 2. Arbeiten mit AndroMDA 1. Entwicklungsumgebung 2. Beispiel 3. Kritische Würdigung 3. Fazit 22 Fazit WIRTSCHAFTS INFORMATIK 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 23