Techniken und Tools

Modellbasiert entwickeln im Internet of Things

Seite: 2/4

Firma zum Thema

Das Open-Source-Werkzeug Franca

Im Rahmen des GENIVI-Konsortiums [4] wurde mit Franca [1] eine IDL entwickelt, deren wichtigstes Entwurfsziel die Einsetzbarkeit in verschiedensten Umgebungen ist. Das GENIVI-Konsortium entwickelt eine standardisierte Plattform für Automotive/Infotainment-Systeme. Die Software für ein solches System kommt mehr und mehr von verschiedenen Zulieferern, somit ist die Entwicklung zum großen Teil auch eine Integrationsaufgabe. Um die geforderte Interoperabilität von Komponenten und Subsystemen zu gewährleisten, wurde eine Schnittstellenbeschreibungssprache und eine zugehörige Werkzeugumgebung incl. Framework entwickelt und als Open-Source Projekt Franca auch außerhalb von GENIVI verfügbar gemacht.

Abbildung 1 zeigt eine Übersicht der Funktionen, die Franca bietet. Zentrales Element ist die plattformunabhängige IDL mit einem komfortablen Editor. Franca unterstützt weiterhin die Erstellung von Generatoren und Modell-zu-Modell-Transformationen. Beide Aspekte sind detailliert in [2] beschrieben.

Bildergalerie

Bild 1: Franca bietet neben einer IDL weitere Funktionen und Vorteile.
Bild 1: Franca bietet neben einer IDL weitere Funktionen und Vorteile.
(Bild: itemis AG)

Franca unterstützt ebenfalls die Beschreibung des dynamischen Verhaltens von Schnittstellen. Dazu bietet Franca IDL die Möglichkeit, Kontrakte von Schnittstellen in Form von Protokoll-Zustandsautomaten zu spezifizieren. Dies sind Zustandsautomaten, die auf der Verbindung zwischen den beiden kommunizierenden Softwareteilen (z.B. Komponenten) angesiedelt sind und auf Kommunikationsereignisse in beiden Richtungen reagieren.

Franca IDL ist eine domänenspezifische Sprache (DSL); somit sind Schnittstellendefinitionen mit Franca IDL Textdateien, die genauso wie Quellcode behandelt werden können [5]. Die Versionsverwaltung kann mit den gewohnten Werkzeugen (z.B. git oder Subversion) gelöst werden. Dateivergleich und merge-Operationen sind wie gewohnt möglich. Zur statischen Definition von Schnittstellen bietet Franca u.a. folgende Konzepte:

  • Attribute (Datenelemente mit Observer-Mechanismus), Methoden (bidirektionale Kommunikation) und Broadcasts (server-initiierte Kommunikation)
  • primitive Datentypen und benutzerdefinierte Datentypen (Strukturen, Felder, Enumerations u.a.)

Ein wichtiger Bestandteil der Franca Open-Source-Release ist ein Editor, der die Syntax der IDL kennt und dem Entwickler eine Vielzahl von hilfreichen Funktionen anbietet. In Abbildung 2 (siehe Bildergalerie) ist der Franca-IDL-Editor mit einigen seiner Funktionen gezeigt. Während des Editierens läuft eine Validierung, die Fehler sofort anzeigt. Das Beispiel zeigt ein Franca-Interface mit den wichtigsten Bestandteilen. Im Beispiel sind Fehlermarker in den Zeilen 12 und 16 erschienen, die auf einen ungültigen Typ hinweisen. Beim Cursor in Zeile 29 wurde ein Content-Assist-Fenster aufgerufen, das alle an dieser Stelle gültigen Eingaben als Vorschlag anbietet. Weitere Funktionen sind Syntax-Coloring, Folding, Jump-to-Definition und Show-References.

Technologien für das Internet der Dinge

Das Internet der Dinge ist ein verteiltes, dynamisches System (eigentlich: System of Systems); deshalb ist die verwendete Kommunikationstechnologie ein wichtiger Aspekt zur Implementierung solcher Systeme. Für das hier beschriebene Beispiel verwenden wir das MQTT-Protokoll [6]. MQTT (kurz für: Message Queue Telemetry Transport) ist ein Nachrichten-Protokoll, das auf TCP/IP aufsetzt und ein publish/subscribe-Schema umsetzt. Das leichtgewichtige Protokoll ist für sehr beschränkte Ressourcen und unzuverlässige Verbindungen konzipiert. Es setzt verschiedene Quality-of-Service-Konfigurations-Möglichkeiten um. Die Eclipse-Foundation bietet mit dem Eclipse IoT-Projekt mehrere Open-Source-Projekte und -Tools an, die eine Implementierung von Systemen mittels MQTT unterstützen. Für unsere Beispielumsetzung verwenden wir folgende Tools:

  • Mosquitto [7]: eine Implementierung der MQTT-Serverseite, ein sog. „Message broker“
  • PAHO [8]: eine Implementierung der MQTT-Clientseite, verfügbar für mehreren Zielsprachen (z.B. C, C++, JS, Java, Lua)

Durch die Verwendung dieser Open-Source-Tools lässt sich eine Beispiel-IoT-Anwendung ohne große Kosten umsetzen.

(ID:44023335)