Alte Codebasen mit KI verstehen und modernisieren
Legacy-Code ohne Tests lässt sich nicht einfach umschreiben – Characterization-Tests und kleine Schritte machen KI-gestützte Modernisierung sicher.
Was Legacy-Code besonders macht
Der Softwareentwickler Michael Feathers definierte Legacy-Code einmal knapp als "Code ohne Tests". Genau das macht ihn gefährlich für Veränderungen: Niemand – auch kein KI-Agent – kann prüfen, ob eine Änderung das Verhalten kaputt macht, wenn es keine Tests gibt, die dieses Verhalten festhalten.
Erster Schritt: Verhalten festhalten, nicht verbessern
Bevor irgendetwas umgebaut wird, brauchst du Characterization-Tests. Das sind Tests, die aufschreiben, was der Code JETZT tut – auch wenn das seltsam oder sogar fehlerhaft wirkt. Sie sind kein Qualitätsurteil, sondern eine Momentaufnahme, die spätere Änderungen absichert.
Zweiter Schritt: schrittweise migrieren
Ein komplettes Neuschreiben ist riskant: Bis die neue Version fertig ist, läuft nichts zuverlässig, und subtiles Altverhalten geht oft verloren. Bewährter ist die schrittweise Migration – ein als "Strangler Fig" bekanntes Muster: Neue Teile wachsen Stück für Stück um den alten Code herum, bis der alte irgendwann abgeschaltet werden kann.
Wofür KI-Agenten hier besonders nützlich sind
Ein Agent kann große, undokumentierte Module schnell zusammenfassen und mögliche Characterization-Tests vorschlagen – Arbeit, die bei fehlender Doku sonst viel Aufwand kostet. Wichtig bleibt: erst verstehen und absichern, dann erst verändern.
BEISPIEL
Prompt: 'Dieses 1.800-Zeilen-Modul hat keine Tests und keine Doku. Fasse zuerst zusammen, was es fachlich tut. Schreibe dann Characterization-Tests für die fünf wichtigsten Funktionen, die das AKTUELLE Verhalten festhalten – auch wenn es merkwürdig wirkt. Ändere noch keinen Code.'
🛠️ ÜBUNG — MACH DAS BEI DIR
Nimm ein ungetestetes, unübersichtliches Modul aus einem eigenen (oder einem Open-Source-)Projekt und sichere es mit Characterization-Tests ab, bevor du etwas änderst.
- Lass den Agenten zuerst zusammenfassen, was das Modul fachlich tut, ohne Code zu ändern.
- Identifiziere gemeinsam 3-5 typische Eingaben/Aufrufe und lass den Agenten Tests schreiben, die die aktuellen Ausgaben als erwarteten Wert festhalten.
- Erst danach: eine erste kleine, isolierte Änderung vornehmen und prüfen, ob die Characterization-Tests noch grün sind.
✅ SELBST-CHECK
- ☐ Decken die Tests die wichtigsten Pfade ab, nicht nur den einfachsten Fall?
- ☐ Hast du bewusst das AKTUELLE Verhalten festgehalten, statt es beim Testen schon zu 'verbessern'?
- ☐ Ist nach der ersten Änderung noch alles grün – oder zeigt ein roter Test genau, was sich verändert hat?
KURZ-QUIZ
Was ist ein Characterization-Test?
QUELLEN
- Characterization test — Wikipedia ↗ en.wikipedia.org
- Legacy code — Wikipedia ↗ en.wikipedia.org
- Strangler Fig Application — martinfowler.com ↗ martinfowler.com
- Strangler Fig pattern — Microsoft Learn ↗ learn.microsoft.com
- Legacy Seam — martinfowler.com ↗ martinfowler.com