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.

Firma 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.

(ID:44099138)