Johan Kraft, PhD, CEO und Gründer von Percepio
1. 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 5 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.
Man sollte deshalb sicherstellen, 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 Benachrichtigungen 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, dass 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 einer 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.
Percepio® DevAlert® vergleicht jede Warnmeldung mit vorausgegangen 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.
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.
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.