Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save scootcho/41851fad6878a71b0e7989c4090d9e86 to your computer and use it in GitHub Desktop.
Save scootcho/41851fad6878a71b0e7989c4090d9e86 to your computer and use it in GitHub Desktop.
Domain Driven Design Cheatsheet
tldr;
DDD is primarily about modeling a Ubiquitous (= überall vertreten) Language in an Bounded Context.
It avoids the design of monolithic applications.
Use DDD when the business model complexity is high (higher than the technical aspects of the project).
Bounded Context - semantic contextual boundary
Within the boundary, each component of the software model has a specific meaning and does specific things
The components inside a Bounded Context are context specific and semantically motivated.
In the Beginning of software modeling the Bounded Context is only coceptual and is part of the Problem Space.
Once the model starts to take deeper meaning and clarity the Bounded Context will transition to the Solution Space (Software model reflected as source code).
Problem Space - Where high-level strategic analysis and design steps are performed within the constraints of a project. E.g. Simple diagrams, important goals and risks. Context Maps work well in the Problem Space.
Solution Space - Where the solution for the problems (Core Domain) in the Problem Space are implemented. Problem Space discussions identify the Core Domain.
Ubiquitous Language - Everything thats inside a Bounded Context
Domain Experts - Focused on business concerns
Their thoughts are centered on how the business works.
There has to be a true Domain Expert on the team. The Product Owner might be one when he/she has the necessary know-how.
Their mental model forms the foundation of the team's Ubiquitous Language.
Strategic Design
Core Domain - A strategic differentiator
Don't limit it to nouns but consider it to a set of concrete scenarios about what the domain model is supposed to do (verbs/adverbs/...).
Subdomains - Sub-part of the overall business domain
Most optimal modeling composition: One Subdomain per Bounded Context and one Bounded Context per Subdomain.
There may be multiple Subdomains in one Bounded Context.
There are three types of Subdomains:
- Core Domain
- Supporting Subdomain
- Generic Subdomain
Context Mapping
Context Maps
Tactical Design
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment