Zustandsdiagramm

Zustandsdiagramm

Zweck

Zustandsautomaten (state machines) sind Diagramme zur Spezifikation des Verhaltens von Classifiern (Elementen). Cassifier können sein: Klassen, Komponenten, Systeme, u. a..

Zustandsautomaten beschreiben das Verhalten der Elemente w√§hrend ihres Lebens¬≠zyklus durch Darstellung der m√∂glichen Zust√§nde und Zustands√ľberg√§nge. 

Die UML 2.0 unterscheidet behavioral state machines, die Verhalten von Instanzen einer Klasse, Systemen oder Sys­temteilen beschreiben, und protocol state machines, die Protokolle, die von einem System­element realisiert werden, modellieren. Zustandsautomaten werden häufig zur Dar­stellung des Lebenszyklus von Objekten benutzt

Notation

Da die Notationselemente f√ľr Zustandsautomaten sehr komplex sein k√∂nnen, werden sie hier in zwei Bereichen behandelt: die grundlegenden Konzepte der Zu¬≠standsautomaten werden im Abschnitt Notation - Konzept beschrieben, die wei¬≠terf√ľhrenden Konzepte werden unter Notation - erweitert dargestellt.

Notation - Konzept

SymbolBeschreibung
Anfangs-, Endzustand (initial state, final state) geben den Beginn und Ende des Lebenszyklus eines modellierten Elementes an. Wird ein Objekt erzeugt, befindet es sich im Anfangszustand, wird es gelöscht, befindet es sich im Endzustand.
 Zustand (state) Elemente k√∂nnen im Laufe ihrer Existenz eine end¬≠liche Anzahl Zust√§nde einnehmen. Der Zustand wird als Rechteck mit abgerundeten Ecken darge¬≠stellt. Zust√§nde k√∂nnen einen Namen erhalten. Ein Zustand kann durch eine waagrechte Linie unter¬≠teilt werden. Unterhalb der Linie kann Verhalten eines Objekts in dem Zustand angegeben werden. Die UML definiert folgende Arten von Verhalten: entry, exit und do. Das entry-Verhalten wird beim Eintritt in den Zustand ausgef√ľhrt, das exit-Verhalten vor Verlassen des Zustands. Do-Aktivit√§ten werden ausgef√ľhrt, w√§hrend das Objekt sich in dem Zustand befindet. Interne Transitionen werden intern ausgef√ľhrt, f√ľhren jedoch nicht zu einem Zustands√ľbergang. Es kann ein Ausl√∂ser (Trigger) angegeben werden, eine Bedingung (guard), die erf√ľllte sein mu√ü und eine Aktivit√§t, die ausgef√ľhrt wird.
Zustands√ľbergang (Transition Eine Transition ist ein Zustands√ľbergang von einem Quellzustand zu einem Zielzustand. Die Be¬≠schriftung gibt das ausl√∂sende Ereignis (Trigger) an, die Be¬≠dingung, die erf√ľllt sein mu√ü (guard) und die Ak¬≠tivit√§t (Operation), die beim √úbergang ausgef√ľhrt wird an. Die Beschreibungselemente sind optional. Sie k√∂nnen beliebig kombiniert werden.

Zustand (State)

Der Zustand (state) eines Objekts wird durch die Attributwerte bzw. Daten und die jeweiligen Verbindungen zu anderen Objekten bestimmt [Balzert, 1999].

Die UML 2.0 unterscheidet drei Zustandstypen:

  • einfacher Zustand
  • zusammengesetzter Zustand - composite state
  • Unterzustandsautomatenzustand - submachine state

 

Einfacher Zustand (simple state)

Ein einfacher Zustand hat keine Unterzust√§nde (Regionen oder submachine state machine). Ein einfacher Zustand kann entry, exit und do-Aktivit√§ten enthalten und interne Transitionen. Nach Erreichen des Zustands wird sofort die entry-Aktivit√§t ausgef√ľhrt. Vor Verlassen des Zustands wird die exit-Aktivit√§t ausgef√ľhrt. Die do-Aktivit√§t wird nach Beendigung der entry-Aktivit√§t ausgef√ľhrt.

Zustands√ľbergang (Transition)

Eine Transition wird durch einen Ausl√∂ser (Trigger) verursacht. Der Trigger kann intern sein oder extern; er kann von dem Objekt kommen, auf das die state machine sich bezieht, oder von einem anderen Objekt. F√ľr einen Zustands√ľbergang kann eine Bedingung (guard) angegeben werden, die erf√ľllt sein mu√ü, damit die Transiti¬≠on ausgef√ľhrt wird. Bei einer Transition kann ein Objekt eine Aktivit√§t ausf√ľhren, die zu dem Aufruf einer Methode f√ľhrt.

Einfacher Zustandsautomat

Zustandsautomaten beschreiben den Lebenszyklus von Objekten, k√∂nnen sich aber auch auf komplexere Elemente beziehen, wie z. B. Komponenten, Subsysteme oder Use Cases. Sie stellen die Zust√§nde dar, die Objekte, Komponenten usw. im Laufe ihrer Existenz annehmen k√∂nnen und sie geben die Zustands√ľberg√§nge an, die m√∂glich sind. Ein Zustandsautomat gibt auch an, in welchem Zustand ein Objekt auf welche Ereignisse reagiert.

Diese Abbildung stellt einen einfachen Zustandsautomat einer T√ľr dar. Die T√ľr kann die beiden Zust√§nde offen und geschlossen annehmen. Sie reagiert auf die Er¬≠eignisse schliessen und √∂ffnen. In dem Zustand offen kann jedoch nur das Ereignis schliessen angewandt werden, in dem Zustand geschlossen kann nur das Ereignis √∂ffnen angewandt werden.

 

Dieses Beispiel modelliert eine Loginmaske eines Rechners. Sie hat die Zust√§nde "UserNameEingabe" und "PasswortEingabe". In dem Zustand "UserNameEingabe" f√ľhrt sie die Aktivit√§t "ZeichenLesen" aus. Ist die Bedingung "[Cursor in Feld Pass¬≠wort]" erf√ľllt, so wechselt sie zu dem Zustand "PasswortEingabe". Sobald die Mas¬≠ke den Zustand betritt f√ľhrt sie die entry-Aktivit√§t "Echo aus" aus, sie schaltet das Echo aus und zeigt das Passwort nicht auf dem Bildschirm an. Danach liest sie mit der Aktivit√§t "ZeichenLesen" das Passwort ein und schaltet bei Verlassen des Zu¬≠stands mit der exit-Aktivit√§t "Echo an" das Bildschirmecho wieder ein.

SymbolBeschreibung
Region (Region) Regionen stellen parallele Abl√§ufe oder parallele Zust√§nde dar. Sie k√∂nnen in zusammengesetzten Zust√§nden und in state machine Diagrammen verwendet werden. Regionen k√∂nnen einen Namen haben. Die Regionen in einem Zustand werden durch eine gestrichelte Linie voneinander abgegrenzt. Regionen k√∂nnen Zust√§nde und Transitionen enthalten.  
Pseudozustände sind Knoten in einem Zustandsdiagramm, die es erlauben komplexe Zusammen­hänge zwischen Zuständen darzustellen (z. B. Verzweigungen, Parallelität usw.). Pseudozuständen werden keine Aktivitäten zugeordnet.
Entscheidung Eine Entscheidung beschreibt eine Alternative. Entweder wird die nach links oder die nach rechts f√ľhrende Transition ausgef√ľhrt.  
Kreuzung verbindet mehrere Transitionen, ohne zwischengeschaltete Zust√§nde miteinander.  
Terminator Ein Terminator dr√ľckt aus, dass die State Machine beendet wird; d. h. das Objekt, auf das die State Machine sich bezieht wird zerst√∂rt. Es werden keine exit-Aktivit√§ten ausgef√ľhrt.  
Eintrittspunkt fasst mehrere Transitionen von au√üen zu einem Zustand innerhalb eines zusammengesetzen Zustands zusammen.  
Austrittspunkt wie Eintrittspunkt, jedoch in die andere Richtung.  
Gabelung teilt eine eingehende Transition in mehrere ausgehende parallele Transitionen auf.  
Vereinigung wird verwendet, um die durch eine Gabelung aufgeteilten parallelen Zweige wieder zusammenzuf√ľhren.  
Flache Historie Historienzustände bezeichnen bei zusammengesetzten Zuständen und Unterzustandsautomaten den Zustand der bei Betreten zuerst aktiv sein soll. Z. B. ein Desktop, der sich nach Wiedereinloggen an die SW erinnert, die zuletzt lief. Die flache Historie merkt sich den letzten aktiven Unterzustand eines zusammengesetzten Zustands.
Tiefe Historie merkt sich den letzten aktiven Unterzustand eines in einem zusammengesetzten Zustand enthaltenen Zustand.  

 

Zusammengesetzter Zustand (composite state)

Ein zusammengesetzter Zustand ist ein Zustand, in dem Unterzust√§nde m√∂glich sind. Das Beispiel stellt die Zust√§nde einer abschlie√übaren T√ľr dar. Die T√ľr kann die Zust√§nde zugeschlossen und aufgeschlossen haben. Nur in dem Zustand aufge¬≠schlossen kann sie die Unterzust√§nde offen und geschlossen haben. Ist das unterge¬≠ordnete Zustandsdiagramm zu gro√ü um im Zustand dargestellt zu werden, kann es auch in einem Verfeinerungsdiagramm modelliert werden.

Unterzustandsautomatenzustand (submachine state)

Der Unterzustandsautomatenzustand ist ein gutes Beispiel f√ľr unverst√§ndliche Wortunget√ľme, die die deutsche Sprache hervorbringen kann. Der Submachine State bezeichnet einen Zustand, der Unterzust√§nde enth√§lt, die in einem untergeord¬≠neten Zustandsdiagramm verfeinert sind. Im Zustandssymbol wird der Zustands¬≠namen angegeben und mit Doppelpunkt getrennt der Zustandsautomat, der ihn verfeinert.

Anwendungsbereich

Zustandsdiagramme werden h√§ufig im Bereich Embedded Systems eingesetzt, sind aber auch in anderen Bereichen verwendbar. Sie werden nur f√ľr Objekte mit interessantem Lebenszyklus modelliert. Zustandsdiagramme tragen zum besseren Verst√§ndnis des Verhaltens von Classifiern bei.

Zusammenhang

Ein Zustandsdiagramm kann sich auf eine Klasse des Klassendiagramms beziehen. Es kann aber auch die Zust√§nde von komplexeren Modellelementen (Subsystemen) darstellen. Die Nachrichten auf die eine Klasse mit einem Zustands√ľbergang rea¬≠giert, werden von anderen Klassen oder Akteuren gesendet.

Hinweise

Zustandsautomaten sollten nur bei komplexen Objekten verwendet werden. Ein Objekt ist dann komplex, wenn es viele Methoden oder viele Attribute hat. Bei einfach strukturierten Objekten bringt der Einsatz von Zustandsautomaten keine zu­sätzlichen Erkenntnisse. Jeder Zustand und Pseudozustand, außer dem Anfangs- und Endzustand, sollte mindestens einen ein- und eine ausfließende Transition haben.

Style Guide

Zustandsdiagramme sollten so gestaltet werden, dass sie von links oben nach rechts unten lesbar sind. Zustand sollte aus- und einfliessende Pfeile haben, jeder Zustand muß erreichbar sein und wieder verlassen werden können.


Neu in UML 2.0

Der Name State Machine Diagram ist in der UML 2.0 neu. In fr√ľheren Versionen der UML wurden dieser Diagrammtyp Zustands√ľbergangsdiagramme, State Dia¬≠gram oder State Transition Diagram genannt. Diese Bezeichnungen werden heute immer noch verwendet.

Beispiel


ST-Mensa