Ein Zustandsautomat (engl. state machine) ist ein Modellelement in der Unified Modeling Language (UML), einer Modellierungssprache für Software und andere Systeme.
Zustandsautomaten werden eingesetzt, um entweder das Verhalten eines Systems oder die zulässige Nutzung der Schnittstelle eines Systems zu spezifizieren. Sie entsprechen weitgehend den aus der theoretischen Informatik bekannten endlichen Automaten.
Zustandsautomaten werden in Zustandsdiagrammen dargestellt.
Elemente eines Zustandsautomaten
Ein Zustandsautomat besteht aus Knoten (engl.
vertex) und Transitionen (engl.
transitions), die einen Quell- und einen Zielknoten verbinden. Jeder Knoten ist entweder ein Zustand (engl.
state) oder aber ein so genannter Pseudo-Zustand (engl.
pseudo state).
Zustände
Statemachine-2.png
Ein Zustand modelliert eine Situation, in der eine bestimmte unveränderliche Bedingung gilt. Meistens ist diese Invariante nur implizit gegeben, will man sie explizit formulieren, kann man sie als
Einschränkung dem Zustand zuordnen.
Dem Zustand können drei Verhaltensspezifikationen, zum Beispiel in Form einer Aktivität oder einer Interaktion, zugeordnet werden:
- ein Verhalten, das ausgeführt wird, wenn der Zustandsautomat in den Zustand eintritt (engl. entry behaviour)
- ein Verhalten, das ausgeführt wird, wenn der Zustandsautomat den Zustand verlässt (engl. exit behaviour)
- ein Verhalten, das ausgeführt wird, während sich der Zustandsautomat im Zustand befindet (entl. doActivity)
Graphisch wird ein Zustand meistens als Rechteck mit abgerundeten Ecken dargestellt, leicht unterschiedliche Darstellungsformen sind aber auch möglich, siehe Beispiele in der Abbildung rechts.
Transitionen
Statemachine-3.png
Eine Transition verbindet einen Quell- und einen Zielknoten. Der Transition kann eine
Verhaltensspezifikationen zugeordnet sein, die das Verhalten beschreibt, das ausgeführt wird, wenn die Transition durchlaufen wird. Dieses Verhalten heisst
Effekt (engl.
effect). Ein Wächterausdruck (engl.
guard) kann die Transition schützen: die Transition kann nur durchlaufen werden, wenn der Wächterausdruck wahr ist.
Pseudo-Zustände
Statemachine-4.png
Die UML2 kennt folgende Pseudo-Zustände:
- der Startzustand (engl. initial)
- der Endzustand (engl. terminate)
- die Vereinigung (engl. join)
- die Gabelung (engl. fork)
- die Kreuzung (engl. junction)
- die Entscheidung (engl. choice)
- der Eintrittspunkt (engl. entry point)
- der Austrittspunkt (engl. exit point)
- die tiefe Historie (engl. deep history)
- die flache Historie (engl. shallow history)
Arten von Zustandsautomaten
Verhaltenszustandsautomat
Statemachine-5.png
Ein Verhaltenszustandsautomat (engl.
behavioral state machine) modelliert das
Verhalten eines Modellelements. Der Zustandsautomat im der Abbildung links spezifiziert zum Beispiel das Verhalten einer Waschmaschine.
Protokollzustandsautomat
Statemachine-6.png
Ein Protokollzustandsautomat (engl.
protocol state machine) spezifiziert die zulässige Nutzung der
Verhaltensmerkmale eines
Classifiers.
In der Abbildung links ist zum Beispiel ein Web Service spezifiziert, über den Flüge reserviert werden können. Der zugeordnete Protokollzustandsautomat spezifiziert, in welcher Reihenfolge die Operationen des Web Services aufzurufen sind. Aus der Spezifikation geht zum Beispiel hervor, dass ein Flug nur gebucht werden kann, wenn er zuvor erfolgreich reserviert wurde oder dass ein einmal gebuchter Flug nicht mehr gecancelt werden kann.
Literatur
Harel, D. Statecharts: A Visual Formalism for Complex Systems Sci. Comput. Programming 8 (1987), 231-274 PDF
UML