11 분석 패턴의 적용
Don't reinvent the wheel

각 도메인의 사례가 되는 설계집

  숙련된 개발자들은 도메인 문제를 관찰하던 도중 익숙한 종류의 책임이나 관계를 발견하면
  과거에 문제를 해결했던 "경험"을 활용하려고 한다.
  ...
  이 가운데 일부는 패턴 형식으로 기록되고 공유되어
  이전에 축적된 경험을 다른 사람들이 쉽게 활용할 수 있는 길을 열어 주기도 한다.

2부에서 소개한 기본 요소와 관련된 패턴이나 10장의 유연한 설계 원칙과는 대조적으로 특정 개념을 표현하는 객체를 사용해서 더 높은 수준에서 더욱 특화된 영역을 다룬다.

마틴 파울러는 『분석 패턴: 재사용 가능한 객체 모델(Analysis Patterns: Reusable Object Models)』에서 분석 패턴을 다음과 같이 정의한다.

분석 패턴은 업무 모델링 과정에서 발견되는 공통적인 구조를 표현하는 개념의 집합이다. 분석 패턴은 단 하나의 도메인에 대해서만 적절할 수도 았고 여러 도메인에 걸쳐 적용이 가능할 수도 있다. [Fowler 1997, p. 8]

마틴 파울러가 제시한 분석 패턴은 실무에서 쌓은 경험을 바탕으로 도출된 것이므로 올바른 상황에서 적절할 경우 매우 실용적이다. 분석 패턴은 기술적인 해법이 아니다. 분석 패턴은 특정 도메인의 모델을 작성할 때 따를 수 있는 유용한 지침서에 해당한다.

최상의 분석 패턴은과거의 프로젝트에서 유용한 경험을 전달하고 모델에 대한 통찰력을 광범위한 설계 방침과 구현 결과에 결합한다.

분석 패턴은 참고할 수 있는 지식이다

분석 패턴이 현재의 요구사항에 딱 들어맞는 경우는 거의 없다. 그럼에도 분석 패턴은 도메인을 파악하는 과정에서 훌륭한 길잡이 역할을 하며 깔끔하게 추상화된 어휘집을 제공한다.

다만 한 가지 변경하지 말아야 할 것이 있다. 널리 알려진 분석 패턴을 적용할 때는 패턴의 외견상의 형태는 변경해도 무방하지만 패턴이 의미하는 기본적인 개념만큼은 손대지 말아야 한다. 여기에는 두 가지 이유가 있다.

  • 패턴에는 문제의 발생을 미연에 방지할 수 있는 지식이 포함돼 있다
  • 그보다 더 중요한 이유는 널리 이해되거나 적어도 잘 설명된 용어를 포함시킴으로서 UBIQUITOUS LANGUAGE의 품질을 높일 수 있다.
이런 식으로 개선된 분석 패턴은 가치가 높고계속해서 바퀴를 다시 발명하는 시간을 절약하는 데 도움이 된다.

유기적으로 구성된 지식을 다시 적용하는 이런 종류의 재사용 != 프레임워크나 컴포넌트와 같은 코드의 재사용 분석 패턴은 모델의 일부를 구성하는 부속품에 불과하다. 분석 패턴은 가장 중요하고 어려운 결정 사항에 집중하고 어떤 것을 선택해야 하는지와 그 외의 대안으로는 어떤 것이 있는지 명확하게 제시한다.
또한 분석 패턴은 그것이 없다면 알아내는 데 큰 비용이 드는 하부 활동에 대한 영향력예측할 수 있게 만들어준다.

domain-driven_design/part_3_refactoring_toward_deeper_insight/11_applying_analysis_patterns.txt · Last modified: by ledyx