Nachrichten, Gerüchte, Meldungen und Berichte aus der IT-Szene

Redaktion: Heinz Schmitz


Mit künstlicher Intelligenz zu zuverlässiger Software

Software
Zum Aufspüren von Softwarefehlern setzen die Wissenschaftler auf Methoden, mit denen ein Computer ein Programm und die dahinterliegende Idee “verstehen” kann. (Quelle: hiz)

Die Folgen von Software-Fehlern hat jeder schon am eigenen Leib gespürt: Abstürzende Apps, langsame Webseiten, nicht funktionierende Features. Doch diese sind nur die Spitze des Eisbergs: Programmierfehler im Online-Handel können Millionenbeträge kosten. In sicherheitskritischen Anwendungen, zum Beispiel bei autonomen Fahrzeugen oder in der Medizin, können sie unter Umständen sogar Menschenleben bedrohen. Da Software von Menschen entwickelt wird, sind Fehler nie ganz zu vermeiden. Und mit der zunehmenden Verbreitung und Komplexität von Software nimmt deren Zahl auch noch zu.

 

Zum Aufspüren von Softwarefehlern setzt man bisher Prüfsoftware ein, die auf dem Prinzip „Programm 1 analysiert Programm 2“ basiert. Diese Prüfprogramme sind jedoch ebenfalls von Menschen geschrieben und spüren nur bekannte Fehler auf. Um auch zukünftige Fehler prognostizieren und verhindern zu können, setzt Michael Pradel in seinem Software-Lab auf künstliche Intelligenz. „Die Kernidee ist, aus den vielen bereits existierenden Softwarefehlern zu lernen, wie neue Fehler automatisch gefunden werden können“, erklärt Pradel. „Hierzu entwickeln wir maschinelle Lernmodelle, die vorhersagen, ob ein Stück Programmcode korrekt oder fehlerhaft ist.“

 

Deep Learning

Um dieses Ziel zu erreichen, wollen Pradel und sein Team im Rahmen des ERC-Projekts neue Methoden entwickeln, mit denen ein Computer ein Programm und die dahinterliegende Idee “verstehen” kann. Hierbei kommt das sogenannte “tiefe Lernen” (Deep Learning) zum Einsatz, welches die Wissenschaftlerinnen und Wissenschaftler in bisher unerforschter Art auf Programme anwenden und weiterentwickeln. Ein wichtiger Hinweis auf Fehler sind dabei natürliche Namen im Quellcode. Künstliche Intelligenz betrachtet eine sehr große Zahl an Codezeilen und lernt, wie die Namen üblicherweise verwendet werden. Stößt sie dann zum Beispiel auf die versehentliche Verknüpfung der Variablen “Länge” und “Farbe”, dann liegt vermutlich ein Fehler vor.

 

„Das revolutionäre an diesem neuen Verfahren besteht darin, dass jeder Entwickler seine eigenen Werkzeuge zum Finden von Fehlern lernen kann. Bisher konnten solche Werkzeuge nur von einigen wenigen Spezialisten erstellt werden“, erklärt Pradel. Mit ersten Prototypen konnten die Forscherinnen und Forscher bereits sehr ermutigende Erfolge erzielen und eine Vielzahl bisher nicht erkannter beziehungsweise nicht bekannter Fehler detektieren – und das bei Software, die teilweise schon sehr lange im Einsatz ist. Zudem hat Michael Pradel seine Ideen bei einem 6-monatigen Forschungsaufenthalt bei Facebook in der Praxis getestet.

 

Dass künstliche Intelligenz schon bald Programmierer ersetzen wird, glaubt Pradel nicht. „Es geht uns vielmehr darum, die eher eintönige Fehlersuche durch automatische Werkzeuge zu unterstützen und den Programmierern mehr Zeit für interessantere Aufgaben wie etwa das Erstellen neuer Funktionalitäten zu verschaffen“, sagt Pradel. Letztendlich soll die Softwareentwicklung produktiver werden – auch, weil es für Unternehmen immer schwieriger wird, auf einem leergefegten Arbeitsmarkt qualifizierte Programmierer zu finden.

 

Siehe auch:

http://www.uni-stuttgart.de/

Zurück