Spätestens seit Beginn der Covid19-Pandemie ist Software allgegenwärtig, und neuronale Netze, Deep Learning und künstliche Intelligenz sind ein wichtiger Bestandteil des Innovationsschubs der letzten Jahre – sei es in Form von autonomen Fahrzeugen, Spracherkennung oder cleveren Vorschlägen für unsere nächste Reise. Die unglaublich große Menge und Komplexität heutiger Softwaresysteme überfordern dabei nicht nur die einzelnen Softwareentwickler*innen, sondern auch die bisher verwendeten Entwicklungswerkzeuge. Die Folge sind Programmierfehler mit kostspieligen oder teils auch gefährlichen Folgen.
Vor diesem Hintergrund erforschen Prof. Michael Pradel und sein Team der Abteilung Software Lab am Institut für Software Engineering der Universität Stuttgart, wie künstliche Intelligenz selbstständig Werkzeuge zur Softwareentwicklung aus den immer komplexer werdenden Programmen erlernen kann. Kern seiner Forschung, die der Europäische Forschungsrat seit 2019 mit einem der begehrten, mit 1,5 Millionen Euro dotierten ERC Starting Grants fördert, ist die neuronale Softwareanalyse. Dieses von Prof. Michael Pradel und seinem Team erforschte revolutionäre Verfahren der künstlichen Intelligenz nutzt KI zur Entwicklung von Programmen, die Softwareentwickler*innen bei ihrer täglichen Arbeit unterstützen.
Neural Software Analysis (englisch)
Prof. Michael Pradel erklärt das Verfahren sowie die Potenziale neuronaler Softwareanalysen.
Das Verfahren basiert auf dem Effekt, dass Software von Menschen geschrieben ist, und lernt aus bestehenden Softwarefehlern, wie neue Fehler automatisch gefunden werden können. „Damit macht die neuronale Softwareanalyse die Not zur Tugend“, erklärt Pradel. „Sie betrachtet die zunehmend komplexer werdenden Programme selbst als ‚Daten‘. Mittels innovativer Techniken des maschinellen Lernens kann so automatisiert Software entwickelt und weiter optimiert werden.“
Bisher werden traditionelle Werkzeuge zur Unterstützung von Softwareentwickler mittels präziser, logikbasierter Programmanalyse von Hand entwickelt. Da sich die dahinterliegende Idee einer Software allerdings nur schwer für traditionelle Analysen erschließt, stoßen diese Werkzeuge zunehmend an ihre Grenzen. Hier setzt der Ansatz der neuronalen Softwareanalyse an: Maschinelles Lernen ergänzt oder ersetzt bisherige Ansätze durch wahrscheinlichkeitsbasierte Schlussfolgerungen (probabilistische Inferenz). „Neuronale Ansätze verstehen nicht nur die mathematische Logik eines Programmes, sondern eben auch natürlichsprachige Informationen in und um Software und Konventionen, die Programmierende in der Praxis einhalten.“
Die Forschenden entwickelten künstliche Intelligenzen, welche die Bedeutung von Programm-Codes “verstehen” und Softwareentwicklern bei ihrer Arbeit zur Seite stehen. Zum Beispiel helfen die Werkzeuge beim Finden und Beheben von Programmierfehlern und machen Vorschläge, wie ein bereits geschriebener Code vervollständigt werden kann. Die künstliche Intelligenz vollzieht nach, was ein Programmierer oder eine Programmiererin mit einem bestimmten Konstrukt ausdrücken möchte und kann entscheiden, ob verschiedene Programmteile tatsächlich zusammenpassen.
Trotz des immensen Fortschritts bleiben weiterhin viele offene Fragen, die die Forschenden im weiteren Verlauf des noch bis 2025 laufenden ERC Projektes adressieren wollen. Unter anderem wollen sie besser verstehen, wie und warum die gelernten Modelle der künstlichen Intelligenz funktionieren, und wie man die neuen Methoden mit existierenden Werkzeugen kombinieren kann.
Publikation:
Neural Software Analysis, Michael Pradel, Satish Chandra, in Communications of the ACM, January 2022, Vol. 65, No. 1, Pages 86-96, DOI 10.1145/3460348
Kontakt | Prof. Dr. Michael Pradel, Universität Stuttgart, Institut für Software Engineering, Abt. Software Lab, Tel. +49 711 685 88320, E-Mail |
---|