Zustandsautomaten-Origami

Seite: 2/3

Anbieter zum Thema

Embedded-Software mittels Statecharts erstellen

Zustandsautomaten sind ein verständlicher Formalismus, der sich zur Spezifikation und Implementierung des reaktiven Verhaltens von Systemen bewährt hat. Es gibt eine Reihe von Ansätzen, wie Zustandsautomaten in Programmiersprachen wie C und C++ effizient implementiert werden können.

Wie bei IDLs hat sich aber auch bei Zustandsautomaten die Beschreibung auf einer höheren Abstraktionsebene in Form von Modellen bewährt. Meist werden Zustandsautomaten graphisch in Form von Statecharts spezifiziert. Diese von der Programmiersprache unabhängigen Modelle können dann ebenfalls mittels Codegenerierung in C, C++ oder Code anderer Programmiersprachen übersetzt und in die Software eingebunden werden.

Da Zustandsautomaten das dynamische Verhalten von Systemen beschreiben, sind bei der Entwicklung insbesondere Hilfsmittel zur Ausführung der Zustandsautomaten in der Modellierungsumgebung z.B. mit Hilfe von Simulatoren sehr hilfreich.

Das Open-Source-Project YAKINDU Statechart Tools (YSCT) [5] stellt eine Werkzeugumgebung zur Modellierung, Simulation sowie Code-Generierung für Statecharts bereit.

Statecharts mit Franca-Schnittstellen – Integration von Tools und Modellen

Softwarekomponenten, die mit Hilfe von Statecharts implementiert werden, interagieren in der Regel mit anderen Softwarekomponenten. Dies erfordert wohldefinierte Schnittstellen. Damit liegt es nahe, die Schnittstellen der Softwarekomponenten mit einer IDL zu beschreiben.

Eine solche Integration gibt es zwischen Franca und YSCT. Die Statecharts bieten die Möglichkeit Ports zu definieren, die zur Anbindung passender Softwarekomponenten dienen. Für jeden Port kann spezifiziert werden, ob über diesen ein in Franca definiertes Interface bereitgestellt (provide) oder genutzt (require) werden soll.

Die in dem Interface definierten Ereignisse, Methoden sowie Datenelemente können im Statechart dann direkt verwendet werden. In Abhängigkeit davon, ob das Statechart als Nutzer oder Anbieter einer Schnittstelle agiert, stehen jeweils passende Elemente zur Verfügung.

Softwarekomponenten verfügen oftmals über mehr als eine Schnittstelle und müssen auch im Hinblick auf ihr dynamisches Verhalten Schnittstellen-konform sein. Die Komplexität der Schnittstellen multipliziert sich allerdings potentiell in der Implementierung der Komponenten, so dass ohne weitere Hilfsmittel die Validierungs- und Testaufwände sehr groß werden können.

Im nachfolgenden Beispiel wird nun dargestellt, wie durch die Nutzung von Protokoll-Zustandsautomaten für die Schnittstellen die Statechart-basierten Implementierungs-Zustandsautomaten automatisch validiert werden können.

(ID:44313794)