Extreme Programming (XP)
익스트림 프로그래밍
- Agile Method 중 가장 영향력 있는 소프트웨어 프로세스 모델이다.
- Increment Size를 "Extremely" Small 하게 진행하기 때문에 이와 같은 이름이 붙었다.
- New Version은 하루에도 여러 번 출시되고, Delivery는 2주에 한번 시행되며
빌드할 때 마다 모든 테스트를 수행한다.
(= Extreme Version of Agile)
* 본 포스트는 Software Process Model (소프트웨어 프로세스 모델) (URL)의 하위 문서이다.
[Software Engineering] Software Process Model | 소프트웨어 프로세스 모델
Software Process Model 소프트웨어 프로세스 모델 - S/W Process를 추상화하여 표현한 것으로, S/W Process Activity들의 진행 방법에 대한 여러 모델들을 의미한다. - 대표적인 소프트웨어 프로세스 모델들은.
dad-rock.tistory.com
XP Release Cycle (XP 방법론에서의 소프트웨어 출시 사이클)
Sequence | Phase | Description |
1 | Select User Stories for this Release | - 요구사항(Stroy) 중 하나를 선택한다. |
2 | Break down Stories to Tasks | - 요구사항을 Task 단위로 나눈다. |
3 | Plan Release | - 개발에 착수할 Task를 선정한다. |
4 | Develop, Integrate, Test | - 개발, 통합, 테스트한다. |
5 | Release Software | - 완성한 소프트웨어를 출시한다. |
6 | Evaluate System | - 시스템을 평가한다. |
- XP에서는 짧은 기간동안 위 Phase들이 반복된다.
Key XP Practices (XP에서의 중요한 실천사항들, XP의 특징)
- User Stories for Requirements
- 사용자의 요구사항이 Story 혹은 Scenario 형태로 표현된다.
- 우선순위와 스케줄을 고려하여, 사용자가 Release에 포함시킬 Story를 선정한다.
- 개발팀은 Story와 Scenario는 Implementation Task 단위로 분할한다.
- 즉, XP에서는 사용자가 개발팀에 속해있다. - Refactoring (= Constant Code Improvement)
- 기존의 Code를 Restructuring(재조립)하는 것을 의미한다.
(이는 External Behavior을 수정하는 것이 아닌, Code를 개선시키는 것을 의미한다.)
- 당장 개선이 필요하지 않더라도, 소프트웨어의 개선 가능성을 타진하고 실제로 개선한다.
- 리팩토링은 Understandability를 향상시키고, Documentation의 필요를 감소시킨다.
(Agile의 고질적 문제였던, 적은 Document로 인한 요구사항의 미흡한 이해를 어느정도 보완할 수 있다.)
- 아래는 리팩토링의 예시이다.
ex) 중복된 Data Member와 Member Function을 제거하기 위해 Class Hierarchy를 Re-Organization 하는 것
ex) 가독성을 높이기 위해 Data Member와 Member Function을 정리하고 Renaming 하는 것
※ 그러나, 개발시간이 제한적인 XP와 같은 Agile에서는 현실적으로 리팩토링이 잘 이루어지지 않는 경향을 보인다. - Test-First Development
- System을 설계하고 구현하기 전에, 테스트 프로그램을 먼저 개발하는 것을 의미한다.
- 테스트 프로그램을 먼저 개발하며 요구사항에 대한 이해도를 더 높일 수 있다.
- 새로운 Release가 빌드될 때 마다 모든 Component에 대한 테스트를 진행한다.
(즉, 먼저 개발된 Component들은 누적하여 테스팅되기 때문에 신뢰도가 더욱 상승한다.)
- 개발팀에 속한 사용자들이 Acceptance Test(Alpha Test)에 도움을 준다. - Pair Programming
- 한 대의 컴퓨터에서 두 명이 프로그래밍한다.
- 한 명은 Typing, 나머지 한 명은 Review(Inspection)한다.
- Delivery Time을 최소화하는 것을 목표로 하는 XP에서
두 명이 하나의 조로 개발하는 것은 비효율적인 것으로 보일 수 있지만,
오히려 개발시간이 단축되는 모습을 보인다.
- 같이 개발하므로, 개발중인 시스템에 대한 이해도가 높아진다.
(이는 팀원이 변경되는 리스크에 대비하기에 효과적이다.)
Features of XP (XP의 특징)
- XP는 Agile Development의 Extreme한 케이스이기 때문에, 장단점과 특징은 Agile과 같다.
* Agile Software Development (애자일 소프트웨어 개발법) (URL)
[Software Engineering] Agile Software Development | 애자일 소프트웨어 개발법
Agile Software Development 애자일 소프트웨어 개발법 * Agile : a.날렵한, 민첩한 - 고객의 요구사항 변화에 Agile(민첩한)하게 대응할 수 있는 소프트웨어 프로세스이다. - 앞으로 해야할 일들을 조금씩 계
dad-rock.tistory.com
Reference: Software Engineering 10th Edition
(Ian Sommerville 저, Pearson, 2016)