Technische Universität München Eclipse Modeling Project das "Schweizer Taschenmesser" zur Entwicklung von Modellierungswerkzeugen Markus Herrmannsdörfer 7. Januar 2009 Perlen der Informatik Garching Technische Universität München Eclipse Modeling Project • • • • • • Unterstützung von Industrie-Standards Basis: Eclipse und damit Java Entwicklung von Modellierungsprachen Lizenz: Open Source Verwendung in kommerziellen Werkzeugen Komponenten – Syntax: abstrakt, konkret – Modellierungssprachen – Transformation: Modell-zu-Modell, Modell-zu-Text – Verteilte Modellierung – Domänenspezifische Modellierung Technische Universität München Überblick 1. Syntax 2. Modellierungssprachen 3. Transformation 4. Verteilte Modellierung 5. Domänenspezifische Modellierung Technische Universität München Syntax Beschreibung der gültigen Modelle einer Sprache • Abstrakte Syntax: Beschreibung der Konzepte einer Modellierungssprache unabhängig von der konkreten Repräsentation – Eclipse Modeling Framework (EMF) • Konkrete Syntax: Wiedergabe der Konzepte einer Modellierungssprache in einer konkreten Repräsentation – Graphisch: Graphical Modeling Framework (GMF) – Textuell: Textual Modeling Framework (TMF) / Xtext Technische Universität München Abstrakte Syntax: Eclipse Modeling Framework Überblick • Referenz-Implementierung des OMG-Standards (Essential) Meta Object Facility (EMOF) • aktuelle Version: 2.4 Ressourcen • Webseite: http://www.eclipse.org/modeling/emf/ (Downloads, Wiki, FAQ, Dokumentation) • Newsgroup: eclipse.tools.emf (news.eclipse.org) • Buch: Eclipse Modeling Framework, Second Edition (Steinberg, Budinsky, Paternostro, Merks) Technische Universität München Abstrakte Syntax: Eclipse Modeling Framework eReferenceType EClass 1 EDataType name : EString name : EString konformZu Meta -Metamodell 1 eAttributeType Ecore (vereinfacht ) 0..* eReferences eAttributes EReference Metamodell EAttribute name : EString containment : EBoolean konformZu name : EString State Ecore -Modell children 0..* name : EString konformZu ON Modell Modell 0..* RED GREEN Technische Universität München Abstrakte Syntax: Eclipse Modeling Framework Annotationen Pakete Operationen Enumerationen [Ed Merks: The Unbearable Stupidity of Modeling] Technische Universität München Abstrakte Syntax: Eclipse Modeling Framework XML Schema UML Ecore State children 0..* name: EString Java public interface State { String getName(); void setName(String value); List<State> getChildren(); } // State <xsd:complexType name=“State"> <xsd:sequence> <xsd:element name="children" type=“state:State" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name=“name" type="xsd:string"/> </xsd:complexType> [Ed Merks: The Unbearable Stupidity of Modeling] Technische Universität München Abstrakte Syntax: Eclipse Modeling Framework derive Metamodel Generator Model Injektion von Code über Annotationen Interpretation auch möglich Veränderung generate Model Plugin Edit Plugin Editor Plugin Metamodel API Controller Baum mit Eigenschaften Überschreiben des generierten Codes Technische Universität München Abstrakte Syntax: Eclipse Modeling Framework TreeViewer Properties Technische Universität München Abstrakte Syntax: Eclipse Modeling Framework Kern Erweiterungen • • • • • • • • • • Adapter: Notifizierung Switch, TreeIterator: Besucher Factory: Erzeugung Resource: Persistierung (XMI) ItemProvider: Controller Reflection: generische API Command Framework: CommandStack, Undo, Redo • • • Query: Abfragen Search: Suche in Modellen ChangeRecorder: Aufzeichnung von Änderungen Transaction: Verteiltes Editieren Validation: Überprüfung von Konsistenzbedingungen DataBinding: Binden von Modellen an Views Technische Universität München Graphische Syntax: Graphical Modeling Framework Überblick • Editor-Generierung aus einem Modell der graphischen Syntax • Basis: Graphical Editing Framework (GEF) • aktuelle Version: 2.1 Ressourcen • Webseite: http://www.eclipse.org/modeling/gmf/ (Downloads, Wiki, Tutorials, Dokumentation) • Newsgroup: eclipse.modeling.gmf (news.eclipse.org) Technische Universität München Graphische Syntax: Graphical Modeling Framework Model Plugin Edit Plugin Diagram Editor Plugin Technische Universität München Graphische Syntax: Graphical Modeling Framework Undo Layout Select Print Zoom Validate Routing Overview Resize Move Technische Universität München Graphische Syntax: Graphical Modeling Framework Vorteile • Editor-Erstellung auf Knopfdruck • saubere Trennung von abstrakter und konkreter Syntax Nachteile • komplizierte Erstellung der Editor-Modelle • keine direkte Unterstützung mehrerer Ansichten auf einem Modell • mangelnde Flexibilität gegenüber abstrakter Syntax Alternative • Graphical Editing Framework (GEF) Technische Universität München Textuelle Syntax: Textual Modeling Framework / Xtext Überblick • Editor-Generierung aus einer Grammatik für die textuelle Syntax • Basis: ANTLR • aktuelle Version: 4.3 (OAW), 0.7 (TMF) Ressourcen • Website: http://www.openarchitectureware.org/ (OAW), http://www.eclipse.org/modeling/tmf/ (TMF) (Download, Documentation, Wiki) • Newsgroup: eclipse.modeling.tmf (news.eclipse.org) Technische Universität München Textuelle Syntax: Textual Modeling Framework / Xtext Grammatik Statemachine : (state+=State)*; derive Metamodel State : 'state' name=ID (outgoing+=Transition)* (children+=State)* 'end'; Transition : trigger=ID '=>' target=[State]; import Text Editor Plugin generate Technische Universität München Textuelle Syntax: Textual Modeling Framework / Xtext Syntax Highlighting Folding Navigation Validation Code Completion Abstrakter Syntaxbaum Technische Universität München Textuelle Syntax: Textual Modeling Framework / Xtext Vorteile • einfaches Erstellen einer Grammatik • Editor-Erstellung auf Knopfdruck • Speicherung in textueller Repräsentation => existierende Lösung für Konfigurations-Management Nachteile • mangelnde Flexibilität gegenüber abstrakter Syntax • Performanz-Probleme bei bestimmter Art der Syntax Alternative • Verfeinerung der erzeugten ANTLR-Grammatik Technische Universität München Überblick 1. Syntax 2. Modellierungssprachen 3. Transformation 4. Verteilte Modellierung 5. Domänenspezifische Modellierung Technische Universität München Modellierungssprachen Überblick • Implementierung von standardisierten Metamodellen • beispielhafte Modellierungs-Werkzeuge Ressourcen • Website: http://www.eclipse.org/modeling/mdt/ • Newsgroup: eclipse.modeling.mdt (news.eclipse.org) Technische Universität München Modellierungssprachen vorhanden • Ecore: graphischer Editor (Ecore Tools) • Object Constraint Language (OCL): Parser, Interpreter • Unified Modeling Language 2 (UML2): graphische Editoren (UML2 Tools) • XML Schema Definition (XSD): API geplant • Business Process Model and Notation 2.0 (BPMN2) • Information Management Metamodel (IMM) • Semantics of Business Vocabulary and Business Rules (SBVR) • Ontology Definition Metamodel (ODM) Technische Universität München Überblick 1. Syntax 2. Modellierungssprachen 3. Transformation 4. Verteilte Modellierung 5. Domänenspezifische Modellierung Technische Universität München Modell-Transformation Abbildung eines Quell-Modells auf ein Ziel-Artefakt entsprechend einer Vorschrift • Modell-zu-Modell: Ziel-Artefakt = Modell – Atlas Transformation Language (ATL) – Query View Transformation (QVT) – medini QVT (nicht Teil des Eclipse Modeling Project) • Modell-zu-Text: Ziel-Artefakt = Text – Java Emitter Templates (JET) – Xpand – Model To Text Language (MTL) Technische Universität München Modell-zu-Modell: Atlas Transformation Language Überblick • Hybride Transformations-Sprache (deklarativ mit imperativen Anteilen) • OCL als Sprache für Ausdrücke (eigene Implementierung) • aktuelle Version: 2.0 Ressourcen • Webseite: http://www.eclipse.org/m2m/atl/ (Dokumentation, Wiki, Use Cases, Beispiele, Patterns) • Newsgroup: eclipse.modeling.m2m (news.eclipse.org) • Wissenschaftliche Veröffentlichungen: z.B. „Transforming Models with ATL“ (Jouault, Kurtev) Technische Universität München Modell-zu-Modell: Atlas Transformation Language Technische Universität München Modell-zu-Modell: Query View Transformation Überblick • Implementierung des gleichnamigen OMG-Standards • OCL als Sprache für Ausdrücke • Komponenten: Operational (QVTO), Relational (QVTR) • aktuelle Version: 1.0 (QVTO), in Entwicklung (QVTR) Ressourcen • Webseite: http://wiki.eclipse.org/M2M/Operational_QVT_Language_(QVTO), http://wiki.eclipse.org/M2M/Relational_QVT_Language_(QVTR) • Newsgroup: eclipse.modeling.m2m (news.eclipse.org) • Spezifikation: http://www.omg.org/cgi-bin/doc?ptc/2007-07-07 Technische Universität München Modell-zu-Modell: Query View Transformation QVTO QVTR Operational Mapping Transformation Core • Editor • Debugger • in Entwicklung Black Box Implementaiton Relations Technische Universität München Modell-zu-Modell: medini QVT Überblick • Relations-Implementierung des gleichnamigen OMG-Standards • Komponenten: Engine, Editor, Debugger • aktuelle Version: 1.6 Ressourcen • Webseite: http://projects.ikv.de/qvt (Download, Wiki, Tutorial, Forum) • Lizenz: Engine => EPL, Editor + Debugger => nur frei für nichtkommerzielle Nutzung Technische Universität München Modell-zu-Text: Java Emitter Templates Überblick: • Syntax ähnlich zu Java Server Pages (JSP) • Java als Sprache für Ausdrücke • Verwendung: Generierung von API und Editor in EMF • aktuelle Version: 0.9 Ressourcen: • Website: http://www.eclipse.org/modeling/m2t/?project=jet#jet • Newsgroup: eclipse.modeling.m2t (news.eclipse.org) Technische Universität München Modell-zu-Text: Java Emitter Templates Technische Universität München Modell-zu-Text: Xpand Überblick • Syntax, die speziell für die Text-Generierung entwickelt wurde • eigene Sprache für Ausdrücke • Verwendung: Generierung des graphischen Editors in GMF (hier OCL als Sprache für Ausdrücke) • aktuelle Version: 4.3 (OAW) Ressourcen • Website: http://wiki.eclipse.org/Xpand, http://www.openarchitectureware.org/ • Newsgroup: eclipse.modeling.m2t (news.eclipse.org) Technische Universität München Modell-zu-Text: Xpand Technische Universität München Modell-zu-Text: Model To Text Language Überblick • Implementierung des OMG-Standards MOF Model To Text Language • OCL als Sprache für Ausdrücke • aktuelle Version: 0.7 Ressourcen • Website: http://wiki.eclipse.org/Model_To_Text_MTL • Newsgroup: eclipse.modeling.m2t (news.eclipse.org) • Spezifikation: http://www.omg.org/spec/MOFM2T/1.0/ Technische Universität München Modell-zu-Text: Model To Text Language Technische Universität München Überblick 1. Syntax 2. Modellierungssprachen 3. Transformation 4. Verteilte Modellierung 5. Domänenspezifische Modellierung Technische Universität München Verteilte Modellierung Zusammenarbeit • Vergleichen und Zusammenführen vom Modellen – EMF Compare Zentrale Persistenz von Modellen auf einem Server • online: Clients müssen ständig mit Server verbunden sein – Teneo – Connected Data Objects (CDO) • offline: Clients brauchen nicht mit Server verbunden sein – EMFStore (nicht Teil des Eclipse Modeling Project) Technische Universität München Zusammenarbeit: EMF Compare Überblick • Vergleichen und Zusammenführen von Modellen • aktuelle Version: 0.8 • Planung: graphisches Vergleichen (GMF), Patches für Modelle, Vergleichen von Resource-Mengen Ressourcen • Webseite: http://wiki.eclipse.org/index.php/EMF_Compare (Download, User Guide, FAQ) • Newsgroup: eclipse.technology.emft (news.eclipse.org) Technische Universität München Zusammenarbeit: EMF Compare Problem: standardmäßig keine IDs in EMF [EMF Compare Webseite] Technische Universität München Zusammenarbeit: EMF Compare Unterschiede Zusammenführen Vergleichen Version 1 Version 2 Technische Universität München Zentrale Persistenz online: Teneo Überblick • Persistenz von Modellen in einer relationalen Datenbank • Objektrelationale Mapper: Hibernate, Java Data Objects (JDO) • aktuelle Version: 1.0 Ressourcen • Website: http://www.elver.org/ (Dokumentation, Tutorials), http://www.eclipse.org/modeling/emf/downloads/?project=teneo (Downloads) • Newsgroup: eclipse.tools.emf (news.eclipse.org) • Beispiel: https://www.gpublication.com/eclipse/#requestedContent=contentI D://EclipseConferences/ESE2008/48 Technische Universität München Zentrale Persistenz online: Teneo Design time Runtime [Teneo Webseite] Technische Universität München Zentrale Persistenz online: Connected Data Objects Überblick • Persistenz von Modellen in einer Datenbank (relational, objektorientiert, …) • viele Anpassungs- und Erweiterungsmöglichkeiten • aktuelle Version: 1.0 Ressourcen • Website: http://wiki.eclipse.org/CDO (Download, Dokumentation, Tutorial) • Newsgroup: eclipse.technology.emf(t) (news.eclipse.org) • Beispiel: https://www.gpublication.com/eclipse/#requestedContent=contentI D://EclipseConferences/ESE2008/48 Technische Universität München Zentrale Persistenz online: Connected Data Objects Version 1.0 • • • • • generiertes Metamodell interpretiertes Metamodell server-side transactions object versioning views high-performance protocol … Version 2.0 • • • • [CDO Webseite] • • structured resources explicit locking save points change subscriptions query framework … Technische Universität München Zentrale Persistenz offline: EMFStore Überblick • Versionierung von Modellen ähnlich wie CVS/SVN • aktuelle Version: momentan Teil von UniCase, unabhängige Version geplant Ressourcen • Website: http://www.unicase.org/ • Entwicklung: Maximilian Kögel, Jonas Helming (Lehrstuhl Brügge) Technische Universität München Zentrale Persistenz offline: EMFStore update EMFStore Server Client Workspace commit Technische Universität München Überblick 1. Syntax 2. Modellierungssprachen 3. Transformation 4. Verteilte Modellierung 5. Domänenspezifische Modellierung Technische Universität München Domänenspezifische Modellierung Überblick • Integration aller Modellierungs-Komponenten zu einem Werkzeug zur Erstellung von domänenspezifischen Sprachen • Komponenten: EMF, GMF, QVTO, Xpand, MWE (Modeling Workflow Engine), OCL, UML2 Tools, Teneo • Erscheinung: Galileo (Eclipse 3.5) Ressourcen • Website: http://www.eclipse.org/modeling/amalgam/ • Newsgroup: eclipse.modeling.amalgam (news.eclipse.org) • Buch: Eclipse Modeling Project: A Domain-Specific Language Toolkit (Gronback) Technische Universität München Eclipse Modeling Project • • • • • • Abstrakte Syntax: EMF Konkrete Syntax – Textuelle Syntax: XText – Graphische Syntax: GMF Modellierungssprachen: Ecore, OCL, UML2, XSD Transformation – Model-zu-Model: ATL, QVT, medini QVT – Model-zu-Text: JET, XPand, MTL Kollaboration – Persistenz: Teneo, CDO, EMFStore – Compare and Merge: EMF Compare Domänenspezifische Modellierung: Modeling Amalgam