Motivation Motivation Grundlagen Grundlagen Technologien Technologien Manipulation Manipulation...

17

Transcript of Motivation Motivation Grundlagen Grundlagen Technologien Technologien Manipulation Manipulation...

Page 1: Motivation Motivation Grundlagen Grundlagen Technologien Technologien Manipulation Manipulation Ecore Ecore Genmodell Genmodell Demo Demo Persistenz Persistenz.
Page 2: Motivation Motivation Grundlagen Grundlagen Technologien Technologien Manipulation Manipulation Ecore Ecore Genmodell Genmodell Demo Demo Persistenz Persistenz.

MotivationMotivation GrundlagenGrundlagen TechnologienTechnologien ManipulationManipulation EcoreEcore GenmodellGenmodell DemoDemo PersistenzPersistenz NotificationNotification Ausblick GMFAusblick GMF Fazit / QuellenFazit / Quellen

Page 3: Motivation Motivation Grundlagen Grundlagen Technologien Technologien Manipulation Manipulation Ecore Ecore Genmodell Genmodell Demo Demo Persistenz Persistenz.

Soll ich Modellieren oder Programmieren?Soll ich Modellieren oder Programmieren? sowohl als auch!!! sowohl als auch!!!

Produktivitäts-Steigerung durch Code-GenerierungProduktivitäts-Steigerung durch Code-Generierung(und Fehlerminimierung)(und Fehlerminimierung)

Software (Modell) leicht erweiterbar Software (Modell) leicht erweiterbar Annehmlichkeiten eines Frameworks nutzen Annehmlichkeiten eines Frameworks nutzen

(Notification, Persistenz, …)(Notification, Persistenz, …)

Page 4: Motivation Motivation Grundlagen Grundlagen Technologien Technologien Manipulation Manipulation Ecore Ecore Genmodell Genmodell Demo Demo Persistenz Persistenz.

EMF ist ein eigenständiges Eclipse-ProjektEMF ist ein eigenständiges Eclipse-Projekt

Modellgetriebene EntwicklungModellgetriebene Entwicklung Pragmatischer Ansatz von Model-Driven Software Development (MDSD)Pragmatischer Ansatz von Model-Driven Software Development (MDSD)

Quelltextgenerierungs-Framework zur Erzeugung diverser Quellcode ArtefakteQuelltextgenerierungs-Framework zur Erzeugung diverser Quellcode Artefakte

Modell-Input/Output:Modell-Input/Output: XML-SchemaXML-Schema

Java-Code mit AnnotationsJava-Code mit Annotations

UML-DiagrammUML-Diagramm

Baum-EditorBaum-Editor

Modell-Funktionalitäten:Modell-Funktionalitäten: InstanzierungInstanzierung

AbfragenAbfragen

ManipulierenManipulieren

Serialisieren, validieren, PersistenzSerialisieren, validieren, Persistenz

Notification für MVCNotification für MVC

Generieren von JUnit-Code, um den generierten Code zu testenGenerieren von JUnit-Code, um den generierten Code zu testen

Page 5: Motivation Motivation Grundlagen Grundlagen Technologien Technologien Manipulation Manipulation Ecore Ecore Genmodell Genmodell Demo Demo Persistenz Persistenz.

Vereinigt drei Technologien:Vereinigt drei Technologien: XMLXML UMLUML Java Java

EMF ist die abstrahierte Notation,EMF ist die abstrahierte Notation,

welche die Repräsentationen verbindetwelche die Repräsentationen verbindet

Modellierung des Datenmodells:Modellierung des Datenmodells: UMLUML Java mittels AnnotationsJava mittels Annotations XMI (XML mit vordefiniertenXMI (XML mit vordefinierten

Tags)Tags)

Page 6: Motivation Motivation Grundlagen Grundlagen Technologien Technologien Manipulation Manipulation Ecore Ecore Genmodell Genmodell Demo Demo Persistenz Persistenz.

• Veränderung des Datenmodells werden in allen Veränderung des Datenmodells werden in allen Repräsentation nachgezogenRepräsentation nachgezogen

Page 7: Motivation Motivation Grundlagen Grundlagen Technologien Technologien Manipulation Manipulation Ecore Ecore Genmodell Genmodell Demo Demo Persistenz Persistenz.

ecore ist die Meta-Sprache zur Definition des Daten-Modellsecore ist die Meta-Sprache zur Definition des Daten-Modells

Grundlage für die QuelltexterzeugungGrundlage für die Quelltexterzeugung

Eclipse bietet eine Baum-Editor für die Erfassung des ecore-Modells (siehe Bild)Eclipse bietet eine Baum-Editor für die Erfassung des ecore-Modells (siehe Bild) Gewisse Eigenschaften können nur imGewisse Eigenschaften können nur im

Baum-Editor gesetzt werdenBaum-Editor gesetzt werden

Salopp betrachtet, entspricht es dem Salopp betrachtet, entspricht es dem

KlassendiagrammKlassendiagramm

Konkret: Spezifikation der Daten einer Konkret: Spezifikation der Daten einer

Anwendung (Nutzdaten)Anwendung (Nutzdaten) Objekte mit AttributenObjekte mit Attributen

Relationen (Assoziationen) zwischen ObjektenRelationen (Assoziationen) zwischen Objekten

Operationen auf ObjektenOperationen auf Objekten

Einfache Bedingungen (z.B. Multiplizität) von Einfache Bedingungen (z.B. Multiplizität) von

Objekten und RelationenObjekten und Relationen

Page 8: Motivation Motivation Grundlagen Grundlagen Technologien Technologien Manipulation Manipulation Ecore Ecore Genmodell Genmodell Demo Demo Persistenz Persistenz.

Daten-Modell unserer Anwendung leitet schlussendlich von EObject Daten-Modell unserer Anwendung leitet schlussendlich von EObject

ab:ab:

primär EClass, EAttribute, EReference primär EClass, EAttribute, EReference

Persistenz, Notification, … Persistenz, Notification, …

/** * @model abstract="true" * @generated */public interface Shape extends EObject{ ...}

Page 9: Motivation Motivation Grundlagen Grundlagen Technologien Technologien Manipulation Manipulation Ecore Ecore Genmodell Genmodell Demo Demo Persistenz Persistenz.

durch genmodel wird die Quelltexterzeugung ermöglichtdurch genmodel wird die Quelltexterzeugung ermöglicht im Gegensatz zur ecore stellt es plattformspezifische im Gegensatz zur ecore stellt es plattformspezifische

(CPU/OS) Informationen zu Verfügung(CPU/OS) Informationen zu Verfügung Mittels genmodels kann konfiguriert werden, wie der Mittels genmodels kann konfiguriert werden, wie der

Quelltext generiert werden soll:Quelltext generiert werden soll: Angabe der weiter benötigten Package für die Code-GenerierungAngabe der weiter benötigten Package für die Code-Generierung Spezifikation des Base PackageSpezifikation des Base Package

Vorgang wird meistens durch einen Wizard unterstütztVorgang wird meistens durch einen Wizard unterstützt

Page 10: Motivation Motivation Grundlagen Grundlagen Technologien Technologien Manipulation Manipulation Ecore Ecore Genmodell Genmodell Demo Demo Persistenz Persistenz.
Page 11: Motivation Motivation Grundlagen Grundlagen Technologien Technologien Manipulation Manipulation Ecore Ecore Genmodell Genmodell Demo Demo Persistenz Persistenz.

Standardmässig wird eine dateibasierte Persistenz auf XML-Standardmässig wird eine dateibasierte Persistenz auf XML-Basis angebotenBasis angeboten

Beispiel Speichern/Laden eines EObject in XMI:Beispiel Speichern/Laden eines EObject in XMI:

// ResourceSet erzeugenResourceSet resourceSet = new ResourceSetImpl();

// URI zur Modelldatei (XMI) festlegenURI fileURI = URI.createFileURI(new File("anyModelFile.xmi").getAbsolutePath());

// Resource für Modelldatei anlegenResource resource = resourceSet.createResource(fileURI);

// Ein Objekt vom Typ Vertrag hinzufügenRectabgularShape rectangle = EvmsFactory.eInstance.createRectabgularShape();resource.getContents().add(rectangle);

// Inhalt von Resource speichernresource.save(Collections.EMPTY_MAP);

Page 12: Motivation Motivation Grundlagen Grundlagen Technologien Technologien Manipulation Manipulation Ecore Ecore Genmodell Genmodell Demo Demo Persistenz Persistenz.

Plugin EMF TeneoPlugin EMF Teneo

Ermöglicht die Anbindung an eine beliebige relationalen Ermöglicht die Anbindung an eine beliebige relationalen

DatenbankDatenbank

Nutzt vorhandene Nutzt vorhandene

O/R-Mapping-Technologien O/R-Mapping-Technologien

wie Hibernate oder wie Hibernate oder

EclipseLinkEclipseLink

Page 13: Motivation Motivation Grundlagen Grundlagen Technologien Technologien Manipulation Manipulation Ecore Ecore Genmodell Genmodell Demo Demo Persistenz Persistenz.

public interface public interface EObjectEObject extends extends NotifierNotifier { ... }{ ... }

public interface public interface ShapeShape extends extends EObjectEObject { ... }{ ... }

public abstract class ShapeImpl extends EObjectImpl implements public abstract class ShapeImpl extends EObjectImpl implements ShapeShape {{

......

/** @generated *//** @generated */

public void setName(String newName) {public void setName(String newName) {

String oldName = name;String oldName = name;

name = newName;name = newName;

if (eNotificationRequired())if (eNotificationRequired())

eNotify(new ENotificationImpl(this, Notification.SET, eNotify(new ENotificationImpl(this, Notification.SET, ModelPackage.SHAPE__NAME, oldName, name)); ModelPackage.SHAPE__NAME, oldName, name));

}}

......

Ist ein Benachrichtigungs-Mechanismus bei Änderungen eines ObjektesIst ein Benachrichtigungs-Mechanismus bei Änderungen eines Objektes

Observer-Pattern Observer-Pattern Dient zur Aktualisierung von Views und abhängigen Objekten (MVC)Dient zur Aktualisierung von Views und abhängigen Objekten (MVC) Notification ist wichtiger Bestandteil von EMFNotification ist wichtiger Bestandteil von EMF Jedes Objekt des Daten-Modells leitet von EObject ab und implementiert somit Jedes Objekt des Daten-Modells leitet von EObject ab und implementiert somit

automatisch Notifierautomatisch Notifier

Page 14: Motivation Motivation Grundlagen Grundlagen Technologien Technologien Manipulation Manipulation Ecore Ecore Genmodell Genmodell Demo Demo Persistenz Persistenz.

Erlaubt einen beliebigen, grafischen Editor «zusammen zu Erlaubt einen beliebigen, grafischen Editor «zusammen zu

klicken» ohne eigenen Code zu schreiben. Diese Arbeit wird klicken» ohne eigenen Code zu schreiben. Diese Arbeit wird

von Generatoren übernommen.von Generatoren übernommen.

GMF verwendet EMF um das Daten-Metamodell abzubildenGMF verwendet EMF um das Daten-Metamodell abzubilden

GMF greift auf GEF (Graphical Editing Framework) zurück, GMF greift auf GEF (Graphical Editing Framework) zurück,

dieses stellt umfangreiche Klassen für die graphische dieses stellt umfangreiche Klassen für die graphische

Darstellung und Werkzeuge für Editoren bereit.Darstellung und Werkzeuge für Editoren bereit.

Page 15: Motivation Motivation Grundlagen Grundlagen Technologien Technologien Manipulation Manipulation Ecore Ecore Genmodell Genmodell Demo Demo Persistenz Persistenz.
Page 16: Motivation Motivation Grundlagen Grundlagen Technologien Technologien Manipulation Manipulation Ecore Ecore Genmodell Genmodell Demo Demo Persistenz Persistenz.

Enge Eclipse-Integration: Generierung von UI-Komponenten, Zusammenarbeit mit Enge Eclipse-Integration: Generierung von UI-Komponenten, Zusammenarbeit mit

anderen Eclipse-Projekten, etwa im Eclipse Graphical Modeling Framework (GMF)anderen Eclipse-Projekten, etwa im Eclipse Graphical Modeling Framework (GMF)

Man bekommt als Entwickler viel geschenkt, etwa Persistenz und Validierung. Dies Man bekommt als Entwickler viel geschenkt, etwa Persistenz und Validierung. Dies

steigert die Produktivität beim Entwickeln. steigert die Produktivität beim Entwickeln.

Wenig Einarbeitungszeit notwendig zum Modellieren aufgrund vieler Möglichkeiten der Wenig Einarbeitungszeit notwendig zum Modellieren aufgrund vieler Möglichkeiten der

Modellierung (XML, UML, Java-Annotations) Modellierung (XML, UML, Java-Annotations)

Einsatz von Code-Generatoren steigert Produktivität und reduziert Wiederholungen und Einsatz von Code-Generatoren steigert Produktivität und reduziert Wiederholungen und

damit mögliche Fehlerquellendamit mögliche Fehlerquellen

Basiert auf offenen Standards und Open-Source-FrameworksBasiert auf offenen Standards und Open-Source-Frameworks

Nur noch geringfügige Konfigurationen oder manuelle Anpassungen am Quellcode für Nur noch geringfügige Konfigurationen oder manuelle Anpassungen am Quellcode für

das Daten-Modell erforderlichdas Daten-Modell erforderlich

Erste Erfolge sind schnell erreicht. Komplexe Aufgaben erfordert tiefere Einarbeitung in Erste Erfolge sind schnell erreicht. Komplexe Aufgaben erfordert tiefere Einarbeitung in

das Thema das Thema aufwendig aufwendig

Diverse Anbindung an EMF vorhanden: GMF, Teneo, …Diverse Anbindung an EMF vorhanden: GMF, Teneo, …

Es gelten die allgemeinen Vor-/Nachteile von Frameworks (Einarbeitung, Komfort, Es gelten die allgemeinen Vor-/Nachteile von Frameworks (Einarbeitung, Komfort,

Skalierbarkeit, Abstraktion, Standard-Lektüre, …)Skalierbarkeit, Abstraktion, Standard-Lektüre, …)

Framework-Wechsel erfordert komplettes RedesignFramework-Wechsel erfordert komplettes Redesign

Page 17: Motivation Motivation Grundlagen Grundlagen Technologien Technologien Manipulation Manipulation Ecore Ecore Genmodell Genmodell Demo Demo Persistenz Persistenz.

Web:Web: EMF-Projekt-Homepage:EMF-Projekt-Homepage:

http://www.eclipse.org/modeling/emf/ EMF-Tutorial für Eclipse:EMF-Tutorial für Eclipse:

http://www.vogella.de/articles/EclipseEMF/article.html GMF-Tutorial:GMF-Tutorial:

www.tm.tfh-wildau.de/vandenhouten/media/GMF-Step-By-Step.pdf

Bücher:Bücher: EMF Eclipse Modeling Framework, Addison Wesley, ISBN 10: 0-EMF Eclipse Modeling Framework, Addison Wesley, ISBN 10: 0-

321-33188-5321-33188-5