Forschende bringen einer Software bei, Fehler in Quellcodes zu verbessern. | Bild: shutterstock/eXpose

Maschinen helfen bereits heute beim Programmieren: Sie überprüfen Codes automatisch auf Fehler und erstellen gezielt Kommentare, damit die Arbeit nachvollziehbar wird. Forschende der USI in Lugano und des College of William and Mary in Williamsburg (Virginia) sind einen Schritt weitergegangen und haben eine Software so trainiert, dass sie fremde Quellcodes automatisch verbessern konnte. Solche Aufgaben werden sonst von erfahrenen Entwicklern ausgeführt.

Damit das Programm die Korrekturen im Code automatisch durchführen konnte, mussten die Forschenden ihm zunächst beibringen, sinnvolle Änderungen zu erkennen. Sie nutzten dafür gängige neuronale Netzwerke, die auch für das automatisierte Übersetzen natürlicher Sprachen verwendet werden. Dann trainierten sie das Programm darin, Abschnitte im Code selbst zu verändern. Dafür zeigten sie den Zustand des Codes vor und nach einer von einer menschlichen Entwicklerin vorgenommenen Änderung. So lernte die Software, wie Entwickler Fehler beheben oder neue Features einbauen. Die in Java programmierten Beispiele stammten aus drei gängigen Dokumentenservern: Android, Google Source und Ovirt.

Das Verbesserungsprogramm schlug in über 20 Prozent der Fälle die exakt gleiche Änderung wie eine Entwicklerin vor. Diese Quote empfinden die Forschenden als ermutigend. Die übrigen Vorschläge seien zudem nicht unbedingt falsch, nur anders, meint Gabriele Bavota von der USI. «Wir sehen unsere Modelle als Unterstützung für Softwareentwickler. Sie können Code-Änderungen empfehlen, die von einem Entwickler überprüft und akzeptiert werden müssen», betont Bavota. «Das letzte Wort sollte immer dem Entwickler und nicht der Maschine gegeben werden.»