Domain-Driven Design according to Evans

Details
Full Name

Domain-Driven Design according to Eric Evans

Core Concepts:

Ubiquitous Language

Shared vocabulary between developers and domain experts

Bounded Context

Explicit boundaries where a model is defined and applicable

Aggregates

Cluster of domain objects treated as a single unit

Entities

Objects defined by identity, not attributes

Value Objects

Immutable objects defined by their attributes

Repositories

Abstraction for object persistence and retrieval

Domain Events

Significant occurrences in the domain

Strategic Design

Context mapping, anti-corruption layers

Tactical Design

Building blocks (entities, value objects, services)

Model-Driven Design

Code that expresses the domain model

Key Proponent

Eric Evans ("Domain-Driven Design: Tackling Complexity in the Heart of Software", 2003)

When to Use:

  • Complex business domains with intricate rules

  • Long-lived systems requiring deep domain understanding

  • When business and technical teams need close collaboration

  • Systems where the domain logic is the core value