Why Domain Driven Design
The value and benefits of DDD are summarized here, I will start off with the less technical benefits:
- The organization gains a useful model of its domain. The emphasis of DDD is to invest in what matters most to the business. By focusing on the core domain we focus on what distinguish the business from all others. Other models exist to support the core domain but those are not given the priority and effort of the core domain.
- A refined, precise definition and understanding of the business is developed. As the model is refined over time, the business develops a deep understanding of the business which can serve as an analysis tool. Details surface out of the minds of domain experts. These details can help the business to analyze the value of the current and future direction, both strategic and tactical.
- Domain experts contribute to software design. Developers share a common language as a unified team along with domain experts.
- A better user experience is gained. When the user experience is designed to follow the contours of the underlying expert model, users are led to correct conclusions.
We now move into more technical driven benefits to the business:
- Clean boundaries are placed around pure models.
- Enterprise architecture is better organized. All teams in the enterprise develop an acute understanding of where and why integrations are necessary. The teams that have models that intersect, employ context maps to establish formal relationships and ways to integrate.
- Agile, iterative, continuous modeling is used. The team’s efforts follow an agile approach, which is iterative and incremental. Any agile process that the team feels comfortable with can be used successfully in a DDD project. The model that is produced is the working software. It is refined continuously until it is no longer needed by the business.