You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
어려운 일은 도메인 전문가의 섬세한 관심사를 포착하고 효과적인 설계를 이끌어줄 명확한 모델을 발견하는 것이다.
도메인에 대한 심층적인 이해를 반영한 모델을 통해 도메인 전문가의 사고방식과 좀더 자연스럽게 융합되고
사용자의 요구에 기민하게 대응할 수 있는 소프트웨어를 개발할 수 있다.
3부는 이와 관련된 목표를 제시하고, 목표를 달성할 수 있는 프로세스, 애플리케이션의 요구사항과 개발자 본인의 요구사항도 충족하는 설계를 만들기 위한 원리와 패턴을 설명한다.
유용한 모델을 성공적으로 개발하기 위한 세 가지 관건은 다음과 같다.
정교한 도메인 모델은 만들 수 있으며, 노력을 들일만한 가치가 있다.
해당 도메인을 학습하는 개발자와 도메인 전문가의 긴밀한 참여와 반복적인 리팩터링 과정 없이 유용한 모델을 개발하기란 쉽지 않다.
유용한 모델을 효과적으로 구현하고 사용하려면 정교한 설계 기술이 필요하다.
리팩터링 수준
리팩터링은 소프트웨어의 기능을 수정하지 않고 설계를 다시 하는 걸 의미한다. 사전에 모든 설계 결정을 내리기 보다는 기존 기능을 유지하고 계속 코드를 변경하면서 설계를 더 유연하게 개선하거나 이해하기 쉽게 만든다. 자동화된 단위 테스트가 있다면 더 안전하게 리팩터링을 할 수 있다. 그러면 개발자는 앞으로 발생할 수 있는 문제를 미리 예측해야 하는 부담감을 덜 수 있다.
리팩터링을 다루는 문헌은 코드의 가독성을 높이거나 개선하는 기계적인 변경에 초점을 둔다. < 패턴을 활용한 리팩터링(Refactoring to Patterns) > 에서 소개한 접근법은 개발자가 디자인 패턴을 적용해야 한다고 판단했을 때 따라야 할 리팩터링에 대해 높은 수준의 목표를 제시한다. 이 접근법은 설계 품질을 주로 기술적인 관점에서 본다.
심층 모델
전통적인 방식의 객체 분석 방법은 요구사항 문서에 명사와 동사를 식별하고, 명사는 객체 이름, 동사는 객체의 메서드로 사용하는 것이다. 초보한테는 이런 단순한 설명이 유용하지만 실제 초기 모델은 얄팍한 지식에 기반을 둔 투박하고 무의미한 모델이다.
심층 모델(deep model)이란 도메인의 피상적인 측면은 배제하고 도메인 전문가의 주요 관심사와 가장 적절한 지식을 알기 쉽게 표현하는 모델이다. 이 정의가 추상화를 의미하는 것은 아니지만 문제의 핵심을 관통하는 구체적인 요소가 포함될 수도 있다.
도메인과 조화를 이루는 모델에는 융통성, 단순함, 설명력을 얻을 수 있다. 그런 모델이 지니는 한 가지 특징은 업무 전문가가 즐겨 쓰는 단순하지만 충분히 추상적인 언어가 존재한다는 것이다.
심층 모델/유연한 설계
지속적으로 리팩터링을 수행하려면 설계 자체가 변경을 지원해야 한다. 설계를 변경하고 더 사용하기 쉽게 만들어 주는 설계 특성이 있다.
여기서 소개하는 모델링과 설계 접근법을 따르면 시행착오를 겪긴 하지만 설계를 변경하기 쉬워지고 반복적인 변경을 거쳐 유연한 설계에 도달하게 된다.
유연한 설계는 변경을 촉진할 뿐 아니라 모델 자체의 개선에도 기여한다. 심층 모델은 설계에 표현력을 부여한다. 그리고 설계가 유연하고 명확하면 모델의 발견 과정에 통찰력을 제공할 수 있다.
발견 과정
해결해야 하는 문제에 적합한 설계를 만들려면 도메인 중심 개념을 담고 있는 모델을 확보해야 한다.
모델과 설계 간의 관계가 매우 밀접하므로 코드가 리팩터링하기 어려운 경우 모델링을 진행할 수 없다. 유연한 설계를 통해 쉽게 확장/변경이 가능할 수 있게 해야 한다.
누군가가 쉽게 적용할 수 있는 패턴을 만들어 놓은 경우도 있다. 분석 패턴과 디자인 패턴을 적용해 볼 수 있는데 면밀한 지식 검토 과정에 도움을 주고 조사해야 할 범위를 줄여준다.
때로 MODEL-DRIVEN-DESIGN과 명시적인 개념이 함께 어우러지는 단계에서 도약을 경험하게 된다. 더 표현력 있고 융통성 있게 변화시킬 수 있는 기회는 열려 있다. 기회는 새로운 기능일 수도 있고 변경이 어려운 커다란 코드 덩어리를 심층 모델의 단순하고 유연한 표현으로 대체하는 것일 수 있다. 이런 도약이 발생할 경우 대단한 가치가 있으므로 기회를 잡을 필요가 있다.
The text was updated successfully, but these errors were encountered:
3부 더 심층적인 통찰력을 향한 리팩터링
어려운 일은 도메인 전문가의 섬세한 관심사를 포착하고 효과적인 설계를 이끌어줄 명확한 모델을 발견하는 것이다.
도메인에 대한 심층적인 이해를 반영한 모델을 통해 도메인 전문가의 사고방식과 좀더 자연스럽게 융합되고
사용자의 요구에 기민하게 대응할 수 있는 소프트웨어를 개발할 수 있다.
3부는 이와 관련된 목표를 제시하고, 목표를 달성할 수 있는 프로세스, 애플리케이션의 요구사항과 개발자 본인의 요구사항도 충족하는 설계를 만들기 위한 원리와 패턴을 설명한다.
유용한 모델을 성공적으로 개발하기 위한 세 가지 관건은 다음과 같다.
리팩터링 수준
리팩터링은 소프트웨어의 기능을 수정하지 않고 설계를 다시 하는 걸 의미한다. 사전에 모든 설계 결정을 내리기 보다는 기존 기능을 유지하고 계속 코드를 변경하면서 설계를 더 유연하게 개선하거나 이해하기 쉽게 만든다. 자동화된 단위 테스트가 있다면 더 안전하게 리팩터링을 할 수 있다. 그러면 개발자는 앞으로 발생할 수 있는 문제를 미리 예측해야 하는 부담감을 덜 수 있다.
리팩터링을 다루는 문헌은 코드의 가독성을 높이거나 개선하는 기계적인 변경에 초점을 둔다. < 패턴을 활용한 리팩터링(Refactoring to Patterns) > 에서 소개한 접근법은 개발자가 디자인 패턴을 적용해야 한다고 판단했을 때 따라야 할 리팩터링에 대해 높은 수준의 목표를 제시한다. 이 접근법은 설계 품질을 주로 기술적인 관점에서 본다.
심층 모델
전통적인 방식의 객체 분석 방법은 요구사항 문서에 명사와 동사를 식별하고, 명사는 객체 이름, 동사는 객체의 메서드로 사용하는 것이다. 초보한테는 이런 단순한 설명이 유용하지만 실제 초기 모델은 얄팍한 지식에 기반을 둔 투박하고 무의미한 모델이다.
심층 모델(deep model)이란 도메인의 피상적인 측면은 배제하고 도메인 전문가의 주요 관심사와 가장 적절한 지식을 알기 쉽게 표현하는 모델이다. 이 정의가 추상화를 의미하는 것은 아니지만 문제의 핵심을 관통하는 구체적인 요소가 포함될 수도 있다.
도메인과 조화를 이루는 모델에는 융통성, 단순함, 설명력을 얻을 수 있다. 그런 모델이 지니는 한 가지 특징은 업무 전문가가 즐겨 쓰는 단순하지만 충분히 추상적인 언어가 존재한다는 것이다.
심층 모델/유연한 설계
지속적으로 리팩터링을 수행하려면 설계 자체가 변경을 지원해야 한다. 설계를 변경하고 더 사용하기 쉽게 만들어 주는 설계 특성이 있다.
여기서 소개하는 모델링과 설계 접근법을 따르면 시행착오를 겪긴 하지만 설계를 변경하기 쉬워지고 반복적인 변경을 거쳐 유연한 설계에 도달하게 된다.
유연한 설계는 변경을 촉진할 뿐 아니라 모델 자체의 개선에도 기여한다. 심층 모델은 설계에 표현력을 부여한다. 그리고 설계가 유연하고 명확하면 모델의 발견 과정에 통찰력을 제공할 수 있다.
발견 과정
해결해야 하는 문제에 적합한 설계를 만들려면 도메인 중심 개념을 담고 있는 모델을 확보해야 한다.
모델과 설계 간의 관계가 매우 밀접하므로 코드가 리팩터링하기 어려운 경우 모델링을 진행할 수 없다. 유연한 설계를 통해 쉽게 확장/변경이 가능할 수 있게 해야 한다.
누군가가 쉽게 적용할 수 있는 패턴을 만들어 놓은 경우도 있다. 분석 패턴과 디자인 패턴을 적용해 볼 수 있는데 면밀한 지식 검토 과정에 도움을 주고 조사해야 할 범위를 줄여준다.
때로 MODEL-DRIVEN-DESIGN과 명시적인 개념이 함께 어우러지는 단계에서 도약을 경험하게 된다. 더 표현력 있고 융통성 있게 변화시킬 수 있는 기회는 열려 있다. 기회는 새로운 기능일 수도 있고 변경이 어려운 커다란 코드 덩어리를 심층 모델의 단순하고 유연한 표현으로 대체하는 것일 수 있다. 이런 도약이 발생할 경우 대단한 가치가 있으므로 기회를 잡을 필요가 있다.
The text was updated successfully, but these errors were encountered: