역 김태선
Extreme Programming(XP) 방법론은 독특한 코드 공유, 테스트 기반 개발, 연속적인 통합과정처럼 실전적인 요소가 가미된 특성으로 인해 프로그래머들의 주목을 받아왔다. 따라서 실무적 맥락에서 확장성을 고려한 프로젝트에 재빠르게 적용할 수 있는 코드를 얻기 위해 대다수의 개발자들이 XP 방법론으로 돌아선다거나 근래 출간되는 도서들이 Extreme Programming에 초점을 맞추고 있는 현상도 그리 이상한 일은 아니라고 할 수 있다.
이와 같은 맥락에서 오라일리에서도 『Java Extreme Programming Cookbook』을 독자들에게 선보이게 되었다.
이 책은 실제로 개발자들이 비즈니스에 적용하고 XP를 시연함에 있어 필요한 100여가지 이상의 "팁"을 수록하고 있지만 그렇다고 해서 처음부터 독자들에게 XP를 강요하지는 않는다. 다만 Ant, Junit, HttpUnit, Cactus, Tomcat, Xdoclet 등을 포함하여 자바에서 XP를 하기 위해 필요한 유명 오픈 소스 개발도구에 대한 주요 특징들을 이해하기 쉽게 서술하고 있다. 세부적으로도 빠른 속도의 개발 환경 및 개발 도구들에 대한 구축에 대해서 잘 알려주고 있다.
자바 XP에 적합한 오픈 소스 개발 도구가 풍부하다는 사실은 가난한 개발자들에게는 큰 혜택이 됨과 동시에 큰 도전이 될 수도 있다. 특히 여러 소스로부터 파생된 다양한 개발 도구에 대한 분류와 이러한 도구를 효율적으로 활용하는 방법을 찾는 일들은 지루한 시간 낭비로 생각될 수 있다. 그렇지만 이 책의 공동 저자인 브라이언(Brian)과 코이너(Coyner)는 이에 대해 다음과 같이 말한다. "개발자들은 어떻게 언제 특정 오픈 소스 개발 도구를 사용해야 하는지 알고 있어야 하며 테스트를 위한 일종의 보조 객체인 Mock 객체 사이에서의 개념이나 해당 개발 도구들을 통합할 방법 또한 숙지하고 있어야 한다." 『Java Extreme Programming Cookbook』에서 말하는 "요리법"이란 이러한 XP 개발 도구의 가장 중요한 기능들을 사용하는 방법을 말하는 것이다. 다시 말해 이러한 수많은 개발 도구들을 Unit 테스트에 어떻게 적용하여 조정하는지, 지속적인 통합을 위해서 불필요한 부분은 없는지, 등등을 설명하고 있다. 이러한 예제들을 살펴보면서 독자들은 자신의 목적에 부합하는 가장 효율적인 개발 도구를 선택하게 되며 이를 바탕으로 서로 밀접하게 관련된 튼튼한 개발 환경을 얻을 수 있다.
각 "요리법"들은 XP 개발 환경에서 강조하는 소스 코드 빌드와 테스트 단계를 통합하면서 자동화를 위한 해결책을 제시하고 있다. 물론 이 책의 진가는 이러한 해결방법들을 참고하여 시간을 절약한다는데 있다. 그렇지만 단순한 시간 절약의 차원보다는 곧바로 복사하여 사용할 수 있을 정도로 활용도가 높은 소스 코드를 집대성 해놓았다는 것이 이 책에 더 적합한 평가가 아닌가 싶다. 또한 이러한 해결을 위한 접근 과정이 어떻게 그리고 왜 이루어지는가에 대해 각 "요리법"마다 상세하게 설명되어 있으며 독자들이 비슷한 상황에서 이러한 기법들을 적용할 수 있도록 유도하고 있다. 특히 이 책은 처음부터 끝까지 묵시적으로 리팩토링(Refactoring), 단위 테스팅(Unit Testing), 지속적인 통합 과정(continuous integration)만이 최고 품질의 소프트웨어를 개발하기 위한 최선의 방법이라고 이야기한다는 점이 눈여겨볼 만하다.
만약 테스트 기반 개발 환경을 구축해보고 싶은 독자들이 있다면 이 책이야말로 좋은 길잡이가 되어줄 것이다.