Zum Inhalt

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