Techniken und Tools

Modellbasiert entwickeln im Internet of Things

Seite: 4/4

Firma zum Thema

Modellbasierte Implementierung mit Franca

In der oben beschriebenen IoT-Architektur gibt es mehrere Schnittstellen zwischen Teilsystemen, die in der Verantwortlichkeit von verschiedenen Unternehmen oder organisatorischen Einheiten liegen. Für diese Schnittstellen ist es sinnvoll, sie nicht nur über eine Freitext-Dokumentation zu definieren, sondern formal über eine modellbasierte Beschreibungssprache, also eine IDL. Franca erfüllt diese Anforderungen. Die formale Beschreibung bringt dabei folgende Vorteile:

1. Die Semantik der Schnittstelle ist klar definiert und dient dabei als Kontrakt zwischen den beteiligten Systemlieferanten.

Bildergalerie

2. Aus der formal definierten Schnittstelle kann direkt die Software für die Kommunikation zwischen den Systemen generiert werden. Dies schließt Fehler durch händische Implementierung aus und erlaubt zusätzlich die Wiederverwendung von Optimierungen, da diese nur im Generator durchgeführt werden.

3. Aus der gleichen formalen Beschreibung können Kommunikations-Stacks in verschiedenen Programmiersprachen und Kontexten generiert werden. Im Beispiel sind dies zwei MQTT-Implementierungen in Java und JS sowie die Verbindung einer HTML5-UI im Browser mit der Fachlogik-Implementierung.

4. Die formal definierte Schnittstelle kann zur Erstellung von Integrations- und Systemtests dienen. Diese können z.B. in einer Scriptsprache wie Lua oder Python erstellt und gegebenenfalls sogar generiert werden.

5. Wird die formale Beschreibung um die dynamische Sicht erweitert (also z.B. erlaubte Kommunikations-Sequenzen wie oben beschrieben), so können weitergehende Tests zur Qualitätssicherung umgesetzt werden.

In der beispielhaften IoT-Anwendung wurden die Schnittstellen zwischen webbasiertem Benutzerinterface und Fachlogik über Franca IDL definiert. Die Franca-Schnittstellendefinition für die grundlegende Bedienung der Roboterfunktionen ist in Abbildung 5 (siehe Bildergalerie) dargestellt. Das Franca-Tool enthält einen Codegenerator, der aus dieser Beschreibung die client- und server-seitigen Kommunikations-Stacks über die Standards WebSockets und WAMP automatisch generiert (Zielsprache ist JS). Damit ist für die Implementierung der Kommunikation zwischen Browser und Fachlogik-Client keine manuelle Arbeit nötig. Auf der Browser-Seite kann der HTML5-Code elegant an die generierten Proxy-Komponenten zur Kommunikation angebunden werden. Auf der Server-Seite der WebSockets (gleichzeitig Client-Seite für die MQTT-Kommunikation) werden hauptsächlich Callbacks mit Leben gefüllt, die vom Franca-Codegenerator vorbereitet wurden.

Ein ähnliches Prinzip kann für die Kommunikation über die MQTT-Strecke angewendet werden. Auch hier wird zunächst ein Franca-Interface definiert, aus dem dann der Java- und JS-seitige Client-Code für die benötigten MQTT-Topics generiert wird. Die Abbildung von Franca-Interfaces auf MQTT-Topics wird einmal grundsätzlich bei der Entwicklung des Codegenerators gelöst und kann dann für jede neue Anwendung einfach wiederverwendet werden.

Vorteile der modellbasierten Methode für den Entwickler von IoT-Anwendungen

Die modellbasierte Definition von Schnittstellen ist gerade bei stark 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. Aus den zuvor definierten Schnittstellen können Teile des Programmcodes automatisch generiert werden. Dies erlaubt zudem die Kombination von verschiedenen Technologien und Sprachen – dies ist der Normalfall bei Anwendungen für das Internet of Things. Die Integration der verschiedenen Subsysteme fällt dadurch erheblich leichter, weil die Kompatibilität der Teilsysteme durch die formale Schnittstellendefinition sichergestellt wird.

Franca ist unter [1] für jedermann verfügbar und kann inclusive Dokumentation frei heruntergeladen und direkt eingesetzt werden. Auch der beschriebene Generator für Websocket/WAMP-Kommunikation ist in der Distribution enthalten. Die Technologien für die Umsetzung einer MQTT-Kommunikation sind unter den angegebenen Links ebenfalls frei verfügbar.

Referenzen

[1] http://code.google.com/a/eclipselabs.org/p/franca/

[2] K. Birken: Schnittstellen voll im Griff – Modellbasierte Ansätze mit dem Open-Source-Werkzeug Franca. In: Tagungsband – Embedded Software Engineering Kongress 2012, Sindelfingen, 2012.

[3] K. Birken: Interfaces dynamisch beschreiben mit Franca. In: Tagungsband – Embedded Software Engineering Kongress 2013, Sindelfingen, 2013.

[4] http://www.genivi.org

[5] K. Birken: Domänenspezifisch modellieren, nicht nur zur Codegenerierung. In: Tagungsband – Embedded Software Engineering Kongress 2010, Sindelfingen, 2010.

[6] http://mqtt.org

[7] https://projects.eclipse.org/projects/technology.mosquitto

[8] https://www.eclipse.org/paho/

[9] WebSockets-Standard RFC 6455, http://tools.ietf.org/html/rfc6455

* Tamas Szabo arbeitet als Software-Ingenieur bei der itemis AG mit dem Schwerpunkt auf modellbasierten Methoden und Tool-Entwicklung.

* Dr. Klaus Birken ist als Berater und Teamleiter bei der itemis AG tätig.

(ID:44023335)