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.