What is DDD?

Domain-driven design (DDD) is an approach to developing software for complex needs by deeply connecting the implementation to an evolving model of the core business concepts.

  • Place the project's primary focus on the core domain and domain logic
  • Base complex designs on a model
  • Initiate a creative collaboration between technical and domain experts to iteratively cut ever closer to the conceptual heart of the problem.

The premise is simple, but pulling it off in the messy real world is hard. It calls for new skills and discipline, and a systematic approach. Domain Language was formed to help companies accomplish their goals through applying DDD.

In Eric Evans' own words: One-hour video from JAOO 2007 Conference »

Domain-driven design is not a technology or a methodology. DDD provides a structure of practices and terminology for making design decisions that focus and accelerate software projects dealing with complicated domains.

The Community

Catch up on the latest through the community portal »

Read and participate in a lively online discussion group »

Attend a conference »

Connect with DDDers in your area at a local interest group »

Pattern Summaries

Download this quick-reference to the basic patterns and definitions of DDD.

Learn more or download »

Free Download: 'Time And Money'

Although this project is no longer active, it still makes a great example of how designers can make key low-level domain logic more expressive and less error-prone so you can concentrate more effort on your unique issues. Learn more or download »