I. 신속하고 유연한 애자일 방법론, XP의 개요
가. XP(eXtreme Programming)의 정의
- 의사소통과 TDD(Test driven development)를 기반으로 짧은 주기의 반복개발을 통해 고품질 소프트웨어를 빠르게 생산하는 애자일 대표 개발 방법론
나. XP의 특징
구분 |
설명 |
Time to Market |
- 급변하는 환경에서 소프트웨어를 빠르게 개발할 목적으로 설계 - 작은 기능 개발 단위로 소프트웨어를 빠르게 시장에 출시함 |
기존 방법론 문제점 극복 |
- 요구사항 변화에 대해 적극적, 긍정적 대처 - 산출물 보다는 동작하는 소프트웨어에 집중(Code Oriented) |
II. XP의 구성도 및 구성요소
가. XP의 구성도
- 사용자스토리를 기반으로 배포계획을 수립하고, 일정 단위기능을 포함한 소규포 배포 수행
나. XP의 구성요소
구성요소 |
설 명 |
사용자스토리 (User Story) |
- 요구사항수집 및 의사소통의 도구 - 기능단위의 필요한 내용을 간단히 기재 |
스파이크 (Spike) |
- 어려운 요구사항 또는 잠재솔루션을 고려하기 위해 작성하는 프로그램 - 사용자스토리의 신뢰성 증대 및 기술문제의 위험감소 목적 |
배포계획 (Release Planning) |
- 전체 프로젝트에 대한 배포계획 수립 - 의사결정을 위해 프로젝트 내 모든 것에 대한 규칙을 가짐 - 규칙을 프로젝트를 수행하기 위한 방법으로 정의 |
반복 (Iteration) |
- 1~3주의 기간으로 반복을 정의하고, 프로젝트 전반에 대해 균형적으로 유지 - 프로세스의 평가와 계획을 단순하고 신뢰하게 하는 핵심 항목 - 즉각적인 계획 및 실행은 요구사항변경에 쉽게 대처하기 위한 전략 |
인수테스트 (Acceptance Test) |
- 사용자가 직접 진척상황 확인 - 사용자스토리의 반영여부 확인 및 테스트 |
소규모 배포 (Small Release) |
- XP 주기의 마지막 단계 - 빈번한 배포는 사용자에게 효용 제공, 프로그램에 빠른 피드백 제공 |
III. XP의 핵심가치와 실천사항
가. XP의 핵심가치(Core Value)
핵심가치 |
설 명 |
용기 (Courage) |
- 사용자의 요구사항변화에 능동적인 대처 |
단순성 (Simplicity) |
- 부가적 기능, 사용하지 않는 구조와 알고리즘 배제 |
의사소통 (Communication) |
- 개발자, 관리자, 사용자 간 원활한 의사소통 |
피드백 (Feedback) |
- 지속적인 테스트 및 반복적 결함수정으로 빠른 피드백 |
존중 (Respect) |
- 모든 프로젝트 관리자는 팀원의 기여를 존중 |
나. XP의 실천사항(Practice)
구분 |
실천 항목 |
설명 |
개발 |
Pair Programming |
오류 감소와 생산성을 위해 하나의 컴퓨터로 짝을 지어 코딩 |
Collective Ownership |
시스템에 있는 코드는 누구든지 언제나 수정 가능 |
|
Continuous Integration |
하루에 몇 번이라도 시스템 통합 빌드 가능 (중단된 시스템이 아니어야 함) |
|
관리 |
Planning Game |
User Story를 이용하여 Next Release 범위를 빠르게 결정 |
Small Release |
필요한 기능들만 갖춘 간단한 시스템을 빠르게 릴리즈(2주단위) |
|
Metaphor |
문장 형태로 시스템 아키텍쳐 기술, 고객과 개발자 간 의사소통 |
|
구현 |
Simple Design |
요구사항을 만족시키도록 가능한 단순하게 설계 |
Test Driven Development |
테스트 주도 개발(TDD), 테스트를 통한 고객 검증, 승인 |
|
Refactoring |
기능의 변화 없이 코드 수정을 통해 디자인 개선 |
|
환경 |
40-hour per week |
주 40시간 이상 일하지 않고, 2주 연속 오버타임 금지 |
One-site Customer |
고객이 프로젝트에 풀 타임 상주, 의사결정 지원 |
|
Coding Standard |
커뮤니케이션 향상을 위해 표준화 관례에 따라 코드 작성 |
IV.XP과 타 개발 방법론 비교
가.XP와 SCRUM의 비교
구분 |
XP |
SCRUM |
형태 |
프로그램 실천법에 집중 엔지니어링방법에 초점 |
관리 및 조직적 실천법 집중 개발프로세스 프레임워크 |
개발주기 |
1 ~ 2주 (10일) |
4 ~ 6주 (30일) |
요구사항변경 |
요구사항 변경 수용 |
Sprint내 요구사항변경 불가 |
개발우선순위 |
고객이 개발우선순위를 결정 |
Team이 개발 우선순위 결정 |
나.XP와 구조적 방법론, 객체지향방법론과 비교
구분 |
XP |
구조적 방법론 |
객체지향방법론 |
중심내용 |
반복과 검증 |
시스템의 작업중심 |
객체와 역할 발견 |
중요관점 |
나선형 모델 적용 |
데이터흐름 |
데이터와 관련연산 |
분석/설계방법 |
객체지향방법론 |
DFD, 구조차트 |
ERD, UML |