Künstliche Intelligenz in der Softwareentwicklung: Programme, die Programme schreiben?

Entwickler müssen in der modernen Softwareentwicklung immer seltener Probleme von Grund auf neu angehen. Ein großer Teil von Funktionen findet sich in Bibliotheken, Plattformen wie GitHub und Stack Overflow stellen Millionen von Codebeispielen für unterschiedlichste Programmieranforderungen zur Verfügung. Kann generative KI das Programmieren weiter vereinfachen? Und wenn ja, welche Fallstricke lauern?

Dazu haben wir mit Jamie Boote gesprochen. Er ist Associate Principal Security Consultant bei der Synopsys SIG.

 

Was versteht man unter generativer KI?

Jamie Boote: Generative KI erstellt Inhalte, wie Texte, Bilder, Videos, Daten und so weiter, auf der Grundlage des Datensatzes, auf den die Software trainiert wurde. Generative KI steht im Gegensatz zur prädiktiven KI, die auf Grundlage eines vorgegebenen Datensatzes Entscheidungen trifft, zum Beispiel um Haustiere auf Bildern zu erkennen oder den kürzesten Weg zum örtlichen Supermarkt zu finden.

 

Welche technischen Anwendungsfälle gibt es, etwa im Bereich der Programmierung?

JB: Wir werden auf absehbare Zeit hin alle Anwendungsfälle einer KI überwachen müssen. Jedenfalls, solange wie sogenannte KI-Halluzinationen existieren oder eine künstliche Intelligenz die Neigung zeigt, selbstbewusst Fakten zu konstatieren, die nicht mit der Realität übereinstimmen. Als KI-Halluzination bezeichnet man Reaktionen einer KI, die unsinnig zu sein scheinen oder nicht mit dem bereitgestellten Trainings- und Quellinhalt übereinstimmen. KI-Halluzinationen wurden erstmals mit dem Aufkommen großer KI-Modelle wie GPT-3 im Jahr 2022 beobachtet. Die Daten und Entscheidungen, die ein KI-Modell trifft, müssen also zwingend von dafür qualifizierten Menschen überprüft werden.

Grundsätzlich gibt es viele Möglichkeiten, wie man sowohl prädiktive als auch generative KI in den Lebenszyklus der Softwareentwicklung integrieren kann. Die ersten Anwendungsfälle werden die Arbeit von menschlichen Entwicklern, Software-Architekten oder QA-Testern zunächst ergänzen. Beim Design neuer Systeme oder einer Software können Entwickler eine KI abfragen, die auf Branchen-Best-Practices, gesetzliche Vorgaben und Hintergrundinformationen geschult ist, und auf dieser Grundlage eine Liste mit notwendigen Sicherheitsanforderungen erstellen.

Meiner Erfahrung nach liefert ChatGPT bereits Anhaltspunkte dafür, welche Sicherheitsprobleme in bestimmten Anwendungsfällen potenziell auftreten. Und der Chatbot ist auch in der Lage, Vorschriften wie PCI DSS oder SOX zu berücksichtigen. Diese Sicherheitsanforderungen lassen sich anschließend mit weiteren Anforderungsprofilen integrieren und an eine andere generative KI übermitteln. Die würde beispielsweise Quellcode in jeder gängigen Programmiersprache mit Dokumentationen, Forumsdiskussionen und Codebeispielen in ihrem Trainingsset zur Verfügung stellen. Ein weiterer KI-Schritt wäre dann die Generierung von Anwendungsfällen, anhand derer man die beschriebenen Funktionalitäten zum Zweck der Qualitätssicherung testet. Entwickler-Teams, die generative KI in ihre Arbeitsabläufe integrieren möchten, sollten definitiv sicherstellen, dass sämtliche Anforderungen, der Code selbst, die Testfälle und andere von der KI generierte Daten korrekt sind und nicht etwa durch KI-Halluzinationen beeinträchtigt werden.

 

Welche Vorteile können wir im Rahmen dieser Entwicklung erwarten?

JB: Entwickler-Teams werden anhand verschiedener Kennzahlen gemessen. Eine, die nahezu universell verwendet wird, ist der Umfang an zusätzlichen Funktionalitäten, die sie in eine Anwendung einbringen. Eine KI kann helfen, Funktionsziele zu erreichen und sich gleichzeitig auf andere Bereiche wie Qualität, Sicherheit und Wartung zu konzentrieren. Oder sie kann dazu beitragen, mehr Funktionen bereitzustellen. So lässt sich die Zeit bis zur Markteinführung verkürzen, gerade in Branchen, bei denen in erster Linie die Geschwindigkeit zählt. Andererseits kann eine KI dabei unterstützen, bessere, zuverlässigere Software zu entwickeln, bei der die Betriebszeit im Vordergrund steht.

 

Das hört sich erst einmal überwiegend positiv an. Dennoch, auf welche potenziellen Fallstricke sollte man achten?

JB: KI muss zwangsläufig beaufsichtigt werden. Es gibt bestimmte Arten von »Angriffen«, bei denen eher ein Versehen oder ein Fehler ausgenutzt werden, als dass es sich um einen ambitionierten Hack handelt. Wenn eine unbeaufsichtigte KI ausgenutzt wird oder eine KI-basierte Software, fällt das eher in die erstere Kategorie. Als Cloud-Hosting sich mehr und mehr verbreitete, gab es regelmäßig Schlagzeilen hinsichtlich neuer Datenschutzverletzungen. Zumeist, weil es einem Angreifer gelungen war auf private oder sensible Daten in einem Cloud-Datenspeicher zuzugreifen, konfiguriert mit Standard-Zugriffsregeln. Jede neue Technologie bringt ihre spezifischen Schwachstellen mit, von PCs über Webserver bis hin zu Smartphones. Dieser Trend wird sich bei den von einer KI bereitgestellten Diensten fortsetzen. Ob es darum geht, den Entscheidungsfindungsprozess der KI zu täuschen, die KI zur Preisgabe von Geheimnissen zu verleiten oder die der KI zugrunde liegende Softwareplattform anzugreifen – es werden neue Schwachstellen und Sicherheitsprobleme auftauchen, die auf die Software selbst zurückgehen.

Sobald Angreifer sich mit den üblichen Softwarefehlern einer halluzinierenden KI vertraut gemacht haben, können wir sicher davon ausgehen, dass diese rigoros und routinemäßig ausgenutzt werden.

Das betrifft Versehen ebenso wie fehlende Steuerelemente und zusätzliche Funktionen, die nicht erforderlich sind, damit die Anwendung funktioniert, aber trotzdem eingebaut wurden. Umgekehrt kann man davon ausgehen, dass sich auch die Forschung dahingehend weiterentwickelt.

Sobald die Experten ein besseres Verständnis von der Art der Halluzinationen haben, die bei verschiedenen KI-Modellen auftreten, werden sie in der Lage sein, potenzielle Fehler in der von dieser KI geschriebenen Software zu prognostizieren.

 

Wie wird die Entwicklung weitergehen?

JB: KI wird die Art und Weise verändern, wie Informationen im Lebenszyklus der Softwareentwicklung generiert werden, wie diese Informationen fließen und wie darauf reagiert werden wird. Grundsätzlich wird sich der Informationsfluss verbessern, ebenso wie der Grad an Transparenz. Das kommt der Reaktionsfähigkeit und Integration bei der Softwareentwicklung sicherlich zugute. Eine Zeile Code würde vermutlich weit weniger als zwei Wochen brauchen, um den Code von der Anforderung, über die Testphase in eine freigegeben Funktion zu überführen.

Ein durchschnittliches Entwicklungsteam würde das dank intelligenter Werkzeuge vielleicht innerhalb eines Tages schaffen. Auch hier ein Beispiel. Wenn ein Entwickler derzeit ein Stück Code schreibt, gibt er es an die Toolkette zurück. Dieser Commit wird mit dem Rest der Version gebündelt und mit einigen leichtgewichtigen automatisierten Tools auf Korrektheit und Funktionalität hin getestet, bevor er an einen QA-Tester geschickt wird. Wenn diese Tests abgeschlossen sind, was Tage dauern kann, geht es weiter zum nächsten Schritt in Richtung Freigabe. Wenn nicht, geht das Softwarestück zur Überarbeitung zurück. Was ebenfalls Tage kosten kann.

Wenn man mittels einer KI einen QA-Testfall generiert und den Code im Falle eines Fehlers korrigiert, könnte die Nachbearbeitungsschleife entfallen und allein dieser einzelne Schritt um einige Tage verkürzt werden. Unternehmen, die sehr bewusst und sorgfältig eine supervidierte KI in ihre Arbeitsabläufe integrieren, werden gegenüber denjenigen, die das nicht tun, auf jeden Fall im Vorteil sein.

Foto: Freepik