DDD 01장 - 지식탐구
본 포스트는 도메인 주도 설계 라는 책을 참조하였습니다. 가능하면 본 책을 직접 보시고 DDD를 이해하는 것을 추천드립니다. http://www.aladin.co.kr/shop/wproduct.aspx?ItemId=12174216
효과적인 모델링의 요소
- 모델과 구현의 연계.
- 모델을 기반으로 하는 언어 정제.
- 풍부한 지식이 담긴 모델 개발.
- 모델의 정제.
- 브레인스토밍과 싪험.
위와 같은 지식탐구는 팀 내 지식을 가치있는 모델로 만든다
지식 탐구
- 지식 탐구 팀 = 개발자(주도) + 도메인전문가
- 원재료
- 도메인 전문가의 지식
- 기존 시스템 사용자
- 동일 도메인에 관련된 레거시 시스템의 기술팀
- 이전의 비슷한 프로젝트에서 얻은 경험
개념적 엄밀함(conceptual rigor)
지속적인 학습
소프트웨어를 작성하기 시작할 때 우리는 충분히 알지 못한 상태에서 시작한다.
- 생산성이 뛰어난 팀은 지속적인 학습 을 바탕으로 의식적으로 지식을 함양한다.
- 팀 구성원이나 개발자, 도메인 전문가에게서 모두 똑같이 지식을 얻고 의사소통 체계를 공유하며, 구현을 거쳐 피드백 고리를 완성하는 일을 모두 효과적으로 수행하는 지식탐구 프로세스를 궤도에 올리는 것
- 발견을 위한 항해는 어디선가 시작돼야 한다.
풍부한 지식이 담긴 설계
- 엔티티와 값 + 업무활동과 규칙
- 규칙을 명확하게, 구체화, 필요없는 것은 배제
감춰진 개념 추출하기
- 선박화물 운송 예약을 위한 어플리케이션 도메인 모델
- 요구사항 추가 10% 초과예약 허용
- 10% 초과 예약 은 정책이고 이는 전략패턴으로 구조화 할 수 있다.
도메인의 모든 세부사항에 이러한 정교한 설계를 적용하라고 권하는 것이 아니다.
- 중요한 것에 집중 하고 나머지는 축소하거나 분리
- 지식을 보전하고 공유
- 명시적인 설계
- 그리고 도메인 전문가와 프로그래머 사이에 피드백 고리 를 완성하는 것
심층 모델
더 깊은 지식탐구를 통한 도메인 모델링