Motivation Motivation Grundlagen Grundlagen Technologien Technologien Manipulation Manipulation...
-
Upload
lamprecht-geisinger -
Category
Documents
-
view
111 -
download
6
Transcript of Motivation Motivation Grundlagen Grundlagen Technologien Technologien Manipulation Manipulation...
MotivationMotivation GrundlagenGrundlagen TechnologienTechnologien ManipulationManipulation EcoreEcore GenmodellGenmodell DemoDemo PersistenzPersistenz NotificationNotification Ausblick GMFAusblick GMF Fazit / QuellenFazit / Quellen
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, …)
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
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)
• Veränderung des Datenmodells werden in allen Veränderung des Datenmodells werden in allen Repräsentation nachgezogenRepräsentation nachgezogen
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
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{ ...}
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
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);
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
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
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.
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
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