Für die Modellierung von Systemen und Software verwenden wir das Tool Enterprise Architect. Das Tool ist ein leistungsfähiges Werkzeug zur Modellierung von Systemen und Software und ist in Entwicklungsabteilungen weit verbreitet. In bereits veröffentlichten Artikeln haben wir z. B. das Thema Requirements Engineering mit Enterprise Architect beleuchtet. In diesem Artikel wollen wir uns mit der grafischen Simulation von State Machines auseinandersetzen. Ich möchte Ihnen ein paar Tipps und Tricks mitgeben, wie wir bei der Simulation von State Machines mit Enterprise Architect vorgehen.
Anlegen einer State Machine
Beim Anlegen einer State Machine in Enterprise Architect wird ein Package mit einem leeren Diagramm der Kategorie State Machine angelegt.
Bei diesem Diagramm handelt es sich nicht um ein in der Simulation ausführbares Diagramm. Daher empfiehlt es sich in dieses State Machine Diagramm eine State Machine als State Element (in unserem Beispiel: Main State Machine) einzufügen. Diese State Machine (Main State Machine) ist eine simulierbare Datei und enthält ein visuelles Diagramm, welches man als „Hauptdiagramm“ verwenden sollte. Die ursprüngliche State Machine kann in einem Ordner für unsichtbare Komponenten versteckt werden.
Aufbau der State Machine
Um eine Simulation durchzuführen, benötigt das Modell einen Anfangspunkt (Initial) und States bzw. State Machines. Ein Simulationspfad kann mit einem Endpunkt (Final) beendet werden. Diese Elemente müssen mit Transitions verbunden werden. Eine Verschachtelung der Elemente ist möglich und in State Machines können untergeordnete Diagramme in einer eigenen Ansicht erstellt werden.
Steuern der State Machine
Einfache Übergänge (Transitions) werden selbstständig durch das Programm signalisiert und führen somit automatisch zum nächsten Element.
Um eine manuelle Kontrolle über die Vorgänge zu haben, wird dem Übergang ein Trigger zugewiesen. In unserem Beispiel haben wir hier die Trigger „Mainpower connect“ und „Power loss“ um die Zustände manuell schalten zu können.
Organisieren von States und State Machines
Zur Verbesserung der Übersichtlichkeit gibt es verschiedene Möglichkeiten Diagrammelemente in unterschiedlichen Ebenen anzuordnen.
Boxed
Bei Boxed State Machines werden die Elemente innerhalb der Grenzen positioniert und können direkt über Übergänge mit anderen Elementen verbunden werden. Das bedeutet, dass alle Elemente in diesen State Machines auf der aktuellen Ebene sichtbar sind. Bei kleinen Diagrammen ist so eine schnelle Auffassung der Elemente gegeben. Bei komplexen Diagrammen führt diese Variante schnell zu einer Informationsflut und ist nicht hilfreich für eine übersichtliche Darstellung. Die boxed Methode kann für States und State Machines verwendet werden.
Detailed
Bei Detailed State Machines werden die darin enthaltenen Elemente in einem separaten Diagramm, auf einer tieferen Ebene, angezeigt. Besonders bei großen Systemen wird die Übersichtlichkeit durch die Reduzierung auf das Wesentliche mit dieser Methode erheblich verbessert.
Wie Sie in unserem Beispiel sehen, können beide Methoden kombiniert werden um übersichtliche und nachvollziehbare Diagramme zu erstellen.
Übergänge zwischen State Machines
Beim Übergang in eine State Machine kann es gewünscht sein, dass es mehrere Eintrittspfade gibt, welche unterschiedliche Simulationsabläufe zur Folge haben. Dies ist mit dem „Initial“-Element nicht möglich. Für diesen Zweck gibt es EntryPoints, welche den Übergang von einer höher angesiedelten State Machine in eine dedizierte Sub-State Machine ermöglicht. Dafür muss in jeder Ebene (der Ausgangs-State Machine und der Sub-State Machine) jeweils der entsprechende EntryPoint als Link eingefügt werden. Dieses Vorgehen kann man auch für den Übergang zurück in die Ausgangs-State Machine verwenden. Für diesen Weg bietet Enterprise Architect die ExitPoints. Bei uns hat sich herausgestellt, dass die ExitPoints nicht wie erwartet funktionieren und die Simulation nicht mit den Folgeereignissen fortfährt. Hierfür gibt es einen einfachen Workaround, welcher lediglich in der Symbolik ersichtlich ist. Anstatt ExitPoints können für den Wechsel in eine andere oder die übergeordnete State Machine EntryPoints verwendet werden. Bei Bedarf können diese EntryPoints, zum Beispiel in ExitPoint, umbenannt werden.
Simulieren der State Machine
Um die Simulation durchzuführen wird der Simulator verwendet, welcher im Menü unter Analyzer → Simulate → Simulator auswählbar ist.
Mit dem Simulator kann die State Machine für die Simulation ausgewählt, gestartet, pausiert und gestoppt werden. Zusätzlich stellt der Simulator die Vorgänge der Simulation als Text dar.
Zusätzlich empfehlen wir das Simulaton Events Window anzeigen zu lassen.
In dem Simulation Event Window werden wartende, verfügbare Trigger angezeigt und können aktiviert werden. Aktivierte Trigger werden aufgelistet. Zusätzlich kann die Abfolge der Trigger gespeichert und für einen automatisierten Ablauf verwendet werden.
In der Simulation werden das aktuell aktive Element und die wartenden Pfade normal dargestellt und die inaktiven Elemente werden mit einem blauen Schleier überblendet.
Die Trigger können auch durch eine weitere Aktion ausgeführt werden, indem der wartende Trigger im Diagramm per rechtem Mausklick über die Aktion „Signal Trigger in Simulation“ aktiviert wird.
Über diesen Weg können Trigger in dem Simulation Events Window eingereiht und dann manuell oder automatisch durchgeführt werden.
Mit diesen Tipps können Sie eine simulierbare State Machine erzeugen, mit dem Sie Ihre Stakeholder bei der Besprechung des Systemverhaltens begeistern und das Verhalten des Systems simulieren können.
Haben sie Fragen zur Modellierung von State Machines? Gerne unterstützen wir Sie in dem Systemengineering für Ihr Projekt. Kontaktieren Sie uns.