Die Dos und Don’ts bei der IoT-Softwareentwicklung

Die IoT-Anbindung von Maschinen, Sensoren und Aktoren bietet etwa in der Industrie unzählige Möglichkeiten, stellt aber neue Herausforderungen an die Entwicklung. Hier gilt es, sich bestehende Herausforderungen und Hürden bei der IoT-Softwareentwicklung vorab klar zu machen, um Cyberattacken und andere Fehlerquellen zu vermeiden.
IoT-Softwareentwicklung

IoT-Softwareentwicklung ≠ Klassische Softwareentwicklung

Das Internet of Things hat viele Gesichter: Geräte, Maschinen, Fahrzeuge, Sensoren, Aktoren und selbst RFID-Chips sind Teil des IoT. Die Programmierung der embedded („eingebetteten“) Software stellt sich aber oft schwieriger dar als die herkömmliche Softwareentwicklung und ist auch mitunter fehleranfälliger, weil nur sehr wenig Speicher zur Verfügung steht, weil der Aufwand für Updates bei einer Vielzahl von globalen Geräten ungleich höher ist und weil mitunter am wichtigsten Faktor, der Sicherheit, gespart wird. Zum Teil fehlt es auch bei den Entwicklern an den notwendigen Kompetenzen, zumal IoT immer mehr Kenntnisse in den verschiedenen Disziplinen wie Internetprotokolle, Datenbanken, Cloud Computing und mobile Applikationen vereinen muss.

Das zeigt, wie komplex die IoT-Softwareentwicklung ist. IT-Verantwortliche und IoT-Softwareentwickler sollten entsprechend vorbereitet sein. Mit den folgenden Dos and Don’ts geben wir Ratschläge aus der Praxis, was bei der Entwicklung der embedded Software zu beachten und tunlichst zu unterlassen ist.

Die Dos

Sicherheit geht vor: Im ersten Halbjahr 2019 gab es mit 105 Millionen Fällen neunmal so viele Cyberattacken auf IoT Devices wie im Vergleichszeitraum des Vorjahres, so die Zahlen der Honeypot-Analyse des IT-Security-Spezialisten Kaspersky. Umso wichtiger ist daher eine End-to-End- oder durchgehende Verschlüsselung vom Sensor bis zur Cloud und eine sichere Geräteauthentifizierung, z. B. über Gerätezertifikate.

Automatisiertes Testing: Fortwährende automatisierte Tests sollten Teil der Budgetplanung sein und sind wichtig, um die Funktionalität der Software über den gesamten Lebenszyklus des IoT Device sicherzustellen.

Continuous Integration: Durch das fortlaufende Zusammenfügen und Testen von Komponenten lässt sich die Softwarequalität deutlich steigern. Zugleich ist Continuous Integration die Basis für die automatisierte Bereitstellung (Deployment) der Software und möglichst geringe Ausfallzeiten, weil Integrationsprobleme frühzeitig erkannt werden.

Standards: Unternehmen sollten bei der IoT-Softwareentwicklung auf weit verbreitete Protokolle und Standards wie beispielsweise MQTT oder OPC UA setzen, um Zukunftssicherheit und kontinuierliche Updates zu gewährleisten und mögliche Vendor-Lock-Ins zu vermeiden. Auch der branchenweite Trend geht klar in Richtung standardisierter Protokolle.

Ausreichende Budgetierung: IoT-Projekte in der Industrie und in anderen vertikalen Märkten fallen nicht vom Himmel. Bei der Softwareentwicklung ist unter anderem auch der Aufwand für Korrekturen, Anpassungen und für die späteren Updates sowie für Tests „einzupreisen“. Deshalb: Lieber etwas mehr Budget einplanen, da IoT-Software die Geräte im Feld über lange Zeiträume unterstützen muss. Dafür stellt sich dann auch der Mehrwert eines IoT-Projekts schnell ein.

Die Don'ts

Proprietäre Protokolle: Herstellerspezifische Protokolle sind bei IoT-Projekten tunlichst zu vermeiden. Stattdessen sollten Entwickler auf offene Standards setzen und so die Interoperabilität und Skalierbarkeit der IoT-Infrastruktur sicherstellen.

Nicht eingeplante Sicherheitsanpassungen durch Patches können sich später rächen, weil es dadurch schwierig wird, im Nachhinein Sicherheitslücken zu schließen. Die Geräte müssen über einen sicheren Updatemechanismus verfügen.

Die Testautomatisierung mit vorhandenen Geräten erweist sich oft als schwierig, weil der Zugang meist durch Firewalls versperrt ist. Besser ist daher der Test in Simulationsumgebungen.

Die Fehlerdiagnose über klassische Logs oder Protokolldateien wird in der IoT-Welt dadurch erschwert, dass es sich in der Regel um eine Vielzahl von Devices handelt und oft auch ein Gateway dazwischengeschaltet ist. Laut Dev-Insider müssen Logs daher gezielt zentral verfügbar gemacht werden, zumal auf Seiten der Geräte mitunter weniger Speicherplatz vorhanden ist. Eine mögliche Lösung des Problems ist zum Beispiel eine zentrale Log-Datenbank (oder Syslog-ng).

Verlieren in unnötigen Features: Programmierer neigen dazu, sich manchmal zu sehr in Feature-Reichtum zu verlieren, statt sich auf das Wesentliche zu konzentrieren. Hier gilt: Less is more. Wichtiger als eine große Vielfalt an Features ist die User Experience.

Fazit

Wie die hier aufgeführten Dos und Don’ts zeigen, gibt es mitunter gravierende Unterschiede zwischen der klassischen Softwareentwicklung und der für IoT Devices. In beiden Fällen ist Sicherheit allerdings das A und O. Die Benutzerfreundlichkeit wird oft als zweitrangig behandelt, sollte aber ebenfalls ganz oben stehen. Wichtig sind auch kontinuierliche automatische Tests, am besten in simulierten Umgebungen, statt an den Geräten selbst, weil sich so Fehlerquellen schnell ausschließen lassen und zugleich die laufende Produktion dadurch nicht behindert wird.

Für Sie empfohlen

Image
2019/10/16
News

Schlüsseltechnologie Edge Computing

Was bedeutet Edge Computing und wie funktioniert das Prinzip?
Image
2019/06/06
News

So finden Sie die richtige IoT-Plattform

Wir zeigen, welche fünf Kriterien bei der Auswahl Ihrer IoT-Plattform entscheidend sind und warum.
Image
2018/11/30
Statement

IoT-Plattformen beschleunigen die Produktion

Offene Standards und Out-of-the-Box-Lösungen können die Time-to-Market erheblich verkürzen.