Zustandsautomaten-Origami

Seite: 3/3

Anbieter zum Thema

Beispielprojekt: Roboterarm-Steuerung

Als Beispiel für die beschriebene Integration der Open-Source-Tools YSCT und Franca dient eine Steuerungssoftware für einen Roboter-Arm. Die Roboter-Hardware ist ein AL5D-Kit von Lynxmotion mit SSC32-Steuerplatine. Bild 1 in der Bildergalerie zeigt den Roboterarm; dieser besteht aus fünf Achsen und einer Greifeinheit.

Für unser Beispiel modellieren wir das Verhalten an der Applikationsschnittstelle der Robotersteuerung; diese erlaubt die Kontrolle folgender Funktionen:

  • Der Greifer kann Objekte festhalten und loslassen (Operationen grab und release).
  • Der Arm kann den Greifer an eine bestimmte kartesische Position bewegen (Operation move).

Die statischen Elemente der Schnittstelle sind also die Methoden move, grab und release. Jede Ausführung einer dieser Methoden besteht aus zwei Ereignissen: Zuerst ruft die Client-Seite der Schnittstelle die Methode auf; danach sendet die Server-Seite eine positive oder negative Antwort. Zusätzlich zu dieser elementaren Protokollfestlegung gibt es fachliche Einschränkungen der erlaubten Abläufe.

Beispielsweise ist eine release-Operation ohne eine vorherige grab-Operation nicht sinnvoll. Insgesamt lassen sich alle erlaubten Sequenzen durch den Protokoll-Zustandsautomaten aus Bild 2 in der Bildergalerie definieren.

Ein Protokoll-Zustandsautomat wie in Bild 2 wird als Bestandteil der Schnittstellendefinition mittels Franca IDL formuliert. Wichtig ist, dass dieser nur die Semantik der Schnittstelle beschreibt und nicht die eigentliche Implementierung der Steuerungskomponente. Diese wird durch einen weiteren, viel detaillierteren Zustandsautomaten mit dem Yakindu Statecharts-Tool erstellt.

Interaktives Feedback bei der Statechart-Modellierung

In einem früheren ESE-Beitrag wurde gezeigt, wie aufgezeichnete Trace-Daten automatisiert gegen einen oder mehrere Protokoll-Zustandsautomaten validiert werden können [4]. Dies erhöht die Qualität des resultierenden Produkts, indem Fehler in der Implementierung beim Testen gezielt aufgedeckt und behoben werden können.

Besser ist es jedoch, die Fehler bereits während der Implementierung zu vermeiden. Dies wird durch die Integration von YSCT und Franca ermöglicht: Die Implementierungs-Statecharts werden hierbei während der Entwicklung ständig gegen die Protokoll-Zustandsautomaten der beteiligten Franca-Schnittstellen geprüft. Der Entwickler wird durch interaktives Feedback angeleitet.

Bild 3 in der Bildergalerie zeigt für das oben beschriebene RobotArm-Beispiel anhand eines Screenshots, welche Informationen aus den Schnittstellendefinitionen abgeleitet und wie diese für den Nutzer dargestellt werden. Der Entwickler hat gerade begonnen, den Zustandsautomat für die RobotArm-Steuerungskomponente zu bauen. Diese Komponente implementiert die Schnittstelle RobotArm mit dem Verhalten aus Bild 2.

Aus der Schnittstellendefinition werden folgende Informationen abgeleitet:

  • Im Zustand Idle wird zwar der Aufruf der Operation move behandelt (siehe Transition IdleMoving), die Behandlung der Operation grab fehlt jedoch. Dies wird durch eine Warnung dargestellt. Der Entwickler wird dadurch angeleitet, eine weitere Transition (und einen weiteren Zustand) zur Behandlung des grab-Aufrufs zu ergänzen.
  • Der Zustand Moving wird durch einen move-Aufruf erreicht. Die Antwort auf die move-Operation steht jedoch noch aus, dies wird durch eine Information dargestellt („Proposed send...“). Der Entwickler wird somit angeleitet, die move-Antwort zu implementieren.

Durch die weitere Arbeit am Zustandsautomaten werden interaktiv weitere Warnungen und Informationen generiert und durch erneute Entwickler-Aktion bearbeitet. Am Ende entsteht ein Zustandsautomat, der keine Warnungen mehr enthält.

Dies zeigt, dass die Vorgaben des Protokoll-Zustandsautomaten eingehalten sind. Bei komplexen Komponenten mit mehr als einer Schnittstelle verstärkt sich der positive Effekt, weil der Entwickler durch mehr Informationen noch besser angeleitet werden kann.

Im nächsten Schritt werden zu jeder Warnung oder Information des Tool zusätzlich Vorschläge angeboten, wie der Hinweis durch einen Mausklick direkt zu beheben bzw. umzusetzen ist (sog. Quickfixes). Der Entwickler kann damit komplette Teile des Zustandsautomaten automatisch erzeugen lassen und gleichzeitig vorhandene Warnungen beheben.

Vorteile für die Embedded-Praxis

Werkzeuge zur Modellierung von Zustandsautomaten und Codegenerierung werden allenthalben in Embedded-Projekten benutzt. In diesem Beitrag wurde daran anknüpfend gezeigt, wie die innovative Berücksichtigung von Schnittstellen-Semantik Entwickler dazu anleiten kann, dass das Verhalten der erstellten Softwarekomponenten konform zu vorgegebenen Schnittstellen ist.

Der Entwickler wird automatisch möglichst früh auf mögliche Fehler hingewiesen und dadurch entlastet. Implementierungsfehler werden frühzeitig entdeckt und behoben, somit wird die Qualität der Software erhöht. Die teure Behebung von Integrationsfehlern und Fehlern in der Serie wird soweit wie möglich vermieden. Durch die oben beschriebenen automatisierten Vorschläge des Tools wird dem Entwickler zusätzlich das Editieren des Diagramms erleichtert, was seine Arbeit insgesamt beschleunigt.

Generell ist die modellbasierte Definition von Schnittstellen gerade bei verteilten Anwendungen notwendig und sinnvoll. Durch Franca IDL können die Schnittstellen formal definiert werden und dienen dann als maschinenlesbarer „Vertrag“ für die beteiligten Parteien und Systeme.

Franca ist unter [1] für jedermann verfügbar und kann inklusive Dokumentation frei heruntergeladen und direkt eingesetzt werden. Ebenso kann Yakindu Statecharts ohne Lizenzkosten für die Implementierung von Embedded Systems eingesetzt werden. Die Integration beider Werkzeuge bringt darüberhinaus einen zusätzlichen Nutzen für Entwickler und Architekten.

Referenzen

  • [1] K. Birken: Schnittstellen voll im Griff – Modellbasierte Ansätze mit dem Open-Source-Werkzeug Franca. In: Tagungsband – Embedded Software Engineering Kongress 2012, Sindelfingen, 2012.
  • [4] K. Birken: Interfaces dynamisch beschreiben mit Franca. In: Tagungsband – Embedded Software Engineering Kongress 2013, Sindelfingen, 2013.
  • [6] T. Szabo, K. Birken: Modellbasiert im Internet of Things. In: Tagungsband – Embedded Software Engineering Kongress 2014, Sindelfingen, 2014.

* Dr. Klaus Birken ist seit 2012 als Principal Engineer bei der itemis AG beschäftigt.

* Axel Terfloth arbeitet seit 2007 bei der itemis AG und leitet dort den Bereich Forschung und Entwicklung für eingebettete Systeme.

(ID:44313794)