Last active
August 19, 2021 05:52
-
-
Save jahe/3ed1004c2eaec48f64613c93f1b455d1 to your computer and use it in GitHub Desktop.
Domain Driven Design Cheatsheet
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
can you please cover entity value,objects,