Domain-Driven Design Studio
Strategisches und taktisches DDD mit geführter Modellierung vom Geschäftsproblem zum ausführbaren Modell. Nutze die Seite für eine konkrete Engineering-Aufgabe: Kläre zuerst Ziel und Risiko und halte danach Ergebnis, Nachweis und nächsten Schritt fest.
Arbeitsauftrag
Wann verwenden?
Wenn Begriffe, Verantwortungsgrenzen oder fachliche Regeln unklar beziehungsweise zwischen Teams umstritten sind.
Nicht dafür verwenden
Nicht zum Erfinden zusätzlicher Schichten für einfache CRUD-Verwaltung.
Definition of Done
Ubiquitous Language, Bounded Context, Invarianten, Aggregate-Grenzen und relevante Domain Events sind mit Fachseite abgestimmt.
Vom Problem zur Sprache
Der Ausgangspunkt ist ein beobachtbares Geschäftsproblem, nicht eine Tabellenstruktur oder ein Framework. Ubiquitous Language verbindet Fachbereich, Entwicklung und Tests.
Begriffe werden nur aufgenommen, wenn Bedeutung, Gültigkeitsbereich und Gegenbeispiele geklärt sind.
Begriff: Reservierung
Bedeutung: Zeitlich begrenzte Zusage eines Bestands
Gültig in: Availability Context
Nicht identisch mit: Bestellung, Zahlung, Versand
Invariante: Eine Reservierung darf verfügbaren Bestand nicht unterschreiten
Aggregate und Invarianten
Ein Aggregate ist eine Konsistenzgrenze. Es wird so klein wie möglich und so groß wie fachlich notwendig modelliert.
Andere Aggregate werden über Identitäten referenziert. Globale Objektgraphen erschweren Transaktionsgrenzen und Skalierung.
public final class Reservation {
private final ReservationId id;
private final ProductId productId;
private Quantity quantity;
private ReservationStatus status;
public void confirm(Clock clock) {
if (status != ReservationStatus.PENDING) {
throw new IllegalStateException("Nur offene Reservierungen sind bestätigbar");
}
status = ReservationStatus.CONFIRMED;
}
}
Context Map
Zwischen Bounded Contexts werden Verantwortlichkeit, Richtung und Übersetzung explizit festgelegt. Ein Anti-Corruption Layer schützt das eigene Modell vor fremden Begriffen und Lebenszyklen.
Sales Context --[Customer/Supplier]--> Pricing Context
Sales Context --[ACL]---------------> Legacy ERP
Fulfillment Context --[Published Language]--> Tracking Consumers
Praxisartefakt · Aggregate Canvas
- Aggregate
- Order
- Invariante
- Eine versandte Bestellung darf nicht storniert werden.
- Command
- CancelOrder mit OrderId, Actor und Reason.
- Ergebnis
- OrderCancelled oder fachlicher Fehler OrderAlreadyShipped.
- Außerhalb der Grenze
- Erstattung und Versandkorrektur reagieren über Events; sie gehören nicht in dieselbe Transaktion.