IT & Business. Die Suche nach Fehlern im Programmcode ist eine der aufwändigsten und wichtigsten Arbeiten in der IT. Die TU Graz bringt ein neues Hilfsmittel auf Machine Learning-Basis: Sozusagen Bug-Jagd per KI.
Vor zwei Wochen stand nach einem fehlerhaften Update der Sicherheitssoftware von US-Unternehmen CrowdStrike die halbe IT-Welt still – zumindest jener Teil, der das Microsoft-Betriebssystem Windows im Bereich wichtiger Infrastruktur einsetzt. Millionen von Rechnern starteten nicht mehr, Flugzeuge blieben am Boden, manche Krankenhäuser mussten sogar Operationen verschieben. Solche Vorfälle zeigen die Anfälligkeit der modernen Welt für Software-Bugs. Die Suche nach Fehlern im Programmcode ist aufwändig und teuer – sollte aber möglichst lückenlos erfolgen, kann ein Versagen doch unabsehbare Konsequenzen haben.
Die TU Graz hat nun ein neues Tool vorgestellt, dass die Fehlersuche bei der Software-Entwicklung beschleunigen soll. Dabei geht es darum, nach dem Auftreten eines Fehlers den fehlerhaften Bereich möglichst genau eingrenzen zu können, was insbesondere bei sehr umfangreichem Programmcode für eine deutliche Zeitersparnis sorgen soll. Zur raschen Verarbeitung von Fehlermeldungen setzt die TU Graz dabei auf NLP (Natural language processing), ein Anwendungsgebiet der KI.
Die Aufgabe
Moderne Software-Anwendungen bestehen meist aus zahlreichen Dateien und mehreren Millionen Codezeilen. Aufgrund dieser Menge gestaltet sich das Finden und Beheben von Fehlern, das sogenannte Debugging, als schwierig. In vielen Softwarefirmen suchen Entwickler:innen derzeit noch manuell nach Fehlern, was einen großen Teil ihrer Arbeitszeit beansprucht – Studien geben hier zwischen 30 und 90 Prozent als Anteil an der gesamten Entwicklungszeit an, so die TU Graz in einer Aussendung.
Birgit Hofer und Thomas Hirsch vom Institut für Softwaretechnologie der TU Graz haben auf Basis bestehender Natural-Language-Processing-Methoden und vorhandener Metriken eine Lösung erarbeitet, die das Finden der fehlerhaften Codestellen und damit das Debugging stark beschleunigen soll.
Fehlersuche kostet am meisten Zeit
„Als ersten Schritt haben wir bei bei Befragungen unter Entwickler:innen herausgearbeitet, was der größte Zeitfresser beim Debugging ist. Dabei hat sich gezeigt, dass die eigentliche Fehlerbehebung gar nicht das große Problem ist, sondern die Programmierer:innen hauptsächlich bei der Lokalisierung feststecken, also der Eingrenzung der Suche auf den richtigen Bereich im Programmcode“, erklärt Birgit Hofer.
Auf Basis dieser Erkenntnis machten sich die Forschenden daran, für dieses Problem eine Lösung zu finden, die auch auf Anwendungen mit viel Code skalierbar ist. So gibt es zwar gut funktionierende, modellbasierte Ansätze, bei denen ein Programm in eine logische Darstellung (bezeichnet als Modell) umgewandelt wird, doch dies funktioniert nur für kleine Programme. Das liegt daran, dass mit der Zunahme an Code der Rechenaufwand exponentiell ansteigt.
Der von Birgit Hofer und Thomas Hirsch aufgegriffene Ansatz bilde bestimmte Software-Eigenschaften in Zahlen ab – beispielsweise die Lesbarkeit oder Komplexität von Code – und sei auch für große Codemengen anwendbar, da der Rechenaufwand nur linear zunimmt.
Abgleich von Fehlerbeschreibung und Code
Ausgangspunkt bei der Fehlersuche ist der Bug Report, für den Tester:innen oder Anwender:innen ein Formular ausfüllen, in dem sie den Fehler beschreiben und Angaben zur Softwareversion, ihrem Betriebssystem, ihren Arbeitsschritten vor dem Fehler und andere relevante Informationen eintragen.
Auf Basis dieses Bug Reports analysiert die Kombination aus Natural Language Processing und Metriken den gesamten Code hinsichtlich Klassen sowie der Namen für Variablen, Dateien, Methoden oder Funktionen und der Aufrufe von Methoden sowie Funktionen. Dabei identifiziert die Anwendung Code-Abschnitte, die am besten der Fehlerbeschreibung entsprechen. Die Entwickler:innen bekommen als Ergebnis eine Liste mit fünf bis zehn Dateien, die nach der Wahrscheinlichkeit gereiht sind, dass sie für den beobachteten Fehler verantwortlich sein könnten. Zusätzlich erhalten die Entwickler:innen noch die Information, um welche Art von Fehler es sich am ehesten handelt. Anhand dieser Daten kann der Fehler schneller aufgespürt und behoben werden.
Mehr Zeit für neue Features
„Die Arbeitszeit von Software-Entwickler:innen ist teuer, dennoch verbringen sie oft mehr dieser teuren Zeit damit, Fehler zu suchen und zu beheben, als neue Features zu entwickeln“, sagt Birgit Hofer. „Da es bereits einige Ansätze gibt, um diesen Umstand auszumerzen, haben wir untersucht, wie wir diese kombinieren und verbessern können, damit es eine Basis für die wirtschaftliche Anwendung gibt.“ Diese Grundlagen habe man jetzt geschaffen und das System sei funktionstauglich, so Hofer. Um es in einem Unternehmen zu integrieren, müsse es aber noch an die jeweiligen Bedürfnisse angepasst werden.
Auf GitHub zum Ausprobieren
Zugänglich ist das neue Werkzeug der TU Graz auf der von Software-Profis genutzten Plattform GitHub. Nähere Infos gibt es auf der Website des FWF-Projekts Amadeus, in dessen Rahmen das neue Tool entstand.