Domain-Driven Design (DDD)
Domain-Driven Design (DDD) proposes techniques and patterns to deal with the intrinsinc complexity in software development, both organizationally and technically. Key DDD themes are business-orientation, domain modeling, and knowledge reuse both on the strategical (i.e., long term, cross project) and on the tactical level. DDD has been around, in active use on real-world projects, and supported by a Community since the first DDD book came out in 2003; it recently becaome particularly popular in the microservices community as a way to identify service boundaries (via strategic DDD, using patterns such as Context Map and Bounded Context.
Introductions
- What is Domain-Driven Design (DDD), DDD Community
- D. Laribee, An Introduction to DDD, MSDN Best Practice, February 2009
- D. Haywood, An Introduction to Domain Driven Design, Methods & Tools
Key Patterns (Selection)
- General: Ubiquitous Language, Model-Driven Design, Layered Architecture
- Tactic DDD: Entity, Value Object; Aggregate, Root Entity; Factory, Repository, Service
- Strategic DDD: Bounded Context, Context Map; Published Language, Shared Kernel, Open Host Service, Customer-Supplier, Conformist, Anti Corruption Layer (context relationship types)
See DDD reference for pattern summaries (PDF, Word) and/or DDD glossary on community website.
Books (Selection, Reverse Chronological Order)
- V. Vaughn, DDD Distilled (new 2016)
- S. Millett with N. Tune, Patterns, Principles, and Practices of DDD, J. Wiley & Sons 2015
- V. Vaughn, Implementing DDD, Addison Wesley 2014
- F. Marinescu, Domain-Driven Design Quickly (InfoQ e-book, 2006)
- E. Evans, Domain-Driven Design - Tackling Complexity in the Heart of Software (the book that started it all), Addison Wesley 2003 (a non-technical reading path is recommended here and additional resources from the Domain Language consultancy can be found here)
More Information
- DDD Sample Application (SourceForge, GitHub)
- DDD content on InfoQ
- DDD and REST (in Microservices Context), ICWE 2016 (Un-)Panel moderated by O. Zimmermann
- Recorded conference presentations on DDD and Microservices by E. Evans and V. Vaughn.
- DDD Community
Contact: Olaf Zimmermann