EMF (Eclipse modelling framework)

Das Eclipse Modelling Framework (EMF) ist ein als Open Source verfügbares Framework, das auf der Basis von strukturierten Modellen Java-Programmcode erzeugen kann. Die zentrale Komponente in diesem Framework ist die Code-Generierungs-Engine, die von der Eclipse Foundation als Plug-In für die Open Source Plattform Eclipse entwickelt wurde. Ein relevantes Teilprojekt von EMF ist Java Emitter Templates (JET), ein Tool mit dessen Unterstützung die Generierung von unterschiedlichen Textartefakten wie SQL, Java, XML oder generell Text möglich ist. Einer der Initiatoren von EMF war IBM, die dem Projekt den Kern von Rational Rose zur Verfügung stellten.


Entwicklungsphasen von Eclipse Modelling Framework (EMF)

Das ursprüngliche Ziel war die Implementierung der Meta Object Facility (MOF), was sich aber im Laufe der Entwicklung als zu komplex herausstellte. Daher ist EMF als Implementierung einer Teilmenge von MOF anzusehen, die auch Essential MOF (EMOF) bezeichnet wird. Das Metamodell von EMF wird Ecore genannt. Für die Definition von Modellen verwendet EMF das XMI-Format ( XML Metadata Interchange). Das Modell selbst kann aus XML-Schema, Java-Code mit Annotationen, UML-Diagrammen oder einem von Eclipse zur Verfügung gestellten speziellen Baum-Editor erstellt werden. Weiterhin werden Funktionalitäten wie u.a. die Persistenz oder die Validierung von Modellen angeboten. Zudem lässt sich mit Hilfe des EMF JUnit-Code erzeugen, der dem Testen des generierten Java-Programmcodes dienen kann. Durch den Einsatz von EMF können Teile des Quellcodes automatisch generiert werden, so dass aufwändige Schreibarbeit und mögliche Fehler reduziert werden. Ein Vorteil von EMF ist auch die gute Integration in Eclipse, so dass das Zusammenwirken mit weiteren Eclipse-Projekten - beispielsweise bei der Generierung von UI-Komponenten oder im Hinblick auf das Eclipse Graphical Modelling Framework (GMF) - ohne weiteren Aufwand möglich ist.

Die Object Management Group (OMG) definiert mit der Model Driven Architecture (MDA) ein geschlossenes Verfahren zu Entwicklung von Software, das auf Modellen basiert. EMF ermöglicht die modellgetriebene Entwicklung von Eclipse Plug-Ins, Java- oder auch Rich-Client-Plattformen (RCP). Die Modelle der MDA bestehen aus einer Reihe von UML-Diagrammen wie beispielsweise Klassen- oder Zustandsdiagramme. EMF bildet einen Teil der MDA ab und repräsentiert den Teil der UML, der Klassendiagramme beschreibt. Diese können in unterschiedlicher Notation vorliegen, so dass für die Erstellung eines Modells in EMF auf die folgenden Möglichkeiten zurückgegriffen werden kann:

  • Ein XMI-Dokument wird direkt mit Hilfe eines XML- oder Text-Editor erstellt.
  • Ein XMI-Dokument wird aus einem Modellierungswerkzeug wie Rational Rose o.a. exportiert.
  • Das Modell kann aus Java-Interfaces erstellt werden, die mit Modellierungseigenschaften annotiert sind.
  • Mit XML Schema kann das Format der Serialisierung des Modells festgelegt werden.
Falls sich dabei Änderungen an der Struktur des Modells ergeben, so können diese aus dem Java-Code heraus in das Modell zurück übernommen werden - diese Funktion wird auch als Roundtrip bezeichnet.

Das Metamodell von (EMF)

Das EMF-Metamodell wird ecore genannt und ist sehr nah an das Meta Object Facility (MOF) der OMG angelehnt. Dabei werden durch die MOF-Spezifikation eine abstrakte Sprache sowie ein Framework definiert, um unabhängig von einer bestimmten Technologie Metamodelle zu generieren und zu verwalten. Somit ist EMF eine Implementierung eines Teils der MOF-Spezifikation. Ebenso wie MOF definiert sich ecore rekursiv selbst, so dass eine endlose Anzahl von Metaebenen per Definition ausgeschlossen sind. Ecore orientiert sich an Essential MOF (EMOF) und unterscheidet sich diesbezüglich nur geringfügig, so dass EMF die EMOF-Notationen transparent lesen und schreiben kann. Neben dem ecore-Metamodell integriert EMF noch die folgenden Komponenten:

  • Java Emitter Templates (JET) einem Tools zur Generierung von unterschiedlichem Output - SQL, Java, XML, Text …- in Anlehnung an die Syntax von Java Server Pages (JSP),
  • JMerge für die Kontrolle von Modifikationen an Modellen und den generierten Klassen,
  • Eine Referenzimplementierung der Service Data Objects (SDO), einer Spezifikation eines Hersteller-unabhängigen Frameworks für einen einheitlichen Datenzugriff.
Der einfachste Weg zur Erzeugung eines Modells, ist die Verwendung von annotierten Java-Interfaces, da dann weder ein spezielles Tool noch Kenntnisse der UML oder XML benötigt werden. Dabei wird das Modell zunächst mit den Java-Interfaces definiert und anschließend in EMF importiert, so dass als Ergebnis ein EMF-Modell zur Verfügung steht. Aus dem EMF-Modell wird dann der Java-Strukturcode und ein Eclipse-Editor für die Instanzen des Modells generiert. Mit dem so erzeugten Editor ist eine Basis zur Erstellung eigener Editoren geschaffen. Notwendige Voraussetzungen sind die Eclipse SDK und die EMF SDK, die beide unter dem u.g. Link zur Verfügung stehen. Die Aktualisierung der einzelnen Modelle erfolgt automatisch durch Eclipse - spätestens mit der Speicherung einer Änderung. Darüber hinaus bietet EMF noch eine Reihe von zusätzlichen Funktionalitäten wie beispielsweise die Reflection API - damit kann lesend und schreibend auf die Modelle zugegriffen werden. Die Registrierung sogenannter EventListeners auf EMF-Objekten ermöglicht deren automatische Benachrichtigung bei Änderungen an Attributen oder Referenzen. Für die Speicherung aller Änderungen am Modell dient der EMF CommandStack, so dass diese auch ohne Aufwand wieder rückgängig gemacht oder wiederholt werden können. Zudem kann die Serialisierung des Modells an die jeweiligen Erfordernisse angepasst werden.

EMF ist somit ein mächtiges Tool, um mit wenig Ausstattung modellgetriebene Softwareentwicklung zu realisieren. Ohne großen Aufwand können dabei Modelle erzeugt und entsprechender Code ohne Nutzung weiterer komplexer Tools generiert werden. Damit werden die Ansätze von Modellierung und Programmierung vorteilhaft miteinander kombiniert.

http://www.eclipse.org/modeling/emf/

http://www.eclipse.org

Informationen zum Artikel
Deutsch:
Englisch: Eclipse modelling framework - EMF
Veröffentlicht: 27.10.2013
Wörter: 894
Tags: #Software-Technologien
Links: Annotation, API (application programming interface), Aufwand, Code, Eclipse