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.

Where it fits

DDD belongs to software architecture and product/business systems. It relates to bounded contexts, aggregates, ubiquitous language, and event-driven architecture.

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.
  • Ignoring collaboration with domain experts.