Kann Künstliche Intelligenz Software zuverlässiger machen?

Bild: iStock, ktsimage

Aus dem Problem wird die Lösung Neuronale Analysen sollen Software zuverlässiger machen

08.02.2022

Die Ansprüche an Software sind hoch, doch die schiere Menge und Komplexität die benötigt wird, kann Programmierer an ihre Grenzen bringen. Neuronale Softwareanalysen sollen die Lösung sein: Sie findet eventuelle Fehler automatisch, indem sie die Programme selbst wie Daten behandelt.

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. Die unglaublich große Menge und Komplexität heutiger Softwaresysteme überfordern dabei nicht nur die einzelnen Softwareentwickler, sondern auch die bisher verwendeten Entwicklungswerkzeuge. Die Folge sind Programmierfehler mit kostspieligen oder teils auch gefährlichen Folgen.

KI soll Werkzeuge zur Softwareentwicklung erlernen

Vor diesem Hintergrund erforschen Prof. Michael Pradel und sein Team an 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.

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.“

Noch bleiben Fragen offen

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.

Firmen zu diesem Artikel
Verwandte Artikel