좋은 디자인이란?

Work & Study/애자일 개발 2010/02/11 15:47 posted by k16wire

요즘 팀에서 '설계'에 대한 교육과정을 만들고 있습니다. TDD 메일링 리스트를 읽던 중 좋은 디자인 good design 이란 단어가 눈에 띄어 옮겨봤습니다. 밥 아저씨가 한 말입니다.
One reasonable definition of good design is testability. It is hard to imagine a software system that is both testable and poorly designed. It is also hard to imagine a software system that is well designed but also untestable.

                                                                               Robert C. Martin (Uncle Bob)

설계의 끝이 어디냐? 저는 '개발을 시작할 수 있는 곳'이라고 생각합니다.

그럼 좋은 설계는 뭐냐? 개발된 코드가 테스트 하기 좋으면 좋은 설계다. 이 두 질문을 합쳐보면 어떻게 설계를 해야 하는지 답이 나오는 거 같습니다. :-)

한편으로 초보자도 숙련자처럼 잘 쓸 수 있게 만든 UI가 잘 만든 UI이듯 좋은 설계는 초보 개발자도 숙련 개발자 처럼 잘 이해할 수 있게 만든것은 아닐까요.

좋은 설계는 테스트를 잘 할 수 있는가(testability)로 정의할 수 있습니다.  설계의 목적은 결국 무엇입니까? 잘 작성된 설계 산출물을 만드는건가요? 아닙니다. 결국 잘 동작하는 시스템을 만드는 것입니다.
설계, 개발, 테스트는 따로 분리할 수 있는 작업이 아니라 한꺼번에 이루어져야 합니다.

그럼 테스트 용이성은 또 뭐라고 정의할 수 있을까요 ? :-)

저작자 표시 비영리 변경 금지