Metamodell

Ein Metamodell ist ein Modell, das die Konzepte einer Modellierungstechnik - damit sind deren verwendbaren Modellelemente und die diesbezüglichen Zusammenhänge angesprochen - modelliert. Ein Metamodell liefert damit gleichsam eine formalisierte Beschreibung von Modellen, die die Struktur einer Domäne widerspiegelt. Dabei ist eine Domäne durch ein bestimmtes Interessengebiet oder einen abgegrenzten Einsatzbereich von Software definiert. Ein Metamodell ist auch die grundlegende Basis einer Modellierungssprache, die daneben aus einer abstrakten Syntax, der statischen Semantik und der konkreten Syntax besteht. Dabei wird ein Metamodell wiederum durch ein Modell - das sogenannte Metametamodell beschrieben.


Ein bekanntes Beispiel für ein Metamodell ist die Unified Modelling Language (UML), dessen Metametamodell wiederum die Meta Object Facility (MOF) ist. Ebenfalls ist eine Klasse in der Programmiersprache Java ein Metamodell, die wiederum definiert ist von der Programmiersprache Java als Metametamodell. Metamodelle sind eine wichtige Voraussetzung im Zusammenhang mit modellgetriebener Softwareentwicklung (MDSD), wobei aus formalen Modellen unter Einsatz eines automatisierten Prozesses lauffähige Software erzeugt wird. Neben der UML als Modellierungssprache für Modelle von Applikationen hat die Object Management Group (OMG) das Common Warehouse Metamodel (CWM) für die Modellierung von Daten standardisiert. Zu diesem Zweck wurden vier sogenannte Meta-Schichten durch die OMG definiert.

Der Begriff Metamodell wurde abgeleitet aus dem griechischen Präfix Meta, was mit über, neben oder hinter übersetzt werden kann. Ein Modell dient der Abstraktion der Realität, für dessen Erstellung und Beschreibung eine Sprache benötigt wird. Dazu müssen die Regeln sowie die Grammatik dieser Sprache ebenfalls definiert sein. Genau diese Sprachen werden in sogenannten Metamodellen definiert, die wiederum selbst in einer Metasprache verfasst sind.

Prozess der Modellbildung

Der klassische Prozess der Modellbildung führt von jeweils einem Problembereich zu einem Modell des Modellbereichs. Die Metamodellierung beschreibt die im Modellbereich verwendete Modellierungstechnik in einem Modell. Das Konzept einer Modellierungstechnik umfasst die verwendbaren Modellelemente und deren Zusammenhänge. Ein Metamodell ist dabei ausdrücklich kein Modell eines Modells, sondern ein Modell eines Modellbereichs, das bedeutet einer Menge gleichartiger - insbesondere nach der gleichen Technik - erstellter Modelle.

Soll ein Metamodell die Elemente und Konstrukte einer Modellierungstechnik präzise definieren, so müssen die Elemente und Konstrukte des Metamodells ebenso genau spezifiziert sein. Das erfordert das Metamodell eines Metamodells - dieses wird hinlänglich als höheres Metamodell oder auch Meta-Metamodell bezeichnet. Sofern man diesem Gedanken folgt, so führt diese Form der Definition zu einer unendlichen Folge von Metamodellen. Da dies nicht sinnvoll ist, hat die OMG die Meta Object Facility (MOF) als Metasprache und gleichsam oberste Instanz der Metamodellierung standardisiert.

Aufbau von Modellen und Sprachen

Aufbau von Modellen und Sprachen

Die Abbildung zeigt den Aufbau von Modellen und Sprachen aus Sicht der OMG. Danach hat das Metametamodell keine ihm übergeordnete Metasprache. Das Schichtenmodell definiert die jeweils darunter liegende Ebene als Instanz der übergeordneten Ebene. Damit befinden sich auf der M2-Ebene die Instanzen der auf der Ebene M3 definierten Konstrukte. In der Regel definiert ein Metamodell sich selbst, das bedeutet eine Identität mit seinem Meta-Metamodell. Höhere Metamodelle werden im allgemeinem nur dann benötigt, wenn mehrere, unterschiedliche Modellbereiche, die getrennt je in einem Metamodell beschrieben sind, durch ein gemeinsames Modell darzustellen sind.

M3-Metametamodell. Diese oberste Schicht hat die höchste Abstraktion und definiert gemäß den Vorgaben der OMG die Meta Object Facility (MOF). Die Elemente der MOF wie beispielsweise MOF-Class, MOF-Attribute, MOF-Associations werden zur Definition von Metamodellen verwendet. Damit spezifiziert die MOF-Schicht eine abstrakte Sprache, um andere Modellierungssprachen zu entwickeln. Somit sind alle anderen Modellierungssprachen wie UML oder CWM Instanzen von MOF.

M2-Metamodell. Hier sind die Metamodelle eingeordnet, die mit Hilfe der MOF-Konstrukte beschrieben werden und jeweils wiederum eine abstrakte Syntax sowie Semantik festlegen. In dieser Ebene definiert die OMG die zwei Sprachen - UML und CWM -, mit denen dann anschließend auf der darunter liegenden Ebene M1 modelliert wird. Häufig sind jedoch die Elemente der Modellierungssprachen beispielsweise der UML nicht hinreichend ausdrucksstark für eine Domänen-spezifische Modellierung. Das ist dann der Ansatz für sogenannte UML-Profile, die dann den bestehenden Sprachumfang der UML erweitern, um diese an besondere technische oder fachliche Domänen anpassen zu können.

M1-Modell. Hier sind die Modelle zur Abbildung der Abstraktion eines realen Systems abgelegt.

MOF-Ebenen 
   der Metamodellierung

MOF-Ebenen der Metamodellierung

Wie in der Abbildung gezeigt, werden die Modelle unter Verwendung der UML - und ggf. notwendigen Profilen - oder der CWM - hier gibt es das OLAP-Profil - modelliert. Damit ist jedes Modell - beispielsweise das UML-Modell einer Software-Applikation - eine Instanz des Metamodells.

M0-Instanz. Diese Schicht stellt das laufende System mit seinen unterschiedlichen Zuständen und realen Instanz im Speicher dar. Die Objekte auf dieser Ebene repräsentieren Instanzen von M1-Objekten und bilden damit letztendlich die realen Entitäten ab. Das in der Abbildung gezeigte Beispiel von einem Buch mit dem Titel "UML" ist eine Instanz der in der Ebene M1 modellierten Klasse Buch. In der darüber liegenden Schicht M1 werden dann die Eigenschaften dieses Buches festgelegt.

http://www.omg.org

Informationen zum Artikel
Deutsch: Metamodell
Englisch: meta model
Veröffentlicht: 27.10.2013
Wörter: 828
Tags: #Design
Links: Abstrakte Syntax, Abstraktion, Daten, Domäne, Identität