This is an old revision of the document!
Tackling Complexity in the Heart of Software
복잡한 도메인(문제 영역)을 이해하고 모델링하고, 공통 언어로 소통하는데 초점을 맞추는 방법론.
본문 내용 출처 : Eric Evans. 『도메인 주도 설계』. 이대엽(역). 위키북스, 2011.
Part II: The Building Blocks of a Model-Driven Design
도메인 주도 설계 과정을 탄력성 있게 만들려면 개발자들은 잘 알려진 근본 원리들이 어떻게 Model-Driven Design을 뒷받침하는지 이해해야 한다. …
3개의 장은 패턴 언어로로 구성돼 있으며, 미묘한 모델의 특징과 설계 의사결정이 어떻게 도메인 주도 설계 과정에 영향을 주는지 보여주겠다 …
정교한 모델은 가장 근본적인 사항에 관심을 가질 때만 비로소 복잡성을 헤쳐나갈 수 있으며, 이는 팀에서 확신을 갖고 결합할 수 있는 상세 요소라는 결과로 나타난다.
Part III: Refactoring Toward Deeper Insight
Levels of Refactoring
리팩터링의 목표는 개발자가 단순히 코드가 수행하는 바를 이해하는 것뿐만 아니라 왜 그렇게 수행되는지를 이해하고 도메인 전문가와의 의사소통에 이를 연관시키는 것이다.
Deep Models
도메인의 피상적1)인 측면은 배제하고 도메인 전문가의 주요 관심사와 가장 적절한 지식을 알기 쉽게 표현하는 모델이다. 이 정의가 추상화를 의미하는 것은 아니다. 심층 모델이 일반적으로 추상적인 요소를 포함하기는 하지만 문제의 핵심을 관통하는 구체적인 요소 또한 포함할 수 있다.
도메인과 조화를 이루는 모델에서는 융통성, 단순함, 설명력을 얻을 수 있다. 그러한 모델이 공통적으로 지니고 있는 한 가지 특징은 업무 전문가가 즐겨 쓰는 단순하지만 충분히 추상적인 언어가 존재한다는 것이다.
Deep Model/Supple Design
Supple Design은 변경을 촉진할 뿐 아니라 모델 자체의 개선에도 기여한다. Model-Driven Design을 지탱하는 두 개의 축이 있다. 심층 모델은 ①설계의 표현력을 부여한다. 그와 동시에 개발자가 여러 가지 시도를 할 수 있을 정도로 설계가 유연하고 개발자가 무슨 일이 일어나고 있는지 파악할 수 있을 만큼 설계가 명확하다면 ②모델의 발견 과정에 통찰력을 제공할 수 있다.
The Discovery Process
Part IV: Strategic Design