Fundamentals of DDD
The goal of DDD is to close the gap between the technical implementation of software and the business domain it serves. DDD heavily focuses on building software that accurately models the core concepts, business rules, and behaviors of the domain so that the software system is closely aligned with the needs of the business. This results in it being valuable, maintainable, flexible, and sustainable for the future.
DDD highlights the distinction between the problem space and the solution space:
- Problem space: The problem space is the reality of the business – that is, the current circumstances of the business operations
- Solution space: The solution space is the software system we have or will build to solve specific business cases in the problem space
The dominant part of the problem space is the domain, which represents specific business use cases and operations. The solution space provides a way to model the domain to solve the given...