Zustandsübergangsdiagramm
# Zustandsübergangsdiagramm

Ein Zustandsübergangsdiagramm ist eine grafische Darstellung von endlichen Automaten, d. h. Zuständen und deren Übergangsbedingungen, um die enthaltenen Verknüpfungen möglichst durchschaubar und eindeutig zu visualisieren.

Anwendung findet das Zustandsübergangsdiagramm im Rahmen der Systemtheorie in den verschiedensten Bereichen der Informatik. Eine wesentliche Vereinheitlichung wurde durch David Harels Statechart-Notation erreicht, welche weithin als die allgemeingültige Form von Zustandsübergangsdiagrammen gesehen wird. Für die objektorientierte Softwareentwicklung ist es mittlerweile im Rahmen der Unified Modeling Language (UML) normiert als Zustandsdiagramm (UML). Es existieren insbesondere im historischen Kontext noch weitere Varianten der Darstellung.

## Statecharts

Statechart ist eine Darstellungsform eines Endlichen Automaten in der Informatik, die von David Harel eingeführt wurde. Die Notation erlaubt die präzise Spezifikation von zustandsbasierten Systemen. David Harel führte mehrere Notationselemente ein, um die Komplexität großer Systeme mittels Endlicher Automaten handhabbar zu machen:

* Hierarchie mit Unterzustandsautomaten, in denen in einem Zustand einer höheren Ebene ein weiterer vollständiger Zustandsautomat steckt. Die Unterzustandsautomaten können entweder einen eigenen Startzustand haben, oder aber können Unterzustände direkt angesprungen werden.
* Komposition für die Darstellung von parallelen Zustandsautomaten. Hierbei sind AND und OR-Komposition möglich, die ein gleichzeitiges oder abwechselndes Schalten der Automaten vorsehen
* Inter-Level-Transitionen, welche auch einen Unterzustand in einen Zustand einer anderen Ebene überführen können und vice versa.
* History-Konnektor, der für einen Unterzustandsautomat bei dessen Verlassen den zuletzt eingenommenen Zustand speichert, um beim Wiedereintritt in den Unterzustandsautomat diesen Zustand wieder einzunehmen. Der History-Konnektor wird mit einem eingekreisten H notiert.
* Condition-Konnektor, der einen Zustandsübergang (eine Transition) abhängig von einer Bedingung in verschiedene Zielzustände überführt. Der Condition-Konnektor wird mit einem eingekreisten C notiert.
* Temporale Logik kann in den Transitionen verwendet werden, um beispielsweise Timeouts anzugeben.
* Entry-, Exit-, Throughout-Actions von Zuständen, welche Aktionen angeben, die beim Eintreten, Verlassen bzw. während des Aufenthalts in einem Zustand ausgeführt werden. Die Anzahl der Ausführungen der Throughout-Aktion hängt somit auch von der Taktung des Zustandsautomaten ab.

## Werkzeuge

Neben den UML-Werkzeugen sind Zustandsübergangsdiagramme auch in einer Reihe weiterer sowohl offener als auch kommerzieller Werkzeuge implementiert, z. B. (Liste unvollständig):

* EasyCODE
* SparxSystems Enterprise Architect
* ETAS ASCET
* IBM Rational Rhapsody
* The MathWorks Stateflow für MATLAB/Simulink
* National Instruments MatrixX
* PikeTec Testwerkzeug Time Partition Testing (TPT)
* Telelogic Statemate
* YAKINDU Statechart Tools (open source)
* UMlet (open source)
* diagrams.net (open source)
