TU Wien:Objektorientierte Modellierung VU (Kappel)/Kapitel Zustandsdiagramm
Folien; Wikifizierung (in Bearbeitung) von Media:TU Wien-Objektorientierte Modellierung VU (Kappel) - Zusammenfassung Zustandsdiagramm.pdf
Ein Zustandsdiagramm (state machine diagram) beschreibt die mögliche Folge von Zuständen eines Modellelements.
- Zwischen Zuständen gibt es Zustandsübergänge (Transitionen) welche durch Ereignisse (Events) ausgelöst werden.
- In Zuständen und Zustandsübergängen können Aktivitäten ausgeführt werden.
Zustände[Bearbeiten | Quelltext bearbeiten]
- echter Zustand (System kann dauerhaft verweilen)
- normaler Zustand
╭─────────╮ │Name │ ├─────────┤ │... / ...│ ╰─────────╯
- Endzustand ⦿
- Pseudozustand
- Startzustand ●
- flacher/tiefer History-Zustand
- Parallelisierungsknoten & Synchronisierungsknoten
- Terminierungsknoten
- Entscheidungsknoten
Aktivitäten[Bearbeiten | Quelltext bearbeiten]
Syntax: Eventname / Aktivität
Vordefinierte Events:
- entry
- Beim Eingang in den Zustand ausgeführt.
- do
- Wird kontinuierlich während des Zustands ausgeführt (kann aber auch zeitlich beschränkt sein).
- exit
- Beim Verlassen des Zustands ausgeführt.
Transitionen[Bearbeiten | Quelltext bearbeiten]
Ein Zustandsübergang (Transition) erfolgt, wenn das Ereignis eintritt (eine evt. andauernde Aktivität im Vorzustand wird unterbrochen) und die Bedingung (Guard) erfüllt ist.
Entscheidungsknoten sollten vermieden werden weil man bei ihnen hängen bleiben kann, wenn die Guard-Bedingungen nicht den gesamten Lösungsraum abdecken.
Bei Nicht-Erfüllung einer Bedingung geht das nicht konsumierte Ereignis verloren.
Defaults:
- kein Ereignis: Aktivität abgeschlossen (in der Übung soll man immer ein Ereignis angeben)
- keine Bedingung: [true]
Syntax: Ereignis(Argumente) [Bedingung] / Aktivität
keine spezifische Syntax für Aktivitäten
Ereignisarten[Bearbeiten | Quelltext bearbeiten]
- CallEvent
- Empfang einer Nachricht (Operationsaufruf), z.B
set()
- SignalEvent
- Empfang eines Signals, z.B.
ok-button-down
- ChangeEvent
- Eine Bedingung ist wahr, z.B.
when(x < y)
,when(x = 1)
,when(taskDone)
- TimeEvent
- Zeitablauf oder Zeitpunkt, z.B.
after(5 sec.)
,when(date=06.05.2019)
Innere Transitionen[Bearbeiten | Quelltext bearbeiten]
(= Transitionen die in Zuständen angegeben werden)
Werden wie äußere Transitionen von Ereignissen ausgelöst, verlassen den aktuellen Zustand aber nicht.
Sind äquivalent zu Selbsttransitionen, sofern keine entry / exit-Aktivitäten vorhanden.
Gleiche Aktivitäten können in den Zustand hineingezogen werden.
Komplexe Zustände[Bearbeiten | Quelltext bearbeiten]
= Zustände, die aus mehreren Subzuständen zusammengesetzt sind (geschachteltes Zustandsdiagramm)
default: Oder-Verfeinerung
In einem orthogonalem Zustand sind die Subzustände nebenläufig.
- Gruppen-Transitionen
- Transitionen des übergeordneten Zustands (Subzustände sind egal)
History-Zustand[Bearbeiten | Quelltext bearbeiten]
Merkt sich, in welchem Subzustand sich das System beim Verlassen eines übergeordneten Zustandes befunden hat, wenn es wieder in diesen Zustand zurückkehrt.
- flacher History-Zustand H merkt sich eine Ebene
- tiefer History-Zustand H* merkt sich alle Ebenen
Orthogonaler Zustand[Bearbeiten | Quelltext bearbeiten]
Und-Verfeinerung: wenn der orthogonale Zustand aktiv ist, ist in jeder seiner Regionen gleichzeitig ein Zustand aktiv. Regionen werden durch strichlierte Linien getrennt.