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

Inhalte Downloads
Slides
Unit 09
Domain Driven Design
  • DDD: Was ist das?
  • Effektives Software Design
  • Strategisches Design
  • Subdomains (Core, Supporting, Generic)
  • Bounded Contexts und Ubiquituous Language
  • Context Maps (Kooperationspattern: Partner, Shared Kernel; Customer-Supplier Pattern: Conformist, OHS, ACL; Separate Ways)
  • Taktisches Design
  • Pattern für Geschäftslogiken (Transaction Script, Domain Model inkl. Aggregate und Value Objects, Active Record, Event Sourcing)
  • Pattern für Architekturen (Ebenenarchitektur, Ports + Adaptors, CQRS)
PDF
PPTX