1. SW 개발방법론의 Agility 강조, XP의 개요
(1) XP (eXtreme Programming)의 정의
- 짧은 주기의 반복(Iteration)을 통해 요구 변화에 신속하게 대응하여 위험을 줄이고 고객 관점의 고품질 SW를 빠르게 전달하는 Agile 방법론의 기법
(2) XP의 특징
- 개발자, 관리자, 고객 간 조화로 개발 생산성을 높이고자 하는 접근법
- 고객 요구사항 변경에 적극적, 긍정적으로 대처
(3) XP의 등장배경
- RUP의 산출물 부담과 신속한 개발의 어려움
- Time to Market 실현과 Products의 적시 배포
- 프로세스 중심의 전통적 방법론으로는 변화의 유연한 수용에 한계
2. XP 프로젝트 개발 절차 및 절차 용어
(1) XP 개발 절차
(2) XP 개발 절차 용어
| 용어 | 설명 |
|---|---|
| 사용자 스토리 | 요구사항 수집, 의사소통 도구 기능단위 필요한 내용을 간단하게 기재 |
| 스파 이크 | 어려운 요구사항 혹은 잠재 솔루션을 고려한 간단한 프로그램 사용자 스토리의 신뢰성을 증대, 기술 문제의 위험 감소 목적 |
| 릴리즈 계획 | 전체 프로젝트에 대한 배포 계획 하나의 반복을 1 ~ 3주로 나누고 반복들을 균일하게 유지 |
| 승인 테스트 | 릴리즈 전 인수 테스트 고객이 수행 |
| 소규모 릴리즈 | 작은 배포는 XP 주기의 마지막 단계 소규모로 빈번하게 배포하면 고객에게 여러 이득을 조기 제공 |
- 요구사항을 바탕으로 일정 계획 수립하고 일정한 단위 소규모 배포 추구
3. XP 5가지 핵심가치와 12가지 실천사항
(1) XP의 5가지 핵심가치(Core Value)
| 핵심가치 | 설명 |
|---|---|
| 용기 (Courage) | 고객의 요구사항 변화에 능동적인 대처 |
| 단순성 (Simplicity) | 부가적 기능, 사용되지 않는 구조와 알고리즘 배제 |
| 커뮤니케이션 (Communication) | 개발자, 관리자, 고객 간의 원활한 의사소통 |
| 피드백 (Feedback) | 지속적인 테스트와 반복적 결함 수정, 빠른 피드백 |
| 존중 (Respect) | 모든 프로젝트 관리자는 팀원의 기여를 존중 |
(2) 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 | 팀원들 간 커뮤니케이션을 향상시키기 위해서는 코드가 표준화된 관례에 따라 작성되어야 함 |
5. 기존 개발 방법의 문제점 해결방안 및 고려사항
(1) 기존 개발 방법의 문제점 해결을 위한 XP의 전략
| 구분 | 내용 |
|---|---|
| 관리측면 | 결정은 분산화, XP관리도구로 매트릭 이용, 코칭/트래킹/조정 |
| 계획측면 | 팀이 개발한 SW의 가치를 최대화, 임베디드 소프트웨어 가능한 적게 투자하고, 빠르게, 가장 가치 있는 기능 부여 |
| 설계측면 | 의사소통 통해 설계, 중복된 코드가 없을 것 → 단순하게 개발 가능한 클래스와 메소드 들은 적게 만들 것-> 변경에 유연 |
| 개발측면 | 지속적인 통합, 수정, 테스트, 배포 복잡한 코드 제거, Pair 프로그램으로 완벽한 코딩 |
| 테스트측면 | 각 테스트는 다른 부분과 관련이 없어야 함 → 테스트 자동화 테스트 프로그램 만드는 주체는 프로그래머 |
| 기타 | 계획세우기, 작은시스템릴리즈, 메타포등 12가지실천사항 병행 |
(2) XP의 도입 시 고려사항
| 구분 | 고려사항 | 대응방안 |
|---|---|---|
| 재무관점 | 요구사항이 빈번히 변경 되어 예산 수립 어려움 | 개발기간 예측 및 관리로 정확도 향상 프로젝트관리기법 합리적 접목 |
| 고객관점 | 개발자 사용자간 공감대 형성 부족하면 생산성저하 | 요구사항 적극반영하고 SW를 자주 전달하여 신속 적용으로 고객 만족 |
| 내부관점 | 대규모 프로젝트 수행이 어려움 | 태스크 단위로 반복(Iteration)에 선택적 적용이 적합 |
| 학습 및 성장 | 산출물의 범위 변경 불가 능한 경우 적용 어려움 | 사용자나 개발자가 정확한 요구사항 도출 힘들때 적용, 잠재적가치 생성 |
| 개발자에게 기술요소에 대한 높은 숙련도 요구 | 구성원들의 이해와 공감 필요PM의 적극적인 방법론 실행의지 필요 |
View Comments (1)
감사합니다! 덕분에 잘 개념정리 할 수 있었네요