Zustandsautomaten modellieren – Ein Blick in die UML und SysML

Daniel Saffer

16/08/2019

Endliche Zustandsautomaten, auch bekannt als Zustandsmaschinen, State Machines oder State Diagrams, definieren die einnehmbaren Zustände eines Systems. Die Dokumentation kann sowohl tabellarisch als auch grafisch erfolgen. Da die Anzahl der Tabellenzeilen mit der Anzahl der Zustände stark ansteigt, ist es übersichtlicher, auf die grafische Lösung zurückzugreifen. Dieser Artikel soll zeigen, wie Zustandsautomaten modelliert werden können.

Einstieg

Abb. 1: Einfacher Zustandsautomat

In einem Zustandsdiagramm werden immer die Zustände und die Zustandsübergänge dargestellt (siehe Abb. 1). Anhand der grafischen Ausarbeitung können Verklemmungen und isolierte Zustände direkt erkannt werden. Zu einer Verklemmung kommt es, wenn der Zustand betreten, aber nicht mehr verlassen werden kann. Isolierte Zustände können erst gar nicht erreicht werden. Zustände werden oftmals durch Kreise dargestellt und Übergänge durch gerichtete Pfeile. Wichtig ist, dass immer nur ein Zustand aktiv sein kann.  Außerdem wird immer ein Initial-Zustand definiert, der bei einem Reset eingenommen wird.

Zustandsautomaten in UML /SysML

Etwas komplexer als eben beschrieben sind allerdings die Zustandsautomaten in UML und SysML. Hier ist die Semantik des Zustandsautomaten so detailliert spezifiziert, dass die Automaten ausgeführt und für die automatische Codegenerierung verwendet werden können. Das Konzept der Zustandsautomaten in der UML geht auf den Informatiker David Harel zurück, der u. a. die Eigenschaften der Mealy- und Moore-Automaten zusammenführte. In jedem System gibt es Zustände. Durch Ereignisse werden je nach Zustand interne Reaktionen ausgelöst und möglicherweise Zustandsänderungen durchgeführt. Ereignisse können auch verworfen werden, wenn der Zustand sie nicht interpretieren kann. In der UML und SysML werden Zustände durch abgerundete Rechtecke dargestellt. Der Zustandsname steht im Rechteck. Die UML kennt des Weiteren drei definierte Verhalten, um einen Zustand weiter zu spezialisieren. So kann das Eintrittsverhalten (entry), das Zustandsverhalten (do) und das Austrittsverhalten (exit) für jeden Zustand definiert werden. Die Verhalten werden ebenfalls innerhalb des Rechtecks festgehalten.  Zustandsübergange werden in den Modellierungssprachen auch Transition genannt. Eine Transition ist ein gerichteter Pfeil zwischen zwei Zuständen und definiert den Auslöser, die Bedingung für den Übergang und ein mögliches Verhalten. Die Notation sieht wie folgt aus:

Notation:
AulöserA, AuslöserB, ... [Bedingung] / Verhalten
Beispiel:
Benutzer[betätigt Aus-Taster] / herunterfahren()

Die UML kennt des Weiteren fünf Arten von Ereignissen, die zu einer Transition führen können. Darunter gehört das Aufrufereignis (call event), das Änderungsereignis (change event), das Signalereignis (signal event), das Zeitereignis (time event) und das Empfangsereignis (any receive event). Das Zeitereignis kann wiederum in das relative- und absolute Zeitereignis separiert werden.

In der folgenden Tabelle werden die eben genannten Elemente grafische aufgezeigt und kurz beschrieben.
Bilder können zum Vergrößern angeklickt werden.

Symbol Name Bedeutung
Zustand Zustände des Zustandsautomaten werden als abgerundete Rechtecke dargestellt. Der Zustandsname wird ins Innere geschrieben.
Zustandsautomat Zustände können in kleinere Zustände aufgeteilt werden. Auf höherer allgemeiner Ebene kann dieses Symbol verwendet werden, um die aufgeteilten Zustände zu beschreiben.
Transition Eine Transition ist ein gerichteter Pfeil zwischen zwei Zuständen. Der Zustand wird in Pfeilrichtung gewechselt. Zusätzlich kann der Auslöser, die Bedingung und das Verhalten hinzugefügt werden (siehe oben).
Aufrufereignis Eine Operation wird aufgerufen.
Änderungsereignis Im Wert ändert sich ein Wert. Ist der boolesche Ausdruck wahr, wird der nächste Zustand aufgerufen.
Signalereignis Ein Signal wird empfangen.
Relatives Zeitereignis Der Zustand wird nach einer definierten Zeit geändert.
Absolutes Zeitereignis Der Zustand wird zu einer definierten Zeit geändert.
Initial Zustand Der Initial Zustand oder auch Startzustand gibt an, wo der Zustandsautomat nach einem Reset oder nach dem Einschalten beginnt. Er zeigt mithilfe einer Transition immer auf den initialen Zustand.
Endzustand Der Endzustand gibt an, wo der Zustandsautomat beendet wird. Der Ausführung ist danach abgeschlossen. Ein möglicher Fall wäre z. B. das Abschalten eines Geräts.
Entscheidung Eine Entscheidung hat immer eine eingehende und mehrere abgehende Transitionen. Es wird eine Entscheidung auf Basis von Werten getroffen.
Historie Mithilfe der Historisierung können Zustände gespeichert werden. Wird ein Gerät z. B. erneut eingeschaltet, wird der Zustand der letzten Ausführung gemerkt und wieder aufgerufen. Ein Beispiel ist eine Waschmaschine mit Auswahl des Programms über einen Drehregler. Jedes Programm stellt einen Zustand dar. Die Waschmaschine springt in den Zustand, der über den Drehregler ausgewählt ist.
Splitten und synchronisieren Mithilfe dieses Symbols lassen sich Parallelisierungen ermöglichen. Durch das Splitten werden mehrere Zustandsautomaten parallel ausgeführt, die dann wieder durch das Synchronisieren zusammengeführt werden können.
Eingangspunkt Mithilfe des Eingangspunkts können weitere Einstiege in den Zustandsautomaten beschrieben werden.
Ausgangspunkt Mithilfe des Ausgangspunkts können weitere Ausgänge des Zustandsautomaten beschrieben werden. Ein Ausgangspunkt beendet die Ausführung.
Terminierung Auch eine Terminierung beendet den Zustandsautomaten. Allerdings gibt es keinen Endzustand.

Beispiel

Wenn Sie die automatische Codegenerierung oder die Ausführung des Zustandsautomaten in speziellen Programmen nicht verwenden möchten, empfiehlt es sich generell, den Zustandsautomaten so einfach wie möglich zu halten. Im Folgenden wird ein Beispiel eines Zustandsautomaten für einen Ventilator gezeigt:

Abb. 2: Zustandsautomat eines sehr einfachen Ventilators

In Abbildung 2 ist der Zustandsautomat eines sehr einfachen Ventilators zu sehen. Er kennt die Zustände aus und ein. Eingeschaltet wird der Ventilator über einen Taster. Er geht entweder automatisch nach zwei Stunden aus, um Energie zu sparen oder kann auch durch den Anwender abgeschaltet werden. Der Ventilator merkt sich über einen Drehregler die ausgewählte Stärke des Benutzers. Er kann zwischen drei Stärken auswählen. Der Zustandsautomat des Ventilators wird nie verlassen.

Weitere Diagramme


Geschrieben von Daniel Saffer

Daniel Saffer ist Chief Technical Officer (CTO) der MEDtech Ingenieur GmbH. In dieser Rolle verantwortet er die technische Strategie des Unternehmens und unterstützt Kundenprojekte in der Medizintechnik. Sein Fokus liegt auf der Weiterentwicklung sicherheitskritischer Softwarelösungen, regulatorischen Anforderungen und innovativen Technologien für die Branche.


Weitere Beiträge

  • 09/09/2025
  • Allgemein, Software

In vorangegangenen Blogbeiträgen habe ich zwei wesentliche Komponenten einer einfachen und universell einsetzbaren Software-Architektur vorgestellt: Events mit Dispatcher, Listeners und Datapool. Damit lassen sich bereits sehr viele einfache Use-Cases ...

Weiterlesen
  • 19/03/2025
  • Allgemein, Unternehmen, Veranstaltungen

Wir freuen uns, euch zu einem exklusiven VDI-Event des Netzwerk Systems Engineering einzuladen, das bei uns im Büro stattfindet!Am Freitag, den 28. März 2025, wird sich alles um die ...

Weiterlesen
  • 12/11/2024
  • Allgemein, Software, Testen, Tools

In sicherheitskritischen Softwareprojekten steht die Qualität der Software an erster Stelle. Besonders bei Klasse-C-Software, die nach strengen Normen wie IEC 62304 (Medizintechnik) zertifiziert werden muss, ist es essenziell, dass ...

Weiterlesen
Cookie-Übersicht

Die Internetseiten der MEDtech Ingenieur GmbH verwenden Cookies. Cookies sind Textdateien, welche über einen Internetbrowser auf einem Computersystem abgelegt und gespeichert werden.

Zahlreiche Internetseiten und Server verwenden Cookies. Viele Cookies enthalten eine sogenannte Cookie-ID. Eine Cookie-ID ist eine eindeutige Kennung des Cookies. Sie besteht aus einer Zeichenfolge, durch welche Internetseiten und Server dem konkreten Internetbrowser zugeordnet werden können, in dem das Cookie gespeichert wurde. Dies ermöglicht es den besuchten Internetseiten und Servern, den individuellen Browser der betroffenen Person von anderen Internetbrowsern, die andere Cookies enthalten, zu unterscheiden. Ein bestimmter Internetbrowser kann über die eindeutige Cookie-ID wiedererkannt und identifiziert werden.

Durch den Einsatz von Cookies kann die MEDtech Ingenieur GmbH den Nutzern dieser Internetseite nutzerfreundlichere Services bereitstellen, die ohne die Cookie-Setzung nicht möglich wären.

Mittels eines Cookies können die Informationen und Angebote auf unserer Internetseite im Sinne des Benutzers optimiert werden. Cookies ermöglichen uns, wie bereits erwähnt, die Benutzer unserer Internetseite wiederzuerkennen. Zweck dieser Wiedererkennung ist es, den Nutzern die Verwendung unserer Internetseite zu erleichtern. Der Benutzer einer Internetseite, die Cookies verwendet, muss beispielsweise nicht bei jedem Besuch der Internetseite erneut seine Zugangsdaten eingeben, weil dies von der Internetseite und dem auf dem Computersystem des Benutzers abgelegten Cookie übernommen wird.

Die betroffene Person kann die Setzung von Cookies durch unsere Internetseite jederzeit mittels einer entsprechenden Einstellung des genutzten Internetbrowsers verhindern und damit der Setzung von Cookies dauerhaft widersprechen. Ferner können bereits gesetzte Cookies jederzeit über einen Internetbrowser oder andere Softwareprogramme gelöscht werden. Dies ist in allen gängigen Internetbrowsern möglich. Deaktiviert die betroffene Person die Setzung von Cookies in dem genutzten Internetbrowser, sind unter Umständen nicht alle Funktionen unserer Internetseite vollumfänglich nutzbar.

Weitere Informationen erhalten Sie in unserer Datenschutzerklärung.

Unbedingt notwendige Cookies

Dieses Cookie wird benötigt, um Ihre Cookie-Einstellungen zu merken und weitere Hauptfunktionen zur Verfügung zu stellen

Um Ihnen eine Auskunft über Ihre gespeicherten personenbezogenen Daten hier (https://medtech-ingenieur.de/gespeicherte-daten-2/) geben zu können, benötigen wir einen Cookie, um Sie bei der Datenabfrage identifizieren zu können. Dieser Cookie muss aus Sicherheitsgründen deshalb aktiviert sein. Ein weiterer Cookie wird gesetzt, um diesen Banner nicht erneut anzeigen zu müssen.

Cookie-Name Beschreibung
PHPSESSID Name: PHP session
Anbieter:
Eigentümer der Webseite (MEDtech Ingenieur)
Zweck:
Wir benötigt, um Sie bei der Anfrage von personenbezogenen Daten identifizieren zu können. Das Cookie wird nur gesetzt, wenn Sie eine Anfrage hier (https://medtech-ingenieur.de/gespeicherte-daten-2/) stellen.
Laufzeit: Sitzungsende
Kategorie: Unbedingt notwendige Cookies
moove_gdpr_popup Name: Cookie-Box Einstellungen
Anbieter:
Eigentümer der Webseite (MEDtech Ingenieur)
Zweck:
Wird benötigt, um Ihre Cookie-Einstellungen zu speichern, um den Cookie-Banner nicht erneut anzeigen zu müssen.
Laufzeit: 1 Jahr
Kategorie: Unbedingt notwendige Cookies
comment_author_9c90e388e3e1be4a6c594fa6ac8a3eec
comment_author_email_9c90e388e3e1be4a6c594fa6ac8a3eec
comment_author_url_9c90e388e3e1be4a6c594fa6ac8a3eec
Name: Kommentar Einstellungen
Anbieter:
Eigentümer der Webseite (MEDtech Ingenieur)
Zweck:
Cookie wird angelegt, wenn Sie ein Kommentar auf MEDtech Ingenieur veröffentlichen wollen, um Sie als Autor identifizieren und den aktuellen Status Ihres Kommentars anzeigen zu können. Das Cookie enthält den angegebenen Namen. Das Cookie wird erst gesetzt, wenn Sie der Speicherung Ihrer personenbezogenen Daten zustimmen.
Laufzeit: 1 Jahr
Kategorie: Unbedingt notwendige Cookies
rmp-rate Name: RMP Rate
Anbieter: Eigentümer der Webseite (MEDtech Ingenieur)
Zweck: Cookie wird angelegt, wenn Sie eine Bewertung eines Blogbeitrags mithilfe des Sternebewertungssystems abgeben. Ihnen wird eine anonymisierte ID zugewiesen, um zu erkennen, ob Sie einen Artikel bereits bewertet haben oder nicht. Das Cookie wird nur verwendet, um zu verhindern, dass mehrfache Bewertung abgegeben werden und erst gesetzt, wenn Sie auf einen Stern klicken.
Laufzeit: 1 Jahr
Kategorie: Unbedingt notwendige Cookies
medtech-download-page Name: Download Page
Anbieter: Eigentümer der Webseite (MEDtech Ingenieur)
Zweck: Cookie wird angelegt, wenn Sie den Landing-Page Prozess erfolgreich durchlaufen haben. Dies geschieht nur, wenn Sie einen Content-Download von unserer Website anstreben.
Laufzeit: 1/2 Jahr
Kategorie: Unbedingt notwendige Cookies