Einführung in das Eclipse Modeling Framework
Dr. Thorsten Arendt Marburg, 22. Oktober 2015
Überblick
• Einführung in das Eclipse Modeling Framework: – zur objektorientierten Modellierung von Datenstrukturen
• Wie modelliert man Datenstrukturen mit EMF? – Welche Sprachkonzepte gibt es? – Welche Editoren gibt es (Metamodellierung)?
• Wie definiert man konkrete Objektstrukturen, die zum Datenmodell passen?
– Welche Editoren gibt es (Instanzenmodellierung)?
2 Software-Evolution WS 2015/2016
Das Eclipse Modeling Framework
3 Software-Evolution WS 2015/2016
• Pragmatischer Ansatz zur Kombination von Modellierung und Programmierung
• EMF vereinigt drei verschiedene Technologien: XML, UML und Java
– EMF ist die “Klammer” zwischen diesen Technologien.
• Viele Eclipse-Projekte basieren auf EMF
– Graphical Editing Framework (GEF) – Graphical Modeling Framework (GMF) – Model to Model Transformation (M2M) – Model to Text Transformation (M2T) – …
Addison Wesley: Eclipse Modeling Framework – A Developer's Guide
Editoren für EMF-Metamodelle
4 Software-Evolution WS 2015/2016
• Erstellen und Bearbeiten der EMF-Metamodelle in – Baum-basierten Editoren (abstrakte Syntax) – UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax)
• Alle Editoren garantieren eine semantisch-äquivalente Metamodellierung
Baum-basierter Editor UML-basierter Editor Text-basierter Editor
EMF und XML
5 Software-Evolution WS 2015/2016
• EMF Modelle werden im XML Metadata Interchange (XMI) Format gespeichert.
– XMI ist ein Standard (ISO/IEC 19509:2014)
Code-Generierung in EMF
6 Software-Evolution WS 2015/2016
EMF Klassen- diagramm
EMF Generator
Java Klassen zur Manipulation des Modells
einfacher baumbasierter
Editor
benutzt
Beispiel: Datenstrukturen einer Konferenz-App
7 Software-Evolution WS 2015/2016
Beispiel: Datenmodell als EMF-Modell
8 Software-Evolution WS 2015/2016
Baum-basierte Darstellung
Beispiel: Datenmodell als EMF-Modell
9 Software-Evolution WS 2015/2016
Graphische Darstellung
Editoren für Instanz-Modelle (1)
10 Software-Evolution WS 2015/2016
Reflective Ecore Model Editor:
Erstellen und Bearbeiten von dynamischen Instanzen
Dateiendung: *.xmi
Editoren für Instanz-Modelle (2)
11 Software-Evolution WS 2015/2016
Reflective Ecore Model Editor:
Erstellen und Bearbeiten von dynamischen Instanzen
Dateiendung: *.xmi
Editoren für Instanz-Modelle (3)
12 Software-Evolution WS 2015/2016
Spezifisch generierter, Baum-basierter Editor:
Erstellen und Bearbeiten von Instanzen
Dateiendung spezifisch, z.B.: *.conference
Editoren für Instanz-Modelle (4)
13 Software-Evolution WS 2015/2016
Spezifisch generierter, Baum-basierter Editor:
Erstellen und Bearbeiten von Instanzen
Dateiendung spezifisch, z.B.: *.conference
Containerstrukturen
14 Software-Evolution WS 2015/2016
• Containment-Beziehungen spielen in EMF eine besondere Rolle.
• Es sollte einen obersten Container geben, in dem alle Instanz-Objekte direkt oder transitiv enthalten sind.
• Vorteile: – Speichern des gesamten Modells möglich – Editieren des gesamten Modells möglich
• Containment-Beziehungen sind Kompositionen: – Eine Instanz lebt nicht außerhalb seines Containers. – Eine Instanz kann nicht in mehreren Containern enthalten sein.
Ecore: Das Meta-Metamodell von EMF
15 Software-Evolution WS 2015/2016
EObject
EModelElement
EFactory ENamedElement
EPackage EClassifier EEnumLiteral ETypedElement
EClass
EAttribute
EStructuralFeature EOperation EParameter
EDataType
EEnum
EReference Programmier-Konzepte
Abstrakte Modellierungs-Konzepte
Konkrete Modellierungs-Konzepte
Taxonomie der Sprachkonzepte: • Äquivalent zu java.lang.object
• Kapselt den Reflection Mechanismus (nur auf Code-Ebene nutzbar)
Objekterstellung (nur auf Code-Ebene
nutzbar)
Modellierungskonzepte des Ecore-Metamodells
16 Software-Evolution WS 2015/2016
Ecore basiert auf Objekt-Orientierung
17 Software-Evolution WS 2015/2016
• Klassen, Attribute, Referenzen, Vererbung, … • Datentypen basieren auf denen von Java • Binäre Assoziationen werden durch zwei Referenzen repräsentiert
eReferences
0..*
eAttributes
EReference name: String containment:boolean lowerBound: int upperBound: int
EClass name: String
EAttribute name: String
EDataType name: String 1 0..*
0..* eSuperTypes
1
0..1 eOpposite eReferenceType
eAttributeType
Klassen
18 Software-Evolution WS 2015/2016
• Klassen haben Attribute, Operationen und Referenzen.
• EClassifier ist Oberklasse von EClass und EDataType.
• EClass-Eigenschaften: – Name – Klassenname – Abstract – abstrakte Klasse – Interface –
Schnittstellenklasse
• EClass-Referenzen: – EAttributes – Attribute – EReferences - Referenzen – ESuper Types – Liste der
Oberklassen – Instance Type Name –
Korrespondenz zu einer ‘normalen’ Java-Klasse
EClass Person
Strukturelle Eigenschaften
19 Software-Evolution WS 2015/2016
• EStructuralFeature ist ein getyptes Element mit Namen.
• EAttribute und EReference haben EStructuralFeature als Oberklasse.
• EStructuralFeature-Eigenschaften:
– Changeable – von aussen setzbar – Transient – wird nicht gespeichert – Unique – eindeutiger Wert – Unsettable – setzbar – Volatile – für abgeleitete Werte (Sie werden on-the-fly berechnet.) – Lower Bound, Upper Bound: Kardinalität – DefaultValueLiteral: defaultValue als String
EAttribute
20 Software-Evolution WS 2015/2016
• Zusätzliche EAttribute-Eigenschaften:
– ID – Attribut wird zur Identifizierung des Objekts benutzt.
– EAttributeType – Typ des Attributs (Data Type)
Beispiel: EAttribute Person.surname
EReference
21 Software-Evolution WS 2015/2016
• Zusätzliche EReference-Eigenschaften:
– Containment – gesetzt, falls die Referenz eine Komposition ist.
– Resolve Proxies – referenzierte Objekte aus anderen Resourcen werden als Proxies gehalten
Beispiel: EReference Person.institute
Binäre Assoziationen
22 Software-Evolution WS 2015/2016
• Die Modellierung einer binären Assoziation benötigt zwei Referenzen – Eine Referenz für jedes Assoziationsende – Beide Referenzen definieren sich gegenseitig als eOpposite
eReferences
0..* 1
0..1 eOpposite
EClass
C1:EClass
C2:EClass
r1:EReference
r2:EReference
C1 C2 r1 r2
eOpposite eOpposite
Ecore
MM (abstract syntax) MM (concrete syntax)
name: String containment: boolean lowerBound: int upperBound: int
EReference
eReferenceType
eReferenceType
eReferenceType
Binäre Assoziationen: Beispiel
23 Software-Evolution WS 2015/2016
EReference Paper.authors EReference Person.papers
Datentypen und Pakete
24 Software-Evolution WS 2015/2016
• Datentypen EDataType – primitive Datentypen wie
Boolean, Integer, String, etc. – komplexe Datentypen wie z.B.:
Containertypen
• EDataType-Eigenschaft: – serializable – ist serialisierbar
(speicherbar)
• Ecore hat vordefinierte Datentypen wie EBoolean, EChar, EInt, EString,etc.
• Enumerations EEnum – definierte Werte: EEnumLiteral
• Zusammengehörige Meta-Elemente werden in Paketen zusammengefasst.
• EPackage-Eigenschaften: – Name – NsURI – URI, die das Paket
identifiziert – NsPrefix – Namensraum
• EPackage-Referenzen: – ESuperPackage – Oberpaket – ESubpackage – Unterpakete – EFactoryInstance –
zugehörige Factory-Instanz
Zusammenfassung
25 Software-Evolution WS 2015/2016
• EMF kombiniert Modellierung und Programmierung – Generiert Java-Klassen und Baum-basierte Editoren – Ein Verwendungszweck: Definition einer neuen (domänenspezifischen
Modellierungssprache) • Umfangreiche Werkzeugsammlung rund um EMF vorhanden • EMF zur Modellierung von Datenstrukturen:
– Folgt dem Objekt-Orientierten Paradigma – Pakete, Klassen, Attribute, Referenzen, …
• EMF zur Modellierung von Datenhaltung: – Meta-Attribute wie Transient, ID, Volatile
• Konkrete Objektstrukturen als Instanzmodelle – Diese müssen die definierten Strukturen und Multiplizitäten erfüllen. – Instanziierung auch ohne den generierten Editor mittels Reflection
Sekundär-Literatur
26 Software-Evolution WS 2015/2016
• Steinberg, Dave, Frank Budinsky, Ed Merks, Marcelo Paternostro: EMF: Eclipse Modeling Framework, Second Edition, Pearson Education, 2008.
• Eclipse Modeling Framework: http://www.eclipse.org/modeling/emf/
• Marco Brambilla, Jordi Cabot, Manuel Wimmer: Model-Driven Software Engineering in Practice, Morgan & Claypool, USA, 2012 (www.mdse-book.com).