XP (eXtreme Programming)

I. SW 개발방법론의 Agility 강조, XP의 개요

가. XP (eXtreme Programming)의 정의

짧은 주기의 반복(Iteration)을 통해 요구 변화에 신속하게 대응하여 위험을 줄이고 고객 관점의 고품질 SW를 빠르게 전달하는 Agile 방법론의 기법

나. XP의 특징

개발자, 관리자, 고객 간 조화로 개발 생산성을 높이고자 하는 접근법
고객 요구사항 변경에 적극적, 긍정적으로 대처

다. XP의 등장배경

– RUP의 산출물 부담과 신속한 개발의 어려움
– Time to Market 실현과 Products의 적시 배포
– 프로세스 중심의 전통적 방법론으로는 변화의 유연한 수용에 한계

 

II. XP 프로젝트 개발 절차 및 절차 용어

가. XP 개발 절차

 

나. XP 개발 절차 용어

용어설명
사용자
스토리
요구사항 수집, 의사소통 도구
기능단위 필요한 내용을 간단하게 기재
스파
이크
어려운 요구사항 혹은 잠재 솔루션을 고려한 간단한 프로그램
사용자 스토리의 신뢰성을 증대, 기술 문제의 위험 감소 목적
릴리즈
계획
전체 프로젝트에 대한 배포 계획
하나의 반복을 1 ~ 3주로 나누고 반복들을 균일하게 유지
승인
테스트
릴리즈 전 인수 테스트 고객이 수행
소규모
릴리즈
작은 배포는 XP 주기의 마지막 단계
소규모로 빈번하게 배포하면 고객에게 여러 이득을 조기 제공


– 요구사항을 바탕으로 일정 계획 수립하고 일정한 단위 소규모 배포 추구

 

III. XP 5가지 핵심가치와 12가지 실천사항

가. XP의 5가지 핵심가치(Core Value)

핵심가치설명
용기
(Courage)
고객의 요구사항 변화에 능동적인 대처
단순성
(Simplicity)
부가적 기능, 사용되지 않는 구조와 알고리즘 배제
커뮤니케이션
(Communication)
개발자, 관리자, 고객 간의 원활한 의사소통
피드백
(Feedback)
지속적인 테스트와 반복적 결함 수정, 빠른 피드백
존중
(Respect)
모든 프로젝트 관리자는 팀원의 기여를 존중

나. XP의 12가지 실천사항(Practice)

구분내용
01. Planning game (= Planning process)User story를 이용해서 next release의 범위를 빠르게 결정, 비즈니스 우선순위와 기술적 평가가 결합
02. Small/short releases필요한 기능들만 갖춘 간단한 시스템을 빠르게 프러덕션화 함, 아주 짧은(2주) 사이클로 자주 새로운 버전 배포
03. Metaphor공통의 name system(개발 및 커뮤니케이션 과정에서 공통된 개념을 공유 가능하게 함)
04. Simple design
단순성
현재의 요구사항을 만족시키도록 가능한 한 단순하게 설계함
05. Testing개발자 먼저 단위 테스트, 고객은 기능 테스트를 작성하여 요구사항이 모두 반영되었는지를 확인
06. Refactoring프로그램의 기능을 바꾸지 안으면서, 중복제거, 커뮤니케이션 향상, 단순화, 유연성 추가 등을 위해 시스템 재구성
07.Pair programming하나의 컴퓨터에 두 사람이 앉아서 같이 프로그램 함 (Driver / partner)
08. Collective ownership시스템에 있는 코드는 누구든지 언제라도 수정 가능함
09. CI(Continuous integration)하루에 몇 번이라도 시스템을 통합하여 빌드 할 수 있음
10. 40-hour week일주일에 40 시간 이상을 일하지 말도록 규칙으로 정하고 2주를 연속으로 오버 타임 하지 않도록 함
11. On-site customer개발자들의 질문에 즉각 대답해 줄 수 있는 고객을 프로젝트에 풀 타임으로 상주시킴
12. Coding standards팀원들 간 커뮤니케이션을 향상시키기 위해서는 코드가 표준화된 관례에 따라 작성되어야 함

 

V. 기존 개발 방법의 문제점 해결방안 및 고려사항

가. 기존 개발 방법의 문제점 해결을 위한 XP의 전략

구분내용
관리측면결정은 분산화, XP관리도구로 매트릭 이용, 코칭/트래킹/조정
계획측면팀이 개발한 SW의 가치를 최대화, 임베디드 소프트웨어
가능한 적게 투자하고, 빠르게, 가장 가치 있는 기능 부여
설계측면의사소통 통해 설계, 중복된 코드가 없을 것 → 단순하게 개발
가능한 클래스와 메소드 들은 적게 만들 것-> 변경에 유연
개발측면지속적인 통합, 수정, 테스트, 배포
복잡한 코드 제거, Pair 프로그램으로 완벽한 코딩
테스트측면각 테스트는 다른 부분과 관련이 없어야 함 
→ 테스트 자동화 테스트 프로그램 만드는 주체는 프로그래머
기타계획세우기, 작은시스템릴리즈, 메타포등 12가지실천사항 병행

나. XP의 도입 시 고려사항

구분고려사항대응방안
재무관점요구사항이 빈번히 변경 되어 예산 수립 어려움개발기간 예측 및 관리로 정확도 향상 프로젝트관리기법 합리적 접목
고객관점개발자 사용자간 공감대 형성 부족하면 생산성저하요구사항 적극반영하고 SW를 자주 전달하여 신속 적용으로 고객 만족
내부관점대규모 프로젝트 수행이 어려움태스크 단위로 반복(Iteration)에 선택적 적용이 적합
학습
및 성장
산출물의 범위 변경 불가 능한 경우 적용 어려움사용자나 개발자가 정확한 요구사항 도출 힘들때 적용, 잠재적가치 생성
개발자에게 기술요소에 대한 높은 숙련도 요구구성원들의 이해와 공감 필요PM의 적극적인 방법론 실행의지 필요

 

댓글을 남겨주시면 감사드려요~*^^*