Sie befinden sich hier: Konfigurieren von Modellen > Basiswissen zur Konfiguration > Metamodelle und der MOF-Standard der OMG

MOF-Standard der OMG

Die Meta Object Facility (MOF) ist ein von der Object Management Group (OMG) propagierter Standard für das Management von Metadaten. Eine ganze Reihe von Technologien, die von der OMG standardisiert werden (darunter UML, IMM, BPMN, Software Process Engineering Metamodel (SPEM) sowie verschiedene UML-Profile) verwenden MOF bzw. daraus abgeleitete Technologien (insbesondere XMI) für den metadaten-orientierten Austausch und die Verarbeitung von Modellinformationen.

4-Schichten-Architekturen für Metadaten

Der klassische Ansatz zur Metamodellierung basiert auf einer 4-Schichten-Architektur. Diese Schichten werden üblicherweise so beschrieben:

Betrachtet man diese 4-Schichten-Architektur aus der anderen Richtung, dann kann man ein Datum aus einer Schicht immer als Exemplar (Instanz) einer Informationseinheit aus der darüber liegenden Schicht begreifen. Diese Beziehung wird häufig mit dem Schlüsselwort "instanceOf" gekennzeichnet.

MOF wird von der OMG als standardisierte "Metasprache" benutzt, um andere Modellierungssprachen wie z.B. UML zu spezifizieren. Damit ist MOF ein Standard für die M3-Schicht in 4-Schichten-Architekturen für Metadaten. Den Zusammenhang zum UML-Standard zeigt die folgende Abbildung.

Abbildung: 4-Schichten-Metadaten-Architektur (vgl. UML 2.4.1 Infrastructure, Figure 7.8)

Die MOF-2-Spezifikation hat in vielerlei Hinsicht Ähnlichkeit zur "UML 2 Infrastructure"-Spezifikation, da Teile dieser Spezifikation wiederverwendet worden sind, z.B. die Notation in Form von Klassenmodellen (s.u.), MOF 2 erweitert diese dann hauptsächlich um Konzepte für ein Metadaten-Management.

Überträgt man diese 4-Schichten-Architektur auf die Architektur von Innovator, ergibt sich folgendes Bild:

Metaklassen, Metaattribute und Metaassoziationen verstehen

Die Meta Object Facility verwendet Klassenmodelle zur Spezifikation von Metamodellen. Um MOF-konforme Metamodelle lesen und richtig interpretieren zu können, reicht es daher im Wesentlichen aus, Klassendiagramme lesen zu können. Die wichtigsten Eigenschaften der Basiskonstrukte Metaklasse, Metaattribut und Metaassoziation, die man dazu kennen sollte, werden in diesem Kapitel vorgestellt.

Metaklasse

Der Zweck einer Klasse besteht darin, Daten aus der darunterliegenden Schicht der Metadaten-Architektur anhand gemeinsamer Merkmale zu klassifizieren. Eine Metaklasse ist daher eine Zusammenfassung gleichartiger Modellelemente unter einem gemeinsamen Oberbegriff, der in Innovator-Modellen auch als "Elementtyp" bezeichnet wird. Eine Klasse wird durch ein Viereck, das "classifier"-Symbol, dargestellt.

Als Beispiel zeigt die folgende Abbildung die beiden Metaklassen "Association" und "Class", die beide Bestandteil des UML-2-Metamodells sind. Diese Metaklassen lassen sich in einem Modell instanziieren: in unserem Beispiel sind die beiden Klassen "Person" und "Car" Instanzen der Metaklasse "Class", und die Assoziation "Person.car" zwischen diesen beiden Klassen ist eine Instanz der Metaklasse "Association".

Abbildung: Beispiel für eine Metamodellierung (vgl. UML 2.4.1 Infrastructure, Figure 7.6)

Metaassoziation

Eine Assoziation zwischen zwei Metaklassen sagt aus, dass zwei Instanzen der assoziierten Metaklassen (also zwei Metadaten eines Modells) miteinander in Beziehung stehen können.

Ausschließlich zweiwertige (binäre) Assoziationen können Aggregationen darstellen (d.h. eine Teil-Ganzes-Beziehung). In solchen Fällen wird das Assoziationsende, an dem sich die Metaklasse für das "Ganze" befindet, durch eine Raute gekennzeichnet. Ist diese Raute schwarz ausgefüllt, handelt es sich um eine starke Aggregationsbeziehung (Komposition). In diesem Fall gilt: wird von einer Komposition das "Ganze" gelöscht, werden alle "Teile" automatisch ebenfalls gelöscht.

Eine Pfeilspitze an einem Assoziationsende zeigt an, dass es sich um ein navigierbares Assoziationsende handelt. Navigierbare Enden dienen dazu, zur Laufzeit auf Daten auf dieser Seite der Assoziation direkt zugreifen zu können. Beliebig viele Enden einer Assoziation dürfen navigierbar sein. Unabhängig davon dürfen Modellierungswerkzeuge aber auch in der Lage sein, über nichtnavigierbare Assoziationsenden zu navigieren.

Die Teilmengenbildung (Subsetting) ist ein wichtiges mengentheoretisches Konzept, das aber nicht auf die Assoziation selbst, sondern auf deren Assoziationsenden angewendet werden kann. Dieses Konzept besagt, dass die Wertemenge an einem Assoziationsende a, welches ein Subset eines Assoziationsendes b ist, entweder identisch mit der Wertemenge von b ist oder aber eine echte Teilmenge dieser Wertemenge bildet. Teilmengenbildung wird bei der Definition von Metamodell-Erweiterungen verstärkt eingesetzt, um Einschränkungen für Stereotype zu formulieren.

Metaattribut

Ein Metaattribut ist entweder ein Attribut einer Metaklasse oder aber ein Assoziationsende einer Metaassoziation. Der Typ eines solchen Attributs legt fest, welche Werte als Metadaten im Modell zulässig sind.

Die Eigenschaften von Attributen und Assoziationsenden lassen sich durch verschiedene Schlüsselwörter näher spezifizieren:

  • Ist ein solches Assoziationsende als {ordered} gekennzeichnet, dann lässt sich die Wertemenge der Metadaten nach einem gegebenen Sortierkriterium ordnen.

  • Das Schlüsselwort {non-unique} besagt, dass die Wertemenge der Metadaten Duplikate enthalten darf. Fehlt dieses Schlüsselwort, dann sind die Werte der Wertemenge eindeutig voneinander unterscheidbar.

  • Ist ein Attribut als {readOnly} markiert, dann kann ein einmal vergebener initialer Wert nicht nachträglich verändert werden.

  • Ein abgeleitetes Attribut ist daran erkennbar, dass dem Attributnamen ein Schrägstrich ("/name") vorangestellt wird. Bei abgeleiteten Attributen lässt sich der Wert eines solchen Attributs aus anderen Informationen errechnen. Die Berechnungsvorschrift hierfür kann z.B. in Form eines einschränkenden Ausdrucks in der Sprache OCL beschrieben werden.

    Abgeleitete Attribute sind häufig als {read-only} markiert (s.o.), so dass der Attributwert nur einmal berechnet und dann nicht mehr verändert wird.

  • Eine abgeleitete Assoziationsrolle kann zusätzlich durch das Schlüsselwort {union} als abgeleitete Vereinigungsmenge ("derived union") gekennzeichnet werden. Damit wird ausgedrückt, dass die Wertemenge einer als "/<role> {union}" beschrifteten Assoziationsrolle wie folgt errechnet wird:
    • Betrachtet werden alle Teilmengen (Subsets, s.o.) dieser Assoziationsrolle, also alle Rollen, die mit {subsets <role>} markiert sind.

    • Aus diesen Teilmengen wird die Vereinigungsmenge gebildet.

    Wichtig zu wissen:

    • Eine Assoziationsrolle a kann nur dann als Teilmenge einer anderen Rolle b gekennzeichnet sein ("a {subsets b}"), wenn seine Wertemenge konform zur Wertemenge der Rolle b ist. In der Regel ist dies der Fall, wenn die mit der Rolle a verbundene Metaklasse eine Spezialisierung der Metaklasse ist, die mit der Rolle b verbunden ist.

    • Die abgeleitete Vereinigungsmenge einer Assoziationsrolle ist lediglich als allgemeingültige Rechenvorschrift zu verstehen, die tatsächliche Wertemenge hängt von der Anzahl und Größe der nichtabgeleiteten Subsets dieser Assoziationsrolle ab und ergibt sich für jede Metaklasse möglicherweise neu.

 

 

© 1986-2014 MID GmbH Nürnberg Deutschland. DIN EN 9001 zertifiziert. Alle Rechte vorbehalten.