Spezifikationsgetriebene Entwicklung (SDD)
Eine führende Methodologie der Software-Ingenieurwissenschaft im KI-Zeitalter, bei der die Erstellung, Abstimmung und Festlegung einer strukturierten, maschinenlesbaren Spezifikation zwingend vor der Codegenerierung erfolgt.
1. Konzeptüberblick und systemisches Problem
Der häufigste Fehler von Einsteigern im Vibe Coding ist der Ansatz „Prompt-and-Pray“ (einen vagen Prompt in den Chat schreiben und darauf hoffen, dass das Modell die Architektur errät). Wenn die Anfrage lautet: „Implementiere Stripe-Billing für Abonnenten“, wählt das Modell willkürliche Datenbankschemas aus, nutzt veraltete Bibliotheken, ignoriert Webhooks, vergisst die Idempotenz und berücksichtigt keine Edge Cases bei Zahlungsstornierungen. Wenn ein Ingenieur bittet, einen Bug zu beheben, beginnt das Modell hektisch Löcher zu stopfen und verwandelt die Codebasis endgültig in Spaghetti-Code (AI Slop).
Spec-Driven Development (SDD) ist eine ingenieursdisziplinierte Methode, die das Systemdesign vom Prozess der Codegenerierung trennt. Bevor die Codebasis angefasst wird, erstellt man ein formalisiertes Spezifikationsdokument (spec.md oder RFC.md). Dieses Dokument dient als Single Source of Truth und als Vertrag, gegen den der Agent jeden folgenden Schritt ausführt und verifiziert.
2. Architektonische Taxonomie und mentales Modell
Das architektonische Fundament von SDD basiert auf einer klaren Hierarchie von Design-Artefakten:
┌─────────────────────────────────────────────────────────────┐
│ SPEC-DRIVEN DEVELOPMENT ARTIFACT HIERARCHY │
├─────────────────────────────────────────────────────────────┤
│ 1. Product Context: Проблема користувача та бізнес-мета │
├─────────────────────────────────────────────────────────────┤
│ 2. Technical Contracts: │
│ • Схеми даних (Drizzle / Prisma schemas, SQL DDL) │
│ • API Contracts (Zod Schemas, OpenAPI, TypeScript types) │
│ • Invariants & Security Rules (Idempotency, RBAC, Auth) │
├─────────────────────────────────────────────────────────────┤
│ 3. Atomic Task Checklist (DAG): │
│ • Step 1 ➔ Step 2 ➔ Step 3 (Строгий порядок залежностей) │
├─────────────────────────────────────────────────────────────┤
│ 4. Verification Predicates: Машинні критерії готовності │
└─────────────────────────────────────────────────────────────┘
- Technische Verträge (Interface-First):
- Beschreibung der Systeminteraktionen vor der Implementierung der internen Logik. Definition von Request-/Response-Strukturen, Validierungsschemas und Fehlerzuständen.
- Atomarer Aufgaben-Graph (Task Decomposition DAG):
- Die Aufgabe wird in eine Sequenz kleiner, unabhängig verifizierbarer Unteraufgaben zerlegt. Jede Unteraufgabe darf maximal 1–3 Dateien modifizieren.
- Maschinen-verifizierbare Kriterien (Acceptance Predicates):
- Anstelle des subjektiven „Teste, ob alles funktioniert“, enthält die Spezifikation konkrete Prüfbefehle: „
pnpm test auth.test.tsläuft erfolgreich durch, Branch-Coverage > 90%“.
- Anstelle des subjektiven „Teste, ob alles funktioniert“, enthält die Spezifikation konkrete Prüfbefehle: „
- Lifecycle-Status-Tracker:
- Die Spezifikation enthält interaktive Checkboxen (
[ ]➔[x]), die der Agent nach Ausführung und Verifizierung jedes Schrittes aktualisiert.
- Die Spezifikation enthält interaktive Checkboxen (
3. Technischer Pipeline-Prozess und interne Mechanik
Der Entwicklungszyklus gemäß der SDD-Methodologie:
- Interview und Synthese der Spezifikation (Interview Phase): Der Ingenieur formuliert die Aufgabe. Das Modell stellt gezielte Fragen zu nicht-trivialen Details: Welches Verhalten ist bei Netzwerkabbruch erwartet? Wie werden Duplikate behandelt? Welche Rate-Limiting-Grenzen gelten?
- Fixierung der Spezifikation im Repository:
Es wird ein Artefakt erstellt (z. B.
.specs/004-billing-integration.md), das in das Git-Versionskontrollsystem aufgenommen wird. - Menschliches Audit und Freigabe (Spec Approval): Der Ingenieur prüft die vorgeschlagenen Datenschemas und Verträge. Falls das architektonische Entscheidungsmuster Mängel aufweist, werden diese auf Textebene der Spezifikation innerhalb von 2 Minuten korrigiert, was stundenlanges Umschreiben von Code vermeidet.
- Schrittweises Delegieren an den Agenten (Step-by-Step Execution):
Der Agent wird zur Implementierung eines spezifischen Schritts aus der Spezifikation aufgerufen:
- Der Agent liest den Kontext der Spezifikation.
- Er schreibt Tests gemäß den Verträgen (TDD).
- Er implementiert die Funktionalität.
- Er führt die Tests aus und markiert die Unteraufgabe als erledigt.
- Finale Verifizierung und Archivierung: Sobald alle Punkte der Spezifikation als erledigt gekennzeichnet sind, wird ein End-to-End-Audit durchgeführt. Die Spezifikation bleibt im Repository als lebende Dokumentation der Feature.
4. Praktische Engineering-Szenarien in Production
01. Entwicklung eines kritischen Zahlungsmoduls mit Idempotenz
Vor dem Schreiben des Codes für die Payment-Gateway-Integration erstellt der Ingenieur eine Spezifikation:
- Fixierung der Struktur der Tabelle
idempotency_keysmit den Feldernkey,response_payload,status,expires_at. - Beschreibung des exakten Algorithmus für das Verhalten bei Erhalt eines doppelten Webhooks mit identischer transaction_id.
- Der Agent implementiert das Modul strikt nach Spezifikation; kein Edge Case geht verloren.
02. Parallele Arbeit von Backend- und Frontend-Agenten
Ein Team entwickelt ein neues Analytics-Dashboard:
- Zunächst werden in der Spezifikation Zod-Schemas und TypeScript-Interfaces für alle Charts und Metriken definiert.
- Der Frontend-Agent nutzt diese Schemas, um Komponenten mit Mock-Daten zu rendern.
- Der Backend-Agent implementiert gleichzeitig echte SQL-Queries und API-Routen unter demselben Vertrag.
- Die Integration erfolgt ohne Konflikte aufgrund von Typinkompatibilität.
03. Sichere großskalige Migration eines Legacy-Moduls
Ersetzung einer alten, selbstgeschriebenen Authentifizierung durch Better Auth:
- Die Spezifikation beschreibt die Wahrung der Rückwärtskompatibilität der Sessions in Redis sowie einen schrittweisen Migrationsplan für Passwort-Hashes von bcrypt zu Argon2id.
- Der Agent zerlegt die Migration in 7 isolierte Phasen, die jeweils separat getestet werden.
5. Fallstricke, typische Fehler und Sicherheit
- Paralyse durch Over-Engineering: Eine 20-seitige Spezifikation für eine kleine Einrückungskorrektur oder eine Button-Farbänderung zu schreiben, ist eine sinnlose Zeitverschwendung. Nutzen Sie SDD nur für Aufgaben, die mehr als 2 Module betreffen oder kritische Business-Logik enthalten.
- Desynchronisation von Code und Spezifikation (Spec Rot): Wenn während der Entwicklung Änderungen am Schema nötig sind, korrigieren Ingenieure oft direkt den Code und vergessen, die
spec.mdzu aktualisieren. Dies verwirrt nachfolgende Agenten, die dann wieder die veraltete Spezifikation lesen. - Verwendung vager Formulierungen: Sätze wie „das System muss schnell laufen“ oder „Zuverlässigkeit sicherstellen“ sind katastrophal für KI. Die Spezifikation muss mit konkreten Werten operieren: „p99 Response Time < 150ms“, „HTTP 429 zurückgeben bei Überschreitung von 100 rpm“.
- Ignorieren der Versionskontrolle von Spezifikationen: Spezifikationsdateien müssen Teil des Git-Repositories sein, zusammen mit dem Code. Dies ermöglicht die Nachverfolgung der Evolution architektonischer Entscheidungen über die Commit-Historie.
FAQ: Spezifikationsgetriebene Entwicklung (SDD)
Verwandte Begriffe
Vibecoding
Ein neues Paradigma der Softwareentwicklung, bei dem der Mensch als Architekt und Verifizierer von Absichten fungiert, während KI-Agenten Syntax, Tests, Kompilierung und Fehlerbehebung autonom durchführen.
Atomare Aufgaben (Atomare Aufgabendekomposition)
Eine Engineering-Praxis zur Zerlegung umfangreicher Systemanforderungen in minimale, autarke und deterministische Arbeitseinheiten, die das kognitive Belastung des Menschen sowie das Risiko der Kontextdegradation bei LLMs minimieren.
Verifikationsdisziplin für generierten Code
Ein grundlegendes ingenieurwissenschaftliches Prinzip, wonach jedes Ergebnis der KI-Generierung als ungeprüfte Hypothese betrachtet wird, die vor ihrer Annahme zwingend empirisch validiert werden muss.
AI Slop (KI-Abfall und Codebasis-Verschmutzung)
Ein systemisches Phänomen der Degradation der Codebasis durch die massenhafte Hinzufügung von qualitativ minderwertigem, wortreichem, übermäßig komplexem oder dupliziertem Code, der von Sprachmodellen ohne architektonische Aufsicht generiert wurde.