Legacy Claims Portal 🏠 Home 📘 Lernpfad 🧪 Workbook 📚 Handbuch 🧩 Patterns 🧾 Lizenzen 🔎 Archiv

Refactoring-Labs

Refactoring-Labs

Diese Labs sind praxisorientiert. Sie sind so formuliert, dass du sie direkt mit dem Beispielprojekt bearbeiten kannst.

Lab 1: Legacy-Verantwortungen sichtbar machen

Ziel: Die Monster Method fachlich zerlegen, ohne sofort Code zu verändern.

Dateien:

Aufgabe:

  1. Lies die Legacy-Facade.
  2. Markiere fachliche Entscheidungen, technische Zugriffe und Seiteneffekte.
  3. Erstelle eine Tabelle mit den Spalten: Verantwortung, Legacy-Stelle, Ziel-Baustein, Risiko.

Ergebnis:

Lab 2: Characterization Test entwerfen

Ziel: Vorhandenes Verhalten dokumentieren.

Dateien:

Aufgabe:

  1. Definiere drei typische Claim-Szenarien.
  2. Beschreibe je Szenario erwartete Legacy-Ausgabe.
  3. Notiere alle Seiteneffekte, die nicht direkt im Return-Wert sichtbar sind.

Beispielszenarien:

Lab 3: Command Object bewerten

Ziel: Verstehen, warum Parameterlisten schlecht wartbar sind.

Dateien:

Aufgabe:

  1. Liste alle Eingabewerte des Use Cases.
  2. Ordne sie fachlich: Claim, Benutzer, Entscheidung, Kommentar, Kontext.
  3. Erkläre, welche Werte validiert werden sollten.

Lab 4: Policy statt if/else

Ziel: Statuslogik ins Domain-Modell verschieben.

Dateien:

Aufgabe:

  1. Ergänze gedanklich eine Regel: Ein bereits geschlossener Claim darf nicht erneut freigegeben werden.
  2. Beschreibe den Testfall.
  3. Begründe, warum die Regel nicht im REST Controller liegen soll.

Lab 5: Port extrahieren

Ziel: Technischen SOAP-Zugriff durch Port entkoppeln.

Dateien:

Aufgabe:

  1. Beschreibe die fachliche Port-Signatur ohne SOAP-Begriffe.
  2. Erkläre, welche Fehler der Adapter übersetzen muss.
  3. Erstelle eine Liste möglicher Fake-Implementierungen für Tests.

Lab 6: Handler mit Fake Ports testen

Ziel: Application Handler ohne echte Infrastruktur testen.

Dateien:

Aufgabe:

  1. Definiere Fake Ports für Repository, Fraud, Coverage, Payment, Audit.
  2. Baue einen Testfall für erfolgreiche Freigabe.
  3. Prüfe, dass Audit und Payment nur dann ausgelöst werden, wenn Fachregeln erfüllt sind.

Lab 7: Outbox statt direkter Publizierung

Ziel: Transaktionsgrenze von Messaging entkoppeln.

Dateien:

Aufgabe:

  1. Erkläre, warum direkte JMS-Publizierung in der Legacy-Methode riskant ist.
  2. Definiere ein Outbox-Event für ClaimDecisionAccepted.
  3. Beschreibe Retry- und Duplicate-Handling.

Lab 8: Read Model für Suche

Ziel: Query-/Reporting-Anforderungen getrennt vom Write-Modell betrachten.

Dateien:

Aufgabe:

  1. Definiere drei Suchfilter für Claims.
  2. Entscheide, welche Filter in ein Read Model gehören.
  3. Erkläre, warum Reporting nicht direkt das Aggregate missbrauchen sollte.

Lab 9: Strangler für UI

Ziel: Partner Portal und Backoffice schrittweise entkoppeln.

Dateien:

Aufgabe:

  1. Wähle eine UI-Funktion für die erste Entkopplung.
  2. Definiere eine moderne API-Grenze.
  3. Beschreibe einen Rollback-Pfad.

Lab 10: Architekturtest entwerfen

Ziel: Modulregeln automatisiert absichern.

Dateien:

Aufgabe:

  1. Formuliere drei Architekturregeln.
  2. Beispiel: Domain darf Infrastructure nicht importieren.
  3. Beschreibe, wie ein ArchUnit-Test diese Regel prüfen würde.
⌂ Cockpit