-
도메인 주도 설계 - 8. 도약디자인 패턴 2024. 4. 26. 11:59
본 내용은 에릭 에반스의 도메인 주도 설계를 공부하면서 제 나름대로 이해하기 쉽게 정리한 글입니다.
이해가 어려우시다면 댓글 부탁드립니다.
심층 모델
기존 전통적인 방식의 객체 분석 방식은 요구사항 문서의 명사와 동사를 식별하고 명사는 초기 객체 이름, 동사는 메서드로 사용하는 것이다. 초보자를 가르치기에는 유용하지만, 실제 도메인 초기 모델은 얄팍한 지식에 기반을 둔 무의미한 모델인 경우가 대부분이다.
심층 모델(DEEP MODEL)이란 도메인의 피상적인 측면은 배제하고 도메인 전문가와 주요 관심사를 중심으로 도메인 지식을 알기 쉽게 표현한 것이다. 추상화를 의미하진 않는다.
발견 과정
해결해야 하는 문제에 적합한 설계(심층 모델)를 만들려면 먼저 도메인 중심 개념을 담고 있는 모델을 확보해야 한다. 이는 9장(암시적인 개념을 명시적으로)에서 적극적으로 도메인 중심 개념을 찾아 설계에 반영하는 방법을 다룬다.
모델과 설계 간의 관계가 밀접하므로 코드가 리팩터링하기 어려운 경우 더는 모델링을 진행할 수 없는데 10장(유연한 설계)에서는 소프트웨어를 쉽게 확장하고 변경할 수 있는 방법을 다룬다.
도약
리팩터링의 효과는 선형적으로 증가하지 않는다. 일반적으로 리팩터링에 들어간 노력의 양이 적다면 최소의 보답만 돌아온다. 리팩터링은 엔트로피와의 싸움이며 레거시 시스템이 퇴보하는 것을 막는다. 하지만 가장 중요한 통찰력은 어느순간 찾아오고 이는 프로젝트 전체에 퍼져나간다.
심층 모델은 한 번에 하나의 객체를 대상으로 하는 소규모 리팩터링 과정을 거처 서서히 모습을 드러낸다. 찾지 못했던 UBIQUITOUS LANGUAGE도 찾게 된다.
기본에 집중하라
도약은 일반적으로 수많은 적정 규모의 리팩터링을 수행하고 나타난다. 대부분의 시간은 단편적인 개선에 소요되고 결과적으로 연속적인 정제 과정 속에서 서서히 모델에 대한 통찰력을 얻게 된다.
도약이 등장하기 위해서는 지식 탐구와 함께 인내심을 가지고 UBIQUITOUS LANGUAGE를 만드는 일에 집중해야 한다.
'디자인 패턴' 카테고리의 다른 글
도메인 주도 설계 - 10. 유연한 설계 (0) 2024.05.10 도메인 주도 설계 - 9. 암시적인 개념을 명확하게 (0) 2024.05.02 도메인 주도 설계 - 6. 도메인 객체의 생명주기(AGGREGATE, FACTORY, REPOSITORY) (0) 2024.04.24 도메인 주도 설계 - 5. 소프트웨어에서 표현되는 모델(ENTITY, VO, ...) (1) 2024.04.19 도메인 주도 설계 - 4. 도메인의 격리 (0) 2024.04.15