Zum Inhalt springen

← Zurück zum Beitrag

Best Practices: Implementierungsplan

26.7.2026

Implementierungsplan für Survey Management

Markdown herunterladen

Implementierungsplan: Feature 1 – Survey Management (Admin)

Kontext

Dieses Dokument beschreibt den Implementierungsplan für das Feature “Survey Management” im Online-Survey-Backend.

Projektkontext: Spring Boot 3.x, Java 17, Spring Data JPA, H2 (Dev), jqwik (Property-Based Testing)

Referenzdokumente:

  • Feature-Spezifikation: /docs/features/feature-1-survey-management.md
  • Semantisches Datenmodell: /docs/semantic_data_model.md
  • Architektur-Dokumentation: /docs/architecture.md

Entscheidungen

  • Schichtenreihenfolge: Bottom-up: zuerst Persistenzmodell, dann Datenzugriff, Business-Logik und API; jeder Schritt wird verifiziert, bevor der nächste beginnt
  • Testdesign: Automatisierte Tests entstehen zusammen mit der jeweiligen Schicht; Property-Based Tests ergänzen anschließend die kritischen Validierungsinvarianten
  • Datenzugriff: Spring Data Naming Conventions werden bevorzugt; explizite Abfragen sind zulässig, wenn sich ein Use Case damit nicht sinnvoll ausdrücken lässt
  • Fehlerbehandlung: Einheitliche HTTP-Fehlerantworten über einen zentralen Exception-Handler

Schritt 1: Persistenzmodell gemäß Datenmodell

Ziel: Das Persistenzmodell für Surveys, Fragen und Antwortoptionen gemäß dem semantischen Datenmodell anlegen.

Scope:

  • Abbildung der Entitäten und Aufzählungstypen aus dem Datenmodell
  • Validierungsregeln und Kaskadierverhalten gemäß Feature-Spezifikation
  • Schema-Erzeugung für die Dev-Datenbank

Nicht im Scope: Repositories, Business-Logik, API

Akzeptanzkriterien:

  • Persistenzmodell entspricht dem semantischen Datenmodell
  • Anwendung startet fehlerfrei, Schema wird korrekt erzeugt

Verifikation:

  • Bestehenden Maven-Testlauf mit mvn test ausführen
  • Anwendung im Dev-Profil starten und die Schema-Erzeugung auf Fehler prüfen

Schritt 2: Datenzugriffsschicht

Ziel: Den Datenzugriff für Surveys, Fragen und Antwortoptionen bereitstellen.

Scope:

  • Repository-Schnittstellen für die Persistenzobjekte aus Schritt 1
  • Abfragen, die für die Feature-Use-Cases benötigt werden (z. B. Fragen einer Survey in Reihenfolge)
  • Integrationstests für die benötigten Abfragen und Kaskadierregeln

Nicht im Scope: Business-Logik, API

Akzeptanzkriterien:

  • Datenzugriff folgt den bestehenden Projektkonventionen
  • Benötigte Abfragen und Kaskadierregeln funktionieren für die relevanten Erfolgs- und Fehlerfälle

Verifikation:

  • Maven-Testlauf mit mvn test ausführen
  • Prüfen, dass die neuen Datenzugriffstests unabhängig voneinander erfolgreich laufen

Schritt 3: Business-Logik und API-Verträge

Ziel: Die Business-Regeln der Survey-Verwaltung und die zugehörigen Request/Response-Verträge umsetzen.

Scope:

  • Anlegen und Lesen von Surveys
  • Hinzufügen und Löschen von Fragen inklusive Validierungsregeln aus der Feature-Spezifikation
  • Löschen von Surveys inklusive abhängiger Daten
  • Abbildung zwischen Persistenzmodell und API-Verträgen
  • Fachliche Fehlerfälle (nicht gefunden, Validierung, Konflikte)
  • Unit-Tests für die Business-Logik mit Erfolgs- und Fehlerfällen

Nicht im Scope: REST-Controller, API-Integrationstests, Property-Based Tests

Akzeptanzkriterien:

  • Alle Business-Regeln aus der Feature-Spezifikation sind umgesetzt
  • Validierungs- und Konfliktfälle liefern klare Fehlermeldungen
  • Unit-Tests decken die relevanten Erfolgs- und Fehlerfälle ab

Verifikation:

  • Maven-Testlauf mit mvn test ausführen
  • Prüfen, dass für jede Business-Regel mindestens ein positiver oder negativer Testfall existiert

Schritt 4: REST-API

Ziel: Die Survey-Verwaltung über REST-Endpunkte bereitstellen.

Scope:

  • Endpunkte für die Use Cases aus Schritt 3
  • Einheitliche Fehlerbehandlung und Request-Validierung
  • Ausrichtung an den bestehenden REST-Konventionen des Projekts
  • API-Integrationstests für die zentralen Erfolgs- und Fehlerfälle

Nicht im Scope: Property-Based Tests, End-to-End-/UI-Tests, Lasttests

Akzeptanzkriterien:

  • Endpunkte decken die Feature-Use-Cases ab
  • Fehlerantworten haben ein einheitliches Format
  • API-Integrationstests prüfen die zentralen Erfolgs- und Fehlerfälle

Verifikation:

  • Maven-Testlauf mit mvn test ausführen
  • Anwendung im Dev-Profil starten und die zentralen Use Cases manuell gegen die REST-API prüfen

Schritt 5: Absicherung durch Property-Based Tests

Ziel: Die kritischen Validierungsinvarianten mit generierten Eingaben automatisiert absichern.

Scope:

  • Property-Based Tests für die zentralen Validierungsinvarianten
  • Eigene Generatoren für gültige und ungültige Survey- und Question-Daten, soweit erforderlich
  • Ausführung als Bestandteil des bestehenden Maven-Testlaufs

Nicht im Scope: Weitere API-Endpunkte, End-to-End-/UI-Tests, Lasttests

Akzeptanzkriterien:

  • Kritische Invarianten aus der Feature-Spezifikation sind durch Properties abgedeckt
  • Property-Based Tests prüfen Invarianten, nicht nur einzelne Beispiele
  • Der vollständige Testlauf ist deterministisch reproduzierbar oder meldet den verwendeten Seed für eine Wiederholung

Verifikation:

  • Vollständigen Maven-Testlauf mit mvn test ausführen
  • Einen fehlgeschlagenen Property-Test anhand seines Seeds lokal wiederholen können

Hinweise zur Verwendung

  1. Sequenzielle Ausführung: Die Schritte bauen aufeinander auf. Schritt N setzt die Fertigstellung von Schritt N-1 voraus.
  2. Bootstrap zuerst: Vor dem ersten Schritt den Bootstrap-Prompt ausführen, damit der Agent den Projektkontext versteht.
  3. Review-Gates: Nach jedem Schritt das Ergebnis und die dokumentierte Verifikation prüfen, bevor der nächste startet. Bei klar zusammenhängenden Teilergebnissen können eng verwandte Schritte in einem Review-Gate gebündelt werden.
  4. Scope-Disziplin: Der Agent setzt nur den definierten Scope um. Konkrete Typ- und Methodennamen wählt er während der Umsetzung anhand von Feature-Spezifikation, Datenmodell und bestehenden Patterns.
  5. Living Plan: Wesentliche Abweichungen vom Plan begründen, den Plan aktualisieren und bei größeren Scope-Änderungen erneut freigeben.
  6. Kontext-Management: Bei langen Sessions kann eine frische Session mit erneutem Bootstrap sinnvoll sein.