- Zustandsdiagramm (UML)
-
Strukturdiagramme der UML Klassendiagramm Komponentendiagramm Kompositionsstrukturdiagramm Objektdiagramm Paketdiagramm Profildiagramm Verteilungsdiagramm Verhaltensdiagramme der UML Aktivitätsdiagramm Anwendungsfalldiagramm Interaktionsübersichtsdiagramm Kommunikationsdiagramm Sequenzdiagramm Zeitverlaufsdiagramm Zustandsdiagramm Das Zustandsdiagramm (englisch: state diagram) der UML ist eine der 14 Diagrammarten dieser Modellierungssprache für Software und andere Systeme. Es stellt einen endlichen Automaten in einer UML-Sonderform grafisch dar und wird benutzt, um entweder das Verhalten eines Systems oder die zulässige Nutzung der Schnittstelle eines Systems zu spezifizieren.
Die in der UML verwendete Diagrammform ist eine Variante des Zustandsübergangsdiagramm. Neben dieser Diagrammform gibt es in der Informatik und der Telekommunikation eine ganze Reihe weiterer Formen, die sich nicht grundsätzlich, wohl aber in der Ausdrucksmächtigkeit unterscheiden.
Inhaltsverzeichnis
Theoretische Grundlagen
Der in UML-Zustandsdiagrammen abgebildete Typ von Zustandsautomat ist eine objektbasierte Variante von Harel-Zustandsdiagrammen [1] die von der UML aufgenommen und erweitert wurden. UML-Zustandsautomaten überwinden die wesentlichsten Einschränkungen von traditionellen Endlichen Automaten unter Erhalt ihrer größten Vorteile. Das UML Zustandsdiagramm führt die insoweit neuen Konzepte von hierarchisch verschachtelten Zuständen und orthogonalen Bereichen ein und erweitert den Begriff der Aktion entsprechend. UML-Zustandsautomaten haben zugleich Eigenschaften von Mealy- und Moore-Automaten. Sie unterstützen Aktionen, die zugleich vom Zustand des Systems und einem auslösenden Ereignis abhängen, wie in Mealy-Automaten, ebenso wie Eintritts- und Austritts-Aktionen, die eher zustands- als aktionsorientiert sind, wie in Moore-Automaten.
Beschreibung
Ein Zustandsdiagramm zeigt eine Übersicht der Zustände, die der dargestellte Zustandsautomat – beispielsweise ein einzelnes Objekt oder auch ein (Teil-)System – zur Laufzeit annehmen kann und gibt an, aufgrund welcher Ereignisse Zustandsänderungen bzw. -übergänge stattfinden. Damit beschreibt ein Zustandsdiagramm eine hypothetische Maschine (endlicher Automat), die sich zu jedem Zeitpunkt in einer Menge endlicher Zustände befindet.
Die Zustände in einem Zustandsdiagramm werden durch Rechtecke mit abgerundeten Ecken (in anderen Diagrammformen außerhalb von UML häufig auch Kreise, Ellipsen oder einfache Rechtecke) dargestellt. Die möglichen Zustandsübergänge werden durch Pfeile zwischen den Zuständen symbolisiert. Sie sind mit den Ereignissen beschriftet, die zu dem jeweiligen Zustandsübergang führen.
Elemente
Der in einem Diagramm dargestellte Zustandsautomat besteht aus Knoten (engl. vertex) und (Zustands-)Übergängen (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
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 (engl. 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
Eine Transition (Übergang) 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 heißt 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
Die UML2 kennt folgende Pseudo-Zustände:
- der Startzustand (engl. initial)
- der Terminator (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 flache Historie (engl. shallow history)
- die tiefe Historie (engl. deep history)
Beispiele für Zustandsdiagramme
Verhaltenszustandsautomat
Ein Verhaltenszustandsautomat (engl. behavioral state machine) modelliert das Verhalten eines Modellelements. Der Zustandsautomat in der Abbildung links spezifiziert zum Beispiel das Verhalten einer Waschmaschine.
Protokollzustandsautomat
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 Service 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 gestrichen werden kann.
Literatur
- Christoph Kecher: UML 2.0 – Das umfassende Handbuch. Galileo Computing, 2006, ISBN 3-89842-738-2.
- Heide Balzert: Lehrbuch der Objektmodellierung – Analyse und Entwurf mit der UML 2. Elsevier Spektrum Akademischer Verlag, 2005, ISBN 3-8274-1162-9.
- David Harel: Statecharts: A Visual Formalism for Complex Systems. In: Science of Computer Programming. 8, 1984 (87), S. 231–274 (PDF-Datei; 1,9 MB).
Weblinks
Einzelnachweise
- ↑ Harel, David (1987): Statecharts: A Visual Formalism for Complex Systems. Abgerufen am 9. März 2011.
Wikimedia Foundation.