Modellierung mit
UML
Loading

5 Statecharts

Statecharts sind eine Weiterentwicklung der endlichen Automaten zur Beschreibung von Objektverhalten. Jedes komplexere System besitzt steuernde und kontrollierende Anteile, die mit Statecharts modelliert werden können. Die hier vorgestellte Variante der Statecharts nutzt die OCL als Bedingungssprache und Java-Anweisungen als Aktionen. In den ersten beiden Abschnitten werden grundsätzliche Eigenschaften von Statecharts diskutiert. Die darauf folgenden drei Abschnitte führen die Statecharts als Beschreibungstechnik ein. Eine Diskussion der Anwendung von Statecharts im Kontext anderer UML-Diagramme rundet die Einführung der Statecharts ab.

5.1 Eigenschaften von Statecharts
5.2 Automatentheorie und Interpretation
5.2.1 Erkennende und Mealy-Automaten
5.2.2 Interpretation
5.2.3 Nichtdeterminismus als Unterspezifikation
5.2.4 ε-Transitionen
5.2.5 Unvollständigkeit
5.2.6 Lebenszyklus
5.2.7 Beschreibungsmächtigkeit
5.2.8 Transformationen auf Automaten
5.3 Zustände
5.3.1 Zustandsinvarianten
5.3.2 Hierarchische Zustände
5.3.3 Start- und Endzustand
5.4 Transitionen
5.4.1 Bedingungen innerhalb der Zustandshierarchie
5.4.2 Start- und Endzustand in der Zustandshierarchie
5.4.3 Stimuli für Transitionen
5.4.4 Schaltbereitschaft
5.4.5 Unvollständiges Statechart
5.5 Aktionen
5.5.1 Prozedurale und beschreibende Aktionen
5.5.2 Aktionen in Zuständen
5.5.3 Zustandsinterne Transitionen
5.5.4 do-Aktivität
5.6 Statecharts im Kontext der UML
5.6.1 Vererbung von Statecharts
5.6.2 Transformation von Statecharts
5.6.3 Abbildung in die OCL
5.7 Zusammenfassung

Automaten, Zustandsübergangsdiagramme, Transitionssysteme und auch Statecharts bilden verschiedene Ausprägungen eines elementaren Grundkonzepts zur zustandsbasierten Darstellung von Verhalten. Während die in den Kapiteln 2 und 4 beschriebenen Klassen- und Objektdiagramme im Wesentlichen auf die Struktur eines Softwaresystems fokussieren, bilden Zustandsübergangsdiagramme in ihren verschiedenen Ausprägungen das Bindeglied zwischen Zustand und Verhalten von Systemkomponenten. Automaten gibt es in unterschiedlichsten Ausprägungen. So können Automaten ausführbar sein, zur Erkennung von Sequenzen von Buchstaben oder Nachrichten, zur Beschreibung des Zustandsraums eines Objekts oder zur Spezifikation von Antwortverhalten auf einen Stimulus genutzt werden. In der UML werden Statecharts als hierarchische Automatenvariante eingesetzt, die wesentlich auf den in [Har87HG97] eingeführten Statecharts für eingebettete Systeme beruht.

Während in der ursprünglichen Fassung [Har87] Statecharts sowohl für die Struktur als auch für das Verhalten kommunizierender Systeme verwendet wurden, ist die Rolle eines Statecharts im Kontext der UML auf die Modellierung des Verhaltens von Objekten reduziert. Trotz der sich dadurch ergebenden Vereinfachung der Semantik eines Statecharts sind diese ausreichend komplex, um zunächst die Grundlagen in Form endlicher Automaten zu diskutieren und dann Statecharts mit allen Konzepten einzuführen. Bereits der Übersichtsartikel [vdB94] zeigt, dass es für Statecharts eine Reihe syntaktischer Varianten und semantischer Interpretationsmöglichkeiten gibt, die den jeweiligen Anwendungsgebieten angepasst sind. Die Statecharts der UML/P lassen sich durch Steuerung mit geeigneten Stereotypen für die Modellierung, Codegenerierung und Testfallbeschreibung einsetzen.

In Abschnitt 5.1 werden zunächst einige grundlegende Annahmen über Statecharts getroffen, die sich bei der Definition der Syntax und der Bedeutung von Statecharts teilweise vereinfachend auswirken. Dem in der Notation der Statecharts ungeübten Leser wird empfohlen, diesen Abschnitt zunächst zu überspringen und mit der Automatentheorie in Abschnitt 5.2 zu beginnen, die auch eine Begriffsbestimmung zu den Statecharts in den Abbildungen 5.8, 5.9 und 5.10 beinhaltet. In den darauf folgenden Abschnitten 5.3, 5.4 und 5.5 werden das Zustandskonzept, die Transitionsformen und die beschreibenden und prozeduralen Aktionen eingeführt. Die Verwendung von Statecharts im Kontext anderer UML-Diagramme wird in Abschnitt 5.6 diskutiert. Dabei werden Vererbung, die Transformation von Statecharts in so genannte vereinfachte Statecharts und die Umsetzung in OCL behandelt. Ergänzend dazu beschreibt Anhang C.5 die abstrakte Syntax der Statecharts und vergleicht die UML/P-Statecharts mit dem UML-Standard.


Bernhard Rumpe. Agile Modellierung mit UML. Springer 2012