Künstliche Intelligenz

Wie KI zu guter Software verhelfen kann

| Redakteur: Katharina Juschkat

Prüfprogramme helfen in der Regel, Fehler in Software zu finden – doch sie sind nicht immer zuverlässig. Deshalb setzt ein Professor jetzt auf Künstliche Intelligenz, die eigenständig auch unbekannte Fehler finden soll.

Mit Künstlicher Intelligenz auf Fehlersuche beim Programmieren – umgesetzt hat das Prof. Michael Pradel.
Mit Künstlicher Intelligenz auf Fehlersuche beim Programmieren – umgesetzt hat das Prof. Michael Pradel.
(Bild: gemeinfrei / Pixabay)

Programmierfehler sind ärgerlich, können zu Programmabstürzen, langsamen Websites oder nicht funktionierenden Features führen. Programmierfehler können aber auch zu gravierenden Fehlern führen und beispielsweise im Online-Handel 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.

Künstliche Intelligenz soll Softwarefehler finden

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, Professor für Programmiersprachen am Institut für Softwaretechnologie der Universität Stuttgart, in seinem Software-Lab auf künstliche Intelligenz.

Für sein revolutionäres Verfahren hat er vor wenigen Tagen einen der begehrten, mit 1,5 Millionen Euro dotierten ERC-Starting-Grants des Europäischen Forschungsrats erhalten. „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.“

Fehler über Namen im Quellcode finden

Prof. Michael Pradel hat für seinen Ansatz, KI zur Verbesserung von Software anzuwenden, den ERC-Starting-Grants des Europäischen Forschungsrats erhalten, der mit 1,5 Millionen Euro dotiert ist.
Prof. Michael Pradel hat für seinen Ansatz, KI zur Verbesserung von Software anzuwenden, den ERC-Starting-Grants des Europäischen Forschungsrats erhalten, der mit 1,5 Millionen Euro dotiert ist.
(Bild: Katrin Binner)

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“, besser bekannt als „Deep Learning“ zum Einsatz, welches die 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 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 sechsmonatigen Forschungsaufenthalt bei Facebook in der Praxis getestet.

Ersetzt Künstliche Intelligenz die Programmierer?

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.

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de (ID: 46161100)