Archiv für den Monat: Januar 2011

UML Praxis: Statische Aufrufe in dynamischen Diagrammen

Dynamische UML-Diagramme, z.B. Sequenzdiagramme, eignen sich besonders dazu, Interaktionen zwischen Objekten (Instanzen) darzustellen. Oft beinhaltet eine im Sequenzdiagramm beschriebene Kette von Aufrufen auch statische Methoden, die nicht an einer Instanz, sondern an einer Klasse aktiviert werden.

Akzeptiert ein UML-Tool nur Instanzen als Lebenslinien in Sequenzdiagrammen, so kann die gewünschte Klasse als Instanz der Metaklasse „Class“ modelliert werden. Eine andere Möglichkeit besteht darin, den Stereotypen „metaclass“ zu verwenden.

Beispiel für die Darstellung von Klassen als Lebenslinien

Metamodelle anschaulich Teil 2: UML und Schach

UML ist nicht auf bestimmte Themengebiete zugeschnitten, sondern kann vielseitige Modelle darstellen. Statische Diagramme (z.B. Klassendiagramme) beschreiben Strukturen, dynamische Diagramme (z.B. Sequenzdiagramme) können zur Modellierung von Interaktionen verwendet werden.

Dank der Universalität von UML können auch Modelle von Sprachen erstellt werden (ein Gespräch besteht aus mehreren Sätzen, ein Satz besteht aus Wörtern,…). Und somit kann UML natürlich auch den gültigen Aufbau von UML-Modellen beschreiben. Oder, um wieder zum Beispiel des Schachspiels zurückzukehren, die Anleitung eines Schachspiels kann durch die Position von bestimmten Figuren codiert werden. Und zwar, das ist wichtig, von einer Teilmenge des Schachspiels (um den Aufbau von UML-Modellen zu beschreiben genügt auch eine Teilmenge von UML).

Ein Schachspiel kann also auch seine Anleitung beschreiben. Und diese Anleitung kann wiederum durch die Position von Figuren ihre Meta-Anleitung beschreiben.

An Board der Voyager-Raumsonden  hätte also auch ein Schachspiel mit auf bestimmte Art positionierten Figuren genügt.

Metamodelle anschaulich

Zusammen mit den Voyager-Raumsonden hat man auch Nachrichten an Außerirdische gesendet. Diese Nachrichten mussten verständlich für fremde Kulturen sein.

Nehmen wir an, es wäre auch ein Schachspiel an Bord gewesen. Ohne beiliegende Schachregeln könnte eine fremde Kultur das Schachspiel vielleicht als kulturelles Objekt, als Werkzeug oder vielleicht sogar als Spiel verwenden, allerdings bezweifele ich, dass dieses Spiel dann schachähnlich wäre. Das Schachspiel nützt also wenig ohne beiliegende Schachregeln.

Beim Schachspiel beginnt jeder Spieler einen Zug mit einer bestimmten Position der Figuren, und hat am Ende des Zugs die Figuren in eine neue Position gebracht. Die Schachregeln schreiben dann die möglichen Positionen vor. Sie sind das Metamodell des Schachspiels und beschreiben die gültigen Konstellationen der Figuren.

Nun stellt sich die Frage, in welche Form man die Spielregeln (das Metamodell) fasst. An Bord der Voyager wäre ein Buch in deutscher Sprache nicht optimal. Für Menschen wäre eine textuelle Beschreibung der Spielregen hilfreich, allerdings gibt es keine Universalsprache, die von allen Menschen gesprochen wird. Und will man die gültigen Konstellationen der Figuren von einem Computer überprüfen lassen, so müssen die Spielregeln maschinenlesbar sein.

Kurz zusammengefasst tritt folgendes Problem auf: Ein Schachspiel (Modell) benötigt auch eine Beschreibung, eine Anleitung (das Metamodell). Damit das Metamodell verständlich ist (für Menschen und Maschinen) muss es wiederum eine Anleitung für die Anleitung geben (das Metametamodell) und für diese auch wieder eine Anleitung. Also eine unendliche Verkettung von Anleitungen.

„Lies diese unendlich vielen Anleitungen, und dann spielen wir eine Partie Schach“ ist aber in Wirklichkeit keine gute Lösung. Eine nähere Betrachtung der Metamodell-Ketten zeigt aber, dass die Metamodelle zunehmend einfacher werden: Muss die erste Anleitung noch alle Spielregeln (oder alle möglichen Schachspiele) beschreiben, so muss die Meta-Anleitung nur noch die Anleitung definieren.

Ab einer bestimmten Metaebene (üblicherweise drei) ist eine Anleitung für Menschen intuitiv verständlich und Maschinen benötigen nur eine geringe Menge an Wissen, um die Anleitung zu interpretieren.

Ein Schachspiel und 3 einander erklärende Anleitungen an Board der Voyager-Raumsonden hätte die Kultur des Schachspiels universumweit verbreiten können.