Das neue Jahr ist bereits in vollem Gange und somit stehen bei vielen auch die Neujahrsvorsätze, sowie sicherlich viele andere spannende Projekte im Vordergrund. Gelegentlich sollte man sich dabei vielleicht mal eine Abwechslung genehmigen. Wie wäre es also mal mit spielen? Sie haben richtig gehört, spielen! Als Kind, als Elternteil oder einfach so zum Spaß.
Da Modellierung und Language Engineering der Kern vieler itemis-Projekte und -Aktivitäten sind, möchte ich heute versuchen, einige Modellierungsgrundlagen mit Hilfe von Spielen und Spielzeug einzuführen – damit es hoffentlich etwas zugänglicher und unterhaltsamer wird!
Über Modelle, Abstraktionen und Metamodelle
Schon 1976 stellte der Statistiker George Box fest: „Alle Modelle sind falsch!“
Das Playmobil-Pferd war nie ein echtes Pferd, das LEGO®-Raumschiff war kein echtes Raumschiff und Super Mario und Lara Croft waren auch nicht echt. Aber wir hatten kein Problem damit, dass sie nicht real waren, weil es absolut nützlich war, mit ihnen zu spielen.
Nehmen wir den Millennium Falcon aus dem Star Wars-Universum als Beispiel, um ein paar Dinge zu erklären, mit denen wir uns täglich bei itemis beschäftigen: Modelle, Abstraktionen und Metamodelle.
Für diejenigen, die vor 1932 oder nach 2014 geboren wurden, ist dies ein Bild des Millennium Falcon.
(Picture by William Warby: https://www.flickr.com/photos/wwarby/31618033034)
Es liegt auf der Hand, dass ein „echter“ Millennium Falcon ein ziemlich komplexes System ist: Hyperantrieb, Waffen, Verstecke und so weiter. Raumschiffe sind sehr groß und sehr teuer zu bauen.
Um also ein Raumschiff als nützliches Spielzeug zu modellieren, müssen wir Abstraktionen einführen. Die Abstraktionen definieren die spezifischen Aspekte, die das Modell umfasst. Das reduziert die Komplexität und macht das Modell zudem bezahlbar.
Hier sind ein paar Beispiele, wie man den Millennium Falcon modelliert und was die Hauptmerkmale der Modelle sind:
- Ein LEGO®-Modell: besteht aus farbigen Kunststoffteilen, die mechanisch aneinander befestigt werden können und die grobe Form und Farbe des Raumschiffs darstellen. Es ist viel kleiner als ein echtes Raumschiff. Es kann nicht fliegen.
- Ein Eisenguss-Modus: aus Metall wie ein echtes Raumschiff. Keine beweglichen Teile zum Spielen. Fliegt nicht.
- Ein CAD-Computermodell: digitales Modell der Struktur und Geometrie der einzelnen Komponenten des Raumschiffs und wie sie zueinander in Beziehung stehen. Kann immer noch nicht fliegen.
- Ein Raumschiffmodell in einem Star Wars-Computerspiel: digitales Modell, sieht genauso aus wie das Original, es enthält das Verhalten des echten Millennium Falcon: und ja, es kann fliegen!
Alle oben genannten Modelle sind in verschiedenen Szenarien und für verschiedene Arten von Benutzern nützlich. Es gibt Hunderte anderer Modelle, die unterschiedlichen Zwecken dienen und sich auf verschiedene Aspekte der physischen Struktur, der Komponenten oder des Verhaltens des Millennium Falcon konzentrieren. Denken Sie an Fotos, Puzzles oder lebensgroße Modelle, die in den Filmstudios während der Produktion der Star Wars-Filme verwendet wurden.
Punkte mitnehmen:
- Modelle sind sehr nützliche Darstellungen unserer Realität: Wir verwenden sie ständig.
- Modelle reduzieren die Komplexität, indem sie Abstraktionen einführen.
Nachdem wir nun eine Vorstellung davon haben, was Modelle sind, können wir uns einen weiteren wichtigen Modellierungsaspekt ansehen: Metamodelle.
Metamodelle definieren die Elemente, die im Modellierungsprozess verwendet werden können, und wie sie zueinander in Beziehung stehen. In der Welt von LEGO® definiert das Metamodell die Art der Bausteine und die Art und Weise, wie sie verbunden werden können.
Metamodelle können auch als die Regeln angesehen werden, die mit dem Erstellen des Modells verbunden sind. Starke Metamodelle setzen beim Erstellen eines Modells strenge Regeln und Grenzen durch. Schwächere Metamodelle geben mehr Freiheit und wenden weniger Einschränkungen an.
Das Erstellen eines Tonmodells eines Raumschiffs bietet maximale Freiheit und Kreativität im Modellierungsprozess. Die Form, Größe und die Details des Schiffes können stark variieren. Der Ton schränkt den Modelliervorgang nicht ein. Das Clay-Metamodell ist schwach.
Ein 500-Teile-Puzzle unseres Millennium Falcon hingegen hat das stärkste mögliche Metamodell. Es gibt nur eine Möglichkeit, das Puzzle richtig zu verwenden. Dabei ist kein Platz für Kreativität. Das Metamodell des Puzzles hilft Ihnen automatisch, „es richtig zu machen“, da fehlende oder falsch platzierte Teile leicht erkannt werden können.
Das LEGO®-Modell liegt in Bezug auf den Freiheitsgrad und die Anzahl der einschränkenden Regeln zwischen dem Clay-Modell und dem Puzzle-Modell. Es erlaubt dem Spieler, die verfügbaren Teile sehr flexibel zu kombinieren und gleichzeitig einige Grundregeln durchzusetzen: z.B. passen Steine nur in einer bestimmten Ausrichtung zusammen.
Womit macht das Spielen mehr Spaß? Das hängt nur von der persönlichen Vorliebe ab.
Womit macht die Arbeit mehr Spaß? Das hängt von der jeweiligen Aufgabe ab.
Wenn das Modell klein und einfach genug ist, um alle Abhängigkeiten und Nebeneffekte vollständig zu verstehen, dann könnte ein schwaches Metamodell mit kaum Regeln in Ordnung sein. Stellen Sie sich Microsoft Word® oder Powerpoint® als „Ton für Systemmodellierung“ vor – ohne wirkliche Einschränkung der Kreativität des Autors.
In einer komplexeren Welt mit Tausenden von Anforderungen, Produktvariationen und vielen manchmal widersprüchlichen Kräften wie Kosten, Leistung, Sicherheit möchten Sie vielleicht etwas „kreative Freiheit“ aufgeben und im Gegenzug etwas Unterstützung vom System erhalten, um die Modellwerte sicherzustellen Richtigkeit oder Vollständigkeit.
Punkte mitnehmen
- Metamodelle definieren die zugrunde liegenden Modellelemente und wie sie zueinander in Beziehung stehen. In einem sehr realen Sinne definieren Sie die "Sprache", die Sie verwenden können, um Ihre Modelle auszudrücken.
- Die durch das Metamodell erzwungenen Strukturen und Regeln können die Freiheitsgrade des Benutzers einschränken, aber im Gegenzug dazu beitragen, „das Modell richtig hinzubekommen“.
Modelltransformationen
Transformers® sind sowohl die bekanntesten als auch die beliebtesten Roboter jemals. Sie haben die Fähigkeit, sich von einem Auto oder Lkw in einen Roboter zu verwandeln – und wieder zurück. Das ist ein sehr cooler Trick!
Systemmodelle können auch von einem Modell in ein anderes Modell transformiert werden. Abhängig von den zugrunde liegenden Metamodellen kann diese Transformation in beide Richtungen gleich gut funktionieren oder nicht.
LEGO®-Modelle können wiederum als Beispiel dienen. Wenn ein Modell aus großen, schwarzen Steinen besteht, kann es leicht in ein Modell umgewandelt werden, das aus kleineren, bunten Steinen besteht, ohne dass zuvor modellierte Informationen wie die physische Form des modellierten Objekts verloren gehen.
Die Transformation in die entgegengesetzte Richtung funktioniert möglicherweise nicht so gut, da die größeren Steine in ihrer Fähigkeit, kleinere Formen zu bilden, eingeschränkt sind und schwarze Steine keine unterschiedlichen Farben darstellen können.
Natürlich spielen wir bei itemis normalerweise nicht mit LEGO®. Wir beschäftigen uns mit Modellen wie UML, SysML, EMF, Franca oder Autosar. Sehr oft ist es sinnvoll, Modelle zu transformieren. Jede Softwaresprache besteht aus spezifischen Notationen, Syntax und Grammatik (= Metamodell). Die in einer Softwaresprache geschriebenen Programme sind Modelle. Aus diesem Grund kann uns die Modelltransformation dabei helfen, einen sehr nützlichen Trick auszuführen: Sie kann uns helfen, Softwarecode aus anderen Modellen wie EMF oder Franca zu generieren. Dies wird üblicherweise als „Codegenerierung“ bezeichnet.
Ja, und manchmal spielen wir tatsächlich mit LEGO®.
(itemis LEGO® model and instruction manual courtesy of Mathis Birken)
Teil 2 der Einführung befasst sich mit weiteren Konzepten im Zusammenhang mit der Modellierung. In Anlehnung an unsere vertrauten LEGO®-Modelle werden wir uns mit Sprachen, domänenspezifischen Sprachen (DSLs) und der Arbeit der Language Engineers von itemis befassen.
Kommentare