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.




DDD Reference

Download this quick-reference to the basic patterns and definitions of DDD. Learn more or download »

Dealing with Legacy Systems

This paper describes four strategies for getting started with DDD when you have a big commitment to legacy systems. Learn more or download »

Introducing someone non-technical to DDD?

Print out the Manager's Guided Tour. This guide lets a non-technical person dip into Evans' book and skim the essential points in a few hours.


Look through the archive in the community site »

Read and participate in a lively online discussion group »