Automatic Patch Generation

Bald fixt sich Code von alleine – dank Machine Learning

Melanie Feldmann

© Shutterstock / Mclek

Nie wieder einen Bug fixen! Davon träumt wohl so mancher Entwickler. Diesem Traum einen Schritt näher gekommen sind Forscher des MIT. Sie haben ein auf Machine-Learning-Algorithmen basiertes System entwickelt, das Fehler eigenständig beheben kann.

Das „Prophet“ genannte System arbeitet auf der Grundlage von erfolgreichen von Menschen geschriebenen Patches, die es sich bei GitHub abschaut. Es generiert dann eine Liste von möglichen Patch-Kandidaten, sortiert sie danach wie wahrscheinlich es ist, dass sie funktionieren und testet dann die Patches bis einer den Fehler behebt. Meistens findet es den richtigen Patch bereits beim ersten Versuch. Dabei beachtet das System nicht nur, dass der neue Code an dieser Stelle funktioniert, sondern auch, dass er die gesamte Applikation nicht negativ beeinflusst.

Korrekter Code ist universell

Die Hypothese, auf der das System aufbaut, ist, dass korrekter Code über verschiedene Anwendungen hinweg über universelle „Correctness Properties“ verfügt. Prophet arbeitet mit universellen Features, die oberflächlichen Syntax-Details einer Anwendung abstrahieren, während die Correctness Properties intakt bleiben. Diese universellen Features sind der Schlüssel dafür, dass Prophet ein „Korrektheits-Modell“ von bereits existierenden Patches lernen und dieses erfolgreich auf neuen, unbekannten Code anwenden kann. Für den Leiter der Forschungsgruppe Dr. Martin Rinard ist das nur der erste Schritt:

„If you can recognize correct code, that has enormous implications across all software engineering. This is just the first application of what we hope will be a brand-new, fabulous technique.“

Machine Learning ist schneller

In einem Experiment mit 69 Code-Fehlern aus acht Open-Source-Projekten zeigte sich, dass das Machine-Learning-System signifikant schneller ist als aktuelle Patch-Generation-Systeme. Prophets Suchraum enthielt 19 der 69 Fehler. Innerhalb von zwölf Stunden fand das System Patches für 18 dieser Fehler. Bei 15 davon war der erste angewandte Patche der richtige. Das Patch-Generation-System SPR kam im gleichen Zeitraum auf 16 Patches.

Bisher haben sich die Forscher auf das Beheben einfacher Fehler beschränkt. Sie wollen das Programm jedoch weiter ausbauen, sodass es auch bei großen Anwendungen und komplexen Fehler funktioniert. Es dauert also noch eine Weile, bis Bug-Fixing der Vergangenheit angehört.

Aufmacherbild: Software developer programming code von Shutterstock / Urheberrecht: Mclek

Geschrieben von
Melanie Feldmann
Melanie Feldmann
Melanie Feldmann ist seit 2015 Redakteurin beim Java Magazin und JAXenter. Sie hat Technikjournalismus an der Hochschule Bonn-Rhein-Sieg studiert. Ihre Themenschwerpunkte sind IoT und Industrie 4.0.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: