
These are specific terms in DDD and I will define them like I already did with the word domain.) Speak a ubiquitous language within a bounded context.Explore the models in a collaboration of domain experts and software experts.Focus on the core complexity and opportunity in the domain.It is an approach to the development of complex software consisting of multiple puzzle pieces: So what actually is DDD? DDD can't be defined in a sentence or two. All other features, vital though they may be, support this basic purpose. The heart of software is its ability to solve domain-related problems for its user. We do it in order to solve problems and improve things: You can try to tell your client in the banking sector that you will focus on payments and ditch lending business because it is too complex.Īdditionally, we do not develop software just for the purpose of developing software. You can not change the complexity within the domain. Typically the critical complexity of software projects is in the domain itself. Tackling Complexity in the Heart of Software Why is there even a need for something like DDD? The subtitle of Eric Evans book provides a really good hint: With the up-to-dateness out of the way let's move on and explore the "Why?" and "What?" Why Does DDD Exist? To answer the question about the relevance: It is indeed very valid until today. and showed us better ways to model our systems.Īlso, the IBM Garage Event-Driven Reference Architecture has a chapter about the methodology DDD. A quick citation from the very first page of the book Building Microservices by Sam Newman:Įric Evan's book DDD helped us understand the importance of representing the real world in our code. More modern concepts are directly referring to DDD. As you will realize a shared vocabulary also is part of DDD itself.įirst of all, you ask yourself if the concepts are still valid? Relevance of DDD TodayĭDD is not about a certain technology, it is a concept. Nevertheless, I will point out some definitions of important terms like I just did with "domain".

I won't deep dive into specific topics here. This post is about the "Why?" and "What?" of DDD. I will provide you with an overview of what DDD is all about. The subject area to which the user applies a program is the domain of the software. ℹ️ What is a domain in the context of DDD?Ī sphere of knowledge, influence, or activity. He wrote about it in his book Domain-driven Design back in 2004 (aka "The Big Blue Book"). The concept of Domain-Driven Design (DDD) was introduced by Eric Evans.
