Domain-Driven Design, eingeführt von Eric Evans, begegnet komplexer Software, indem es den Entwurf auf die Fachdomäne ausrichtet. Eine gemeinsame Ubiquitous Language verbindet Entwickler und Fachexperten, Bounded Contexts grenzen Modelle ab, und taktische Muster – Entities, Value Objects, Aggregates, Repositories – bilden die Domäne direkt im Code ab.
Domain-Driven Design according to Evans
Details
- Vollständiger Name
-
Domain-Driven Design nach Eric Evans
Kernkonzepte:
- Ubiquitous Language
-
Gemeinsames Vokabular zwischen Entwicklern und Domänenexperten
- Bounded Context
-
Explizite Grenzen, innerhalb derer ein Modell definiert und anwendbar ist
- Aggregates
-
Gruppe von Domänenobjekten, die als Einheit behandelt werden
- Entities
-
Objekte, die durch Identität definiert sind, nicht durch Attribute
- Value Objects
-
Unveränderliche Objekte, die durch ihre Attribute definiert sind
- Repositories
-
Abstraktion für Objektpersistenz und -abruf
- Domain Events
-
Bedeutende Vorkommnisse in der Domäne
- Strategisches Design
-
Context Mapping, Anti-Corruption Layers
- Taktisches Design
-
Bausteine (Entities, Value Objects, Services)
- Model-Driven Design
-
Code, der das Domänenmodell ausdrückt
- Schlüsselvertreter
-
Eric Evans ("Domain-Driven Design: Tackling Complexity in the Heart of Software", 2003)
Wann zu verwenden:
-
Komplexe Geschäftsdomänen mit komplizierten Regeln
-
Langlebige Systeme, die tiefes Domänenverständnis erfordern
-
Wenn Geschäfts- und technische Teams eng zusammenarbeiten müssen
-
Systeme, bei denen die Domänenlogik der Kernwert ist