Today I Learned

[도메인 주도 설계] 3부. 더 심층적인 통찰력을 향한 리팩터링 본문

도메인 주도 설계

[도메인 주도 설계] 3부. 더 심층적인 통찰력을 향한 리팩터링

하이라이터 2022. 1. 11. 20:11
728x90

유용한 모델을 개발하기 위해 명심할 점

  • 정교한 도메인 모델은 만들 수 있으며, 노력을 들일 만한 가치가 있다.
  • 해당 도메인을 학습하는 개발자와 도메인 전문가의 긴밀한 참여와 반복적인 리팩터링 과정 없이 유용한 모델을 개발하기란 쉽지 않다.
  • 유용한 모델을 효과적으로 구현하고 사용하려면 정교한 설계 기술이 필요할지도 모른다.

리팩터링 수준

  • 대부분 리팩터링을 다룰 때 코드의 가독성을 높이거나 쉽게 개선하는 기계적인 변경에 초점을 맞춘다.
  • 하지만 시스템의 생존력에 가장 큰 영향을 미치는 리팩터링은 도메인에 대한 새로운 통찰력을 반영하거나 코드를 사용해 모델이 표현하고자 하는 바를 명확하게 드러내고자 수행하는 경우이다.
  • 리팩터링의 목표는 개발자가 단순히 코드가 수행하는 바를 이해하는 것 뿐만 아니라 왜 그렇게 수행되는지 이해하고 도메인 전문가와의 의사소통에 이를 연관시키는 것이다.

심층 모델

  • 전통적인 객체 분석 방법에서는 요구사항 문서에 서술된 명사를 객체명으로, 동사를 객체의 메서드로 사용한다.
  • 그러나 실제 초기 모델은 얄팍한 지식에 기반을 둔 투박하고 무의미한 모델인 경우가 대부분이다.
  • 심층 모델이란 도메인의 피상적인 측면은 배제하고 도메인 전문가의 주요 관심사와 가장 적절한 지식을 알기 쉽게 표현하는 모델이다. 이 정의가 추상화를 의미하는 것은 아니다.

심층 모델/유연한 설계

  • 지속적으로 리팩터링을 수행하려면 설계 자체가 변경을 지원해야 한다.
  • 반복적인 변경을 거칠수록 설계는 점점 더 유연해진다.
  • 유연한 설계는 변경을 촉진할 뿐만 아니라 모델 자체의 개선에도 기여한다.
  • 명확한 설계는 모델의 발견 과정에서 통찰력을 제공할 수 있다.

발견 과정

  • 해결해야하는 문제에 적합한 설계를 만들려면 먼저 도메인 중심 개념을 담고 있는 모델을 확보해야한다.
  • 유연한 설계를 통해 소프트웨어를 확장하고 변경하면서 모델을 정제할 수 있고, 발전된 설계 기법을 통해 모델을 엄격히 정의할 수 있다.
  • 발견된 개념을 모델링하기 위해 "분석 패턴", "디자인 패턴"등을 적용할 수도 있다.
728x90
Comments