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 ## 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.