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.