Show in graph

Software → Software Design

DDD

A software design approach that models software around the language, rules, and boundaries of a business domain.

Motivation

DDD solves the problem of software models drifting away from the real business domain. It gives teams language and structure for modeling complex business behavior.

Strategic design

Strategic DDD divides a large domain into Bounded Contexts, each with its own Ubiquitous Language and Domain Model. A Context Map documents how those contexts interact and where translations or protective boundaries are needed.

Tactical design

Inside a bounded context, teams may model Domain Entities, Value Objects, Aggregates, Aggregate Roots, and Domain Events. These patterns help express identity, invariants, consistency boundaries, and meaningful business changes.

A Domain Diagram can be used to explore and communicate the model with domain experts.

Mental model

The code should reflect the language and boundaries of the domain. Instead of one universal model, DDD encourages explicit models inside bounded contexts.

Common mistakes

  • Applying DDD ceremony to simple CRUD systems.
  • Treating entities as database tables only.
  • Treating every microservice as a bounded context.
  • Ignoring collaboration with domain experts.