Smart aber clever

IoT als Herausforderung für die Softwareentwicklung

28.09.2016
Von 


Frank Pientka ist Gründungsmitglied der iSAQB und arbeitet als Multi-Cloud-Architekt. Er hat jahrzehntelange Erfahrung in der Modernisierung von Anwendungen und besitzt mehrere AWS-Zertifizierungen.
Das wirtschaftliche Potenzial des Internet der Dinge (IoT) ist groß. Doch die Auswirkungen auf die bestehende Strukturen in Industrie und Gesellschaft, aber auch die Herausforderungen für die Softwareentwicklung sind noch zu wenig bedacht.

Noch nie war eine so hohe Zahl von vernetzten Geräten verfügbar. Das Internet zählt bereits zu den größten und komplexesten, jemals von Menschen gebauten Systemen. Intelligente Geräte sind spätestens mit den Smartphones Teil unseres Lebens und übernehmen immer mehr die Steuerung und Optimierung von Prozessen.

Die neuen Möglichkeiten bringen jedoch auch neue Herausforderungen mit sich. Das Testen beschäftigt sich als eine wichtige Disziplin des Systems Engineering mit der Sicherstellung der nötigen Qualität von IoT-Produkten.

Ein wichtiger Aspekt bei IoT-Szenarien ist die Interoperabilität der Schnittstelle und Güte des dabei angebotenen oder genutzten Dienstes.
Ein wichtiger Aspekt bei IoT-Szenarien ist die Interoperabilität der Schnittstelle und Güte des dabei angebotenen oder genutzten Dienstes.
Foto: Shutterstock - Jirsak

Es geht um die Vernetzung

Im Internet der Dinge (IoT) liefern Sensoren vielfältige Informationen und fördern smarte Entscheidungen. Es erlaubt Menschen und Geräten von überall und zu jeder Zeit auf alle angeschlossene Produkte zuzugreifen und Informationen miteinander zu vernetzen. Schlaue und vernetzte Alltagsgegenstände können untereinander über das Internet zu jeder Zeit und an jedem Ort miteinander kommunizieren.

Dabei können das kleine Chips in Sensoren sein oder auch große Maschinen oder Anlagen. Ein wichtiger Aspekt ist die Interoperabilität der Schnittstelle und Güte des dabei angebotenen oder genutzten Dienstes. Eine große Schwierigkeit ist, dass aktuell nur sehr wenig branchenübergreifende Standards existieren. Meist wird auf bestehende low-level Standards, wie HTTP, Message Queue Telemetry Transport (MQTT), Constrained Application Protocol (CoAP) oder Extensible Messaging and Presence Protocol (XMPP) zurückgegriffen. Als Basis-Protokolle kommen Bluetooth Low-Energy (BLE), NFC (Near Field Communication), ZigBee oder WiFi zum Einsatz.

Um den Protokoll-Overhead zu reduzieren, scheiden typische Internet-Protokolle wie HTTP/S aus und es wird öfters auf UDP und IP direkt gesetzt. Protokolle wie TCP/IP oder selbst HTTP, haben inzwischen mehrere Jahrzehnte auf den Buckel und wurden für ganz andere Nutzungsszenarien entwickelt und sind eher Server-, als Client-orientiert. Auch eher verbindungsorientiert als nachrichtenorientiert. Mit TLS 1.3 naht ein neuer Verschlüsselungsstandard, der die heutigen Anforderungen an eine sichere Übertragung besser wiedergibt als SSL.

Die Kommunikation ist bei IoT-Geräten meistens asynchron und nicht, wie bei typischen Web-Anwendungen, synchron. Insofern sind Fortschritte bei der effizienten Nutzung der Übertragungskapazitäten durch die Nachfolgerprotokolle, wie HTTP/2 oder TCP Fast Open gerade für IoT-Geräte zu begrüßen

Durch die Heterogenität und sehr unterschiedliche Leistungsfähigkeit der verwendeten Geräte müssen oft mehrere Protokolle unterstützt werden, um auf die unterschiedlichen Anforderungen oder Gegebenheiten reagieren zu können. Oft werden auch Gateways eingesetzt, um zwischen den unterschiedlichen Protokollen und Schnittstellen zu vermitteln.

Da sich in Hardware gegossene Software ganz anders verhält als typische Web-Anwendungen, kann zwar einiges an Wissen und Werkzeugen, das dort erworben wurde, wiederverwendet werden. Anstelle eines Monoliths aus einem Guss, hat man es im neuen Umfeld mit vielen kleinen unabhängigen Diensten und Systemen zu tun. Es gilt, in Bezug auf das Internet der Dinge nicht nur ein verteiltes System im Blick zu haben, sondern mit einer Vielzahl von verteilten und untereinander sehr unterschiedlichen Systemen (Systems-of-systems) zu operieren. Deshalb sollte man sich nicht nur mit geringen, unzuverlässigen und unsicheren Übertragungskapazitäten beschäftigen, sondern auch berücksichtigen, dass die Verarbeitung fehlertolerant und möglichst energieeffizient stattfindet.