In diesem und folgenden Artikeln möchte ich Ihnen ein paar grundlegende Erkenntnisse über (System-)modellierung beschreiben, die ich im Laufe der Jahre gewonnen habe.
Im ersten Blogartikel soll es um die beiden Hauptdimensionen in einer Systemmodellierung gehen: Abstraktion und Dekomposition. Dabei ist der Begriff des Systems immer auch allgemein gemeint. Es kann sich um ein mechatronisches System, bestehend aus Hardware- und Softwarekomponenten, oder auch um ein reines Software- oder Hardwaresystem handeln. Das grundlegende Prinzip in der Modellierung bleibt immer das gleiche. Ein Modell ist hier die abstrakte Beschreibung der Systemzusammenhänge mit Hilfe grafischer Elemente.
Es gibt verschiedene grafische Modellierungssprachen. Die am häufigsten eingesetzten sind sicherlich die Unified Modeling Langugae (UML) im Softwarebereich und die Systems Modeling Language (SysML) zur Beschreibung von mechatronischen Systemen.
Auch hier gilt, dass das Prinzip der verschiedenen Dimensionen eines Modells, welche ich Ihnen heute erläutern will nicht an die Modellierungssprache gekoppelt ist, sondern grundsätzlich gilt.
Modellierung der Systemstruktur
Um ein System abstrakt zu beschreiben bedarf es Modellteile, welche die strukturellen, statischen Aspekte des System beschreiben und Teilen, die die dynamischen Aspekte beschreiben. Die strukturelle Beschreibung bezeichnet man auch gerne als Architektur. Hierbei wird beschrieben, bzw. modelliert aus welchen Teilen ein System aufgebaut ist oder aufgebaut werden soll. Der strukturelle Teil des Modells besteht daher aus einer Darstellung der Komponenten. Zusätzlich können Schnittstellen von Komponenten hinzugefügt und diese durch Konnektoren verbunden werden. Dadurch entsteht ein Blockschaltbild – ähnlich einem Schaltplan in der Elektronik oder einem Regelkreisdiagramm in der Steuer- und Regelungstechnik. Eine solche Darstellung verdeutlicht folgende Zusammenhänge:
- Aus welchen Komponenten besteht mein System.
- Welche Schnittstellen stellen die einzelnen Komponenten bereit.
- Welche Komponente kommuniziert mit einer anderen über eine Schnittstelle und tauscht Daten oder Material aus.
Diese Informationen sind für die Entwicklung und die Realisierung eines Systems sehr wichtig, da man anhand dieser Informationen erstens einen Überblick über die gesamte Systemstruktur erhält und zweitens dies auch für die verteilte Entwicklung genutzt werden kann. So kann man einzelne Teile genau identifizieren und Zuständigkeiten zuordnen. Dies ist für eine Aufgabenverteilung beispielsweise für ein größeres Team sehr nützlich.
Der dynamische Teil des Systemmodells geht dann darauf ein, wie sich die einzelnen Komponenten oder das Gesamtsystem unter bestimmten Umständen verhalten. Zum Beispiel wird hier beschrieben, wann eine Komponenten mit einer anderen Daten oder Material austauscht, um eine gewünschte Funktionalität des Gesamtsystems zu erreichen. Auf die dynamische Modellierung möchte ich zu einem späteren Zeitpunkt genauer eingehen. Hier möchte ich Ihnen nun etwas über die beiden Dimensionen erklären, die man typischerweise im statischen Teil (Architekturteil) des Modells eines Systems oder Teilsystems hat und nutzt.
Abstraktion
Wenn man ein System modelliert kommt man früher oder später zu der Erkenntnis, dass man dessen Aspekte nicht mit einem einzigen Modell beschreiben kann, sondern dass das Gesamtmodell aus mehreren Einzelmodellen, den so genannten Abstraktionsebenen besteht. Unter Abstraktion versteht man das bewusste weglassen von Dingen der Realität zum Zwecke der Vereinfachung. Nehmen wir ein Beispiel aus dem Bauingenieurwesen her: Hier werden kleine Holzmodelle von Gebäuden genutzt, um die spätere Form der noch zu bauenden Gebäude sichtbar und im wahrsten Sinne des Wortes auch „begreifbar“ zu machen. Was allerdings hier sehr häufig weggelassen ist, sind die Darstellung der Fenstern und Türen oder auch die spätere Fassadendekoration. Diese Dinge werden bewusst „abstrahiert“ – also ausgeblendet, da es bei dem Modell vorwiegend um die geometrische Form des Gebäudes geht.
Diese Prinzip macht man sich nun auch in der Systemmodellierung zu nutze. Ein technisches System kann auch auf viele Arten abstrakter oder konkreter beschreiben. Beispielsweise könnte eine Bibliotheksverwaltung aus verschiedenen einzelnen Komponenten bestehen:
- Benutzerverwaltung
- Bücherverwaltung
- Mahnwesen
Diese können auch in einem Modell als solche dargestellt werden. Dies stellt dann ein Modell auf dieser Ebene der Abstraktion dar. Das Modell beschreibt die Komponenten als Ganzes und ihren Platz im Gesamtsystem.
Um eine solche Bibliotheksverwaltung jedoch zu programmieren, braucht es detailliertere Beschreibungen, die vielleicht viel näher an der späteren Softwareprogrammierung angelehnt sind. Hier könnten dann auch Variablentypen und andere Softwaredetails dargestellt werden. Dies ist dann eine weitere Abstraktionsebene im Gesamtmodell. Man hat also eine komponenten-, eher funktional-orientierte Modellierung und eine andere eher technisch, realisierungsnahe Modellierung auf einer zweiten Abstraktionsebene. Zusammen ergeben diese dann ein Gesamtbild des Systems ab. Die Abstraktion ist daher die eine wichtige Dimension in einem Systemmodell.
Dekomposition
Innerhalb einer Abstraktionsebene gibt es eine weitere Dimension, die so genannte Dekomposition. Der Begriff Dekomposition meint das Auflösen von etwas in seine Bestandteile. Im Sinne der Modellierung meint dies die Zerlegung des Systems in seine Teilsysteme. Dekomposition ist etwas, was man aus der täglichen Erfahrung her kennt. Wenn man mit einem Werkzeug etwas zerlegt, zerlegt man es in seine Einzelteile. Das Gesamtsystem besteht aus Subsystemen und diese können wiederum aus Einzelteilen zusammengesetzt sein. Dadurch ergibt sich ein baumartige Struktur, die man in einem grafischen Modell sehr gut darstellen kann. Das grafische Modellierung aus dem UML-Umfeld kennt dafür die so genannte Kompositionsbeziehung (Schwarze-Raute-Beziehung). Dort wo die Raute dargestellt wird, ist die übergeordnete Komponente.
Die folgende Abbildung zeigt das Prinzip eines Dekompositionsdiagramms in einem grafischen Modell. Das Gesamtsystem (Top) untergliedert sich in zwei Subsysteme (Sub) und diese zerlegen sich weiter.
Eine solche Dekomposition lässt sich im Prinzip mit beliebigen Systemen vornehmen. Das Entscheidende dabei ist aber, dass eine solche Dekomposition immer innerhalb einer Abstraktionsebene stattfindet! Alle Komponenten werden im selben Abstraktionsgrad im Modell dargestellt und können daher auch untereinander interagieren.
Auf einer anderen Abstraktionsebene kann es auch wieder eine Dekomposition der Systemteile, die dort dargestellt sind geben.
Damit ergeben sich für ein Systemmodell die beiden Dimensionen, die bei struktureller Modellierung immer vorkommen:
- Abstraktion: Stellt das System von einem bestimmten Blickwinkel aus mehr oder weniger abstrakt dar.
- Dekomposition: Stellt die Zerlegung des Systems in Teilsysteme innerhalb einer Abstraktionsebene dar.
Das folgende Diagramm zeigt noch einmal Schematisch wie Abstraktion und Dekomposition zusammen spielen. Dabei repräsentieren die Paketsymbole die Abstraktionsebenen als Teil eines Gesamtmodells (vertikal dargestellt). Im inneren jedes Teilmodells/jeder Abstraktionsebene existiert eine eigene Dekomposition (horizontal dargestellt).
Mir war es wichtig diese Zusammenhänge hier ausführlich darzustellen, da die beiden Konzepte sehr oft durcheinander geworfen werden. Diese zu verstehen erleichtert ungemein das Verständnis für die grafische Modellierung und grafische Modelle, da darauf auch viele weitere Konzepte aufbauen.
Ich hoffe ich konnte Ihnen diese Grundbegriffe verdeutlichen. Weitere Konzepte wie z.B. die im Diagramm oben angedeutete Allokation, werde ich sicher in einem Folgebeitrag nochmal näher erläutern. Bis dahin viel Spaß bei der Modellierung. Bleiben Sie neugierig!