This is an old revision of the document!
Domain-Driven Design
서문
1부 동작하는 도메인 모델 만들기
2부 모델 주도 설계의 기본 요소
3부 더 심층적인 통찰력을 향한 리팩터링
Part III: Refactoring Toward Deeper Insight
리팩터링 수준
Levels of Refactoring
시스템의 생존력에 가장 큰 영향을 미치는 리팩터링은
(기술적인 관점보다)
도메인에 대한 새로운 통찰력을 얻었을때 수행하거나
코드를 사용해서
모델이 표현하고자 하는 바를 명확하게 드러내고자 수행하는 경우다.
(= 심층 모델을 향한 리팩터링)
리팩터링의 목표는 개발자가 단순히 코드가 수행하는 바를 이해하는 것뿐만 아니라
왜 그렇게 수행되는지를 이해하고 도메인 전문가와의 의사소통에 이를 연관시키는 것이다.
심층 모델
Deep Models
도메인의 피상적인 측면은 배제하고
도메인 전문가의 주요 관심사와 가장 적절한 지식을 알기 쉽게 표현하는 모델이다.
이 정의가 추상화를 의미하는 것은 아니다.
심층 모델이 일반적으로 추상적인 요소를 포함하기는 하지만
문제의 핵심을 관통하는 구체적인 요소 또한 포함할 수 있다.
도메인과 조화를 이루는 모델에서는 융통성, 단순함, 설명력을 얻을 수 있다.
그러한 모델이 공통적으로 지니고 있는 한 가지 특징은 업무 전문가가 즐겨 쓰는 단순하지만 충분히 추상적인 언어가 존재한다는 것이다.
심층 모델/유연한 설계
Deep Model/Supple Design
10 유연한 설계
Supple Design은 변경을 촉진할 뿐 아니라 모델 자체의 개선에도 기여한다.
Model-Driven Design을 지탱하는 두 개의 축이 있다.
심층 모델은 ①설계의 표현력을 부여한다.
그와 동시에 개발자가 여러 가지 시도를 할 수 있을 정도로 설계가 유연하고
개발자가 무슨 일이 일어나고 있는지 파악할 수 있을 만큼 설계가 명확하다면
②모델의 발견 과정에 통찰력을 제공할 수 있다.
발견 과정
The Discovery Process
-
10 유연한 설계 : 쉽게 확장하고 변경할 수 있는 소프트웨어를 작성하는 방법을 다룬다
-
Chapter
4부 전략적 설계
Part IV: Strategic Design
Chapter
1)
본질적인 현상은 추구하지 아니하고 겉으로 드러나 보이는 현상에만 관계하는 것