Domain-driven design (DDD) is a major software design approach that focuses on modeling software to match a domain according to input from that domain’s experts. It is against the idea of having a single unified model; instead it divides a large system into bounded contexts, each of which have their own model.
Domain-driven design is predicated on the following goals:
- Placing the project’s primary focus on the core domain and domain logic layer;
- P*asing complex designs on a model of the domain;
- Initiating a creative collaboration between technical and domain experts to iteratively refine a conceptual model that addresses particular domain problems.