본문 바로가기

책터디/도메인주도설계철저입문

01. 도메인 주도 설계란?

도메인 주도 설계란 무엇인가?

개발자가 소프트웨어를 개발하면서 가치 있는 지식과 그렇지 않은 지식을 잘 구분하려면 어떤 능력이 필요한가?

> 먼저 소프트웨어 이용자의 세계를 이해해야 한다.

 

소프트웨어 이용자에게 무엇이 중요한 지식인지는 바로 이 이용자의 세계에 따라 달라진다. 

> 유용한 소프트웨어를 만들려면 이용자의 문제가 무엇인지 파악하고, 이를 해결할 수 있는 최선의 수단을 생각해야 한다.

 

도메인 주도 설계는 이러한 고찰을 반복하는 설계를 통해 이용자의 세계와 소프트웨어 구현을 연결 짓는 것이 목적이다.

 

도메인 지식에 초점을 맞춘 설계 기법

  • 도메인 주도 설계 : 도메인 지식에 초점을 맞춘 설계 기법이다.
  • 도메인 == '영역'
  • 도메인에 속하는 개념과 사건을 이해하고, 그중에서 문제 해결에 유용한 것을 뽑아낸 지식을 소프트웨어에 반영하는 과정은 소프트웨어 개발에 꼭 필요한 과정이다. 그러나 이 과정은 기술을 중시하는 개발자들이 놓치기 쉬운 부분이기도 하다.

도메인 모델링이란 무엇인가?

  • 모델 : 현실에 일어나는 사건 혹은 개념을 추상화한 개념
  • 추상 : 여러 사물 혹은 개념에서 공통적인 것을 뽑아 파악하는 것
  • 현실의 모든 것을 반영하는 것이 아니다.
    • 상황에 따라 취사 선택이 필요하다.
      • 무엇을 버리고 무엇을 취할지는 도메인에 따라 결정된다.
  • 모델링 : 사건 혹은 개념을 추상화하는 작업
    • 모델링의 결과를 모델이라고 한다.
  • 도메인 주도 설계에서는 도메인 개념을 모델링한 모델을 도메인 모델이라고 한다.

지식을 코드로 나타내는 도메인 객체

  • 도메인 객체 : 도메인 모델을 소프트웨어 형태의 동작하는 모듈로 나타낸 것