UML-Zustandsdiagramme
Ein Objekt, jeder Zustand, in dem es sein kann, und jedes Ereignis, das es zwischen ihnen bewegt. Das Diagramm, das aus "kann eine eingezogene Zahlung storniert werden?" statt eines Streits etwas macht, auf das man zeigen kann.
9 Min. LesezeitUML 2.5.115 von 35
Die kurze Antwort
- Eine Übergangsbeschriftung ist Auslöser [Wächter] / Effekt, und alle drei Teile sind optional. Die meiste Verwirrung um Zustandsmaschinen steckt in dieser einen Zeile.
- Eine Eintrittsaktion läuft auf jedem Weg in den Zustand, ein Übergangseffekt nur auf einem Übergang. Denselben Effekt je Übergang zu schreiben, lässt die Kopien auseinanderlaufen.
- Ein zusammengesetzter Zustand faktorisiert einen gemeinsamen Ausgang: der Übergang wird einmal an seinem Rand gezeichnet statt einmal an jedem Unterzustand.
- H kehrt in den zuletzt aktiven Unterzustand zurück, H mit Stern in die zuletzt aktive verschachtelte Konfiguration auf jeder Ebene - die Notation für dort weitermachen, wo wir aufgehört haben.
01Was es zeigt#
Ein Zustandsdiagramm beschreibt das Leben einer Sache. Keinen Prozess, keine Interaktion - ein Objekt oder eine Komponente und die Zustände, die es von der Entstehung bis zur Entsorgung durchläuft.
Seine Kraft liegt im Negativraum. Das Diagramm oben zeichnet sechs Übergänge. Alles andere ist damit verboten: eine Zahlung in Refunded kann nicht zurück nach Captured, eine in Failed kann nicht eingezogen werden, und eine in Pending kann nicht erstattet werden. In einem Klassendiagramm leben diese Einschränkungen in Fliesstext oder in niemandes Kopf. Hier sind sie das Bild.
02Zustände und Übergänge#
| Element | Notation | Was es bedeutet |
|---|---|---|
| Initialer Pseudozustand | gefüllte Scheibe | Wo das Objekt beginnt. Es ist kein Zustand - hier ruht nichts; der ausgehende Übergang feuert sofort. |
| Zustand | abgerundetes Rechteck | Eine Bedingung, in der das Objekt verharrt, während es auf etwas wartet. Benannt als Adjektiv oder Partizip: Authorized, nicht Authorizing it. |
| Übergang | Pfeil mit Beschriftung | Ein Wechsel zwischen Zuständen, ausgelöst von einem Ereignis. Beschriftet als Auslöser [Wächter] / Effekt. |
| Endzustand | Ring um eine Scheibe | Das Leben des Objekts endet. Danach kommt nichts mehr. |
| Zusammengesetzter Zustand | ein Zustand, der Zustände enthält | Gruppiert Unterzustände. Ein Übergang aus dem zusammengesetzten Zustand heraus gilt für jeden Zustand darin. |
| Historie | ein eingekreistes H | Der Wiedereintritt setzt in dem Unterzustand fort, in dem er zuletzt war, statt im initialen. |
03Wohin das Verhalten gehört#
Verhalten kann an einem Übergang oder an einem Zustand hängen, und die richtige Wahl beseitigt eine Menge Doppelung.
- Effekt an einem Übergang - nach dem Schrägstrich geschrieben. Läuft einmal, bei genau diesem Wechsel. Nehmen Sie ihn, wenn das Verhalten zu diesem Pfad gehört.
entry / …- läuft bei jedem Eintritt in den Zustand, über jeden Übergang. Müssen drei Pfeile nachCapturedalle einen Buchungssatz schreiben, ist das eineentry-Aktion, nicht drei Effekte.exit / …- läuft bei jedem Verlassen des Zustands, über jeden Übergang.do / …- läuft durchgehend, solange der Zustand aktiv ist, und wird beim Verlassen abgebrochen. Das ist die für lang laufende Arbeit.
Faustregel: geht es beim Verhalten um das Sein im Zustand, nehmen Sie entry/do/exit. Geht es um die bestimmte Reise zwischen zwei Zuständen, setzen Sie es an den Übergang.
04Zusammengesetzte Zustände und Historie#
Echte Lebenszyklen entwickeln einen häufigen Fall: mehrere Zustände, die auf ein Ereignis identisch reagieren. Eine Zahlung in Pending, Authorized oder Captured kann jeweils storniert werden, und drei getrennte cancel-Pfeile nach Cancelled zu zeichnen ist Rauschen.
Ein zusammengesetzter Zustand löst das. Fassen Sie die drei in einem umschliessenden Zustand namens Active zusammen und zeichnen Sie einen cancel-Übergang aus Active heraus. Er gilt für den jeweils aktuellen Unterzustand. Aus drei Pfeilen wird einer, und ein vierter Unterzustand später kostet nichts.
Ein Historien-Pseudozustand - ein eingekreistes H - regelt die Wiederaufnahme. Ohne ihn beginnt der Wiedereintritt beim initialen Unterzustand. Mit ihm kehrt die Maschine in den Unterzustand zurück, in dem sie beim Verlassen war. Flache Historie (H) merkt sich eine Ebene, tiefe Historie (H*) die ganze Verschachtelung. Das wollen Sie für alles Unterbrechbare.
05Wann eines zu zeichnen ist#
Dazu greifen, wenn
- Eine Entität hat ein Statusfeld und Regeln dazu, welche Wechsel erlaubt sind
- Bestellung, Zahlung, Abonnement, Ticket, Dokumentfreigabe - alles mit Lebenszyklus
- Ein Protokoll oder Gerät mit Modi, wo unerlaubte Übergänge echten Schaden anrichten
- Sie wollen gleich ein Status-Enum schreiben und vorher die Übergänge richtig haben
Zu etwas anderem greifen, wenn
- Das Objekt hat zwei Zustände - ein Satz genügt
- Sie beschreiben einen Prozess über mehrere Objekte; nehmen Sie ein Aktivitätsdiagramm
- Die Zustände sind in Wahrheit nur Schritte, die immer aufeinander folgen
- Interessant ist, wer wen aufruft, nicht in welchem Zustand etwas ist
Ein Zustandsdiagramm bildet sich fast direkt auf Code ab, was für UML ungewöhnlich ist. Die Zustände werden ein Enum, die Übergänge eine Tabelle und die Wächter die Bedingungen an jedem Eintrag. Es zuerst zu zeichnen und daraus zu implementieren ist eine der wenigen Stellen, an denen Modellierung schlicht Zeit spart, statt nur zu dokumentieren.
06Häufige Fehler#
- Zustände als Tätigkeiten benannt.
Authorizinglegt laufende Arbeit nahe; wartet das Objekt dort, benennen Sie die Bedingung -Authorized,Awaiting capture. - Einen Prozess modelliert, kein Objekt.Sind Ihre „Zustände“ Schritte, die verschiedene Leute ausführen, wollen Sie ein Aktivitätsdiagramm.
- Übergänge ohne Auslöser. Zulässig - er feuert, wenn die
do-Aktivität des Zustands endet - aber meist ein Zeichen, dass ein Ereignis fehlt. - Kein Endzustand und keine Erklärung. Entweder lebt das Objekt tatsächlich ewig, oder ein Endzustand wurde vergessen. Beides kommt vor; nur eines ist beabsichtigt.
- Denselben Übergang aus jedem Zustand wiederholt. Genau dafür gibt es zusammengesetzte Zustände.
In je einer Zeile
- 01Ein Objekt, seine Zustände und die Ereignisse, die es bewegen. Kein Prozess.
- 02Die Übergänge, die Sie nicht zeichnen, sind die Einschränkung, für die das Diagramm existiert.
- 03Übergangsbeschriftungen lauten Auslöser [Wächter] / Effekt, und jeder Teil ist optional.
- 04entry-, exit- und do-Aktionen gehören zum Zustand; Effekte gehören zu einem Übergang.
- 05Zusammengesetzte Zustände fassen ein von mehreren Unterzuständen geteiltes Ereignis in einen Pfeil.
- 06Historien-Pseudozustände setzen fort, wo die Maschine aufgehört hat, statt neu zu starten.
07Häufige Fragen#
Wie ist eine UML-Übergangsbeschriftung aufgebaut?
Auslöser, dann Wächter in eckigen Klammern, dann Effekt nach einem Schrägstrich. Der Auslöser ist das Ereignis, das den Übergang feuern kann, der Wächter eine Bedingung, die dafür gelten muss, und der Effekt das, was dabei geschieht. Alle drei sind optional, eine Beschriftung kann also nur ein Ereignisname oder nur ein Wächter sein.
Was unterscheidet eine Eintrittsaktion von einem Übergangseffekt?
Eine Eintrittsaktion läuft immer beim Betreten des Zustands, über jeden Übergang. Ein Übergangseffekt läuft nur bei diesem einen Übergang. Gehört dasselbe Verhalten zu jedem Weg in einen Zustand, ist es eine Eintrittsaktion - es je Übergang auszuschreiben ist genau der Weg, auf dem die Kopien auseinanderdriften.
Was ist ein zusammengesetzter Zustand?
Ein Zustand, der eine eigene Zustandsmaschine enthält. So faktorisiert man eine Gruppe von Zuständen, die sich einen ausgehenden Übergang teilen: Man zeichnet ihn einmal am Rand des zusammengesetzten Zustands statt einmal an jedem Unterzustand.
Was bedeutet das H-Symbol in einer Zustandsmaschine?
Es ist ein History-Pseudozustand. Flache History, H, kehrt in den zuletzt aktiven Unterzustand eines zusammengesetzten Zustands zurück; tiefe History, H mit Stern, kehrt auf jeder Ebene in die zuletzt aktive verschachtelte Konfiguration zurück. Es ist die Notation für dort weitermachen, wo wir aufgehört haben.
Wann Zustandsmaschine statt Aktivitätsdiagramm?
Wenn der Gegenstand der Lebenszyklus eines Objekts ist und die Frage lautet, was als Nächstes passieren kann. Eine Zustandsmaschine kreist um ein Ding und die Zustände, in denen es sein kann; ein Aktivitätsdiagramm kreist um einen Prozess und die Schritte, die er durchläuft.
In dieser Reihe
- 01Was ist UML?
- 02UML-Symbole
- 03Diagramm auswählen
- 04Klassendiagramme
- 05Klassendiagramm-Beispiele
- 06Klassendiagramm zeichnen
- 07Klassendiagramm-Symbole
- 08Sequenzdiagramme
- 09Sequenzdiagramm-Beispiele
- 10Sequenzdiagramm zeichnen
- 11Anwendungsfalldiagramme
- 12Anwendungsfall-Beispiele
- 13Aktivitätsdiagramme
- 14Aktivitätsbeispiele
- 15Zustandsdiagramme
- 16Zustandsdiagramm-Beispiele
- 17Komponentendiagramme
- 18Komponenten-Beispiele
- 19Komponentendiagramm zeichnen
- 20Komponenten-Symbole
- 21Verteilungsdiagramme
- 22Verteilungsbeispiele
- 23Objektdiagramme
- 24Paketdiagramme
- 25Kompositionsstrukturdiagramme
- 26Kommunikationsdiagramme
- 27Sequenz vs Kommunikation
- 28Zeitverlaufsdiagramme
- 29Interaktionsübersichtsdiagramme
- 30Profildiagramme
- 31UML mit KI
- 32E-Commerce-Beispiel
- 33Banken-Beispiel
- 34Microservices-Beispiel
- 35AWS-Beispiel
Passend dazu
Grundlagen
Verhaltensdiagramme
Strukturdiagramme
Verhaltensdiagramme
Verhaltensdiagramme
Verhaltensdiagramme