-
도메인 주도 설계 - 9. 암시적인 개념을 명확하게디자인 패턴 2024. 5. 2. 09:35
본 내용은 에릭 에반스의 도메인 주도 설계를 공부하면서 제 나름대로 이해하기 쉽게 정리한 글입니다.
이해가 어려우시다면 댓글 부탁드립니다.
개발자들이 토의 중에 단서를 얻거나 설계상 암시적으로 존재하는 개념을 인지하면 도메인 모델과 관련 코드를 대량으로 바꾸게 된다. 하나 이상의 객체와 객체간 관계를 활용해 모델 내에 해당 개념이 명확하게 표현된다. 암시적 개념을 명확한 개념으로 변환하는 작업 역시 심층 모
델로의 도약에 해당된다.
개념 파헤치기
언어에 귀 기울여라
도메인 전문가가 사용하는 언어에 귀 기울여야 한다. 복잡하게 얽힌 개념들을 간결하게 표현하는 용어가 있거나 개발자가 사용하는 단어를 적절하게 고쳐주는 등이 모델에 기여하는 개념의 실마리가 된다. 하지만 이것이 "명사는 객체다" 라는 개념을 표현하는 것은 아니다. 사용자, 도메인 전문가, 개발자가 설계상 어디에도 표현돼 있지 않은 어휘를 사용하고 있다면 누락된 어휘를 설계에 포함시켜야 한다. 모델과 설계를 향상시킬 수 있는 기회이다.
어색한 부분을 조사하라
필요한 개념이 대화나 문서로 인식할 수 있을만큼 드러나 있지 않을 때도 있다. 이미 존재하는 개념을 파헤치거나 새로운 개념을 만들어야 할지도 모른다. 설명하기 힘들 만큼 복잡한 작업을 수행하는 프로시저와 관련된 부분이나 새로운 요구사항에 복잡성이 증가하는 부분에 어색한 부분이 없는지 조사해야한다.
모순점에 대해 깊이 고민하라
도메인 전문가들은 자신의 경험과 필요에 따라 각기 다른 방식으로 사물을 바라본다. 도메인 전문가도 도메인 분석 과정을 거치고 논리적으로 모순되는정보를 제공하기도 한다. 이와 같은 모순은 더 심층적인 모델에 이르는 중요한 단서로 활용될 수 있다. 용어를 다르게 쓰거나 도메인을 잘못 이해하면서 모순이 발생한다. 이러한 모순들을 조화 시킬 수만 있다면 심오한 뭔가를 밝혀낼 수 있을지도 모른다.
도메인 서적을 참고하라
다양한 분야에 대해 근본 개념과 일반적인 통념을 설명하는 책을 참고하면 일관성 있고 사려 깊은 관점에서 작업을 시작할 수 있다.
시도하고 또 시도하라
선택의 여지는 없다. 시도하고 또 시도하면서 유용한 것이 무엇이고 유용하지 않은 것이 무엇인지 배워가야 한다.
불명확한 개념을 모델링하는 법
"명사와 동사"로 표현되지 않은 다른 중요한 범주의 개념도 모델 내에 명시적으로 표현할 수 있다.
SPECIFICATION(명세)
모든 종류의 애플리케이션에는 규칙을 검사하는 Boolean 메서드가 있다. 규칙이 단순하면 hasNexxt()나 isOverdue() 같은 규칙을 처리하면 된다. 하지만 이렇게 단순하기만 한 것은 아니다. 규칙을 검사하는 로직이 길어지면 도메인 로직이 규칙을 검사하는 로직에 의해 가려질 수 있다. 이를 위해 분리하는 과정이 필요하다.
업무 규칙이 ENTITY나 VALUE OBJECT가 맡고 있는 책임에 맞지 않고 규칙의 다양성과 조합이 도메인 객체의 기본 의미를 압도할 때가 있다. 이러한 업무 규칙들을 위해 술어와 유사한 명시적인 VALUE OBJECT인 SPECIFICATION을 만들면 된다. SPECIFICATION은 어떤 객체가 특정 기준을 만족하는지 판단하는 술어다.
'디자인 패턴' 카테고리의 다른 글
도메인 주도 설계 - 11. 분석 패턴의 적용 (0) 2024.05.23 도메인 주도 설계 - 10. 유연한 설계 (0) 2024.05.10 도메인 주도 설계 - 8. 도약 (0) 2024.04.26 도메인 주도 설계 - 6. 도메인 객체의 생명주기(AGGREGATE, FACTORY, REPOSITORY) (0) 2024.04.24 도메인 주도 설계 - 5. 소프트웨어에서 표현되는 모델(ENTITY, VO, ...) (1) 2024.04.19