프로그램 디자인 방식 중 하나다.
business domain과 일치하게 소프트웨어를 모델링 하는 것이다. 여기서 business domain이란... 그냥 유사한 업무의 집합이다.
기본적으로 loose decoupling, 그러니까 서로 다른 domain간의 의존성은 최소화하면서 high cohesion, 즉 서로 다른 domain간의 응집성은 최대화하는 것이 목표다. 즉 한 domain이 원할히 동작하기 위해 다른 하나가 필요한 것은 아니지만, 이들간의 협력이 매우 절묘하게 이루어져 application에서 다루려는 모든 domain을 온전히 수행해 나갈 수 있도록 디자인 하는 방식이다.
application의 domain중 가장 중요한 domain을 core domain이라고 하는데, 이 기능에 집중하는 것을 우선하기
domain의 모델은 복잡해도 상관 없으니 가급적 구체적으로 디자인하기.
기술자는 본인이 담당하는 application의 특정 domain을 나타내는 model을, 그쪽 domain의 전문가와 긴밀히 상담하면서 발전시켜나가기.