여름 동안, 나는 디자인에 대해 많이 읽었습니다. 내가 읽은 두 가지 주목할만한 작품은 켄트 벡 (Kent Beck)의 Test Driven Development: By Example과 야코프 (Yacoub)의 Pattern-Oriented Analysis and Design: Composing Patterns to Design Software Systems입니다.TDD 및 POAD는 방법론을 경쟁합니까?
이 책은 소프트웨어 시스템을 설계 할 때 두 가지 다른 접근 방식을 사용합니다. 제 생각에이 두 기술은 스펙트럼의 반대편에 있습니다. POAD, 우리는 패턴에서 엄격하게 설계
- : 나는 때문에 결론에 도달. TDD에서는 필요에 따라 패턴을 리팩터링합니다.
- TDD에서는 모델을 경량으로 유지합니다. POAD에서는 다양한 수준의 세분성을위한 모델을 엄격하게 개발합니다. 우리는 코드 생성과 라운드 트립을 사용하여 모델과 코드를 일관성있게 유지합니다.
- POAD는 이론적으로 보이고 작동이 입증되지 않습니다. 많은 소프트웨어 개발자가 TDD를 연습합니다.
- 패턴 클래스보다 더 높은 수준의 추상화를 제공합니다 : 내가 설계 패턴 중심의 접근 방식을 사용하여 뒤에 추론을 많이 볼 수 있지만
나는, TDD가 잘 작동하도록 입증 된 것으로 알고 있습니다.
- 패턴을 사용하면 높은 세분성의 세부 사항을 무시할 수 있습니다.
- 코드 측면에서만 시스템을 이해하려고하면 어려울 수 있지만 POAD는 추적 기능을 제공하는 상위 수준 모델을 제공합니다. 이러한 모델을 코드와 함께 사용하면 시스템을보다 빠르게 이해할 수 있습니다.
이렇게 주어진다면,이 방법론은 경쟁하고 상호 배타적입니까? 내가 POAD를 선호하는 것처럼 느껴지지만, TDD가 가치있는 디자인 방법론으로 확실히 인식됩니다. 선호되는 접근법이 있습니까?
내 인상은 Unit 테스트가 디자인을 안내한다는 것이 었습니다. – Mike
@Mike : 궁극적으로 그것은 의미 론적 주장입니다. TDD 사용자가 코드를 작성할 때 디자인 할 수 있는지 의심하지 않습니다. 그러나 전반적인 디자인 철학이나 적절한 경우 소프트웨어 패턴의 사용을 비롯한 설계 요구 사항에 따라 가이드를 받았다는 데는 의심의 여지가 없습니다. –