성공한 프로젝트의 공통적인 특징: 반복적인 설계를 거쳐 발전하고 프로젝트의 일부분이 된 풍부한 도메인 모델이 있다.
복잡성으로 생기는 한계를 극복하려면, 도메인 로직 설계에 진지하게 접근해야 한다.
모델링과 코드의 구현이 단절되어서는 안된다. 이러면 도메인을 분석한 내용이 설계에 반영되지 못하는 결과가 발생한다. 도메인 모델을 프로젝트에서 일어나는 의사소통의 중심에 놓일 때, 팀원들은 공통 언어를 사용하여 의사소통의 품질을 높이고 의사소통의 결과를 코드에 반영할 수 있게 된다.
얼마나 복잡한 소프트웨어를 만들어 낼 수 있는가를 결정하는 것은 설계 접근법에 있다.
애플리케이션에서 가장 중요한 복잡성은 사용자의 활동이나 업무에 해당하는 도메인 그 자체이다.
도메인 모델은 도메인에 대한 깊은 통찰력과 핵심 개념을 반영한다. 가치 있는 모델은 곧바로 나타나지 않으며, 먼저 도메인을 깊이 있기 이해해야 한다.
도메인을 이해하기 위해서는 원시적인 차원의 모델에 기반을 둔 초기 설계 내용을 구현해본 다음, 그 구현을 반복해서 변형하는 과정을 거쳐야 한다. 새로운 통찰력을 얻을 떄마다 모델에 더욱 풍부한 지식을 반영하게 되고, 코드 또한 더 심층적인 모델을 반영하게끔 리팩터링되어 애플리케이션에 적용되어진다. 이러한 리팩터링 과정에서 이따금 심오한 설계의 변화가 쇄도하면서 훨씬 심층적인 모델로 도약하는 기회로 이어지기도 한다.
어떤 설계 요소는 네트워크나 데이터베이스와 같은 기술과 관련이 있지만, 도메인의 복잡성을 제대로 다루지 않으면 기술을 잘 이해하더라도 무용지물이다.
도메인 주도 설계에서의 가장 큰 이익은 팀이 합심해서 도메인 주도 설계 접근법을 적용하고 도메인 모델을 의사소통의 중심에 놓을 때 발생한다. 팀원들은 공통 언어를 통해 상호 의사소통의 품질을 높이고, 결과를 소프트웨어에 반영해야 한다.