What Is Domain-driven Design (DDD)? - Definition From

What is domain-driven design (DDD)?

Domain-driven design (DDD) is a software development philosophy centered around the business domain, or sphere of knowledge, of that software's users. DDD emphasizes the importance of understanding and modeling the business domain for which a software application is being developed.

Eric Evans first introduced the concept of DDD in his book Domain-Driven Design: Tackling Complexity in the Heart of Software. This book, published in 2003, includes numerous schema, repositories, value objects and entities that can help developers express a meaningful and object-oriented programming (OOP) model that aligns with the business and its needs. The basic idea of DDD is to align software with the business needs it is meant to address, thus improving its quality and usability.

Diagram of the structure of object-oriented programming.
Domain-driven design leverages structures and principles of the object-oriented programming model.

Since DDD is about considering the specific business context in which software would operate, it emphasizes the use of a ubiquitous or common language for both software developers and business stakeholders. As a result, every class, method, variable, etc., in the software code reflects business reality and promotes business understanding, ensuring the program remains understandable to business users and usable in the domain for which it was developed.

DDD also encourages iterative collaboration. By collaborating closely with each other and the business, developers can build software that better reflects the business it is meant to serve. The iterative development approach often yields better-quality software aligned to business requirements.

In sum, the four main ideas of DDD are as follows:

  • Core domain. The business domain and its fundamental aspects -- elements, entities, requirements, objectives -- should be aligned with the software under development.
  • Model-driven design. A well-defined domain model represents the business domain and informs software development for that domain.
  • Ubiquitous language. A common language facilitates communication between the technical -- i.e., development -- and business teams.
  • Iterative collaboration. Ongoing iterative collaboration between developer and business stakeholders to exchange insights, provide feedback and enable continuous improvement in software.

Tag » What Does Ddd Stand For