Eclipse Modeling Framework Modellgetriebene Softwareentwicklung Prof. Andreas Schmidt Sören Bühler buso1011 36811 Julia Haßlinger haju1013 37141 Anja Heinzberger hean1017 36622
Agenda Allgemeines Historie Vorgehensweise Bestandteile Vorteile Live-Demo 1 2 4 3 Ecore Modell Java Emitter Template Sören Bühler, Anja Heinzberger, Julia Haßlinger MDSD Eclipse Modeling Framework 07.06.2013 2
1 EMF Was ist das überhaupt? Sören Bühler, Anja Heinzberger, Julia Haßlinger MDSD Eclipse Modeling Framework 07.06.2013 3
1 EMF Was ist das überhaupt? quelloffenes Java-Framework zur automatisierten Erzeugung von Quelltext anhand von strukturierten Modellen Projekt der Eclipse-Open-Source-Gemeinschaft Sören Bühler, Anja Heinzberger, Julia Haßlinger MDSD Eclipse Modeling Framework 07.06.2013 4
1 Historie Hauptinitiator: IBM Bereitstellung des Kerns von Rational Rose Projektleiter: Ed Merks Ursprüngliches Ziel: Implementierung von Meta Object Facility (MOF) Sören Bühler, Anja Heinzberger, Julia Haßlinger MDSD Eclipse Modeling Framework 07.06.2013 5
1 Vorgehensweise inkl. JUnit-Code, Doku, Sören Bühler, Anja Heinzberger, Julia Haßlinger MDSD Eclipse Modeling Framework 07.06.2013 6
1 Vorgehensweise Das Modell selbst kann aus einer XSD (XML Schema Definition), aus annotierten Java-Interfaces oder aus UML-Diagrammen (Rose, TOPCASED, MagicDraw und Omondo) generiert oder auch von Hand erstellt werden Das Java-Programm kann Instanzen dieses Modells erstellen, abfragen, manipulieren, serialisieren, validieren und auf Änderungen überwachen (für MVC) Sören Bühler, Anja Heinzberger, Julia Haßlinger MDSD Eclipse Modeling Framework 07.06.2013 7
1 Bestandteile Metamodell XML Schema Infoset Model Java Emitter Templates Ecore- SDO-Referenzimplementierung JMerge Sören Bühler, Anja Heinzberger, Julia Haßlinger MDSD Eclipse Modeling Framework 07.06.2013 8
1 Vorteile + Integration in die Eclipse Werkzeugplattform + Generierung von UI-Komponenten sowie die Zusammenarbeit mit anderen Eclipse-Projekten, etwa im Eclipse Graphical Modeling Framework (GMF) + Serialisierung und Validierung steigern die Produktivität beim Entwickeln + Einarbeitungszeit gering aufgrund vieler Möglichkeiten der Modellierung (XSD, UML, Java-Interfaces) + Einsatz von Code-Generatoren und MDD (Model Driven Development) steigert ebenfalls die Produktivität, reduziert Wiederholungen und damit mögliche Fehlerquellen + Automatisierte Erstellung von Dokumenten Sören Bühler, Anja Heinzberger, Julia Haßlinger MDSD Eclipse Modeling Framework 07.06.2013 9
2 Ecore Modell Allgemein gehaltener Ansatz Möglichkeit sowohl spezifische Objekte, als auch den Aufbau dieser zu beschreiben Erlaubt den Import von Objektmodellen unterschiedlicher Repräsentationen Generierung von EMF-Codefragmenten aus einem Ecore Modell Sören Bühler, Anja Heinzberger, Julia Haßlinger MDSD Eclipse Modeling Framework 07.06.2013 10
2 Ecore Modell Modell E-Modell direkt im Editor erstellen Voraussetzung: Hinreichende Kenntnisse des Ecore Metamodells Modell importieren und E-Modell generieren lassen Code Modell Objekte mit Java- Interfaces definieren, modellrelevante Objekte mit @model kennzeichnen und E-Modell generieren lassen Sören Bühler, Anja Heinzberger, Julia Haßlinger MDSD Eclipse Modeling Framework 07.06.2013 11
2 Ecore Modell Sören Bühler, Anja Heinzberger, Julia Haßlinger MDSD Eclipse Modeling Framework 07.06.2013 12
2 Ecore Modell Sören Bühler, Anja Heinzberger, Julia Haßlinger MDSD Eclipse Modeling Framework 07.06.2013 13
3 Java Emitter Template model-to-text -Engine Tool mit dessen Unterstützung die Generierung von unterschiedlichen Textartefakten wie SQL, Java, XML oder generell Text möglich ist JET-Syntax in Anlehnung an die Syntax von Java Server Pages (JSP) JET- Engine public String generate Sören Bühler, Anja Heinzberger, Julia Haßlinger MDSD Eclipse Modeling Framework 07.06.2013 14
3 Java Emitter Template define templates.xmljet.htmljet.txtjet translation <%@ jet package="hello" class="greetingtemplate"%> Hello <%=argument%>! generate Java Implementation classes.java generation create the final output Methodenaufruf generate() GreetingTemplate sayhello = new GreetingTemplate(); String result = sayhello.generate("smiff"); System.out.println(result); Hello Smiff! Sören Bühler, Anja Heinzberger, Julia Haßlinger MDSD Eclipse Modeling Framework 07.06.2013 15
3 Java Emitter Template Syntax Directives Expressions Scriplets definieren die Umgebungsparameter vor Übersetzung eines Templates für die JET- Engine dienen der Ausgabe von Werten einer Variablen oder Methode sind Fragmente von Java-Programmcode, die in der Regel Geschäftslogik enthalten Sören Bühler, Anja Heinzberger, Julia Haßlinger MDSD Eclipse Modeling Framework 07.06.2013 16
4 Live-Demo Szenario: Sport Sören Bühler, Anja Heinzberger, Julia Haßlinger MDSD Eclipse Modeling Framework 07.06.2013 17
Links Tutorials http://www.vogella.com/articles/eclipseemf/article.html http://www.eclipse.org/epsilon/doc/articles/reflective-emf-tutorial/ http://www.vogella.com/articles/eclipsejet/article.html http://www.eclipse.org/articles/article-jet/jet_tutorial1.html Interface Summary http://download.eclipse.org/modeling/emf/emf/javadoc/2.9.0/org/eclipse/e mf/ecore/package-summary.html Downloads http://www.eclipse.org/downloads/ Sören Bühler, Anja Heinzberger, Julia Haßlinger MDSD Eclipse Modeling Framework 07.06.2013 18
Vielen Dank für die Aufmerksamkeit! Echte Programmierer programmieren nicht. -Frei nach Ed Merks- Sören Bühler, Anja Heinzberger, Julia Haßlinger MDSD Eclipse Modeling Framework 07.06.2013 19