Künstliche Intelligenz in die Softwareentwicklung integrieren? Hier ist alles, was Sie wissen müssen.
Auf einer Reise, die voller Chancen und Risiken ist - wie können Entwickler die inhärente Unberechenbarkeit von KI zuverlässig meistern? Unser Leitfaden bietet Ihnen Tipps und Werkzeuge, damit Sie bei Ihrem nächsten Projekt zur Programmierung mit KI einen guten Start haben.
Softwareentwickler gedeihen bei Gewissheit. Wenn man einem Programm eine bestimmte Reihe von Eingaben gibt, erhält man stets dieselben Ausgaben. In der gesamten Geschichte der Software wurde sie ausschließlich auf der Grundlage deterministischer Logik entwickelt. Was eingegeben wird, bestimmt, was herauskommt.
Wir haben dafür sogar einen Begriff: Top-down-Programmierung. Alle Algorithmen folgen einem bestimmten Pfad - wobei es auch Verzweigungen gibt, die auf der erwarteten Logik basieren. Beim Debuggen durchlaufen wir diesen Pfad immer wieder, um herauszufinden, wo das Verhalten vom Erwarteten abweicht - und bringen es anschließend wieder in die richtige Bahn.
Sicherheit und deterministische Logik funktionieren bei vielerlei Software. Die reale Welt funktioniert jedoch nicht so. Im Gegensatz dazu ist KI probabilistisch: Die Antworten sind niemals exakt. Stattdessen nutzt KI Modelle, um Verhalten vorherzusagen, und erzeugt anschließend dieses Verhalten.
Vielleicht ist der beste Weg, dies zu beschreiben, der Vergleich zwischen der Aktualisierung herkömmlicher Software und der Entwicklung von KI. Herkömmliche Software erhält Updates und Patches. KI hingegen lernt, entwickelt sich eigenständig weiter, versteht und verarbeitet Nutzerfeedback ohne manuelle Eingriffe. Dadurch ist herkömmliche Software präziser - KI hingegen flexibler.
Durch die Integration von KI in die Softwareentwicklung erhalten wir das Beste aus beiden Welten: Software, die sowohl präzise als auch flexibel ist. Dieser Artikel wird sich mit dieser Verbindung sowie deren Bedeutung für Entwickler, Ingenieure und die Nutzer ihrer Kreationen beschäftigen.
Die Konvergenz von KI und Software-Engineering
Heutzutage haben Entwickler die Möglichkeit, KI als Bestandteil ihres Programmierprozesses einzusetzen. Neue, KI-gestützte Tools helfen dabei, Code zu erstellen, Fehler zu finden, Testsuite einzurichten sowie Test- und Beispieldaten zu generieren. In gewisser Weise kann KI die Produktivität von Entwicklern steigern, die Zeit, die für repetitive Aufgaben aufgewendet werden muss, reduzieren, Fehler aufdecken und weniger erfahrenen Entwicklern dabei helfen, Code zu schreiben, als hätten sie mehr Erfahrung.
Doch es gibt einen Nachteil: KI ist berüchtigt dafür, unzuverlässig zu sein. Man muss ihre Ergebnisse überprüfen können. Aktuell arbeitet die KI mit einer scheinbaren Selbstgewissheit, die dazu führt, dass ihre Ergebnisse richtig erscheinen - auch wenn sie es nicht sind. Wenn man also weder die Fähigkeiten, das Wissen noch die Erfahrung bezüglich des Themas hat, um das man die KI bitten will zu arbeiten, wird man nicht erkennen können, wann sie Fehler macht.
Dennoch kann KI dabei enorm helfen, Code zu entwickeln, zu warten und zu testen. Zwar profitiert nicht alles davon, aber es gibt Stellen im Prozess, an denen KI eingreifen kann und so mehrere Stunden - sogar Tage - an Arbeitsaufwand einsparen kann.
Aber es geht nicht nur darum, Code zu produzieren - es geht auch um den entstandenen Code selbst. Die Verzahnung von KI und Softwareentwicklung wird es Entwicklern ermöglichen, intelligentere, nutzerzentrierte Anwendungen zu erstellen. Die Nutzererfahrung mit solcher Software wird flexibler und dynamischer sein als bei herkömmlichen, manuell programmierten Anwendungen.
Im Laufe der Zeit werden wir sehen, wie einige Anwendungen dynamisch auf Basis von Echtzeit-Feedback der Nutzer weiterentwickelt werden - und wie bestimmte Softwareprogramme Fehler sowie Unvereinbarkeiten bereits im Voraus beheben, bevor die Nutzer damit konfrontiert werden. Es wird niemals perfekt sein, aber es wird definitiv dazu beitragen, die Software zu verbessern.
KI bei alltäglichen Softwareaufgaben: Welchen echten Nutzen gibt es?
Das klingt alles gut, oder? Aber kommen wir zum Wesentlichen: Was hat es mit KI in der Softwareentwicklung auf sich, dass Entwicklern ein paar zusätzliche Stunden bleiben, um Doctor Who zu schauen, mit dem Hund zu spielen oder - ich weiß, das klingt unvernünftig - zu schlafen? Schauen wir uns fünf Bereiche an, die mir dazu einfallen.
Automatisierung wiederholender Aufgaben
Es gibt unzählige sehr langweilige, alltägliche Aufgaben, die die Fähigkeiten eines Entwicklers erfordern - aber keineswegs Spaß machen. Ein Beispiel dafür ist das Schreiben repetitiver Codeabschnitte.
Schon lange können Programmierer ihre IDEs so einrichten, dass Codeblöcke automatisch ergänzt werden - ähnlich wie bei Makros. Doch KI kann die Struktur und Absicht von Codeblöcken erkennen und dabei helfen, sie zu generieren - entweder im Stil des Programmierers oder der Organisation - ohne dass dazu eine vorherige Programmierung nötig wäre. Sie könnte beispielsweise vorschlagen: „Ich habe schon oft gesehen, dass Sie Code in dieser Form schreiben. Möchten Sie, dass ich ihn für Sie ausarbeite?“
Das kann Entwicklern zwar dabei helfen, sich auf die kreativeren Aufgaben zu konzentrieren, doch es kann auch für Konsistenz im Code sorgen, ohne dass der Entwickler versuchen muss, den Code in ein restriktives Muster zu zwängen.
Prädiktive Analyse und verbesserte Softwarezuverlässigkeit
Hier kann KI das Verhalten von Code anhand von Mustern und Trends vorhersagen. KI-Tools können dazu genutzt werden, Überlastungen des Systems vorherzusagen, das Verhalten der Nutzer zu antizipieren, das Nutzererlebnis zu optimieren sowie präventive Wartungsmaßnahmen in Bereichen durchzuführen, die Verbesserungen benötigen. Ein weiterer großer Vorteil ist, dass der Code aktualisiert werden kann, um den Mindestanforderungen zu entsprechen - insbesondere wenn sich die Plattformen, auf denen er läuft, ändern und aktualisieren.
Abgesehen davon, dass Programmierzeit eingespart wird, kann die Software fast ganz von selbst zuverlässiger und widerstandsfähiger gemacht werden.
Beschleunigung des Entwicklungs-/Testzyklus
Code muss immer getestet werden. Der übliche Zyklus beinhaltet etwas Programmieren, etwas Testen, etwas Fehlerbehebung - und so weiter. Doch da KI-Systeme das Verhalten von Software vorhersagen können, könnten sie Fehler erkennen, bevor überhaupt mit dem Testen begonnen werden muss.
Entwicklungsumgebungen konnten schon lange Syntax- und Typkonvertierungsfehler erkennen - dazu ist jedoch Kenntnis der Sprachstruktur erforderlich. Sollten Entwicklungsumgebungen künftig auch logische Fehler erkennen können, würde dies dazu beitragen, die Code-Implementierung zu beschleunigen und die Anzahl der für ein Projekt notwendigen Korrekturschritte zu reduzieren.
Reduzierung der Software-Wartungskosten
Die meisten Softwareprojekte erfordern nach ihrer Fertigstellung eine nahezu kontinuierliche Wartung, um mit entdeckten Fehlern, Plattformänderungen sowie Leistungsproblemen Schritt zu halten. Ich habe eine Software entwickelt, die Spenden an gemeinnützige Organisationen erleichtert. Doch mindestens 80 Prozent meiner Zeit verbringe ich nicht damit, auf Anfragen der Nutzer zu reagieren oder neue Funktionen hinzuzufügen, sondern damit, den Code ständig an die sich ändernden Anforderungen der Zahlungsgateways anzupassen. Würde ich diesen mühsamen und undankbaren Wartungsaufwand reduzieren können, könnte ich den Nutzern deutlich mehr Mehrwert bieten.
Den menschlichen Aspekt bewahren
Trotz der Einführung von KI in die Entwicklungsumgebung deuten alle Anzeichen darauf hin, dass Programmierer - echte, menschliche Programmierer - in absehbarer Zukunft die meiste Software entwickeln werden.
Die Verringerung des Zeitaufwands sowie der mühsamen Arbeit kann Entwicklern sicherlich dabei helfen, leistungsfähig zu bleiben. Doch KI-Systeme können auch die Gesamtleistung des Teams überwachen und Manager benachrichtigen, falls ein Teammitglied überlastet ist oder Gefahr läuft, auszubrennen. Zudem können sie dazu beitragen, die Aufgaben im Team neu zu verteilen, sodass jedes Mitglied nach seinen Stärken arbeitet - außerdem unterstützen sie bei der Planung und Ressourcenallokation.
Herausforderungen und Grenzen der KI in der Softwareentwicklung
Wie bei jeder Zunahme der technologischen Komplexität gibt es Probleme. In diesem Abschnitt werde ich über drei Problembereiche sprechen.
Erhöhte Komplexität und größere Wartungsaufgaben
Das ist meine größte Sorge bezüglich KI in der Softwareentwicklung: Je mehr wir KI zur Erstellung von Code einsetzen, desto weniger werden wir verstehen, wie alles eigentlich funktioniert. Wenn Sie schon einmal ein Projekt von jemand anderem übernommen haben - insbesondere wenn die betreffende Organisation oder der Entwickler nicht mehr zur Beratung zur Verfügung stehen - dann wissen Sie, was ich meine.
Was von der KI erzeugt wird, ist im Vergleich zu dem Code, den Sie und Ihr Team schreiben, eher eine „Black Box“. Die Gefahr besteht darin, dass es für Menschen nach der Erzeugung viel schwieriger wird, diesen Code zu warten. Fallen Sie nicht in die Falle, zu erwarten, dass die KI ihre eigene Software selbst wartet. Wenn der Code der KI fehlerhaft ist, liegt es ganz an Ihnen und Ihrem Team, herauszufinden, was schiefgelaufen ist, und es zu beheben.
Datenabhängigkeit
KI stützt sich auf große Datenmengen, um ihre Modelle zu erstellen. Wenn Sie kein öffentliches Modell verwenden - beispielsweise wenn Sie an etwas arbeiten, das die spezifische Fachkompetenz Ihres Unternehmens erfordert - reicht die Gesamtmenge der verfügbaren Daten möglicherweise nicht aus, um eine KI zu trainieren.
Außerdem werden KI-Systeme anhand umfangreicher Datensätze trainiert; nicht alle dieser Daten erreichen das Qualitätsniveau, das für die von Ihnen beabsichtigte Arbeit erforderlich ist.
Ich erinnere die Leute immer wieder daran, dass die Einbindung einer KI in ein Softwareentwicklungsprojekt so ist, als würde man eine Gruppe talentierter Praktikanten einstellen. Sie mögen zwar klug und schnell sein, doch ab und zu werden sie Fehler machen - und nach ihrem „Abgang“ müssen Sie die entstandenen Probleme wieder in Ordnung bringen. Auch wenn Ihre KI nicht einfach verschwindet, hinterlässt sie Ihnen Probleme, die sie selbst nicht lösen kann.
Ethische Bedenken
In „Ist KI im Software-Engineering am Beginn eines ‚Oppenheimer-Moments‘?“ habe ich die ethischen Probleme erörtert, die KI für Softwareentwickler mit sich bringt. Man sollte bedenken, dass Programmierer nicht darauf trainiert sind, mit ethischen Fragen umzugehen. Tatsächlich habe ich neben meinem Hauptfach Informatik auch Ethik sowie politische Philosophie als Nebenfach studiert - damals war ich jedoch der einzige Informatikstudent, der dies als Nebenfach gewählt hatte. (Ehrlich gesagt: Ich wählte dieses Nebenfach, weil ein Mädchen, das mir gefiel, Philosophiekurse belegte. Also war sogar mein Nebenfach Ethik nicht ganz „ethisch“.)
Programmierer werden dazu ausgebildet, kompetente Techniker zu werden - doch die gesellschaftliche Relevanz spielt in den meisten Informatik-Lehrplänen keine Rolle. Selbstgelehrte Programmierer und Entwickler haben möglicherweise sogar noch weniger Kenntnisse in Ethik. Daher ist es unrealistisch, von einer Armee talentierter Techniker zu erwarten, dass sie historische ethische Aspekte erkennen und an vorderster Front dabei sind, diese zu berücksichtigen.
Unternehmen, die KI einsetzen, sollten entweder damit rechnen, die Ausbildung ihrer technischen Teams auch auf Aspekte der gesellschaftlichen Auswirkungen auszudehnen, oder Beratungsexperten hinzuziehen, die die Entwickler dabei unterstützen und anleiten, wenn sie sich in dieses völlig unerforschte Gebiet der menschlichen Faktoren begeben.
Werkzeuge und Plattformen für künstliche Intelligenz-gestützte Softwareentwicklung
Glücklicherweise müssen Entwickler und Organisationen ihre „AI-Reise“ nicht damit beginnen, alle notwendigen Werkzeuge selbst zu entwickeln. Es wurden viele Investitionen in die Grundlagenforschung sowie in die Entwicklung praktischer Werkzeuge und Bibliotheken getätigt, die lizenziert und in Projekte integriert werden können.
In diesem Abschnitt des Ressourcenleitfadens gebe ich Ihnen einen kurzen Überblick über fünf Kategorien von Werkzeugen, die Sie vermutlich nutzen möchten, und nenne einige der führenden Anbieter in jedem Bereich. Dadurch erhalten Sie einen konkreten, praktischen Ausgangspunkt für Ihr nächstes Projekt.
Allzweck-Machine-Learning-Frameworks
Tools in dieser Kategorie bieten grundlegende Strukturen und Funktionen für das Entwerfen, Trainieren und Bereitstellen von Maschinenlernmodellen.
- Google TensorFlow: Eine End-to-End-Open-Source-Plattform für maschinelles Lernen, die das Erstellen und Bereitstellen von ML-Modellen erleichtert.
- Facebook PyTorch: Eine Plattform auf Basis dynamischer Rechengraphen, die Flexibilität beim Erstellen von Deep-Learning-Modellen bietet.
- Keras: Eine hochlevelige API für neuronale Netze, in Python geschrieben und in der Lage, auf TensorFlow, PyTorch und anderen Frameworks zu laufen.
Cloud-basierte KI-Entwicklungsplattformen
Diese Plattformen bieten Cloud-Infrastrukturen zum Entwickeln, Trainieren und Bereitstellen von Machine-Learning-Modellen im großen Maßstab - oft in Kombination mit anderen Cloud-Diensten.
- Google Vertex AI: Eine integrierte Plattform auf Google Cloud, die umfassende Tools und Dienste bereitstellt, um KI- und maschinellen Lernmodelle für verschiedenste Datensätze zu entwickeln, einzusetzen und zu skalieren.
- Amazon AWS SageMaker: Ein vollständig verwalteter Service, der Entwicklern dabei hilft, Machine-Learning-Modelle zu erstellen, zu trainieren und bereitzustellen.
- Microsoft Azure Machine Learning: Eine Reihe von Cloud-Diensten, die maschinelle Lernwerkzeuge nutzen, um Modelle schneller zu trainieren und bereitzustellen. Man kann es sich als „Machine Learning als Service“ vorstellen.
KI für Code- und Softwareentwicklung
Die Tools in diesem Abschnitt helfen Entwicklern beim Codieren, indem sie Vorschläge, Autovervollständigung sowie automatisierte Codeanalysen auf Basis von KI anbieten.
- OpenAI Codex: Dieses Tool bildet die Grundlage für Anwendungen wie GitHub Copilot und hilft Entwicklern dabei, mithilfe von KI-gestützten Vorschlägen schneller Code zu schreiben.
- GitHub Copilot: Ein KI-gestützter Code-Assistent, der dem Entwickler beim Tippen ganze Zeilen oder Codeblöcke vorschlägt. Dadurch wird der Codierungsprozess beschleunigt und sichergestellt, dass bewährte Vorgehensweisen eingehalten werden.
- Snyk Code: Bietet Entwicklern eine automatisierte Codeanalyse, die Erkennung von Sicherheitslücken sowie Empfehlungen zur Behebung, indem es umfangreiche Open-Source-Projekte analysiert.
Lassen Sie sich von diesen Angeboten nicht verwirren. GitHub Copilot wird von OpenAI Codex angetrieben. Während OpenAI Codex ein allgemein einsetzbares KI-Tool für zahlreiche Programmieraufgaben ist und in verschiedene Plattformen integriert werden kann, handelt es sich bei GitHub Copilot um ein spezialisiertes Tool zur Echtzeit-Codevervollständigung und -unterstützung innerhalb der Visual Studio Code-Umgebung.
Snyk Code konzentriert sich auf die automatisierte Code-Analyse sowie die Erkennung von Sicherheitslücken, indem es umfangreiche Open-Source-Projekte analysiert.
Vortrainierte Modelle und Plattformen
Diese Tools bieten Modelle, die bereits auf riesigen Datenmengen trainiert wurden. Dadurch können Entwickler diese Modelle für spezifische Aufgaben weiteranpassen, ohne bei Null anfangen zu müssen.
- Hugging Face’s Transformers: Eine Bibliothek, die vortrainierte Modelle hauptsächlich für Aufgaben der natürlichen Sprachverarbeitung bereitstellt - mit Schwerpunkt auf Transformer-Architekturen.
- spaCy: Eine Open-Source-Softwarebibliothek für fortgeschrittene Verarbeitung natürlicher Sprache in Python, bekannt für ihre Geschwindigkeit und Effizienz.
Werkzeuge für das neuronale Architektursuchen
Schließlich automatisieren Werkzeuge in dieser Kategorie den Prozess der Findung der optimalen neuronalen Netzwerkarchitektur für ein bestimmtes Datenset oder eine bestimmte Aufgabe. (Hinweis: Diese Kategorie von Werkzeugen wird oft als NAS abgekürzt. Dieses NAS unterscheidet sich stark vom NAS, das für Network Attached Storage steht.)
- AutoKeras: Eine open-Source-Softwarebibliothek zur Automatisierung des maschinellen Lernens sowie zur Unterstützung bei der Auswahl des richtigen Modells für Ihr Datenset.
- Googles AutoML: Bietet Cloud-Lösungen, die das Entwerfen und Optimieren von maschinellen Lernmodellen anhand gegebener Datensätze automatisieren.
Von der Landschaft an KI-gesteuerten Tools und Plattformen in der Softwareentwicklung als „umfangreich“ zu sprechen, wäre eine starke Untertreibung. Generative KI sowie KI im Allgemeinen sind zur heißesten Technologietrend geworden - und zeigen keinerlei Anzeichen einer Eintrübung. Da die Entwicklungsanforderungen ständig zunehmen, suchen Entwickler nach den am besten geeigneten Werkzeugen für die Umsetzung ihrer Projekte. Wir haben Ihnen nur einen kleinen Ausschnitt der verfügbaren Ressourcen gezeigt.
Beachten Sie, dass es sich um eine sehr dynamische Umgebung handelt. Bei der Erstellung dieser Liste sind uns zahlreiche Tools aufgefallen, die einst (also im vergangenen Jahr) recht beliebte Ressourcen waren - doch sie wurden übernommen, in andere Projekte integriert oder einfach eingestellt, da ihre Open-Source-Entwickler neue, lukrativere Möglichkeiten gefunden haben.
Es ist nicht nur wichtig, Fähigkeiten im Umgang mit den verwendeten Tools zu entwickeln: Unternehmen und Entwickler müssen auch das Verständnis für ständige Veränderungen in ihr Fähigkeitsprofil einbauen, um sich an einen Markt sowie an Technologien anpassen zu können, die mit Höchstgeschwindigkeit weiterentwickelt werden.
Ausblick: Die Zukunft der KI in der Softwareentwicklung
Die Verzahnung von künstlicher Intelligenz und traditioneller Softwareentwicklung ist kein vorübergehender Trend. Sie bietet zu viele „leichte Mehrwerte“, als dass man sie ignorieren könnte. Doch obwohl sie neue Effizienzgewinne ermöglicht, bringt sie auch die zahlreichen Herausforderungen mit sich, die wir in diesem Artikel sowie im gesamten Sonderbeitrag besprochen haben.
Wenn wir in die Zukunft blicken, zeichnen sich mehrere wichtige Trends und Prognosen ab:
- Entwicklung mit Fokus auf KI - wobei maschinelles Lernen im Zentrum der Projekte steht
- Selbstadaptierende Software, die in Echtzeit anhand der Bedürfnisse der Nutzer weiterentwickelt wird
- Kollaborative KI, die mit Entwicklern zusammenarbeitet und den Kontext sowie die Teamdynamik versteht
- Ein Fokus auf ethische und verantwortungsvolle KI, die Transparenz und Fairness in den Vordergrund stellt
- KI-gestützte Cybersicherheit, die Bedrohungen proaktiv erkennt und abwehrt
- Individuell anpassbare KI-Modelle, die spezifischen Bedürfnissen gerecht werden - und so die Vorteile der KI für alle zugänglich machen
- Schwerpunkt auf kontinuierlichem Lernen für Entwickler angesichts der stetigen Entwicklung der KI
- Code und Lösungen, die hauptsächlich von KIs geschrieben wurden und für menschliche Entwickler undurchsichtig sind
Es ist sowohl aufregend als auch ein wenig beunruhigend, an die Auswirkungen zu denken, die KI für die Softwareentwicklung haben wird. Wie bei jedem technologischen Fortschritt werden auch hier Herausforderungen auftreten. Doch wenn das vergangene Jahr ein Indikator ist, dann ist die Integration von KI in die Softwareentwicklung ein Prozess voller Chancen - einer, der die Grenzen dessen, was Software leisten kann, neu definieren wird.
Sie können meine täglichen Projektupdates in den sozialen Medien verfolgen. Abonnieren Sie unbedingt meinen wöchentlichen Newsletter auf Substack und folgen Sie mir auf Twitter unter @DavidGewirtz, auf Facebook unter Facebook.com/DavidGewirtz, auf Instagram unter Instagram.com/DavidGewirtz sowie auf YouTube unter YouTube.com/DavidGewirtzTV.
