NEW
Also known as: DDD
A methodology aligning software models and language with business domains.
DESCRIPTION
Domain-Driven Design centers software around the core business domain, using ubiquitous language and bounded contexts. Strategic design identifies domains and relationships; tactical patterns implement aggregates, entities, and value objects. DDD clarifies boundaries to manage complexity and avoid muddled models. It pairs well with event-driven architectures and microservices. In data, it informs domain-aligned schemas and contracts. DDD improves collaboration between experts and developers.
ALTERNATIVE DEFINITIONS
Wikipedia
Domain-driven design (DDD) is an approach to software development for complex needs by connecting the implementation to an evolving model of the core business concepts.
Highlights evolving models and complex needs addressed by DDD.
Domain Language (Eric Evans)
Domain-Driven Design is an approach to developing complex software in which a team aligns the design and implementation with the business’s core domain and knowledge.
Emphasizes alignment with the business’s core domain and shared language.
RELATED TERMS
Bounded Context Ubiquitous Language Event Sourcing CQRS Strategic Design Aggregate Entity Value Objects Repository Pattern Context Mapping
COMPETING TERMS
Data-Driven Design
KNOWLEDGE AREAS
Software Modeling Data Architecture Domain & Business Context
TARGET AUDIENCE
Software Developer Data Architect Enterprise Architect AI Product Manager Data Modeler
EXTERNAL SOURCES
- Wikipedia - Domain-driven design
- Martin Fowler - Overview and commentary on DDD
- Domain Language - Founder’s description of DDD
- Chris Richardson - Microservices patterns often aligned with DDD
TOP QUESTIONS
What problem does Domain-Driven Design solve?
DDD tackles complexity by aligning code with domain models and language, reducing miscommunication and model drift.
Category: Definition
What is a bounded context in Domain-Driven Design?
A bounded context defines a clear boundary within which a model applies, preventing ambiguity and inconsistent meanings.
Category: Overview
How does Domain-Driven Design influence data architectures?
DDD promotes domain-aligned schemas, contracts, and data products, clarifying ownership and integration boundaries.
Category: Relevancy
What are common mistakes in Domain-Driven Design?
Skipping domain discovery, overengineering tactical patterns, and failing to maintain ubiquitous language are frequent issues.
Category: Mistakes
How do microservices relate to Domain-Driven Design?
Microservices often map to bounded contexts, encapsulating domain logic and data behind well-defined interfaces.
Category: Example
What roles are central in Domain-Driven Design?
Domain experts and developers collaborate closely to evolve the model and language.
Category: Requirements
How to start with Domain-Driven Design?
Conduct domain discovery, create context maps, establish ubiquitous language, and identify core domains before tactical design.
Category: Best practices
Is Domain-Driven Design only for large systems?
No; it benefits any system with complex business logic or evolving requirements, regardless of size.
Category: Misunderstanding
What is a hot topic around Domain-Driven Design?
Combining DDD with event-driven architectures and data mesh for domain-aligned socio-technical design.
Category: Topic