180 likes | 359 Views
Eclipse Modelling Framework. Christian Kästner Modellgetriebene Softwareentwicklung. Überblick. Einleitung EMF Einordnung Eclipse Platform Modellerstellung Code Generierung Zusammenfassung/Ausblick. EMF. Was ist EMF Framework für strukturierte Modelle (beschreiben und erstellen)
E N D
Eclipse Modelling Framework Christian Kästner Modellgetriebene Softwareentwicklung
Überblick • Einleitung EMF • Einordnung • Eclipse Platform • Modellerstellung • Code Generierung • Zusammenfassung/Ausblick
EMF • Was ist EMF • Framework für strukturierte Modelle (beschreiben und erstellen) • Java Code Generator • Teilprojekt von Eclipse, Open Source • Framework, für Entwickler • Üblicher Anwendungsfall: Erstellung von Datenmodellen für Java Applikationen, als Alternative zu POJOs • Kann Eclipse Editoren für die Modelle generieren
EMF im MDSD Kontext • EMF ist ein Werkzeug im Rahmen der MDSD, bildet aber nur einen Teil ab • Plattformunabhängige Modellierung, aber deutliche Ergänzungen am generierten Code • Nur Java-Code Generierung
Metamodelle • EMF begann als Implementierung der MOF • Internes MOF-ähnliches Meta Modell wird Ecore genannt. • Beschränkt sich auf den Kern der MOF • MOF 2.0 definiert einen ähnlichen Kern genannt EMOF (Essential MOF), der mit Ecore vergleichbar ist. • Transformation von MOF nach Ecore und zurück i.d.R. problemlos möglich.
Erstellung von Modellen • EMF kann Modelle aus XMI laden • Manuell erzeugt mit einem XML oder Text-Editor • Exportiert aus Modellierungswerkzeugen wie Rational Rose • Editor-Plugins für Eclipse die EMF-Modelle erstellen und bearbeiten können z.B. Omondo • Modelle können aus kommentierten Java Interfaces generiert werden. • „Best of Breed“ • EMF definiert nur Basisstruktur und einen sehr grundlegenden Editor • Tools wie Rational Rose oder Omondo zum Bearbeiten der Modelle, der Benutzer kann bestes Werkzeug auswählen
Ecore Darstellung • <ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" [...]> <eClassifiers xsi:type="ecore:EClass" name="Book"> <eStructuralFeatures xsi:type="ecore:EAttribute“ name="title" eType="ecore:EDataType [...] EString"/> <eStructuralFeatures xsi:type="ecore:EAttribute“ name="pages" eType="ecore:EDataType [...] EInt"/> </eClassifiers></ecore:EPackage>
Kommentiertes Java-Interface • /** • * @model • */ • public interface Book • { • /** • * @model • */ • String getTitle(); • /** • * @model • */ • int getPages(); • }
Generierter Java-Code • public class BookImpl extends EObjectImpl implements Book { • [...] • protected static final int PAGES_EDEFAULT = 0; • protected int pages = PAGES_EDEFAULT; • /** • * @generated • */ • public int getPages() { • return pages; • } • /** • * @generated • */ • public void setPages(int newPages) { • int oldPages = pages; • pages = newPages; • if (eNotificationRequired()) • eNotify(new ENotificationImpl(this, Notification.SET, LibraryPackage.BOOK__PAGES, oldPages, pages)); • } [...]
Anpassung des Java-Codes • In den generierten Javaklassen können eigene Methoden und Member hinzugefügt werden. • Generierte Methoden können überschrieben werden indem das @generated – JavaDoc-Tag entfernt wird • Ersetzen der generierten Methode durch eine mit “Gen”-Postfix
Vorteile des generierten Java-Codes • Trennung von Interface und Implementierung • Factory Pattern für leichte Erweiterbarkeit • Notifier für alle Attribute durch Observer Pattern • Lazy Loading durch Proxy Pattern • Leichter Zugriff auf Metadaten via Reflection • Referenzielle Integrität • Serialisation nach XMI • Persistenz • Leichter Austausch von Daten mit XML-Dateien • Referenzen bleiben erhalten auch über mehrere Dateien
Zusammenfassung / Ausblick • Eclipse Modeling Framework (EMF) ist ein leistungsstarkes Framework zur Generierung von Java-Code auf Basis eines EMF-Klassenmodells • Generierte Modelle häufig effizienter als POJOs • Bereits praktisch einsetzbar • Intern in vielen IBM Produkten genutzt z.B. Websphere • Sehr leicht Editoren, zukünftig auch graphische Editoren für die Modelle generierbar
Literatur • B. Moore, D. Dean, A. Gerber, G. Wagenknecht und P. Vanderheyden, Eclipse Development using the Graphical Editing Framework and the Eclipse Modeling Framework, Redbooks IBM, 2004 • www.eclipse.org/emf