1 / 17

Eclipse Modelling Framework

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)

hampton
Download Presentation

Eclipse Modelling Framework

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Eclipse Modelling Framework Christian Kästner Modellgetriebene Softwareentwicklung

  2. Überblick • Einleitung EMF • Einordnung • Eclipse Platform • Modellerstellung • Code Generierung • Zusammenfassung/Ausblick

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

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

  5. Eclipse

  6. Eclipse Architektur

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

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

  9. Beispiel

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

  11. Kommentiertes Java-Interface • /** • * @model • */ • public interface Book • { • /** • * @model • */ • String getTitle(); • /** • * @model • */ • int getPages(); • }

  12. 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)); • } [...]

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

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

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

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

  17. Danke für die Aufmerksamkeit

More Related