DDD (domain-driven design)
Designing software around the business’s own language and rules, with the code split where that language changes meaning.
Developers and domain experts agree on terms (the ubiquitous language) and the code uses the same words. The strategic part draws bounded contexts and maps how they talk to each other; the tactical part gives building blocks such as entities, value objects and aggregates. Most of the value is in the strategic part; teams that adopt only the building blocks often get extra layers and little else.
Related terms
- Bounded context: A part of a system where each business term has one meaning and one model, with explicit translation at its edges.
- Aggregate (DDD): A cluster of objects changed as one unit, with a single root that enforces the business rules and marks the boundary of one transaction.
- Anti-corruption layer (ACL): A translation layer between your model and a legacy or external system, so its data shapes and quirks do not leak into your code.
