반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 크론 표현식
- K번째수
- @Setter
- 스프링 스케쥴러
- 고차원 함수
- 모던 자바 인 액션
- 다리를 지나는 트럭
- @EnableScheduling
- 가장 큰 수
- @configuration
- 전화번호 목록
- 기능개발
- 롬복 어노테이션
- 알고리즘
- 검색 기능 확장
- H-index
- Java
- 쿠버네티스
- 스택/큐
- 루씬 인 액션
- 커링
- 해시
- kubenetes
- 코딩 테스트
- 프로그래머스
- 영속 자료구조
- @Data
- 정렬
- @Getter
- 완주하지 못한 선수
Archives
- Today
- Total
Today I Learned
[도메인 주도 설계] 3부. 더 심층적인 통찰력을 향한 리팩터링 본문
728x90
유용한 모델을 개발하기 위해 명심할 점
- 정교한 도메인 모델은 만들 수 있으며, 노력을 들일 만한 가치가 있다.
- 해당 도메인을 학습하는 개발자와 도메인 전문가의 긴밀한 참여와 반복적인 리팩터링 과정 없이 유용한 모델을 개발하기란 쉽지 않다.
- 유용한 모델을 효과적으로 구현하고 사용하려면 정교한 설계 기술이 필요할지도 모른다.
리팩터링 수준
- 대부분 리팩터링을 다룰 때 코드의 가독성을 높이거나 쉽게 개선하는 기계적인 변경에 초점을 맞춘다.
- 하지만 시스템의 생존력에 가장 큰 영향을 미치는 리팩터링은 도메인에 대한 새로운 통찰력을 반영하거나 코드를 사용해 모델이 표현하고자 하는 바를 명확하게 드러내고자 수행하는 경우이다.
- 리팩터링의 목표는 개발자가 단순히 코드가 수행하는 바를 이해하는 것 뿐만 아니라 왜 그렇게 수행되는지 이해하고 도메인 전문가와의 의사소통에 이를 연관시키는 것이다.
심층 모델
- 전통적인 객체 분석 방법에서는 요구사항 문서에 서술된 명사를 객체명으로, 동사를 객체의 메서드로 사용한다.
- 그러나 실제 초기 모델은 얄팍한 지식에 기반을 둔 투박하고 무의미한 모델인 경우가 대부분이다.
- 심층 모델이란 도메인의 피상적인 측면은 배제하고 도메인 전문가의 주요 관심사와 가장 적절한 지식을 알기 쉽게 표현하는 모델이다. 이 정의가 추상화를 의미하는 것은 아니다.
심층 모델/유연한 설계
- 지속적으로 리팩터링을 수행하려면 설계 자체가 변경을 지원해야 한다.
- 반복적인 변경을 거칠수록 설계는 점점 더 유연해진다.
- 유연한 설계는 변경을 촉진할 뿐만 아니라 모델 자체의 개선에도 기여한다.
- 명확한 설계는 모델의 발견 과정에서 통찰력을 제공할 수 있다.
발견 과정
- 해결해야하는 문제에 적합한 설계를 만들려면 먼저 도메인 중심 개념을 담고 있는 모델을 확보해야한다.
- 유연한 설계를 통해 소프트웨어를 확장하고 변경하면서 모델을 정제할 수 있고, 발전된 설계 기법을 통해 모델을 엄격히 정의할 수 있다.
- 발견된 개념을 모델링하기 위해 "분석 패턴", "디자인 패턴"등을 적용할 수도 있다.
728x90
'도메인 주도 설계' 카테고리의 다른 글
[도메인 주도 설계] 09. 암시적인 개념을 명확하게 (1) (0) | 2022.01.20 |
---|---|
[도메인 주도 설계] 08. 도약 (0) | 2022.01.11 |
[도메인 주도 설계] 07. 언어의 사용(확장 예제) (2) (0) | 2022.01.06 |
[도메인 주도 설계] 07. 언어의 사용(확장 예제) (1) (0) | 2022.01.06 |
[도메인 주도 설계] 06. 도메인 객체의 생명주기 (2) (0) | 2021.12.17 |
Comments