Zustandsdiagramm
Inhaltsverzeichnis: Definition – Wichtige Begriffe – Fragen aus der Praxis – Download – Hinweise
Wissen kompakt: Ein Zustandsdiagramm visualisiert eine Folge von erlaubten Zuständen, die ein Objekt im Lebenszyklus einnehmen kann, inklusive der Zustandsübergänge.
Zustandsdiagramm Definition
Ein Zustandsdiagramm – auch state diagram, state machine diagram oder Zustandsübergangsdiagramm genannt – visualisiert eine Folge von Zuständen, die ein Objekt im Lebenszyklus einnehmen kann. Es wird benutzt, um das Verhalten eines Systems, eines Teilsystems, einer Komponente oder einer Klasse zu beschreiben. Auch die Verwendung von Schnittstellen eines Systems lässt sich durch Zustandsdiagramme spezifizieren. Besonderes Augenmerk wird auf die Übergänge zwischen verschiedenen Zuständen des Objekts, die auslösenden Aktionen und die Eigenschaften des Objekts, die es vor dem Zustandswechsel besitzt oder besitzen muss, gelegt.
Erläuterungen:
Startzustand: Ein Zustandsdiagramm beginnt mit einem Startzustand, der auch als Pseudozustand bezeichnet wird.
Entscheidungsknoten: Nach dem Addieren der Punkte ist eine Entscheidung zu treffen ist. Bei 100 oder mehr Punkten ist die Klausur bestanden, bei weniger Punkten nicht.
Gabelung: Wird die Klausur bestanden, gilt es die Note zu ermitteln, um diese anschließend zu veröffentlichen und den Studienschein auszustellen.
Vereinigung: Nach einer Gabelung kommt es wieder zu einer Vereinigung.
Endzustand: Der Zustandsautomat endet mit dem Endzustand, der auf zwei Wegen erreicht wird: durch das Nichtbestehen der Klausur und durch die Veröffentlichung der Note sowie der Ausstellung des Studienscheins.
Was sind wichtige Begriffe bei Zustandsdiagrammen?
Der endliche Automat
Ein Zustandsdiagramm zeigt eine Folge von Zuständen eines Objekts und visualisiert, durch welche Aktionen Zustandswechsel stattfinden. Damit beschreibt ein Zustandsdiagramm einen endlichen Automaten, der sich zu jedem Zeitpunkt in einer Anzahl endlicher Zustände befindet. Ein Automat ist endlich, wenn die Menge der Zustände, die er annehmen kann, endlich ist. Dabei speichert der Automat die Zustände, die vom Systemstart bis zum aktuellen Zeitpunkt durchlaufen wurden. Ein Zustandswechsel zeigt eine Änderung an und wird durch logische Bedingungen beschrieben. Nur wenn diese erfüllt sind, wird der Zustandsübergang ausgelöst.
Zustände
Die UML 2.5 unterscheidet drei Zustandstypen:
- den einfachen Zustand,
- den zusammengesetzten Zustand, auch als composite state bezeichnet,
- und den Unterzustandsautomatenzustand – im Englischen schlicht als submachine state bezeichnet.
Ein einfacher Zustand hat keine Unterzustände und kann verschiedene Aktivitäten und Transitionen umfassen. Grundsätzlich müssen bei der Modellierung von Objekten in Zustandsdiagrammen folgende Voraussetzungen erfüllt werden:
- Das Objekt befindet sich immer in genau einem der definierten Zustände.
- Das Objekt befindet sich nie in keinem der definierten Zustände.
- Das Objekt befindet sich nie gleichzeitig in mehreren Zuständen.
Beim composite state sind Unterzustände möglich. Beispielsweise könnte eine Tür zwei Zustände aufgeschlossen und zugeschlossen kennen und im aufgeschlossenen Zustand geöffnet oder geschlossen sein. Geöffnet und geschlossen wären entsprechende Unterzustände.
Der submachine state beschreibt einen Zustand, der Unterzustände enthält, die in einem untergeordneten Zustandsdiagramm dargestellt werden. Zustände, die aus mehreren Subzuständen zusammengesetzt sind, nennt man auch komplexe Zustände. Wenn der komplexe Zustand und genau ein Subzustand aktiv sind, spricht man von disjunkten Subzuständen. Durch eine Teilung des Zustands in Regionen können Subzustände auch nebenläufig und gleichzeitig aktiv sein. Hier spricht man vom orthogonalen Zustand bzw. Superzustand.
Hier sehen Sie einen komplexen Zustand, bei dem zu einem bestimmten Zustand jeweils ein Subzu-stand der beiden orthogonalen Regionen aktiv ist. Nur zu einem Zeitpunkt kann A oder B aktiv und nur zu einem Zeitpunkt kann X oder Y oder Z aktiv sein. Daraus ergeben sich folgende Kombinationen von gleichzeitig aktiven Zuständen: AX, AY, AZ, BX, BY, BZ. Auch die Kombination mit den Endzuständen S1 und S2 ist möglich: AS2, BS2, S1X, S1Y, S1Z, S1S2.
Transition
Zustandsübergänge von einem Zustand zum nächsten werden als Transition bezeichnet. Sie werden durch Ereignisse ausgelöst. Transitionen verbinden zwei Zustände, also einen Quell- und einen Zielknoten. Der Transition kann eine Verhaltensspezifikation zugeordnet sein, die das Verhalten beschreiben, das zum Zustandswechsel führt. Das ausgelöste Verhalten wird als Effekt bezeichnet. Zusätzlich gibt es Wächterausdrücke, die dafür sorgen, dass Transitionen nur durchlaufen werden, wenn der Wächterausdruck wahr ist.
Es gibt zwei Arten von Zustandsübergängen:
- Innere Transitionen bezeichnen die Reaktion auf ein Ereignis, das eine Aktivität aber keinen Zustandsübergang auslöst. Aufgrund der fehlenden Zustandsänderung werden auch keine entry- oder exit-Aktivitäten ausgeführt (siehe Ereignisse).
- Äußere Transitionen führen durch die Reaktion auf ein Ereignis zu einem Zustandswechsel. Entsprechend werden auch mögliche entry- oder exit-Aktivitäten ausgeführt. Eine besondere äußere Transition ist die Selbsttransition, bei der der Quellzustand und der Zielzustand identisch sind.
Ereignisse
Ereignisse lösen Transitionen aus. Sie bestehen aus einem Namen und den zugeordneten Argumenten. Ein Zustand kann Bedingungen an ein Ereignis knüpfen, die erfüllt sein müssen bevor ein spezifischer Zustand durch ein Ereignis eingenommen wird. Für ein Ereignis bestehen grundsätzlich drei mögliche Verhaltensweisen:
- 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, solange der Zustand nicht gewechselt wird (engl. do activity)
Darüber hinaus gibt es auch ein Verhalten, das ausgeführt wird, wenn ein Event eintritt (engl. event behaviour), bspw. ein „Peep“-Geräusch bei einem Mouse Over. Neben solchen Signal Events gibt es Call Events beim Empfang von Nachrichten, Time Events für Zustandsübergänge im Zeitablauf oder zu definierten Zeitpunkten und Change Events. Bei einem Change Event wird eine Bedingung permanent überprüft und ein entsprechender Zustandswechsel ausgelöst sofern keine Überwachungsbedingung dies blockiert. Im Unterschied dazu wird eine Bedingung nur geprüft, wenn ein zugeordnetes Ereignis eintritt. Die Bedingung selbst kann keinen Zustandsübergang auslösen.
Fragen aus der Praxis
Hier finden Sie einige Fragen und Antworten aus der Praxis:
Was sind Pseudozustände?
Pseudozustände
Neben den drei Zustandstypen gibt es noch eine allgemeine Einteilung von Zuständen: echte Zustände, in denen sich ein System dauerhaft befinden kann und Pseudozustände, die ein System nicht dauerhaft einnehmen kann.
Der Pseudozustand ist ein Element, das den Ablauf eines Zustandsautomaten beeinflusst. Er ist kein echter Zustand, denn es gibt keine Wertekombinationen, die dieser Zustand repräsentiert.
Die UML 2.5 kennt zehn unterschiedliche Pseudozustände. Jeder beschreibt eine spezielle Eigenschaft, die die Zustandsübergänge steuert:
- der Startzustand (engl. initial)
- der Endzustand (engl. final)
- die Gabelung (engl. fork)
- die Synchronisation (engl. join)
- die Kreuzung (engl. junction)
- die Entscheidung (engl. choice)
- der Eintrittspunkt (eng. entry point)
- der Austrittspunkt (engl. exit point)
- die flache Historie (engl. shallow history)
- die tiefe Historie (eng. deep history)
Historie-Zustände werden verwendet, wenn im Zuge einer Transition wieder zu demselben Zustand zurückgefunden werden soll, der vor Eintreten der Transition aktiv war. Mit dem flachen und dem tiefen Historie-Zustand gibt es zwei Arten von Historie-Zuständen. Die flache Historie stellt auf derselben Ebene den vorherigen Zustand wieder her, während der tiefe History-Zustand den zuletzt aktiven Subzustand über eine gesamte Schachtelungstiefe hinweg aktiviert. Grundsätzlich darf jeder Zustand nur maximal einen flachen und einen tiefen Historie-Zustand besitzen.
Was sind diskrete Zustände?
Ein Beispiel dafür ist eine Ampel mit den Zuständen Rot, Gelb und Grün, zwischen denen sie nach festen Regeln wechselt.
Zustandsdiagramme sind weniger geeignet, wenn ein System keine klar trennbaren Zustände hat. Beispiele dafür sind:
- Ein Thermostat, das die Temperatur kontinuierlich regelt, anstatt zwischen festen „kalt“ oder „warm“-Zuständen zu wechseln.
- Ein neuronales Netz oder KI-Modell, bei dem Zustände probabilistisch oder dynamisch sind.
- Parallele Prozesse, bei denen mehrere Zustände gleichzeitig auftreten können, wie etwa im Multithreading einer Software.
Ein Zustandsdiagramm eignet sich also besonders dann, wenn das System sich in klar definierte Zustände mit eindeutigen Übergängen einteilen lässt.
Was sind typische Einsatzbereiche für Zustandsdiagramme?
Zustandsdiagramme werden häufig im Bereich der Embedded Systems für die Überwachung, Steuerung und Regelung von Funktionen oder die Daten- bzw. Signalverarbeitung genutzt. Eingebettete Systeme – als Kombination aus Software und Hardware – verrichten oft unsichtbar für den Nutzer Dienste in Autos, Flugzeugen, Kühlschränken oder Aufzügen. Sie steuern die Geldausgabe am Bankautomaten und sorgen für den Aqua Stop bei der Spülmaschine.
Auch ganze Wirtschaftsbereiche wie die Medizintechnik, die Unterhaltungsbranche, die Kommunikationsinsdustrie oder das Transportwesen verlassen sich auf eingebettete Systeme und damit auch auf Zustandsdiagramme. Und selbst in unterschiedlichen Unternehmensbereichen, die sich im weitesten Sinne um die Produktion der Produkte kümmern, also bspw. das Produkt- und Projektmanagement oder das Requirements Engineering, ist die Verwendung von Zustandsdiagrammen weit verbreitet.
Wo hat das Zustandsdiagramm seinen Ursprung?
Ursprung des Zustandsdiagramms
Zustandsdiagramme gehen auf ein Konzept von David Harel, einem israelischen Professor für Informatik, zurück, der bereits 1987 „Statecharts: A Visual Formalism for Complex Systems“¹ veröffentlichte. Erst später wurde das Zustandsdiagramm als eins von 14 Diagrammarten in die Unified Modeling Language (UML) und baugleich in die Systems Model Language (SysML) aufgenommen. Dabei wurde das Konzept um hierarchisch verschachtelte Zustände, orthogonale Bereiche und Aktionen erweitert, die gleichzeitig vom Zustand des Systems und einem auslösenden Ereignis abhängen können. Auch die Verwendung von Eintritts- und Austritts-Aktionen, die eher zustands- als aktionsorientiert sind, wurde integriert. Damit haben UML-Zustandsautomaten Eigenschaften der Mealy²- und Moore³-Automaten übernommen.
Die UML 2.5 definiert darüber hinaus sogenannte
- behavioral state machines, die Verhalten von Systemen, Systemteilen oder Instanzen einer Klasse modellieren,
- und protocol state machines, die Protokolle, die von einem Systemelement realisiert werden, dokumentieren.
Was sind Vorteile und Nachteile von Zustandsdiagrammen?
Zustandsdiagramme sind ein sehr gutes Instrument zur Beschreibung von Systemen und ihrem möglichen Verhalten. Sie bieten folgende Vorteile:
- Der Lebenszyklus eines Objekts, von der Initialisierung bis zur Freigabe, lässt sich modellieren. Damit wächst das gemeinsame Verständnis der Beteiligten über das modellierte Objekt.
- Die erlaubten Zustände eines Objekts und die Ereignisse, die durch Zustandsübergänge ausgelöst werden, lassen sich beschreiben. Dadurch wird das Verhalten des Objekts sichtbar und nachvollziehbar.
- Sie lassen sich einfach und in vielen Situationen verwenden, zumal selbst ungeübte Leser sie mit ein wenig Übung leicht verstehen.
- Sie helfen dabei, komplexe Abläufe zu strukturieren und zu visualisieren, wodurch Fehler und Unstimmigkeiten frühzeitig erkannt werden können.
- Sie können als Dokumentation für die spätere Wartung und Weiterentwicklung eines Systems dienen, da sie eine klare und präzise Darstellung des Systemverhaltens bieten.
- Sie eignen sich gut für die Simulation und Validierung von Systemen, bevor diese implementiert werden.
Trotz ihrer Vorteile gibt es auch einige Herausforderungen bei der Verwendung von Zustandsdiagrammen:
- Bei sehr komplexen Systemen kann das Diagramm schnell unübersichtlich werden, insbesondere wenn es viele Zustände und Übergänge gibt.
Die Erstellung eines detaillierten Zustandsdiagramms kann zeitaufwendig sein, insbesondere wenn viele Sonderfälle berücksichtigt werden müssen. - Nicht alle Systeme oder Prozesse lassen sich sinnvoll mit Zustandsdiagrammen darstellen, insbesondere wenn das Verhalten nicht eindeutig durch diskrete Zustände beschrieben werden kann.
- Änderungen im System erfordern oft eine Anpassung des Diagramms, was zusätzlichen Pflegeaufwand bedeutet.
- Manche Entwickler bevorzugen andere Modellierungsmethoden wie Aktivitätsdiagramme oder Sequenzdiagramme, da diese für bestimmte Anwendungsfälle besser geeignet sein können.
Welche Tipps gibt es bei der Verwendung von Zustandsdiagrammen?
Zustandsdiagramme sind universell einsetzbar, sollten jedoch gezielt verwendet werden, insbesondere für komplexe Systeme oder Prozesse, bei denen sie einen echten Mehrwert bieten. Bei einfach strukturierten Objekten kann ihr Nutzen hingegen eher gering sein. Um eine einheitliche und verständliche Darstellung zu gewährleisten, empfiehlt es sich, auf standardisierte Notationen wie UML 2.5 oder ihre Entsprechung in der SysML zurückzugreifen. Ein gut strukturiertes Zustandsdiagramm sollte von links oben nach rechts unten verlaufen, um eine intuitive Leseführung zu ermöglichen.
Da zu viele Details die Übersichtlichkeit beeinträchtigen können, ist es oft sinnvoll, komplexe Zusammenhänge in untergeordnete Diagramme auszulagern. Gleichzeitig sollte geprüft werden, ob Zustandsdiagramme die beste Darstellungsform sind oder ob sie durch andere Methoden ergänzt werden sollten, da sie zwar oft der Dokumentation in Tabellen überlegen sind, aber nicht in jeder Situation die optimale Wahl darstellen. Besonders wichtig ist es, dass die Zustände und Übergänge klar definiert sind und das System durch diskrete Zustände eindeutig beschrieben werden kann.
Damit Zustandsdiagramme ihren Zweck bestmöglich erfüllen, sollten sie auf die Zielgruppe abgestimmt sein. Entwickler benötigen oft detaillierte technische Darstellungen, während für Manager oder Kunden eine vereinfachte, übersichtliche Version hilfreicher sein kann. Durch eine durchdachte Gestaltung und den gezielten Einsatz lassen sich Zustandsdiagramme effizient und zielführend nutzen.
Impuls zum Diskutieren:
Wie könnten KI-gestützte Systeme dabei helfen, Zustandsdiagramme automatisch zu generieren und welche Herausforderungen könnten dabei entstehen?
Hinweise:
Wenn Ihnen der Beitrag gefällt, teilen Sie ihn gerne in Ihrem Netzwerk. Und falls Sie sich für Tipps aus der Praxis interessieren, dann testen Sie unseren beliebten Newsletter mit neuen Beiträgen, Downloads, Empfehlungen und aktuellem Wissen. Vielleicht wird er auch Ihr Lieblings-Newsletter.
[1] Statecharts: A Visual Formalism for Complex Systems
[2] Mealy-Automaten
[3] Moore-Automaten
Hier finden Sie ergänzende Informationen aus unserer Rubrik Wissen kompakt: