26
Einführung in das Eclipse Modeling Framework Dr. Thorsten Arendt Marburg, 22. Oktober 2015

Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

Einführung in das Eclipse Modeling Framework

Dr. Thorsten Arendt Marburg, 22. Oktober 2015

Page 2: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

Ü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

Page 3: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

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

Page 4: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

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

Page 5: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

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)

Page 6: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

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

Page 7: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

Beispiel: Datenstrukturen einer Konferenz-App

7 Software-Evolution WS 2015/2016

Page 8: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

Beispiel: Datenmodell als EMF-Modell

8 Software-Evolution WS 2015/2016

Baum-basierte Darstellung

Page 9: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

Beispiel: Datenmodell als EMF-Modell

9 Software-Evolution WS 2015/2016

Graphische Darstellung

Page 10: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

Editoren für Instanz-Modelle (1)

10 Software-Evolution WS 2015/2016

Reflective Ecore Model Editor:

Erstellen und Bearbeiten von dynamischen Instanzen

Dateiendung: *.xmi

Page 11: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

Editoren für Instanz-Modelle (2)

11 Software-Evolution WS 2015/2016

Reflective Ecore Model Editor:

Erstellen und Bearbeiten von dynamischen Instanzen

Dateiendung: *.xmi

Page 12: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

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

Page 13: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

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

Page 14: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

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.

Page 15: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

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)

Page 16: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

Modellierungskonzepte des Ecore-Metamodells

16 Software-Evolution WS 2015/2016

Page 17: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

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

Page 18: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

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

Page 19: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

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

Page 20: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

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

Page 21: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

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

Page 22: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

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

Page 23: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

Binäre Assoziationen: Beispiel

23 Software-Evolution WS 2015/2016

EReference Paper.authors EReference Person.papers

Page 24: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

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

Page 25: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

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

Page 26: Einführung in das Eclipse Modeling Framework · UML-basierten Editoren (grafische, konkrete Syntax) – Text-basierten Editoren (textuelle, konkrete Syntax) • Alle Editoren garantieren

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