Vorlesung 38 — Programmierung: Wie KI die Softwareentwicklung verändert

Kursthema: KI · Block: Zukunft · Zielgruppe: interessierte Erwachsene · Länge: 50 Minuten (3 Teile)

Teil 1 (20 Minuten): Grundlegendes Verständnis — Analogie und Übersicht

Zeit: ~20 Minuten

Seit wenigen Jahren haben große Sprachmodelle, die auch auf Programmcode trainiert wurden, Werkzeuge hervorgebracht, die Programmiererinnen und Programmierer direkt beim Schreiben unterstützen. Zwei weithin bekannte Beispiele sind GitHub Copilot, ein praktisches Plugin für Editoren, das Code-Vervollständigungen anbietet, und OpenAIs Codex, das als Modellbasis viele automatische Codefunktionen liefert. Diese Angebote werden in der technischen Debatte häufig als "intelligente Autovervollständigung" oder als "virtueller Pair-Programmierer" beschrieben [2], [1]. DeepMinds AlphaCode hat darüber hinaus gezeigt, dass große Modelle in einigen Fällen ganze Lösungsansätze für algorithmisch definierte Aufgaben erzeugen können [3].

Eine nützliche Analogie lautet: KI-gestützte Entwicklungswerkzeuge sind heute wie deutlich leistungsfähigere Versionen der Autovervollständigung in Textprogrammen. Ein herkömmliches Autocomplete schlägt einzelne Wörter vor; moderne Systeme versuchen, ganze Funktionen, Kommentare oder Tests zu liefern. Anders als ein Compiler, der das Verhalten des bereits geschriebenen Codes formal überprüft, liefert die KI oft Vorschläge auf Basis von Mustern, die sie in Trainingsdaten gelernt hat. Das Ergebnis ist eine Mischung aus Hilfestellung und Unsicherheit: die Vorschläge können sehr nützlich sein, aber auch unvollständig oder falsch.

Praktische Beispiele: Entwicklerinnen können mittels kurzer natürlicher Beschreibungen eine Funktion formulieren lassen, eine bestehende Funktion in eine andere Programmiersprache übersetzen oder Vorschläge für Unit-Tests erhalten. Tools für automatisierte Testgenerierung existierten bereits vor LLMs; ein Beispiel aus der Forschung ist EvoSuite, das automatisch Tests für Java-Klassen erzeugt und damit zeigt, dass automatisierte Testproduktion kein rein neues Thema ist, wohl aber durch moderne KI erweitert wird [5].

Wichtig ist, dass diese Werkzeuge nicht autonom ganze Softwaresysteme verantwortungsvoll planen und betreiben. Sie liefern Vorschläge und automatisieren Teilaufgaben, aber die Verantwortung für Systemarchitektur, Anforderungen, Integration, Sicherheit und rechtliche Fragen bleibt beim Menschen. In den folgenden Abschnitten gehen wir genauer darauf ein, welche Aufgaben KI heute übernehmen kann, welche Fähigkeiten für Menschen weiterhin zentral sind und wie sich der Beruf des Programmierers konkret verändert.

Teil 2 (20 Minuten): Fachbegriffe, Mechanik und Auswirkungen auf Entwicklungsaufgaben

Zeit: ~20 Minuten

Um die Veränderungen in der Praxis einzuordnen, führen wir einige für die Softwareentwicklung relevante Begriffe ein und erläutern ihre Bedeutung im Kontext von KI-gestützten Werkzeugen. "Programmsynthese" bezeichnet die automatische Erzeugung von Programmcode aus einer Beschreibung; moderne LLM-basierte Angebote sind praktische Formen dieser Idee, jedoch keine formale Spezifikation-basierten Synthesizer im klassischen Sinne. "Code-Completion" meint adaptive Vorschläge während des Tippens; "Code-Translation" bezeichnet das Überführen vorhandener Implementierungen in eine andere Programmiersprache. "Testautomatisierung" umfasst Werkzeuge, die Testfälle erzeugen oder ausführen, und kann sowohl durch klassische Suchverfahren als auch durch datengetriebene Modelle erfolgen [5].

Ergänzend sind zwei Unterscheidungen wichtig: erstens die Trennung zwischen "generativen" und "analytischen" Aufgaben. Generative Aufgaben umfassen das Erzeugen von Code oder Kommentaren; analytische Aufgaben umfassen statische Analyse, Linting, Performance-Diagnose und ähnliches. Moderne KI-Werkzeuge sind oft stärker bei generativen Aufgaben, während etablierte Tools bei formaler Analyse und Performance-Messung weiterhin eine wichtige Rolle spielen. Zweitens ist die Abwägung zwischen "lokaler" und "globaler" Sicht relevant. Viele KI-Vorschläge werden auf Basis eines begrenzten Codeausschnitts erstellt; globale Aspekte wie Architekturentscheidungen, Systemgrenzen und Langzeitwartbarkeit bedürfen menschlicher Einsicht und oft zusätzlicher Tools zur Ganzheitlichen Analyse (z. B. Architektur-Dashboards, CI/CD-Pipelines, Monitoring).

Wie verändern sich konkrete Aufgaben in Projekten? In der Praxis lassen sich heute die folgenden Muster beobachten und belegen:

- Unterstützung beim Schreiben von Routinen und Boilerplate-Code: KI liefert wiederkehrende Konstrukte schneller und kann so Routinearbeit reduzieren. GitHub Copilot wird genau in diesem Kontext als Tool beworben und in Entwickler-Workflows integriert [2].
- Hilfe bei Problemlokalisierung und Codeverständnis: KI-Modelle können Kommentare, Erklärungen und Zusammenfassungen generieren, die das Onboarding und das Verständnis fördern; die Qualität dieser Erklärungen ist jedoch variabel und bedarf Validierung durch Menschen [1].
- Automatische Erstellung einfacher Tests oder Testgerüste: Werkzeuge zur Testgenerierung gibt es sowohl als forschungsgetriebene Lösungen wie EvoSuite als auch als neue KI-basierte Dienste; sie reduzieren repetitive Testarbeit, ersetzen aber nicht die Prüfung von Testumfang und -qualität durch Entwicklerinnen [5].
- Unterstützung bei Programmierwettbewerben oder algorithmischen Aufgaben: AlphaCode demonstrierte, dass große Modelle in manchen strukturierten Aufgabenkontexten konkurrenzfähigen Code erzeugen können; dies ist jedoch eine spezielle Nische mit klar definierten Eingaben und erwarteten Ausgaben [3].

Aus diesen Veränderungen ergeben sich Anforderungen an Kompetenzen von Menschen: Fachwissen in Softwarearchitektur, Anforderungsanalyse, Problemdomänen, Sicherheit und rechtliche Rahmenbedingungen bleibt zentral. Diese Bereiche sind in etablierten Sammlungen unseres Fachwissens beschrieben, etwa im Guide to the Software Engineering Body of Knowledge (SWEBOK), der Software-Engineering-Fähigkeiten und Verantwortlichkeiten systematisiert [4]. Dort sind Themen wie Requirements Engineering, Architekturentwurf, Qualitätssicherung und Wartbarkeit als Kernkompetenzen verankert — Bereiche, die KI heute allenfalls unterstützend adressiert.

Technische Fähigkeiten allein genügen nicht: hinzu kommen Fertigkeiten im prompt-basierten Arbeiten mit Modellen, der Auswertung und Validierung automatisch erzeugter Artefakte sowie Kenntnisse im sicheren Einsatz (z. B. Erkennen fehlerhafter oder unsicherer Vorschläge). Außerdem wachsen Aufgaben in der Tool-Integration: der Einbau von KI-Diensten in CI/CD-Pipelines, Monitoring der KI-Ausgaben und das Management von Trainings- oder Nutzungsdaten sind inzwischen Teil moderner Entwicklungsprozesse.

Teil 3 (10 Minuten): Konkrete Anwendungen, Grenzen und drei kleine Denkaufgaben

Zeit: ~10 Minuten

Anwendungen, die heute in der Praxis breit diskutiert oder eingesetzt werden, sind unter anderem die automatisierte Codevervollständigung in IDEs, Generierung von Boilerplate, schnelle Prototyp-Erstellung, Code-Refactoring-Vorschläge, Vorschläge für Unit-Tests und Hilfen beim Übersetzen von APIs oder Sprachen. Beispiele aus der Industrie sind GitHub Copilot als Editor-Integration [2], OpenAIs Codex als Ausgangspunkt für Code-APIs [1] und Forschungsergebnisse, die zeigen, dass Modelle in strukturierten Wettbewerbsumgebungen relevante Lösungen anbieten können (AlphaCode) [3].

Grenzen und Risiken sind klar belegbar und müssen bei Einsatzentscheidungen berücksichtigt werden. Modelle liefern nicht selten fehlerhaften oder unsicheren Code; sie geben Vorschläge basierend auf Wahrscheinlichkeiten, nicht auf formaler Korrektheit. Außerdem können Fragen von Lizenzierung und Urheberrecht entstehen, wenn Trainingsdaten öffentliche Code-Repositories enthalten; die Diskussionen dazu sind aktiv und technisch sowie rechtlich komplex. Ferner sind Skaleneffekte und Produktionsreife unterschiedliche Ebenen: eine intelligente Vervollständigung ist etwas anderes als ein vollständig getestetes, robustes Produktionsmodul.

Um das Gelernte zu festigen, drei kurze Denkaufgaben für die Seminargruppe:

1) Nutzen und Prüfung: Sie erhalten von einem KI-Tool eine vorgeschlagene Implementierung einer Sortierfunktion. Beschreiben Sie in drei Schritten, wie Sie die Vorschlagsqualität prüfen würden, bevor der Code in das Hauptrepository gelangt. Lösungserwartung: Testen mit Edge-Cases, statische Analyse/Code-Review, Überprüfung auf Performance- und Stabilitätsannahmen.

2) Verantwortlichkeit: Ein KI-Tool schlägt Code vor, der später zu einer Sicherheitslücke führt. Welche Rollen und Prozesse in einem typischen Software-Engineering-Team müssen vorhanden sein, damit solche Vorfälle minimiert werden? Lösungserwartung: Rollen (Maintainer, Security-Reviewer), Prozesse (Code Review, Security-Scanning, CI-Tests), Logging und Post-Mortem.

3) Kosten-Nutzen-Abwägung: In welchem Projektstadium ist der Einsatz eines KI-Codetools am effektivsten — Prototyping, Feature-Entwicklung, Wartung — und warum? Lösungserwartung: Prototyping und Boilerplate sind oft hoher Nutzen bei geringem Risiko; bei sicherheitskritischen Produktionspfaden ist Vorsicht geboten.

Abschließend lässt sich festhalten: KI ändert das tägliche Handwerkszeug von Entwicklerinnen und Entwicklern und automatisiert Teile der Routinearbeit. Die Kernverantwortung für Systementwurf, Anforderungen, Qualität und Sicherheit verbleibt weitgehend menschlich. Institutionelle Kenntnisse, methodische Disziplin und die Fähigkeit, KI-Ausgaben kritisch zu bewerten, werden künftig zu den zentralen Fähigkeiten im Berufsfeld gehören. Wahrnehmungen und Einstellungen zur Technologie entwickeln sich weiterhin; erste Umfragen zeigen breites Interesse in der Entwicklergemeinschaft an solchen Werkzeugen, gleichzeitig bestehen klare Erwartungen an Kontrolle und Verantwortung [6].