1. XP (extreme Programming)의 개요
1-1. XP (extreme Programming)의 정의
- 짧은 개발주기 반복(Iteration)을 통해 고객이 원하는 핵심적인 기능을 우선 구현 함으로서 프로젝트의 위험을 줄이는 프로그래밍 중심의 소프트웨어 개발방법론
1-2. XP (extreme Programming)의 특징
1) 신속한 피드백 : 개발자가 짧은 단위로 고객의 피드백을 받아서 고객의 요구 반영 확인
2) 단순함을 전제 : 현재의 문제에 집중해서 작업하고 미래의 일에 대해 걱정하지 않음
3) 점진적인 수정 : 문제를 풀 때의 과정은 작은 교정의 연속
4) 변화의 인정 : 변경 및 변화는 당연히 발생하는 것이라 인정함
5) 고품질의 작업 : 선 테스트 후 프로그래밍 방법(TDD)으로 테스트의 중요성 강조
2. XP (extreme Programming)의 핵심 가치와 실천항목
2-1. XP (extreme Programming)의 핵심 가치
1) 용기 : 고객의 요구사항 변화에 능동적인 대처
2) 단순성 : 부가적 기능, 사용되지 않는 구조와 알고리즘 배제
3) 커뮤니케이션 : 개발자, 관리자, 고객 간의 원활한 의사소통
4) 피드백 : 지속적인 테스트와 통합, 반복적 결함 수정, 빠른 피드백
2-2. XP (extreme Programming)의 실천항목
구분 | 실천항목 | 설명 |
계획 | Planning Game | 유저 스토리 이용, 개발 계획을 빠르게 수립 |
분석 / 설계 | On-Site Customer | 개발 효율성을 위해 고객을 프로젝트에 상주시킴 |
Simple Design | 가능한 가장 간략한 디자인 상태 유지 | |
Metaphor | 최종적으로 개발되어야 할 시스템의 구조 기술 | |
구현 | Refectoring | 프로그램 기능은 변경 없이 중복/복잡성 제거 |
Pair Programming | 두 사람이 함께 프로그래밍(driver/partner) | |
Continuous Integration | 한 작업이 끝날 때 마다 지속적으로 통합하고 동시 테스트 | |
테스트 | Testing | 개발자가 먼저 단위 테스트, 실제 코드를 작성하기 전에 먼저 작성함으로써 자신이 무엇을 해야 하는지 스스로 깨우침 |
배포 | Small Release | 필요한 기능만을 갖춘 간단한 시스템을 빠르게 릴리즈 |
환경 | 40hour Week |
주 40시간 이상을 일하지 말도록 규칙을 정함 (2주를 연속으로 오버타임 하지 않도록 함) |
Code Standard | 팀원간 협업을 위해 코드가 표준화된 관례에 따라 작성됨 | |
Collective Ownership | 팀의 모든 프로그래머가 소스코드에 대한 공동 책임 |
3. XP (extreme Programming)의 개발 프로세스
1) 사용자 스토리
- 사용자 요구사항/UML의 유즈케이스와 같은 목적
2) 스파이크
- 어려운 요구사항 혹은 잠재적인 솔루션들을 고려하기 위해 작성하는 간단한 프로그램
3) 배포계획
- 전체 프로젝트에 대한 배포 계획 생성
4) 반복
- 하나의 반복을 1~3주 정도로 나누고 반복들을 프로젝트 전반에 균일하게 유지
5) 인수테스트
- 고객은 제대로 작동하는 시스템을 보면서 진척사항을 확인하고 이 시스템이 자신이 직접 명세한 테스트를 통과했는지 파악
6) 작업배포
- 소규모로 빈번하게 배포하여 고객에게 이득 조기 제공
'1. IT Story > Basic Studies' 카테고리의 다른 글
CI(Continuous Integration) (0) | 2019.06.21 |
---|---|
ATDD(Acceptance Test Driven Development) (0) | 2019.06.20 |
SEM(Strategic Enterprise Management) (0) | 2019.06.19 |
TDD (Test Driven Development) (0) | 2019.06.18 |
Agile 개발방법론 (0) | 2019.06.16 |
CBD(Component Based Development)방법론 (0) | 2019.06.14 |
객체지향방법론 (0) | 2019.06.13 |
정보공학방법론 (0) | 2019.06.12 |