Kapitel 14
Domain-driven Design
Domain Driven Design (DDD) beschreibt einen Prozess und unterstützende Methodiken, die einer Philosophie der Ausrichtung der Software-Entwicklung an der Fachlichkeit folgen. DDD ist dabei Vorgehensmodell-agnostisch und kann mit unterschiedlichen (agilen) Vorgehensmodellen verwendet werden. Dabei durchläuft man strategische und taktische Entwurfsschritte, die methodisch unterstützen, eine Lösung im Lösungsraum zu definieren.
Auf Ebene des strategischen Designs werden dabei in einem ersten Schritt Subdomänen identifiziert. Entwicklungs- und Verfeinerungsaufwände werden dabei primär in Core und teilweise in Supporting Subdomains investiert. In diesen Bereichen werden sogenannte Bounded Contexts definiert, die letztlich den technischen Lösungsraum strukturieren und bspw. auf Microservices abgebildet werden können.
Bounded Contexts bilden somit den Übergang vom strategischen zum taktischen Design. Modelle in verschiedenen Bounded Contexts können dabei grundsätzlich unabhängig voneinander entwickelt und implementiert werden. Bounded Contexts sind zwar unabhängig von einander entwickelbar, aber nicht vollkommen isoliert voneinander. Auch Bounded Contexts müssen miteinander interagieren. Infolgedessen gibt es immer Berührungspunkte zwischen Bounded Contexts, die als Verträge bezeichnet werden und in Form von Context Maps visualisiert werden können. Dabei kann es Machtgefälle zwischen Bounded Contexts geben, die in Form von Kooperations- oder Customer-Supplier-Abhängigkeiten festgelegt werden sollten. Diese Context Maps bilden den Übergang vom Problemraum (strategisches Design) zum Lösungraum (taktisches Design). Im Bereich des taktischen Designs werden Bounded Contexts dann softwaretechnisch weiter verfeinert. Hier greift man üblicherweise auf bekannte Architekturmuster (wie z.B. Layered Architecture, Ports & Adapters oder CQRS) sowie Entwurfsmuster (wie Domain Model, Event Sourcing, Extract Transform Load, Active-Record) zurück.
Slides und Screencasts
Unit | Screencast (YouTube) | Slides |
---|---|---|
10.1 | Domain Driven Design - Was ist das? | PDF, PPTX |
10.2 | Strategisches Design: Domains und Ubiquitious Language | PDF, PPTX |
10.3 | Strategisches Design: Bounded Contexts und Context Mapping | PDF, PPTX |
10.4 | Taktisches Design: Geschäftslogik | PDF, PPTX |
10.5 | Taktisches Design: Architektur Pattern | PDF, PPTX |
10.6 | Fallstudie (Uptime Service) | PDF, PPTX |