Suchen

Wie das IoT die Embedded-Softwareentwicklung verändert

Autor / Redakteur: Prof. Dr. Dr.-Ing. Matthias König* / Martina Hafner

Bei IoT-Anwendungen spielt die Vernetzung und die Kommunikation mit dem “Thing” eine wesentliche Rolle, beispielsweise werden Nutzer einen webbasierten Zugriff oder eine mobile Applikation einfordern. Der Einsatz von SDKs mit mächtigen APIs wird zunehmend Einfluss auf die Entwicklung im Bereich IoT nehmen.

Firmen zum Thema

Die Kompetenzanforderungen an Embedded-Entwickler sind vielfältig. Mit dem IoT kommen zukünftig Kenntnisse aus den Bereichen Internetprotokolle, Datenbanken, Cloud Computing, und mobile Applikationen hinzu.
Die Kompetenzanforderungen an Embedded-Entwickler sind vielfältig. Mit dem IoT kommen zukünftig Kenntnisse aus den Bereichen Internetprotokolle, Datenbanken, Cloud Computing, und mobile Applikationen hinzu.
(Bild: ClipDealer)

Ferner wird die zukünftige Entwicklergeneration geprägt durch die Vorteile des Einsatzes von oft offenen SDKs und APIs mit umfangreicher Dokumentation. In diesem Beitrag findet eine Bestandsaufnahme aktueller Strömungen statt, die die Softwareentwicklung für IoT beeinflussen. Das sich ergebene Spannungsfeld zwischen derzeitigen und zukünftigen “idealen” Entwicklerkompetenzen wird aufgezeigt.

Das Internet of Things (IoT) kann am einfachsten als Netzwerk (Internet) von miteinander kommunizierenden eingebetteten Systemen mit Sensoren/Aktoren (Things) betrachtet werden. Häufig wird der Begriff Cyber-physisches-System synonym für IoT verwendet.

Schätzungen sagen einen stark wachsenden Markt für IoT voraus [1], deren Anwendungen beispielsweise von intelligenten Gartengeräten über steuerbare Lichtsysteme bis tragbaren Fitness-Trackern reichen. Mit den Geräten verwoben sind üblicherweise Cloud-basierte Anwendungen zur Datenspeicherung und -analyse und oftmals zugehörige mobile Applikationen.

IoT-Trends und deren Analyse

Der größte Treiber des IoT ist das prognostizierte wirtschaftliche Marktpotenzial. Dieses Potenzial motiviert eine Vielzahl an Aktivitäten von großen und kleinen Unternehmen. Es gibt mehrere Bestrebungen zur Standardisierung im IoT-Bereich, welche von verschiedenen Industriekonsortien oder Organisationen geführt werden. Alle vereint, dass sie an der IoT-Wertschöpfungskette partizipieren möchten. Die Wertschöpfungskette kann dabei entsprechend den Schichten von IoT-Architekturmodellen dargestellt werden (s.u.).

Ein weiterer Treiber des IoT ist die voranschreitende Weiterentwicklung im technischen Bereich (kleinere, effizientere Multicore-Mikrocontroller). Ferner beeinflusst der Erfolg der Smartphones die Nachfrage nach mit diesen zu verbindenden Geräten, die ähnlich wie Smartphones in ihrer Funktion und Bedienbarkeit handhabbar sein sollen.

Die Maker-Bewegung und das Crowd-Funding haben zusätzlichen Einfluss auf die IoT-Entwicklung. Die Maker-Bewegung und die Verfügbarkeit von Open Source bzw. Open Hardware haben dazu geführt, dass man ohne tiefergehende technische Expertise eigene IoT-Ideen technisch umsetzen kann. Durch Crowd-Funding lassen sich Einstiegshürden für Start-ups zur Umsetzung von IoT-Ideen überwinden.

Beispielsweise finden sich auf Webseiten wie kickstarter.com IoT-Projekte, deren Prototypen zuerst mit einer Maker-Technologie umgesetzt und dann bis zur Serienreife entwickelt wurden.

Im Kontext der Entwicklung von eingebetteten Systemen, zeigt eine von UBM Tech 2014 durchgeführte Marktstudie u.a. eine Steigerung der Anzahl von Embedded-Systems-Projekten für IoT, einen Trend zum Einsatz von Open-Source-Betriebssystemen (insbesondere Android, FreeRTOS), der Nutzung von u.a. Software-APIs als Informationsquelle, und der Wichtigkeit von IDEs und Softwarebibliotheken als Tools [2].

Die Bedeutung der Programmierschnittstellen

Die meisten der IoT-Architekturmodelle sind mehrschichtig mit einer groben Unterteilung mindestens in Geräte-, Netzwerk- und Anwendungsschicht aufgebaut [1,3]. Die mit der Konnektivität der Systeme einhergehende Komplexität wird durch Architekturmodelle und deren Abstraktion einfacher beherrschbar.

Zur Umsetzung einer mehrschichtigen Architektur helfen aus Entwicklersicht Applications Programming Interfaces (APIs) mit guter Dokumentation und vielen Beispielen. Idealerweise umfasst eine API einen breiten, durch Kapselung und Abstraktion einfach zu programmierenden Funktionsumfang. Solche APIs sind daher „mächtige“ Werkzeuge zur Umsetzung einer vollständigen IoT-Anwendung und erlauben eine schnelle und effiziente Entwicklung mit guter Portabilität.

Wünschenswert sind für Entwickler, dass der Funktionsumfang möglichst die Breite des IoT-Spektrums abdeckt (eingebettetes System, Konnektivität, Cloud Computing, mobile App...). Idealerweise ist eine API „geprüft“ hinsichtlich Anforderungen von Security und Safety, die sich u.a aus der Konnektivität bei IoT ergeben. Quelloffene APIs können hier vorteilhaft sein.

Die Nutzung einer API beginnt für IoT auf dem Gerät/Thing. Dies steht im Einklang mit den oben genannten Trends. So weisen offene Betriebssysteme üblicherweise genauso wie Prototyping-Plattformen entsprechend umfangreiche APIs auf.

Einige Beispiele sollen die durchgehende Verwendung von APIs exemplarisch aufzeigen; API-zentrierte Frameworks, die von Organisationen und Unternehmen offensichtlich als zielführend angesehen werden, sind: AllJoyn der AllSeenAlliance [4], IoTivity des Open Interconnect Consortium [5], Xively von LogMeIn Inc. [6], Cumulocity von Cumulocity [7]... Diese IoT-Frameworks bedienen sich in der Regel auf der Geräteebene an fremden APIs für Hardwareabstraktion. Diese APIs auf Geräteebene gehen beispielsweise von Arduino [8] oder mbed [9] bis zu Betriebssystemen wie FreeRTOS [10] oder Android [11].

Setzt man die obigen Ausführungen zueinander in Beziehung, lässt sich generell die These ableiten, dass SDKs mit mächtigen APIs die Softwareentwicklung für eingebettete Systeme mit IoT-Anwendungen ähnlich vereinfachen werden, wie es seinerzeit die Verfügbarkeit von entsprechenden APIs für die Entwicklung von Smartphone-Anwendungen getan hat. Dieser These gerecht werden auch neue Kurskonzepte in der universitären Lehre, in denen die Einwirkung der Softwarekonzepte für mobile Apps bei der Entwicklung von Embedded Systems berücksichtigt wird [12].

Generell kann davon ausgegangen werden, dass insbesondere die zukünftige Entwicklergeneration, z.B. Studierende der Informatik, Erfahrung bei der Entwicklung mit komfortablen APIs für mobile Applikationen haben. Diese Erfahrung führt zu einer Erwartungshaltung an die Entwicklung in anderen Gebieten, wie eingebettete Systeme und IoT.

Softwareentwicklung für IoT: Ein breites Spektrum an technischem Fachwissen

Die gewünschten Kompetenzen eines Entwicklers für eingebettete Systeme sind vielfältig. Sie umfassen neben generellen Kenntnissen des Softwareengineering u.a. speziellen Sachverstand der Gebiete Rechnerarchitektur (insb. Mikrocontroller), Programmiersprachen (z.B. Assembler, C, C++, Matlab), Betriebssysteme (insb. RTOS), Modellierung (UML, SysML) bzw. MDD, Safety und Security, Normen (z.B. IEC 61508, ISO 26262). Darüber hinaus wird Domänenwissen der Anwendung und wirtschaftliches Denken verlangt.

Für den Bereich IoT werden zu den geforderten Fähigkeiten gemäß den Architekturmodellen zukünftig Kenntnisse aus den Bereichen Internetprotokolle (z.B. REST, MQTT), Datenbanken, Cloud Computing, mobile Applikationen hinzukommen, um einen ganzheitlichen Ansatz der Entwicklung zu gewährleisten. Auch bei Projekten mit größeren Teams und damit verbundener Aufgabenteilung ist es erforderlich, dass alle Bereiche jedem Teammitglied mindestens bekannt sind.

Die zukünftige Entwicklergeneration sammelt Erfahrungen mit IoT-APIs. Das wird sich positiv auf die Bewältigung von IoT-Projekten auswirken. Durch die mit APIs verbundenen höheren Abstraktionsschichten wird ein größeres Spektrum an notwendigen Kenntnissen handhabbar und eine effiziente und zügige IoT-Entwicklung ermöglicht.

Allerdings bestehen Risiken, die sich aufgrund einer fehlenden Auseinandersetzung mit den Abstraktionsschichten ergeben können. Beispielsweise könnte Verständnis von Low-Level-Funktionsweisen verloren gehen, die u.a. für sicherheitsrelevante Einschätzungen wichtig sind.

Es wird für IoT-Entwickler notwendig sein, sich mit höheren Abstraktionsebenen und Kenntnissen außerhalb der üblichen Embedded-Systems-Entwicklung zu beschäftigen. Abstraktion mittels Modellen (UML/SysML) und High-Level-Programmierung werden dafür unumgänglich sein.

Bei IoT-Plattformen werden mächtige, gut dokumentierte, APIs mit Beispielen gegenüber anderen Ansätzen im Vorteil sein.

Die Qualität von SDKs wird an dem Komfort von SDKs für mobile Applikationen gemessen werden. Ebenfalls werden Anbieter von IoT-Systemen sich an Entwicklungszyklen orientieren und messen lassen, wie man sie eher für mobile Applikationen kennt.

Ferner ist zu erwarten, dass sich eine offene API bei starker Akzeptanz durch die Entwickler früher als ein Quasi-Standard durchsetzen wird als ein von einem Konsortium verabschiedeter Standard. Somit darf man gespannt sein, wie sich die Vorstöße (Brillo [13] und HomeKit [14]) in Richtung IoT der beiden derzeit führenden Anbieter von mobilen Betriebssystemen entwickeln werden.

Fazit: Die Softwareentwicklung für IoT umfasst ein breites Spektrum an technischem Fachwissen. Offene, mächtige APIs erlauben durch einen höheren Abstraktionslevel effiziente und zügige IoT-Entwicklungen. Embedded-Systems-Entwickler sollten sich mit diesen APIs beschäftigen, bevor sie ein IoT-Projekt starten.

Literatur- und Quellenverzeichnis

(alle Internetquellen Stand 28.09.15)

[1] A. Al-Fuqaha, M. Guizani, M. Mohammadi, M. Aledhari, M. Ayyash, Internet of things: a survey on enabling technologies, protocols and applications, IEEE Communications Surveys & Tutorials, Vol. PP, No. 99, 2015

[2] UBM Tech, 2014 Embedded Market Study: Then, Now: What’s Next?, 2014

[3] http://www.iot-a.eu

[4] https://allseenalliance.org/developers

[5] https://www.iotivity.org

[6] http://xively.com

[7] https://www.cumulocity.com

[8] https://www.arduino.cc

[9] https://www.mbed.com

[10] http://www.freertos.org

[11] http://developer.android.com

[12] G. Jeong, D. Kang, S. Lim, N. Dutt, An advanced course design for mobile embedded software through Android programming, Proc. Workshop on Embedded and Cyber-Physical Systems Education, Tampere, Finland 2013

[13] https://developers.google.com/brillo

[14] https://developer.apple.com/homekit


* Matthias König ist Professor für Embedded Software Engineering am Campus Minden der Fachhochschule Bielefeld. Seine Forschungsinteressen sind in Computer-Vision-Anwendungen auf eingebetteten Plattformen sowie deren effiziente Programmierung.

(ID:44099138)