π·πΌββοΈ
DDD (Domain Driven Design)is amethodwhere aproblem areais prioritised over theengineering practices.
DDD was introduced to address the complexities that arise from a poor understanding of the problems across interest groups, including developers, domain experts, and others.
DDD can be viewed in two design patterns:
Strategic PatternTactical Design PatternStrategic Pattern in DDD puts a strong emphasis on the software structures and architectures in a way that addresses the problem domain.
Key concepts pivotal to Strategic Pattern are:
boundaries where the problem domains persist.interactions across varying Bounded Contexts.
Microsoft Available here
guidelines for developing a software architecture.Aggregates, Domain Events, and Anti-Corruption Layer as its common practices.subset between varying Bounded Contexts.
Geeks for Geeks Available here
a strategic approach aimed at safeguarding a system from the impact of external or legacy systems that operate with different models or languages.
serves as an intermediary translation layer connecting the external system with the core domain model.
vocabularies that all stakeholders share across the software development.Tactical Design Pattern defines a set of strategies that can be applied to construct the domain models within the software system.
domain object with a specific life cycle and a distinct identity.object that represents the values that may be immutable.entities and value objects that becomes a single unit for data consistency.layer that is responsible for directly communicating with the databases.layer that is responsible for creating objects. layer that conducts all necessary business logic. DDD can profit from the overall development cycle via:
π£οΈ effective communication across developers, domain experts, and other stakeholders
Ubiquitous Language π¨ focus on real business problems than implementing unnecessary engineering practices
β½οΈ can introduce unnecessary complexities specifically from the large domain models
π§ overhead from implementing DDD leading to lowered productivity