Quality Assurance of LLM-generated Code: Addressing Non-Functional Quality Characteristics

Diese Studie identifiziert eine Diskrepanz zwischen akademischem Fokus, industriellen Prioritäten und dem tatsächlichen Verhalten von LLMs hinsichtlich nicht-funktionaler Code-Qualität und fordert die Integration von Qualitätssicherungsmechanismen in Generierungs-Pipelines, um technische Schulden zu vermeiden.

Xin Sun, Daniel Ståhl, Kristian Sandahl, Christoph Kessler

Veröffentlicht Fri, 13 Ma
📖 4 Min. Lesezeit☕ Kaffeepausen-Lektüre

Each language version is independently generated for its own context, not a direct translation.

Stellen Sie sich vor, Sie haben einen extrem talentierten, aber etwas naiven Koch namens Künstliche Intelligenz (KI). Dieser Koch kann unglaublich schnell und kreativ Rezepte (Code) für Sie schreiben. Wenn Sie ihm sagen: „Mach mir ein Omelett," liefert er Ihnen eines, das funktioniert – die Eier sind gebraten, es schmeckt. Das ist der funktionale Erfolg: Der Code läuft, die Tests bestehen.

Aber dieser neue Koch hat ein Problem: Er denkt nur an das Ergebnis, nicht an die Qualität des Gerichts für die Zukunft.

Dieser wissenschaftliche Artikel untersucht genau dieses Problem. Die Forscher von der Universität Linköping in Schweden wollten herausfinden: Ist der Code, den diese KI-Köche produzieren, wirklich gut für den langfristigen Betrieb, oder baut er uns eine Falle?

Hier ist die einfache Erklärung der Studie, aufgeteilt in drei Teile:

1. Was sagen die Bücher? (Die Literaturrecherche)

Die Forscher haben sich 109 andere Studien angesehen.

  • Das Problem: Die meisten Forscher schauen nur darauf, ob das Omelett funktioniert. Sie prüfen aber selten, ob das Omelett gesund ist (Sicherheit), ob es leicht zu verderben ist (Wartbarkeit) oder ob es zu viel Energie verbraucht (Performance).
  • Die Metapher: Es ist, als würden wir nur prüfen, ob das Auto fährt, aber nicht, ob die Bremsen rosten oder der Motor überhitzt. Die Studien konzentrieren sich stark auf „Sicherheit" (wie gut ist der Schutz?), aber vernachlässigen oft, wie schwer es sein wird, den Code später zu verstehen oder zu ändern.

2. Was sagen die Profis? (Die Workshops mit Entwicklern)

Die Forscher haben dann echte Software-Entwickler (die „Chefköche" der Branche) gefragt, was sie wirklich stört.

  • Die Erkenntnis: Die Entwickler sind weniger besorgt darüber, ob der Code jetzt funktioniert. Sie haben Angst vor der Zukunft.
  • Die Metapher: Stellen Sie sich vor, die KI baut ein Haus. Der Chef-Koch (der Entwickler) sagt: „Ja, das Haus steht und hat ein Dach. Aber die Wände sind aus Pappe, die Leitungen sind chaotisch verlegt und ich verstehe nicht, wie ich später ein Fenster einbauen soll."
  • Das Risiko: Wenn wir zu viel Code von der KI produzieren lassen, ohne ihn zu prüfen, häufen wir „technische Schulden" an. Das ist wie ein Kredit, den wir heute aufnehmen, um schnell zu bauen, aber in fünf Jahren müssen wir mit Zinsen (viel mehr Arbeit) zurückzahlen, weil das Gebäude instabil ist. Für die Entwickler ist Lesbarkeit (kann ich das verstehen?) und Wartbarkeit (kann ich das reparieren?) wichtiger als alles andere.

3. Der große Test (Die Experimente)

Die Forscher haben einen echten Test durchgeführt. Sie gaben der KI echte Probleme in großen Software-Projekten (wie Django oder SymPy) und ließen sie Lösungen (Patches) finden. Sie haben drei verschiedene KI-Modelle getestet (wie Claude, GPT-4o und DeepSeek).

Was passierte?

  • Der „Pass-oder-Scheitern"-Effekt: Die KI konnte oft Lösungen finden, die die Tests bestanden. Aber wenn man sie bat, den Code besser zu machen (z. B. sicherer oder schneller), ging oft etwas anderes schief.
  • Die Metapher: Es ist, als würde man dem Koch sagen: „Mach das Omelett schneller!" Der Koch wirft dann alle Eier in die Pfanne, ohne sie zu schlagen. Es ist schnell, aber es schmeckt nicht mehr und ist ungesund.
  • Der Trade-off (Das Dilemma): Wenn man die KI anwies, den Code sicherer zu machen, wurde er oft langsamer oder schwerer zu warten. Wenn man ihn anwies, ihn schneller zu machen, wurde er unsicherer.
  • Die überraschende Entdeckung: Die KI wusste nicht, dass sie „guten" Code schreiben sollte. Sie wusste nur, wie man den Test besteht. Ohne menschliche Anleitung oder spezielle Werkzeuge, die auf Qualität achten, produziert die KI oft Code, der funktioniert, aber technisch „schmutzig" und riskant ist.

Das Fazit in einem Satz

Die KI ist ein genialer Assistent, der uns schnell Code liefern kann, aber sie ist wie ein ungeduldiger Lehrling: Sie macht die Arbeit schnell fertig, baut aber oft Brücken, die später einstürzen, oder Wände, die man nicht streichen kann.

Was müssen wir tun?
Wir können uns nicht darauf verlassen, dass die KI von selbst „guten" Code schreibt. Wir müssen neue Werkzeuge und Prozesse entwickeln, die den Code nicht nur auf „Funktioniert?" prüfen, sondern auch auf „Ist er sicher?", „Ist er sauber?" und „Kann ich ihn in fünf Jahren noch verstehen?". Nur so vermeiden wir, dass unsere Software-Systeme in Zukunft zu einem undurchdringlichen Dschungel aus technischem Müll werden.