[DDD Start] Intro

복잡성이라는 도전과제

  1. 대부분의 소프트웨어 프로젝트에서는 가장 먼저 도메인과 도메인 로직에 집중해야 한다.
  2. 복잡한 도메인 설계는 모델을 기반으로 해야 한다.

설계 vs 개발 프로세스

  1. 개발은 반복주기를 토대로 진행돼야 한다.
  2. 개발자와 도메인 전문가는 밀접한 관계에 있어야 한다.

“가장 단순함” 을 제각기 다르게 정의하기 때문이다. 지속적인 리팩터링은 작은 재설계가 연속적으로 일어나는 것.

즉, 확고한 설계 원칙이 없는 개발자는 이해하거나 변경하기 어려운 코드만을 만들어 낼 것이며, 이는 기민함(agility)과는 거리가 멀다.

도메인 모델 은 어떤 특정한 다이어그램이 아니라 다이어그램이 전달하고자 하는 아이디어다. 도메인 모델은 단지 도메인 전문가의 머릿속에만 존재하는 지식이 아니라 해당 지식을 엄격하게 구성하고 선택적으로 추상화한 것. 신중하게 작성된 코드나 우리가 쓰는 문장이 그렇듯 우리는 다이어그램을 이용해 모델을 표현하고 전달

도메인 모델링은 가능한 ‘사실적인’모델을 만드는 문제가 아니다.
현실 세계에 실재하는 사물에 대한 도메인에서도 모델은 인위적 창조물. 그리고 단순히 필요한 결과를 내는 소프트웨어 메커니즘을 만드는 것도 아니다. 도메인 모델링은 어떤 목적에 따라 제액에 구애받지 않고 현실을 표현하는 영화 제작에 더 가깝다. 다큐멘터리 영화에서도 실생황을 편집해서 보여준다. 영화 제작자가 자신의 경험 가운데 몇 가지 측면을 골라 특유의 방식으로 이야기하고 논지를 펼쳐 나가듯이 도메인 모델러 또한 모델의 유용성에 따라 특정 모델을 선택한다.

소프트웨어 본질

해당 소프트웨어의 사용자를 위해 도메인에 관련된 문제를 해결하는 능력