MOF (meta object facility)

Meta Object Facility (MOF) ist eine Spezifikation der Object Management Group (OMG) - einem Industriekonsortium für die Standardisierung von Hersteller- sowie Plattform-unabhängigen Spezifikationen zur Optimierung der Interoperabilität und Portabilität von Software-Systemen. Neben der MOF sind es die Model Driven Architecture (MDA), CORBA, UML oder XMI bekannte Resultate von Aktivitäten der OMG.


MOF spezifiziert eine abstrakte Sprache für die Beschreibung der abstrakten Syntax weiterer Modellierungssprachen.

MOF ist eng mit dem Metamodellierungsansatz der OMG verknüpft, der 4 Ebenen [M3, M2, M1, M0] für die Metamodellierung - wie in der Abbildung gezeigt - festlegt. Im Zusammenhang mit der Model Driven Architecture (MDA) ermöglicht MOF einen Metamodell-orientierten Ansatz zur Transformation von Modellen. MOF differenziert in Complete-MOF (CMOF) und Essential-MOF (EMOF). Dabei bildet CMOF die vollständige Basis für ein vollständiges MOF-Modell. Deren komplexen Sprachkonstrukte für Metamodelle wie Assoziationen, PackageMerge sowie PackageImport sind die Grundlage der Metamodelle aller OMG-Modellierungen.

OMG 4-Ebenen-Architektur

OMG 4-Ebenen-Architektur

EMOF ist dagegen ein essentieller Kern des MOF-Modells mit einer eingeschränkten Anzahl an Modell-Elementen zur Deklaration einfacher Metamodelle. EMOF stimmt im Wesentlichen mit der Spezifikation des Eclipse Modelling Frameworks (EMF) - einem Werkzeug zur Modellierung und Codegenerierung - überein. Aufgrund der Komplexität implementiert EMF nicht MOF sondern EMOF. MOF-Metamodelle sind von bestimmten Technologien zur Formatierung von Informationen wie XML-Schema oder XML-DTD ebenso unabhängig wie von bestimmten Programmiersprachen. Die vollständige Spezifikation der MOF ist unter den u.g. Links verfügbar.

Meta Object Facility als Metamodell für verschiedene Modellierungssprachen

Meta Object Facility (MOF) ist eine Spezifikation der OMG und spezifiziert ein gemeinsames sogenanntes Metametamodell aller Modellierungssprachen der OMG. Erste Ansätze der MOF ergaben sich bereits 1997. MOF ist u.a. eine zentraler Kern des ebenfalls von der OMG spezifizierten Frameworks der Model Driven Architecture (MDA), da damit die Voraussetzungen für die Definition und Erweiterung der innerhalb von MDA verwendeten Sprachen insbesondere im Hinblick auf die automatisierte Metamodell-orientierte Transformation gegeben sind. Die bedeutendsten MOF-konformen Modellierungssprachen der OMG sind die Unified Modelling Language (UML) sowie das Common Warehouse Metamodel (CWM). Während die UML mit ihren verschiedenen Diagramm-Arten wie Klassendiagramme, Aktivitätsdiagramme u.a. eigentlich eine Zusammenfassung von Modellierungssprachen ist, dient die CWM zur Beschreibung von Datenstrukturen und als Referenzmodell für Data Warehouse Metadaten.

MOF ist modular aufgebaut und deren Modell-Elemente werden in Paketen gruppiert, so dass auch Mechanismen wie PackageImport und PackageMerge realisiert werden. Das MOF-Modell basiert ebenso wie das UML-Metamodell auf einem klassenbasierten Sprachkern, was die Wiederverwendung eines gemeinsamen Kerns von Sprachkonstrukten unterstützt. Die wichtigsten Klassen sind

Weiterhin werden unter der Bezeichnung MOF-Capabilities zusätzliche Funktionalitäten für Elemente des MOF-Modells zur Verfügung gestellt, die nachfolgend erläutert werden:

Reflection. Erweitert das MOF-Modell um Mechanismen zur Selbstbeschreibung. Dabei werden Informationen zum Modellelement über dessen Metamodellelement beispielsweise durch getMetaClass() bereitgestellt. Diese Funktion ähnelt den Möglichkeiten reflektiver Programmiersprachen wie zum Beispiel in Java dem dort verwendeten getClass().

Identifiers. Jedem Modellelement wird ein eindeutiger Bezeichner zugewiesen. Die Möglichkeit ist vergleichbar mit der Identität von Objekten in Java. Der Mechanismus findet Anwendung bei der Rückverfolgung eines Objekts nach mehreren Transformationen.

Extension. Dienen der Informationsanreicherung von Elementen durch Annotationen in Form von sogenannten Tags. Ein Tag verknüpft einen Bezeichner mit einem Wert.

Die MOF-Metamodellierung ist der UML-Klassenmodellierung sehr ähnlich. So lassen sich UML-Tools nutzen, um MOF-Metamodelle zu erstellen. Dabei sind jedoch Einschränkungen und besondere Regeln zu beachten.

Sogenannte MOF-Mappings machen die Modelle der OMG-4-Ebenen-Architektur (Mx Modelle) über verschiedene Schnittstellen oder Notationen zugänglich.

MOF-Mappings

MOF-Mappings

Wie die Abbildung zeigt existieren bereits verschiedenste Mappings zu MOF wie MOF2CORBA, MOF2XML (XMI) sowie MOF2JAVA (JMI). Der Transformationscode kann Mx+1-Ebenen-Modelle lesen und interpretieren, um den Mx Modellinput zu verstehen. Der Transformationscode kann das MOF-Reflektivinterface nutzen, um die Mx Eingabemodelle zu verstehen.

http://www.omg.org

http://www.omg.org/docs/

Informationen zum Artikel
Deutsch:
Englisch: meta object facility - MOF
Veröffentlicht: 28.10.2013
Wörter: 648
Tags: #Datenbanken
Links: Abstrakte Syntax, Aktivität, Annotation, Ausnahme, CORBA (common object request broker architecture)