Domain-Driven Design

Also known as: DDD

framework · computer science · organizing-schema

Evans' approach aligning software model with domain language and bounded contexts.

Domain-Driven Design was articulated by Eric Evans in Domain-Driven Design: Tackling Complexity in the Heart of Software (2003), with Vaughn Vernon's Implementing Domain-Driven Design (2013) providing more operational depth. DDD's central commitment is that complex software should be modeled around the language and concepts of the business domain rather than technical concerns, with collaboration between domain experts and developers producing a Ubiquitous Language used in code, conversation, and documentation alike. Strategic patterns address the structuring of large systems: Bounded Contexts define semantic boundaries within which a model is consistent and outside of which terms have different meanings; Context Maps describe relationships between contexts (Customer-Supplier, Conformist, Anticorruption Layer, etc.). Tactical patterns address modeling within a context: Entities (identity-bearing objects), Value Objects (no identity), Aggregates (consistency boundaries), Repositories, Domain Events, and Domain Services. DDD has been substantially influential in microservices design, with bounded contexts often serving as the natural decomposition unit.

Originators

Eric Evans; Vaughn Vernon (operational extension) high

Year / Decade

2003 (Evans book); 2013 (Vernon Implementing DDD) high

Primary sources

Evans, E. (2003). Domain-Driven Design: Tackling Complexity in the Heart of Software, Vernon, V. (2013). Implementing Domain-Driven Design high

Core components

Primary use case

Complex business-software design and architecture; foundational framework for microservices decomposition (bounded contexts as service boundaries); collaborative modeling between developers and domain experts; team and code organization in large enterprise systems; integration with Event-Driven Architecture, CQRS, and Event Sourcing.

Common criticisms

Lineage

Siblings
Hexagonal Architecture, Event-Driven Architecture, Microservices