1 / 23

AndroMDA

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

Download Presentation

AndroMDA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. AndroMDA Vortrag im Rahmen des Seminars "Software Engineering" Irina Thome

  2. Agenda • AndroMDA • Einführung • Komponenten • Funktionsweise • Arbeiten mit AndroMDA • Entwicklungsumgebung • Beispiel • Kritische Würdigung • Fazit

  3. Agenda • AndroMDA • Einführung • Komponenten • Funktionsweise • Arbeiten mit AndroMDA • Entwicklungsumgebung • Beispiel • Kritische Würdigung • Fazit

  4. 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

  5. AndroMDA • Codegenerierungs-Framework • Hohe Anpassbarkeit durch modulare Architektur • Kernkomponente: template-basierter Generator • Ziel: Transformation von PIM in PSM und von PSM in Code

  6. 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:

  7. Aufbau von AndroMDA Quelle: vgl. Dewanto (2006)

  8. 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

  9. 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

  10. 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

  11. Template Engine • Verarbeitung der Templates • Unterstützt: Velocity und FreeMarker Quelle: Karner (2006)

  12. 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

  13. 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>

  14. AndroMDA Framework Quelle: Karner (2006)

  15. 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

  16. Agenda • AndroMDA • Einführung • Komponenten • Funktionsweise • Arbeiten mit AndroMDA • Entwicklungsumgebung • Beispiel • Kritische Würdigung • Fazit

  17. 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

  18. 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

  19. 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)

  20. 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

  21. 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

  22. Agenda • AndroMDA • Einführung • Komponenten • Funktionsweise • Arbeiten mit AndroMDA • Entwicklungsumgebung • Beispiel • Kritische Würdigung • Fazit

  23. 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

More Related