GenAI in der Softwareentwicklung: Chancen und Herausforderungen
Das wichtigste zuerst: KI hilft beim Produzieren von Code. Das ist zweifellos ein signifikanter Fortschritt und wird vieles ändern. Es gibt zahlreiche Werkzeuge, die man ausprobieren kann, um sich davon selbst zu überzeugen. Doch auch wenn es zunächst paradox erscheint, ist das Produzieren von Code nicht das wesentliche Problem bei der Entwicklung von Software. Das wirkliche Problem ist, herauszufinden, welcher Code geschrieben werden muss.
Sebastian
Technoloy
•
Jul 24, 2024
In der Softwareentwicklung müssen die fachlichen Anforderungen bekannt sein. In der Praxis sind diese jedoch oft viel zu unklar, um erfolgreich Software entwickeln zu können. Selbst wenn Anforderungen klar erscheinen, zeigen sich oft später im Prozess Missverständnisse, etwa durch nicht bedachte Teilschritte, neu definierte Prozesse oder erst später ins Boot geholte Stakeholder. All das resultiert in aufwändigen Anpassungen und Änderungswünschen.
Der entscheidende Faktor in der Softwareentwicklung ist also nach wie vor der Mensch. Unsere Arbeit findet z.B. immer im Team statt, bestehend aus Entwickler:innen, UI- und UX-Expert:innen, Architekt:innen sowie Product Owners (POs). Kommunikation spielt dabei eine zentrale Rolle, denn Aufgaben müssen verteilt und organisiert werden, und diese Organisation beeinflusst auch die Software. Das Gesetz von Conway – benannt nach de, US-amerikanischen Informatiker Melvin Edward Conway – besagt: „Die Architektur der Software entspricht den Kommunikationsbeziehungen des Teams“ und darauf kann eine KI – noch – keinen Einfluss nehmen.
Das Produzieren von Code zu vereinfachen, ist hingegen nichts Neues. Es gibt eine lange Historie technischer Ansätze, um die Softwareentwicklung zu erleichtern, typischerweise durch neue Abstraktionsebenen. Von Binärcode über Assembler bis hin zu modernen Programmiersprachen und Frameworks – jede Stufe hat die Entwicklung vereinfacht. KI ist ein weiterer Schritt auf diesem Weg und hebt die Entwicklung auf eine neue Abstraktionsstufe. Prototypische Werkzeuge wie GPT Engineer können bereits ganze Anwendungen anhand von Spezifikationen erstellen und dabei Rückfragen stellen, falls Anforderungen unklar sind.
Softwareentwicklung mit klaren Anforderungen ist folglich nicht das Problem. Daher wird der weniger problematische Teil der Softwareentwicklung durch KI vereinfacht, nicht allerdings der Kern.
Einsatzgebiete von GenAI in der Softwareentwicklung
Einfach definierte Softwareprojekte: Bei klaren Anforderungen kann GenAI sinnvoll eingesetzt werden, um solche Projekte effizient umzusetzen.
Effizienzsteigerung: GenAI beschleunigt den Entwicklungsprozess und automatisiert manuelle Tätigkeiten, was die Effizienz erhöht.
Qualitätssicherung: GenAI kann mithilfe von Machine-Learning-Modellen die Qualität von Code automatisch überprüfen und Anomalien oder potenzielle Fehler erkennen.
Testfallgenerierung: Durch die Generierung von Testfällen kann die Testabdeckung verbessert und somit qualitativ hochwertigere Softwareanwendungen in kürzerer Zeit entwickelt werden.
Datenaufbereitung und -analyse: KI-Algorithmen können Daten automatisch extrahieren, bereinigen und in ein verarbeitbares Format bringen.
Nachteile von GenAI in der Softwareentwicklung:
Der Mensch bleibt unersetzlich: Aufgaben müssen verteilt und organisiert werden, und die Organisation beeinflusst die Software.
Menschliche Ebene als zentrale Herausforderung: Viele Probleme in Projekten haben ihre Ursache in der menschlichen Ebene, wo KI nicht helfen kann.
Unklare Anforderungen und Prozesse: Bei unklaren Anforderungen treten langfristig Komplikationen auf, da entscheidende Parameter nicht berücksichtigt werden.
Sicherheitsrisiken: Studien zeigen, dass Entwickler:innen mit KI-Unterstützung ihren Code als sicherer einschätzen, obwohl er tatsächlich weniger sicher ist.
Die Zukunft von GenAI in der Softwareentwicklung
GenAI wird die Größe der Software-Teams subjektiv eher erhöhen, um noch komplexere Systeme zu realisieren und mehr Bereiche mit Software zu unterstützen. Wenn sich der Trend fortsetzt, werden wir mit KI noch komplexere Systeme bauen und die Teams entsprechend wachsen. Effizienz bedeutet schnelle Lieferung. GenAI kann Entwicklungsprojekte vor allem in der Effizienz unterstützen und einfache Arbeiten abnehmen. Dadurch kann ein Projekt schneller vorangetrieben werden und der Kunde erhält in kürzerer Zeit ein sehr gutes Ergebnis. Das Kernproblem der Softwareentwicklung ist jedoch nicht das Produzieren von Code, sondern das Verstehen, was implementiert werden soll. Die Produktivitätsvorteile durch GenAI lösen dieses Problem nicht. GenAI wird somit die Softwareentwicklung wesentlich ändern, aber nicht das Kernproblem lösen.