Gießkanne

Bild 1: Ausgelieferte IoT-Produkte sind zwar selten von Fehlern durchlöchert, dennoch ist die Chance groß, dass unerwartete Software-Bugs auftreten. Am besten stellt man sich bei der Entwicklung von vornherein darauf ein und entwickelt Strategien für den Umgang mit solchen Software-Fehlern. (Bild: AdobeStock/1454565122)

Der wirkliche Härtetest für IoT-Geräte kommt erst nach der Auslieferung, wenn sie von Tausenden von Anwendern auf oftmals unerwartete und vorher nicht getestete Weise genutzt werden. Der Autor gibt folgende fünf Tipps wie diese Fehler im Nachhinein behoben werden können.

  1. Sorgfältige Vorbereitung ist die halbe Miete
  2. Automatische Benachrichtigungen ermöglichen schnelles Handeln
  3. Wichtige Performance-Kennzahlen stets im Blick
  4. Visuelle Trace-Diagnose für schnellere Problembehebung
  5. Schnelle Over-the-Air-Updates (OTA) zur Schadensbegrenzung

1. Eine sorgfältige Vorbereitung ist die halbe Miete

Am besten geht man von vornherein davon aus, dass die ausgelieferten Produkte Fehler enthalten, und bereitet sich auf den Umgang damit vor. Denn selbst wenn ein Produkt noch so gründlich getestet und keine weiteren Fehler mehr gefunden wurden, ist die Wahrscheinlichkeit groß, dass immer noch eine beträchtliche Anzahl von Bugs enthalten ist. Akademische Studien haben ergeben, dass in tausend Codezeilen eines Produkts 50 bis 100 Softwarefehler enthalten sind, von denen etwa fünf Prozent vor dem Praxiseinsatz nicht gefunden und beseitigt werden. Einige dieser Bugs sind zwar harmlos, aber rund 20 Prozent sind durchaus als gravierend einzustufen. Hat ein Projekt beispielsweise 50.000 Codezeilen, gelangen 25 bis 50 schwerwiegende Fehler bis ins Endprodukt und damit zum Kunden.

Bei diesen Bugs handelt es sich oftmals um schwierig auszumachende Fehler, die nur unter ganz bestimmten Umständen zutage treten – schließlich wären sie sonst schon während der Tests aufgedeckt worden. Auch wenn beim Kunden-Support Beschwerden eingehen und Geräte zurückgeliefert werden, ist nicht immer klar, ob das Problem auf die Hardware, die Software oder falsche Bedienung seitens des Benutzers zurückzuführen ist. Hinzu kommt, dass Anwender häufig nicht in der Lage sind, zielführende Angaben zu dem von ihnen vorgefundenen Problem zu machen. Entwickler können sich deshalb beim Reproduzieren des Problems nur auf ganze wenige Informationen stützen.

Rauchmelder
Bei frühzeitiger Warnmeldung lassen sich Produktmängel oft schon beheben, bevor der Kunde etwas von dem Problem merkt. (Bild: Percepio)

Es sollte deshalb sichergestellt werden, dass die Embedded-Software bei etwaigen Laufzeitfehlern oder Warnungen geeignete Diagnoseinformationen bereitstellt. Erreichen lässt sich dies, indem Diagnosemeldungen über die Software aufgezeichnet und in einen zyklischen RAM-Puffer geladen werden. Sobald im Code ein Problem auftaucht, können die neuesten Diagnosedaten in einen nichtflüchtigen Speicher übertragen werden, damit spezifische Informationen über das Problem und die ihm vorausgehenden Ereignisse zur Verfügung stehen. Diese Angaben machen es den Entwicklern erheblich leichter, die Grundursache des jeweiligen Problems zu verstehen und es nachhaltig zu beheben.

2. Automatische Benachrichtigung ermöglichen schnelles Handeln

Das Abspeichern von Diagnosedaten im Gerät ist bereits eine gute Maßnahme, aber man ist dann immer noch darauf angewiesen, dass diese Informationen vom Tester oder vom Endkunden zur Verfügung gestellt werden. Anders ist es, wenn eine Überwachungslösung wie Percepio DevAlert automatisch Warnmeldungen und Diagnosedaten von den Geräten überträgt, sodass die Entwickler schon Sekunden nach dem ersten Auftreten eines Problems mit dessen Analyse beginnen können.

Während der Systemtests können die Entwickler umgehend über Fehler informiert und mit detaillierten Diagnoseinformationen versorgt werden, ohne dass der Tester die genauen Umstände mitteilen muss. Dies kann die Problemlösung besonders dann entscheidend beschleunigen, wenn von den Symptomen nicht direkt auf das Problem geschlossen werden kann. Dieses Konzept bewährt sich auch bei Systemtests an allgemeiner Embedded-Software ohne Cloud-Anbindung. Die Alerts und Diagnosedaten lassen sich an einen vor Ort integrierten Computer hochladen, der die Daten dann an einen zentralen Überwachungsservice weiterleitet.

Eine sichere IoT-Anbindung gestattet den Empfang von Diagnosemeldungen auch aus dem Feld. Hierdurch werden Rückmeldungen aus dem Praxiseinsatz der IoT-Geräte verfügbar, sodass eine zügige, fortlaufende Verbesserung der Gerätesoftware möglich ist. Das Entwicklerteam weiß dann binnen Sekunden nach dem ersten Vorkommnis über etwaige Probleme Bescheid, anstatt Wochen oder Monate warten zu müssen, bevor Produktmängel von betroffenen Anwendern gemeldet werden. Je schneller Hersteller beziehungsweise Entwickler über Probleme im Feld informiert werden und je schneller sie die auftretenden Defekte beheben, desto weniger Kunden werden mit diesen Fehlern konfrontiert. Wenn es gelingt, die Qualität und Zuverlässigkeit eines IoT-Geräts auf diese Weise zu verbessern, stellen sich gleich mehrere vorteilhafte Konsequenzen ein: Die Kundenzufriedenheit wächst, die jeweiligen Produkte schneiden bei Tests besser ab, die Kosten für den Support sinken und die Zahl der Reklamationen geht zurück.

3. Wichtige Performance-Kennzahlen stets im Blick

Rückmeldungen über das Verhalten und die Funktionstüchtigkeit von IoT-Geräten im realen Einsatz gestatten die Verbesserung wichtiger Performance-Kennzahlen und der allgemeinen Nutzererfahrung, sodass ein erstklassiges Produkt angeboten werden kann, welches die Konkurrenz hinter sich lässt. Die meisten Entwickler wollen über Laufzeitfehler und Warnungen informiert werden, die durch Software-Bugs oder Hardware-Fehler entstehen und zu unerwarteten Rückgabewerten aus dem Treibercode führen können. Manch einer wünscht sich auch eine proaktive Warnung, wenn sich die Stack-Auslastung eines Task einem Grenzwert nähert. Die Einsatzmöglichkeiten automatischer Warnmeldungen sind jedoch deutlich vielfältiger. So können Entwickler ganz individuelle Alarme definieren, die jeden von der Software detektierbaren Zustand erfassen können. Beispielsweise, um die Hochlaufzeit oder die Batterielebensdauer zu erfassen und einen Alarm auslösen zu lassen, sobald hier ein bestimmtes Limit überschritten wird. Es lässt sich auf diese Weise sogar feststellen, welche Features von den Kunden genutzt werden, um fundierte Entscheidungen über künftige Verbesserungen des Produkts zu treffen.

Dashboard
Der Blick aufs Dashboard zeigt, wie gut ein System läuft. (Bild: Percepio)

Percepio DevAlert vergleicht jede Warnmeldung mit vorausgegangenen Alarmen aus dem gesamten Gerätebestand und ordnet sie in bestimmte Problemgruppen ein, die auf einem Dashboard angezeigt werden. Dies verschafft dem Entwickler einen klaren Überblick und vermeidet die wiederholte Benachrichtigung über ein und dasselbe Problem. Alle Wiederholungen bereits erkannter Auffälligkeiten werden gezählt und auf dem Dashboard angezeigt, sodass die Probleme nach Wichtigkeit geordnet werden können.

4. Visuelle Trace-Diagnose für schnellere Problembehebung

Die Diagnosedaten können ein detailliertes Software-Trace enthalten, aus dem die genaue Abfolge von Software-Threads, API-Aufrufen, Zustandsänderungen und Interrupts hervorgeht. Die Auswertung solcher Informationen wird durch die visuelle Trace-Diagnose entscheidend vereinfacht, denn diese stellt die Ereignisse entlang einer Zeitachse dar und liefert mehrere Ansichten aus unterschiedlichen Perspektiven, damit jegliche Anomalien klar zu sehen sind.

Software-Traces lassen detailliert erkennen, was im System passiert und erleichtern dadurch die Fehlersuche.
Software-Traces lassen detailliert erkennen, was im System passiert und erleichtern dadurch die Fehlersuche. (Bild: Percepio)

Die von DevAlert kommenden Alarme enthalten Software-Traces, die vom Dashboard aus unmittelbar zugänglich sind und sich mit Percepio Tracealyzer einfach analysieren lassen. Dieses leistungsstarke Tool für die visuelle Trace-Diagnose ist mit DevAlert integriert und hält mehr als 30 interaktive, untereinander verknüpfte Ansichten bereit.

Moderne IoT-Geräte
Moderne IoT-Geräte sind immer verbunden. Diesen Vorteil gilt es zu nutzen. (Bild: Percepio)

Digitaler Thementag IoT-Applikation am 23.02.2022

Digitaler Thementag IoT-Applikation am 23.02.2022

Welche Komponenten sind für das Internet of Things (IoT) erforderlich, welche Sensoren, Aktuatoren, Connectivity/Netzwerkanbindung, Gateways, Protokolle, Software, Security-Lösungen, etc.? Wie werden die Daten gesammelt, gesendet und ausgewertet? Welche Benutzer will ich mit dem System erreichen? Wie mache ich das Produkt letztlich auch zu einem geschäftlichen Erfolg?

Genau hier setzt der kostenlose Thementag IoT von all-electronics.de an, denn an diesem Tag geht es nicht nur um irgendein Einzelelement, sondern um die Auswahl für und das Zusammenwirken im Zielsystem und darum, was bei der Auswahl der passenden Komponenten, Technologien und Software wirklich wichtig ist - inklusive Teilnahmezertifikat.

Weitere Informationen und die Anmeldung finden Sie hier.

5. Schnelle Over-the-Air-Updates (OTA) zur Schadensbegrenzung

Softwareprobleme an bereits im Einsatz befindlichen IoT-Geräten betreffen meist nicht alle Anwender gleichzeitig, denn sonst wären diese Bugs schon während der Tests gefunden worden. Das fortlaufende Monitoring von IoT-Geräten stellt sicher, dass Entwickler sofort beim ersten Auftreten eines verbleibenden Fehlers informiert werden – noch bevor der Großteil der Nutzer diesen überhaupt bemerkt hat. Je schneller dann ein Update installiert werden kann, umso weniger Endkunden sind letztendlich betroffen. Dank der Überwachung von IoT-Geräten lassen sich cloudbasierte OTA-Updates im Interesse einer zügigen, fortlaufenden Verbesserung der bereits ausgelieferten IoT-Geräte nutzen.

Autor Johan Kraft

Johan Kraft, PhD, ist CEO und Gründer von Percepio

Sie möchten gerne weiterlesen?

Unternehmen

Percepio AB

Stansargränd 4
721 30 Västerås
Sweden