This is an old revision of the document!


Domain Driven Design

Tackling Complexity in the Heart of Software

복잡한 도메인(문제 영역)을 이해하고 모델링하고, 공통 언어로 소통하는데 초점을 맞추는 방법론

본문 내용 출처 : Eric Evans. 『도메인 주도 설계』. 이대엽(역). 위키북스, 2011.

서문

1부 동작하는 도메인 모델 만들기

Part I: Putting the Domain Model to Work

서론

용어 정의

도메인

대개 컴퓨터와 관련 없다

  • 사용자가 프로그램을 사용하는 대상 영역
    • 사용자의 활동
    • 사용자의 관심사

모델

도메인 지식의 부담을 해소하기 위한 도구

  • 대상을 단순화 한 것
    • 어떤 사실을 해석한 것
    • 당면의 문제를 해결하는 것과 관련된 측면으로 추상화
      • 그 밖의 중요하지 않은 세부사항에는 주의를 기울이지 않는다!
  • 도메인 지식을 선택적으로 단순화하고 의식적으로 구조화한 형태
  • 도메인 지식을 조직화하고 가장 중요한 요소를 구분하는 팀의 합의된 방식 01 동작하는 도메인 만들기, 4p
  • 프로젝트에 참여한 사람들의 머릿속에 축적된 개념을 모아 놓은 것으로서 도메인에 대한 통찰력을 반영하는 용어관계로 표현된다. 02 의사소통과 언어 사용, 23p
    • 관계(relationships) : 모든 언어에 내재된 결합 규칙 02 의사소통과 언어 사용, 26p

도메인 모델

  • 특정한 다이어그램이 아니라
    다이어그램이 전달하고자 하는 아이디어
  • 도메인 지식을 엄격하게 구성하고 선택적으로 추상화한 것

도메인 주도 설계에서의 모델의 유용성

DDD에서는 아래의 세 가지 기본적인 쓰임새에 따라 모델을 선택한다

  • 모델과 핵심 설계는 서로 영향을 주며 구체화된다 (3장 참고)
    • 모델을 의미 있게 만들고
      모델의 분석이 최종 산출물인 동작하는 프로그램에 적용되게끔 보장하는 것은
      모델과 구현 간의 긴밀한 연결
    • 모델을 이해한 바에 근거해 코드를 해석할 수 있기 때문
  1. 모델은 모든 팀 구성원이 사용하는 언어의 중추
    • 모델과 구현이 서로 연결 → 개발자와 도메인 전문가간의 번역이 필요하지 않음
  2. 모델은 지식의 정수만을 뽑아낸 것이다
    • 모델은 도메인 지식을 조직화하고 가장 중요한 요소를 구분하는 팀의 합의된 방식 → 공유 언어 사용!!

소프트웨어의 본질

해당 소프트웨어의 사용자를 위해 도메인에 관련된 문제를 해결하는 능력. 그 뿐만 아니라 모델링 기법을 연마해서 도메인 설계에 통달해야 한다.

  대부분의 유능한 개발자는 다뤄야 할 특정 도메인을 학습하는 데 관심이 많지 않으며,
  더군다나 도메인 모델링 기법을 쌓는 데는 더더욱 전념하지 않는다.
  엔지니어들은 자신의 기술력을 훈련할 수 있는 정략적인 문제를 좋아한다.

Chapter

2부 모델 주도 설계의 기본 요소

Part II: The Building Blocks of a Model-Driven Design

Chapter

3부 더 심층적인 통찰력을 향한 리팩터링

Part III: Refactoring Toward Deeper Insight

Chapter

4부 전략적 설계

Part IV: Strategic Design

Chapter

domain_driven_design.1691450723.txt.gz · Last modified: by ledyx