2010년 4월 19일 월요일

XP의 핵심 실천 사항

최근에 "SI Project (전무가로 가는길)" 책을 읽으면서
XP(eXtreme Programming)의 핵심 실천 사항이
잘 정리가 되어 있어서 발췌해 봅니다.
참고로 SI 개발자 분들께서는 반드시
꼭 필독서라고 생각 합니다.

  • 전체가 한 팀이다 (whole team)
XP 프로젝트를 위한 프로젝트팀은 고객과 개발자
그리고 프로젝트 관리자로 구성된다.
이들 구성원들은 기존 프로젝트 관리방법론에서 개발을
위해 여러 파트로 구분하던 것을 하나의 팀으로 운영 하면서
User Story를 중심으로 개발 계획 및 배포계획을 작성하고
이에 따라 반복적 개발 방식으로 개발을 추진한다.

  • 계획 게임 (planning game)
고객과 함께 하는 게임이다. 고객이 User Story를 작성하면
개발자는 이를 분석하여 개발에 필요한 시간을
구하고 고객은 여러 User Story들에 대해 개발에
우선순위를 부여하고 개발을 위한 배포계획을 개발자와
함께 수립하여 개발을 진행 한다.

  • 고객이 테스트 한다 (customer tests)
모든 User Story들은 개발이 완료되면 단위 테스트를 거치고 인수
테스트를 수행한다.
이때 인수 테스트를 위한 기준을 고객이 지정하고 인수 테스트에
고객이 참여함으로써 User Story의 구현이 완벽하게 되었는가를
검증 한다.

  • 작은 배포 (small release)
모든 XP에서의 시스템 개발은 시스템 규모에 관계없이 일정한
크기의 User Story로부터 시작되면 이러한 작은 User
Story들이 모여 하나의 시스템을 구성한다.
따라서 User Story의 구현에 따른 작은 배포가 수없이
많은 횟수로 이루어지며 이 때마다 자동화된 테스트 환경에
의해 시스템의 통합 테스트가 이루어지게 된다. XP의
기본 사상으로서 테스트의 반복은 시스템 품질
향상을 위한 초석이다.

  • 단순한 설계 (simple design)
프로그램을 하기 위한 설계의 일환으로 기립회의를 추진 한다.
개발자들이 둥글게 둘러서서 시스템의 설계를 검토하는
짧은 회의를 설계안에 대한 의견을 공유하며 여러
설계안 중에서 가장 단순한 설계안을 채택함으로써 시스템
의 복잡도를 낮추고 품질을 높이는 전략을 채택하고 있다.

  • 짝 프로그래밍 (pair programming)
팀원들 간에 교대로 두 명의 프로그래머가 짝을 이루어 하나의
User Story를 설계하고 구현함으로써 팀 의사소통 활성화
및 시스템 전반에 대한 품질 향상과 팀원들의 기술력
확산에 긍정적인 결과를 유도할 수 있다.

  • 테스트 중심 개발 (test-driven development)
테스트 케이스를 기반으로 자동화된 테스트 환경을 프로그램
이전에 구축하고 프로그램 과정에서 지속적인 테스트를
수행하여 프로그램의 품질을 높인다. 효율적인
테스트 환경의 구축을 위해 자동화된 테스트 도구의
활용은 필수적이다.

  • 설계의 개선 (design improvement)
리팩토링으로 대표되는 XP의 지속적인 설계의 개선은 모든 객체에
대해 가능한 가장 효율적인 기능으로 재구성하는 것을 권장한다.
리팩토링의 지향점은 객체의 기능을 유지하면서 가능한 단순한
설계와 기능의 프로그램으로 재구성하는 것이다.

  • 지속적인 통합 (continuos intergration)
수 많은 User Story로 세분화된 개발 단위 중심의 배포 계획에
의한 지속적인 시스템 통합 및 테스트는 시스템을
보다 안정적으로 개발할 수 있는 환경을 제공 한다.
계속되는 작은 배포와 이에 따른 지속적인 통합 절차 및
테스트의 수행으로 프로그램에서 오류는 제거되고
프로그램 설계의 개선으로 효율성 및 성능은 향상된다.

  • 선택적 코드 소유권한 (collective code ownership)
여러 개발자들이 자유로이 다른 개발자의 소스코드에 대한
수정 권한을 갖도록 함으로써 다양한 관점에서의
프로그램 설계 개선이 이루어진다. 또한 이 과정에서
중복되는 프로그램의 기능이 제거되며
프로그램 간의 인터페이스 문제들이 최소화되고 개발자의
안목이 향상 된다.

  • 코딩 표준 (coding standard)
XP에서의 프로그램은 프로젝트 전체 개발팀에 대한 코딩의
표준 준수를 기준으로 수행한다.
이 방침은 다른 개발 방법론에서도 주요한 개발 전략이다.
그러나 XP에서는 짝 프로그래밍,선택적 코드 소유권한,
설계의 개선 등의 전략을 통해 어떠한 다른 개발방법론보다
코딩 표준이 효율적으로 적용될 수 있는 환경을 제공한다. 이 코딩
표준은 전체 시스템을 마치 한명의 뛰어난 프로그래머가 개발
한 것과 같은 효과를 가져온다.

  • 은유법 (metaphor)

프로젝트 팀 내에서 개발하고 있는 기능들에 대한 설명을 누구나 이해할
수 있는 은유적인 기법을 통해 표현하려고 노력 한다.
딱딱한 설명 대신 전체 시스템의 기능을 상징적으로
표현할 수 있는 쉬운 표현의 작성을 위해 노력하는 과정에서 시스템의
기능에 대한 보다 깊은 이해를 불러 오는 효과가 있다.

  • 주당 40시간 (40 hour/week)
소프트웨어의 개발을 지속적인 행보로 오랜 시간 계속
수행할 수 있도록 한다.마치 마라톤을 하듯이 순간의
스퍼트로 전체적인 리듬과 페이스를 잃지 않도록
꾸준하면서도 지치지 않는 시스템 개발을 위해 주당
40시간의 개발 작업을 준수하도록 한다. 무리한 야근은
개발자들의 생선성을 저하하며 시스템의 품질을 떨어
뜨리고 장기간의 프로젝트 수행을 어렵게 만든다.

댓글 없음:

댓글 쓰기