Enable javascript in your browser for better experience. Need to know to enable it? Go here.
Blogs Banner

Künstliche Intelligenz in der Softwareentwicklung

In diesem Artikel wird ein (nicht allzu fernes) Zukunftsszenario der KI-gestützten Softwareentwicklung beschrieben, das auf der folgenden Hypothese beruht: Die Konzepte der Softwareerstellung bleiben gleich, aber die Pipeline wird sich grundlegend verändern. In fast allen Bereichen wird KI SoftwareentwicklerInnen unterstützen und ihre Arbeit effizienter, effektiver und angenehmer gestalten.

Unsere Hypothese wird durch Prognosen untermauert, denen zufolge sich der Umsatz der KI-Branche bis zum Jahresende auf 1,2 Bio. US-Dollar belaufen wird – 70 Prozent mehr als im Vorjahr. Bis 2022 wird KI einen Geschäftswert von 3,9 Bio. US-Dollar generieren. Darüber hinaus haben wir Beobachtungen zu drei wichtigen Trends der letzten zehn Jahre berücksichtigt: Rechenleistung, Daten und komplexe Entwicklertools. 

Die Trends

Mehr Rechenleistung: Dank des einfachen Zugangs zu elastischer Rechenleistung und öffentlichen Clouds können EntwicklerInnen, Unternehmen und Toolanbieter durch Parallelisierung umfangreichere Analysen schneller durchführen. Laut IDC werden 2020 60 Prozent der Gesamtausgaben für IT-Infrastrukturen auf Cloud-Infrastrukturen entfallen.
 
Mehr Daten: Dank der höheren Rechenleistung werden digitale VorreiterInnen in eine bessere Erfassung und Nutzung von Daten investieren – 2018 wurden 90 Prozent der weltweiten Daten erfasst, aber nur ein Prozent wurde genutzt. Bis 2020 soll eine Datennutzung von drei oder vier Prozent erreicht werden.
 
Integrierte und verteilte Systeme: Die Integration nicht vernetzter Systeme mittels APIs und Microservices ermöglicht die Verteilung bislang monolithischer Systeme. Auf diese Weise lassen sich (für die Softwareentwicklung erforderliche) Tools und Prozesse, die auf eine Vielzahl von Systemen an unterschiedlichen Orten verteilt sind, zu einem leistungsstarken Gesamtsystem kombinieren.


intelligent dev tools 2

Der Prozess der Softwareerstellung umfasst drei Phasen, die sich wiederum in neun verschiedene Aufgabenkategorien gliedern. Auffallend ist, dass bei einigen Kategorien stärker in KI-Tools investiert wurde als in anderen. Im Folgenden soll an einigen Beispielen aufgezeigt werden, wie KI-TechnologenInnen im Bereich der Softwareentwicklung durch automatisierte Datenanalyse- und Prognosefunktionen entlastet werden. Die TechnologenInnen können sich damit auf Aufgaben konzentrieren, die Urteilsvermögen und Kreativität erfordern und sich nicht auf Maschinen übertragen lassen.
 
Das Angebot an intelligenten Entwicklungstools nimmt stetig zu. Vermutlich haben die drei Trends und der zunehmende Einfluss der EntwicklerInnen dazu geführt, dass zahlreiche Start-ups Services für EntwicklerInnen anbieten, wie automatisiertes Refactoring und Testen sowie Codegenerierung. Die Entwicklung dieser Tools lässt sich in drei Komplexitätsstufen unterteilen.

Die Komplexitätsstufen 

Auf der untersten Stufe werden die manuellen Aufgaben automatisiert, wodurch sich Zuverlässigkeit und Effizienz der Softwareerstellung erhöhen. Beispielsweise verkürzt die Automatisierung von Tests durch Parallelisierung die Cycle time, was wiederum zu kürzeren Feedbackschleifen führt. Bei der Automatisierung des Deployments sorgen wiederholbare Skripte für mehr Zuverlässigkeit. Allerdings wird das Feedback nach wie vor manuell geprüft und bearbeitet.

Die mittlere Komplexitätsstufe umfasst Tools, bei denen Maschinen anhand festgelegter Regeln Entscheidungen treffen. Ein gutes Beispiel sind Infrastrukturen mit automatischer Skalierung. Maschinen bestimmen, welche Rechenleistung zur Auslastung einer Anwendung benötigt wird, während Menschen konfigurieren, inwieweit die Rechenleistung skaliert werden kann.
 
Auf der höchsten Komplexitätsstufe sind keine menschlichen Eingriffe mehr erforderlich – Maschinen analysieren Daten, lernen aus den Ergebnissen, versetzen Tools in die Lage, sich anzupassen, oder erweitern Regeln, sodass immer komplexere Entscheidungen getroffen werden können. Im Folgenden wird beschrieben, wie KI den Softwareentwicklungszyklus verbessern kann.

Der Softwareentwicklungszyklus 

KI-Anwendungsfälle werden in der Regel auf der Grundlage neuronaler Netze entwickelt, d. h., bei der Entwicklung eines Computersystems stehen das menschliche Gehirn und Nervensystem Modell. Dabei wird ein einzelner Algorithmus erstellt, der die zwischengelagerten Verarbeitungsschritte mehrerer Ebenen des neuronalen Netzes abdeckt und die Eingabedaten direkt in Ausgabe umwandelt. Diese Methode ist erfolgreich und führt bei umfangreichen Stichproben gekennzeichneter Daten zu sehr guten Ergebnissen. Allerdings ist die interne Verarbeitung des Lernvorgangs nicht eindeutig nachvollziehbar, was die Fehlersuche zur Erhöhung der Genauigkeit erschwert.

software development cycle

KI-Unterstützung

Unterstützung bei Ideen: Eine E-Commerce-Website ist hier ein gutes Beispiel. Mitarbeitende analysieren Daten, um herauszufinden, wann und weshalb Bestellvorgänge abgebrochen werden, und um Strategien zur besseren Conversion zu erarbeiten. Künftig könnten Maschinen die Nutzungsdaten mit den Performancedaten koppeln, um festzustellen, ob langsame Vorgänge der Grund für die Abbrüche sind. Außerdem könnten sie fehlerhaften Code ermitteln, durch dessen Korrektur sich die Performance verbessern ließe.
 
Unterstützung bei Tests: Trotz Dokumentation ist es sehr schwierig, Tests für Legacy-Systeme zu schreiben. KI-Tools zur automatisierten Testerstellung, die anhand von Nutzungs- und Analysedaten die Funktionen einer Anwendung abbilden, befähigen Teams, schnell ein Sicherheitsnetz für solche Legacy-Systeme zu entwerfen. Dadurch können TechnologenInnen Änderungen vornehmen, ohne bestehende Funktionen zu beeinträchtigen.
 
Unterstützung bei der Wartung: Ein Großteil der Wartungskosten fließt in die Pflege redundanter Features. Diese Redundanzen zu ermitteln, ist kompliziert und fehleranfällig, weil die Daten manuell mit unterschiedlichen Quellen korreliert werden müssen. KI-Tools, welche die Daten quellenübergreifend verknüpfen und referenzieren, automatisieren die Kennzeichnung unnötiger Funktionen und zugehöriger Codezeilen.
 
Auf den stetigen Wandel der dynamischen Welt der Softwareentwicklung sollten Unternehmen sich folgendermaßen vorbereiten:
  • Elastische Infrastrukturen erkennen und nutzen, um Ressourcen je nach Auslastung jederzeit zu ergänzen oder zu entfernen 
  • Teams die strategische Erfassung und Verarbeitung von Daten ermöglichen, denn Informationen werden immer wichtiger, und angesichts neuer Technologien (Sprache, Gebärden usw.) wird ihr Volumen noch zunehmen
  • Regelbasierte, intelligente und lernfähige Tools zur KI-gestützten Softwareerstellung in Investitionsstrategien einbeziehen
Eine gekürzte Fassung dieses Artikels wurde im Mint Magazin veröffentlicht.

Hinweis: Die in diesem Artikel geäußerten Aussagen und Meinungen sind die der Autor:innen und spiegeln nicht zwingend die Position von Thoughtworks wider.

Bleiben Sie auf dem Laufenden mit Hilfe den neuesten Insights