Der automatische Wissenschaftler
Wenn ein Programm abstürzt, kann es Tage und Nächte dauern, bis Programmierer:innen das Problem gefunden haben. Jetzt haben Forscher des CISPA einen Roboter entwickelt, der wie eine Wissenschaftlerin vorgeht. ALHAZEN beobachtet die Fehlerumstände, generiert mit Methoden des Maschinellen Lernens (ML) Hypothesen, verfeinert und widerlegt diese durch Experimente, bis er die Fehlerursachen vollautomatisch bestimmt hat: „Das Programm stürzt ab, weil der Straßenname länger als 48 Zeichen war“. Um die Fehlersuche künftig noch stärker zu machen, wollen CISPA-Faculty Prof. Dr. Andreas Zeller und Prof. Dr. Lars Grunske von der HU Berlin, beides Experten auf dem Gebiet der automatisierten Softwaretechnik, den ALHAZEN-Ansatz im Projekt EMPEROR weiterentwickeln. Die Deutsche Forschungsgemeinschaft (DFG) fördert ihre Arbeit mit rund einer halben Million Euro.
Zeigt ein Computerprogramm einen Fehler, beginnt für Software-Entwickler:innen die mühevolle Suche nach der Ursache. Sie beobachten den Programmlauf, stellen Hypothesen über die Fehler-Ursache auf und machen eine Vielzahl von Experimenten, um diese genauer einzugrenzen. „Das ist ähnlich wie auch Wissenschaftler:innen den Ursachen natürlicher Phänomene auf den Grund gehen – aber all diese Beobachtungen und Experimente brauchen viel Zeit“, sagt Zeller. Zusammen mit seinen Doktoranden Alexander Kampmann und Nikolas Havrikov entwickelt er automatische Verfahren für die Fehlersuche. ALHAZEN ist eines davon und laut Zeller enorm vielversprechend. „Wie die Maschine von der Maschine lernt, ist ganz neu.“
Der Namensgeber für diesen innovativen Ansatz zur automatischen Software-Fehlersuche ist ein Universalgelehrter, der im 11. Jahrhundert lebte. Alhazen, eigentlich Abu Ali al-Hasan ibn al-Hasan al-Haitham, beschäftigte sich hauptsächlich mit Mathematik, Optik und Astronomie, interessierte sich aber auch für Chemie, Physik, Medizin sowie Musik und Poetik. Er gilt Vielen als Begründer der experimentellen Methode in der Wissenschaft. „Wir haben uns seinen Namen ganz unbescheiden geborgt“, sagt Zeller. „eben weil das Tool wie der Erfinder wissenschaftlich-systematisch vorgeht.“ ALHAZEN liefert dabei nicht nur die genauen Fehlerbedingungen, sondern auch eine beliebig große Zahl von Tests, mit denen Programmierer:innen prüfen können, ob ihre Programmkorrekturen funktionieren.
Computer-Programme arbeiten mit Eingaben. Das kann zum Beispiel der klassische Mausklick von User:innen sein, der die Ausführung einer bestimmten Aufgabe anschiebt, oder aber ein Input, der von einem anderen Computer kommt. Bei der Fehlersuche vergleicht ALHAZEN gelingende Eingaben mit Eingaben, bei denen der Fehler auftritt. Danach zerlegt der Roboter die Programmeingaben in einzelne Elemente und bestimmt Merkmale wie zum Beispiel die Länge eines eingegebenen Passwortes oder bestimmte numerische Werte.
Mithilfe eines ML-Algorithmus, genannt decision tree learner, generiert das Tool dann sogenannte Entscheidungsbäume. Diese Modelle können automatisch bestimmen, welche Eigenschaften der Eingabe mit dem Auftreten des Fehlers zusammenhängen. „Dies ist eine Hypothese, wie sie ein:e Wissenschaftler:in oder ein:e Programmierer:in auch stellen würde“, so Zeller. Dann generiert der Roboter systematisch weitere Eingaben, mit denen er experimentieren kann, um so seine Hypothese zu verfeinern oder zu widerlegen. So gelangt ALHAZEN zu einer Theorie, warum und unter welchen Bedingungen ein bestimmter Fehler entstanden ist. „Bei kleinen Programmen braucht ALHAZEN dafür zwischen 12 und 100 Tests. Die dauern nur Millisekunden. Eine komplette Analyse ist meist in unter einer Minute erledigt“, sagt Zeller.
Das Machine-Learning-Verfahren, das bei ALHAZEN zum Einsatz kommt, ist relativ simpel. In der gemeinsamen Forschung mit Professor Grunske will Zeller unter anderem daran arbeiten, komplexere ML-Verfahren einzusetzen und so ALHAZEN noch zu verbessern. Seine menschlichen Forscherkolleg:innen entwickeln sich ja schließlich auch ständig weiter.