What is domain-driven design?

Definition

Developers and domain experts work toward a shared vocabulary that connects user needs with the structure of the code. Explicit boundaries help distinguish concepts whose meanings differ across parts of a system.

The approach aims to make important rules and responsibilities easier to understand and change. Shared terminology must be grounded in actual practice rather than invented by a model, and design clarity does not remove the need for working software and tests.

ELI5

Domain-driven design means using the same clear ideas and words in discussions about a business and in the software built for it.

For example, a booking team should agree on whether a reservation is a request or a confirmed place. Using that distinction consistently helps both people and coding assistants avoid implementing the wrong behavior.

Why does shared vocabulary matter?

Different meanings for the same term can hide requirements and lead to incorrect behavior, so explicit language helps connect users, experts and code.

Does a domain model replace testing?

No. A clear model supports understanding, but the implementation still needs evidence that it behaves according to the intended rules.

  1. Nate Herk in blue gestures toward Matt Pocock in white beside the blue and white headline "CLARITY BEATS HYPE" on black.
Definition card for domain-driven design: What is domain-driven design?

Domain-driven design organizes software around the concepts, language and rules of the business or problem domain it serves.