I want to understand the Domain-Driven Design approach, how it works, and what it includes in its Definition.
TLDNR
What is the mental framework behind DDD? What are the core components of DDD? How are the elements applied?
Update
I will keep updating this post after the helpful post. If you are like me and want to understand overall context and ideas before reading a whole book you can check out my oversimplified, general hints.
Problem/Context
- How to structure an application?
- How to decompose an application into services or concerns?
"I have a big program but whenever I ask for a change the developers say its hard/impossible because of the way they have written it. Things that seem obvious to me like 'Orders can be cancelled' apparently require a whole redesign of what an 'Order' is.?!?"
Solution
- Domain-Driven Design
Domain-driven design is both a way of thinking and a set of priorities, aimed at accelerating software projects that have to deal with complicated domains. To accomplish that goal, this book prevents an extensive set of design practices, techniques, and principles.
Function
- have a common language - UbiquitousLanguage practice of building up a common, rigorous language between developers and users.
- ModelDrivenSoftwareDevelopment- centers on building models of a software system
- Bounded Context - segregating the application into different spheres
- ...
The question is focuses on the function. After skimming some books Evans'- domain driven design and Khononov - Learning Domain-Driven Design it is still unclear what Domain Driven Design is. In detail, besides a
Domain-driven design is both a way of thinking and a set of priorities, aimed at accelerating software projects that have to deal with complicated domains. To accomplish that goal, this book prevents an extensive set of design practices, techniques, and principles.
In both books, I missed a clear definition of what it is and what separates it from other approaches.
Opinion: This is very unspecific since, as I understand it, there is no precise algorithm on how to apply DDD - which was not intended. In the same argument, it is said that it is more of a mental framework. But this is precisely my question.