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.
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.
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.
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.
Delivering excellence in IoT. Wir sind ein IoT Solution Provider für Smart Products, Connected Vehicles, Smart City, Smart Energy und Smart Production.