Das Zustandsdiagramm (englisch state diagram) ist eine der 14 Diagrammarten der Sprache UML 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.
Der Duden definiert den Zustand als "augenblickliches Beschaffen-, Geartetsein; Art und Weise des Vorhandenseins von einer Sache in einem bestimmten Augenblick; Verfassung, Beschaffenheit augenblicklich bestehende Lage, Situation, Verhältnisse." Ein Zustandsdiagramm zeigt die zur Laufzeit erlaubten Zustände eines Zustandsautomaten (z. B. eines Objektes oder auch eines Systems) an und gibt Ereignisse an, die seine Zustandsübergänge auslösen. Damit beschreibt ein Zustandsdiagramm eine hypothetische Maschine (endlicher Automat), die sich zu jedem Zeitpunkt in einer Menge endlicher Zustände befindet.
Ein Marker für den Ausgangszustand in dem betrachteten Prozess, dargestellt durch einen dunklen Kreis mit einem Übergangspfeil.
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. Diese Zustände werden in der Folge als Knoten bezeichnet.
Die Pfeile zwischen den Zuständen symbolisieren mögliche Zustandsübergänge. Sie sind mit den Ereignissen beschriftet, die zu dem jeweiligen Zustandsübergang führen. Ereignisse können, um Bedingungen ergänzend werden, falls beim Eintreten eines Ereignisses der Zustandsübergang zusätzlich an eine Bedingung geknüpft ist. Falls relevant kann ebenfalls im Zustandsübergang oder im Zustand selbst ergänzend angegeben werden, welche Aktion bzw. Aktivitäten (im Sinne von einer Methode) während des Zustandes ausgeführt wird (Quelle: http://www.inf-schule.de):
Eine Entry-Aktion wird beim Eintritt in einen Zustand einmalig ausgeführt. Sie dient typischerweise zur Initialisierung: Variablen werden gesetzt, Ressourcen werden zugeteilt oder andere Vorbereitungen für den Zustand werden getroffen. Beispiel: Ein Zustand "Drucken" könnte eine Entry-Aktion haben, die den Drucker initialisiert.
Eine Exit-Aktion wird beim Verlassen eines Zustands einmalig ausgeführt. Wird ausgeführt, bevor ein Zustand verlassen wird. Sie dient zur Bereinigung: Ressourcen werden freigegeben, Variablen werden zurückgesetzt oder andere Abschlussarbeiten werden durchgeführt. Beispiel: Ein Zustand "Bearbeiten" könnte eine Exit-Aktion haben, die alle geänderten Daten speichert.
Eine Do-Aktivität wird während der gesamten Zeit durchgeführt, in der sich das System im betreffenden Zustand befindet. Beachten Sie, dass hier zwischen Aktionen und Aktivitäten unterschieden wird. Eine Aktion ist ein Vorgang im System, der nur sehr kurz dauert und für die Modellierung des Verhaltens unbedeutend ist. Aktionen können als (nahezu) zeitlose Vorgänge angesehen werden. Eine Aktivität ist dagegen ein zeitbehafteter Vorgang im System.
Ein Kreis mit Punkt darin bedeutet, dass ein Prozess abgeschlossen ist. Es gibt keinen Übergang aus dem Endzustand heraus.
Das folgende Diagramm zeigt ein Zustandsdiagramm zur Beschreibung des Verhaltens einer Waschmaschine. Der Startzustand befindet sich links im Modell. Tritt das Ereignis Starttaste ein, erfolgt ein Zustandsübergang zum Status wäscht. Aus dem Status wäscht gibt es zwei Status Übergänge. Türe geöffnet unterbricht den Zustand wäscht und führt zum Status unterbrochen. Von hieraus kann der Zustand wäscht wieder aufgenommen werden, indem das Ereignis Türe geschlossen eintritt. Entweder es wird wieder die Türe geöffnet oder das Ereignis Programm beendet tritt ein, was zum Endzustand ganz rechts führt.