도메인 주도 설계에서는 초기 분석 단계에 도움될 뿐 아니라 설계의 기반이 되는 모델이 필요
→ 두 산출물 모두 기능성은 갖췄지만 비대했고 매우 이해하기 어려웠으며, 결국 유지보수가 불가능
설계 혹은 설계의 주된 부분이 도메인 모델과 대응하지 않는다면 그 모델은 그다지 가치가 없으며
소프트웨어의 정확함도 의심스러워진다. 동시에 모델과 설계 기능 사이의 복잡한 대응은 이해하기 힘들고,
실제로 설계가 변경되면 유지보수가 불가능해진다. 분석과 설계가 치명적으로 동떨어지고,
그에 따라 각자의 활동에서 얻은 통찰력이 서로에게 전해지지 않는다.
소프트웨어 시스템의 일부를 설계할 때는 도메인 모델을 있는 그대로 반영해서 설계와 모델의 대응을
분명하게 하라. 또한 모델을 재검토해서 더욱 자연스럽게 소프트웨어로 구현될 수 있게 수정하라.
도메인에 관한 더욱 심층적인 통찰력을 반영하려 할 때도 마찬가지다. 이렇듯 견고한
UBIQUITOUS LANGUAGE를 지원하는 것과 더불어 분석과 설계의 두 가지 측면을 충분히 만족하는
단 하나의 모델을 만들어내야 한다.
모델로부터 설계와 기본적인 책임 할당에 사용한 용어를 도출하라. 코드를 작성할 때 그러한 용어를
사용하면 코드가 모델을 표현한 것이 되고,코드의 변경이 곧 모델의 변경으로 이어질 수 있다.
그 효과는 프로젝트의 나머지 활동에도 퍼져나가야 한다.
구현을 모델과 그대로 묶으려면 보통 객체지향 프로그래밍과 같은 모델링 패러다임을 지원하는
소프트웨어 개발 도구와 언어가 필요하다.
MODEL-DRIVEN DESIGN이 성과를 내려면 인간이 오차 범위 내에서 정확하게 모델과 구현이 직접적으로 대응해야만 한다
이를 가능하게 하려면 개념에 직접적으로 대응되도록 소프트웨어 도구가 뒷받침되는 모델링 패러다임 내에서 업무를 하는 것이 필수적
그림 3.1
객체지향 프로그래밍은 모델링 패러다임에 근거하고 모델의 구성요소에 대한 구현을 제공하기 때문에 효과적
객체 설계에서의 진정한 도약은 코드가 모델의 개념을 표현할 때만 나온다
프롤로그(Prolog)라는 언어는 MODEL-DRIVEN DESIGN에 잘 어울린다