Getty Images/iStockphoto
Potenziale und Risiken von KI in der Softwareentwicklung
Künstliche Intelligenz in der Softwareentwicklung kann einen Wandel bewirken, wirft aber auch Fragen auf. Was bedeutet KI-generierter Code für die Zukunft des Technologiebereichs?
Immer mehr Unternehmen setzen auf künstliche Intelligenz, um die Softwareentwicklung zu beschleunigen. Die wachsende Beliebtheit von KI-Entwicklungswerkzeugen wirft jedoch Fragen hinsichtlich Sicherheit, Genauigkeit und der Auswirkungen auf technische Mitarbeiter auf.
Große Sprachmodelle (Large Language Model, LLM) wie GPT-4 können Code vorschlagen, technische Fragen beantworten und sogar Teile einfacher Anwendungen schreiben. Mike Gualtieri, Vice President und Principal Analyst bei Forrester Research, erwartet, dass KI-Tools einen großen Einfluss auf die Softwareentwicklung haben werden: „Ich denke, es ist vorsichtig zu sagen, dass ein Entwickler damit doppelt so produktiv sein wird, wenn nicht sogar mehr.“
Diese Produktivitätsgewinne können weitreichende Veränderungen im Technologiesektor bedeuten. Mit der zunehmenden Verbreitung von KI stellt sich jedoch die Frage, wie sie sicher in die Softwareentwicklung integriert werden kann – und die Arbeitnehmer sind besorgt über die Qualität des von KI erzeugten Codes und darüber, was KI für ihre Arbeitsplätze bedeutet.
KI in der Softwareentwicklung ist Evolution, keine Revolution
Trotz des weit verbreiteten Hypes um ChatGPT und andere öffentlichkeitswirksame Modelle ist KI in der Softwareentwicklung nicht so bahnbrechend, wie es zunächst scheinen mag. KI gibt es in Entwicklungs- und IT-Workflows schon seit einiger Zeit, wenn auch meist in Form von einfachen Codevervollständigungen und Automatisierungen.
Zwar kann KI inzwischen vollständige Codeschnipsel generieren, doch selbst diese Fähigkeit unterscheidet sich nicht so sehr von den bekannten manuellen Prozessen. Anstatt sich durch Stack Overflow-Antworten zu wühlen, um relevanten Code zu finden, können Entwickler nun gezielte Vorschläge direkt in ihren integrierten Entwicklungsumgebungen (Integrated Development Environment, IDE) erhalten. „Die wichtigste Änderung ist, dass es jetzt universell und leichter zugänglich ist“, sagt Gualtieri.
Die jüngsten KI-Fortschritte lassen sich am besten als Erweiterung eines bestehenden Entwicklungsparadigmas verstehen. „Plötzlich ist es möglich, dass einige dieser Tools die Arbeitsweise von Programmierern beeinflussen“, erklärt B.C. Holmes, Chief Technologist beim Softwareentwicklungsunternehmen Intelliware. „Es handelt sich eher um einen Bewusstseinswandel als um die eigentliche zugrunde liegende Technologie.“
Holmes hat beispielsweise vor mehr als 20 Jahren an KI-Systemen in der Finanzbranche gearbeitet, obwohl der Begriff KI damals noch nicht verwendet wurde. Frank Huerta, CEO des Sicherheitssoftwareunternehmens Curtail, merkt an, dass einige Sicherheits-Tools, die als KI angepriesen werden, Musterabgleichstechniken verwenden, die den Methoden ähneln, die seit langem bei der Überwachung von Bedrohungen und der Erkennung von Angriffen eingesetzt werden.
Dennoch sind sich die Experten einig, dass die jüngsten Fortschritte im Bereich der KI und die rasch steigende Akzeptanz einen Wendepunkt darstellen. Auch wenn die zugrunde liegende Technologie selbst nicht völlig neu ist, wachsen die Fähigkeiten und das Ausmaß des Einsatzes von KI in rasantem Tempo. „Die Dinge werden sich in den nächsten zehn Jahren sehr, sehr stark verändern“, ist sich Holmes sicher.
Die Vorteile und Risiken von KI-generiertem Code
Zu den vielversprechendsten Bereichen für KI in der Softwareentwicklung gehören die Planung und Erkundung, die Beschleunigung der Automatisierung von Routineaufgaben und das Schreiben von Standardcode.
Obwohl LLMs nur begrenzt in der Lage sind, funktionalen Code zu generieren, sind sie leistungsstarke Werkzeuge für die Beantwortung anspruchsvoller, aber spezifischer technischer Fragen. ChatGPT kann laut Holmes zum Beispiel erklären, wie man mit Java oder Python eine Verbindung zu einem AWS-Service herstellt, und Beispielcode bereitstellen.
Ein Großteil der täglichen IT- und Entwicklungsarbeit umfasst Aufgaben wie API-Aufrufe oder das Verschieben von Daten zwischen Objekten. Durch die Automatisierung dieser Vorgänge mit KI können sich Technikexperten auf kompliziertere, kreative Projekte konzentrieren, die menschliches Verständnis erfordern. In Kombination mit der aufkommenden Disziplin des Plattform-Engineering könnte dies dazu beitragen, überlastete DevOps-Teams zu entlasten, die weitläufige, komplexe IT-Umgebungen verwalten.
Ravi Parikh, Mitbegründer und CEO des Entwicklerplattform-Start-ups Airplane, ist überzeugt, dass KI eine wichtige Rolle bei der Weiterentwicklung von Entwickler-Tools spielt. Die Integration eines Tools wie GitHub Copilot in den Automatisierungs-Workflow einer bestehenden Entwicklerplattform kann beispielsweise die Produktivität weiter steigern.
Doch obwohl die KI-Entwicklungswerkzeige immer besser werden, sind sie nicht perfekt. Wenn man mit KI-gestützter Softwareentwicklung experimentiert, „besteht ein Risiko darin, dass sie schlechten Code erzeugt, genau wie ein Mensch schlechten Code erzeugt“, sagt Gualtieri.
Dies schließt Sicherheitsrisiken ein. Tools zur Codegenerierung und -empfehlung spiegeln die Sicherheitsschwachstellen und Fehlkonfigurationen des als Trainingsdaten verwendeten Codes wider. Ebenso gibt es Sicherheits- und Datenschutzbedenken hinsichtlich der Quellen und der Sensibilität der Daten, die zum Trainieren und Verfeinern von KI-Systemen verwendet werden.
Um diese Risiken zu mindern, müssen Unternehmen den von KI generierten Code genauso behandeln wie das von Menschen geschriebene Gegenstück – oder sollten es tun. Das bedeutet, dass für alle dieselben Sicherheits- und Governance-Richtlinien gelten, unabhängig davon, ob der Code von einem Menschen oder einem KI-Modell stammt.
Code, der keine Sicherheitsschwachstellen enthält, kann auf andere Weise fehlerhaft sein. Modelle erzeugen nicht immer den Code, der den Anforderungen des Benutzers entspricht. Und selbst wenn der erzeugte Code technisch funktioniert, ist er möglicherweise nicht besonders prägnant oder effizient.
Die Verwendung von KI-generiertem Code ist besonders riskant, wenn die Benutzer ihn nicht validieren können, sei es, weil sie nicht über ausreichende technische Kenntnisse verfügen, oder weil ein Tool die Benutzer davon abhält, seine Ausgabe zu überprüfen. „Selbst wenn es in neun von zehn Fällen richtig ist“, sagt Parikh, „wenn Sie in einem von zehn Fällen Fehler in Ihrem Code ausliefern, ist das ziemlich schlecht.“
Ein weiteres Risiko besteht im Zusammenhang mit dem Urheberrecht und dem geistigen Eigentum. Obwohl einige Tools, wie der KI-Kodierassistent Tabnine, Maßnahmen ergreifen, um sicherzustellen, dass der in den Trainingsdaten verwendete Code eine zulässige Lizenz hat, gilt dies nicht für alle KI-Tools, einschließlich der beliebten LLMs, die auf sehr große Datensätze trainiert werden.
Die Auswirkungen von KI auf Low-Code und No-Code-Entwicklung
Die Kombination von generativer KI mit Low-Code und No-Code ermöglicht es Nicht-Entwicklern, ganze Anwendungen zu erstellen.
Ähnlich wie bei der Erstellung von Grafiken und Benutzeroberflächen mit Design-Tools wie Canva und Figma können künftige Low-Code/No-Code-Plattformen visuelle Eingaben entgegennehmen und dann im Hintergrund mit Unterstützung von LLMs Anwendungscode generieren. „Im Moment unterstützt [KI] die Entwickler“, sagt Gualtieri. „Aber wir denken, dass sie in Zukunft ganze Entwicklungsteams unterstützen wird, indem sie nicht nur Schnipsel, sondern vollständige Anwendungen generiert, die im Unternehmen genutzt werden können.“
Andere stehen solchen Tools eher skeptisch gegenüber, insbesondere in den Händen von Benutzern ohne ausreichende technische Kenntnisse. „Ich denke schon, dass Low-Code- [und] No-Code-Tools, wenn sie falsch eingesetzt werden, zu wirklich schlecht geschriebener Software führen können, die mehr Schaden anrichtet, als dass sie tatsächlich Probleme für die Menschen löst“, erklärt Parikh. „Ich denke, dass der Einsatz von künstlicher Intelligenz das Ganze noch schlimmer macht.“
Die Modelle, die ChatGPT zugrunde liegen, wurden beispielsweise auf einem riesigen Datenkorpus trainiert, der aus dem Internet zusammengesucht wurde, darunter auch Texte aus Büchern und Artikeln. Wenn diese Daten urheberrechtlich geschützte Algorithmen enthalten, die in der Ausgabe von ChatGPT reproduziert werden, kann dies zu Problemen mit dem geistigen Eigentum führen. „Was ist, wenn man etwas generiert, von dem man denkt, dass es einem gehört, und plötzlich tritt man auf das Patent eines anderen?“, fragt Huerta
Normalerweise werden Patentstreitigkeiten zwischen Menschen oder Unternehmen durch rechtliche Mechanismen gelöst. Es ist jedoch nicht klar, wie das Verfahren zur Beilegung von Streitigkeiten aussehen, die sich aus dem von Tools wie GitHub Copilot und ChatGPT generierten Code ergeben.
Anpassungsfähigkeit ist der Schlüssel zum Erfolg von KI-Tools
KI, die speziell für die Softwareentwicklung gedacht ist, scheint vielversprechender zu sein als LLMs, wenn es darum geht, tatsächlich Code zu schreiben.
GitHub Copilot hat sich dank seines Zugriffs auf den riesigen Datensatz von GitHub und der Integration mit der beliebten IDE Visual Studio Code als früher Spitzenreiter erwiesen. Parikh führt die Beliebtheit von Copilot zum Teil auf seine Transparenz und Flexibilität zurück, die es den Benutzern überlassen, ob sie die Vorschläge tatsächlich umsetzen.
Andere beliebte KI-Entwicklungswerkzeuge haben eine ähnliche Struktur: Sie bieten Vorschläge an, aber der Benutzer entscheidet letztendlich, was er implementieren möchte. Ähnlich wie GitHub Copilot bietet Tabnine optionale Inline-Code-Vorschläge, während die Entwickler tippen. Ebenso erstellt Project Wisdom von IBM automatisch Ansible-Playbooks auf der Grundlage von Anfragen in natürlicher Sprache, aber die Entwickler können die Ergebnisse überprüfen und ändern.
Diese Anpassungsfähigkeit ist nach Ansicht von Experten für künftige KI-Tools unerlässlich. Insbesondere müssen KI-Entwicklungs-Tools mit bestehenden Unternehmenssystemen zusammenarbeiten – ein Bereich, in dem die derzeitigen Möglichkeiten nicht ausreichen.
„Die meisten Unternehmen haben jahrzehntealte Systeme, die alle unterschiedlich und eigenartig sind, und die für jedes Unternehmen einzigartig sind“, erläutert Holmes. „Um Systeme zu entwickeln, muss man erst einmal herausfinden, was es gibt und wie man es verknüpft und zusammenfügt.“
Gualtieri sieht eine Kategorie von KI-Systemen, die als abgeleitete Modelle bezeichnet werden, als besonders vielversprechend in diesem Bereich an. Basismodelle wie OpenAIs GPT-3 und Googles PaLM sind große, flexible Systeme, die auf breiten Datensätzen trainiert wurden und von den Benutzern an spezielle Anwendungsfälle angepasst werden können. Künftige KI-gestützte Entwicklerwerkzeuge könnten es einem Unternehmen ermöglichen, seine Codebasis in ein Basismodell einzuspeisen, um ein individuelles abgeleitetes Modell zu erstellen.
„Dieses Modell wird stärker auf das Unternehmen ausgerichtet sein und daher Code generieren, der der bestehenden Architektur des Unternehmens ähnlicher ist“, sagt Gualtieri.
Parikh sieht eine ähnliche Anwendung im Bereich der Entwickler-Tools vor: ein einfacheres Erlernen neuer Plattformen und Tools durch die Erstellung benutzerdefinierter Assistenten. In internen Prototypen bei Airplane habe das Unternehmen mit dem Training von KI-Modellen auf seiner Dokumentation experimentiert, um einen „halbintelligenten Agenten“ zu schaffen, der genau auf die Software von Airplane abgestimmt ist. Diese Art von spezialisiertem Chatbot kann Nutzern helfen, sich schnell in neue Tools einzuarbeiten, ohne sich durch die Dokumentation wühlen oder den Support kontaktieren zu müssen.
Wird KI die Softwareentwickler ersetzen?
KI wird Softwareentwickler in absehbarer Zeit nicht ersetzen, was zum Teil auf ihre Risiken und technischen Grenzen zurückzuführen ist. Aber Menschen haben auch einfach andere Fähigkeiten als KI – und das sollte man als Vorteil sehen.
Als Beispiel beschreibt Huerta die Schwierigkeiten, den menschlichen Prozess der Objekterkennung nachzubilden, während er an einem autonomen Fahrzeug für eine frühe Defense Advanced Research Projects Agency Grand Challenge arbeitete. „Ähnlich verhält es sich mit dem KI-Ansatz beim Schreiben von Dingen“, sagt er. „Unsere Gehirne arbeiten immer noch etwas anders als die von Computern. Das muss ein Vorteil sein und darf nicht verdrängt werden.“
Auch menschliches Einfühlungsvermögen und Kommunikation sind für die IT und die Entwicklung von entscheidender Bedeutung. „Der IT-Job hat einen großen Anteil an Menschen, und daran wird sich wahrscheinlich nichts ändern“, erläutert Holmes. „Es geht darum, den Menschen zuzuhören, zu verstehen, was sie brauchen, und die komplexe Umgebung, die wir heute haben, zu verstehen.“
Anstatt Entwickler und IT-Mitarbeiter zu ersetzen, wird KI sie eher unterstützen. „Ich glaube noch nicht, dass KI so gut ist, dass sie einen Softwareentwickler ersetzen kann, wenn man selbst nicht weiß, wie man Code schreibt“, sagt Parikh. „Ich denke, das Tool ist am besten, wenn es nicht Ihre Intelligenz ersetzt ... sondern Ihren Mangel an Wissen.“
KI kann Qualifikationslücke in der Tech-Branche verkleinern
Die Nachfrage nach IT-Fachkräften ist seit jeher hoch, und trotz der jüngsten Entlassungen bei namhaften Unternehmen gibt es im Technologiesektor immer noch eine Qualifikationslücke. Daher ist es unwahrscheinlich, dass KI menschliche Arbeitskräfte vollständig verdrängen wird – vielmehr kann die KI-gestützte Softwareentwicklung notwendig sein, um den bestehenden Fachkräftemangel zu beheben.
„Es gibt nicht genug Leute, um die Aufgaben zu bewältigen“, erklärt Huerta. „Es gibt nicht genug Entwickler, nicht genug IT-Leute und nicht genug Sicherheitsfachleute... KI kann also ein nützliches Werkzeug sein, um einige dieser Lücken zu schließen.“
In vielen Unternehmen bedeutet dies, dass die Produktivität der bestehenden Teams gesteigert wird, anstatt sie zu verkleinern. Unternehmen mit großen IT-Budgets „haben oft eine interne Benutzerbasis, die das Gefühl hat, dass sie für dieses Budget nicht das bekommen, was sie wollen“, so Holmes. Am anderen Ende des Spektrums kann KI laut Holmes ein Segen für kleine Unternehmen sein, für die fortschrittliche IT bisher finanziell unerschwinglich war.
In solchen Szenarien kann KI die interne IT-Bereitstellung beschleunigen und bei Projekten unterstützen, die aufgrund von Personalknappheit oder Budgetbeschränkungen nicht durchführbar waren. „Es muss nicht heißen: ‚Ich kann das, was ich heute tue, mit der Hälfte der Mitarbeiter machen‘“, sagt Holmes. „Ich denke, man sollte sagen: ‚Ich könnte die gleiche Anzahl von Leuten beibehalten und mehr erreichen‘. Ich denke, das ist der bessere – und wahrscheinlich auch geschäftsgerechtere – Ansatz.“
KI-Kodierungswerkzeuge können auch die Einstiegshürden für die Softwareentwicklung senken. Genauso wie Buchhalter nicht mehr wissen müssen, wie man die lange Division von Hand ausführt, können bestimmte Programmierkenntnisse, die bisher für Kodierungsjobs grundlegend waren, mit dem Fortschritt der Tools an Bedeutung verlieren.
In Verbindung mit dem jüngsten Abschwung im Technologiesektor kann dies jedoch zu einem Rückgang der Durchschnittslöhne führen. Technologieunternehmen haben in der Vergangenheit notorisch hohe Gehälter gezahlt, selbst für Einstiegsjobs in der Entwicklung. Vor allem in einer schwierigeren Wirtschaftslage kann sich dies durch die breite Einführung von KI ändern.
„Sie wird wahrscheinlich dazu beitragen, dass Menschen, die nicht die gleichen Möglichkeiten oder Erfahrungen hatten, aufsteigen, und sie wird viele Gehälter drücken“, erläutert Gualtieri.
Holmes weist auch darauf hin, dass die Automatisierung in einer Branche in der Vergangenheit zu viel tieferen wirtschaftlichen Veränderungen geführt hat. Daher ist es wichtig, die stärkere Automatisierung in der Softwareentwicklung in einem breiteren Kontext zu betrachten, der über den Technologiesektor hinausgeht.
„Der Versuch, sich damit zu befassen, ist eine viel umfassendere soziale, gesellschaftsweite Diskussion“, sagt sie. „Was bedeutet das? Wie stellen wir uns die Arbeit in einer Zukunft der umfassenden Automatisierung vor? Ich glaube nicht, dass ich dieses Problem lösen kann. Aber ... man muss es auf dieser Ebene lösen, denke ich.“