Reference:
http://en.wikipedia.org/wiki/Extreme_programming#Practices
http://en.wikipedia.org/wiki/Extreme_Programming_Practices
1. XP의 정의
고객 및 개발 주변 환경과의 관계 재정립, 프로그래머의 인간성을 고려한 개발 원칙을 세움으로써 S/W의 변화에 기민하게(agile) 대응 가능하도록 하는 개발 방법론
2. XP의 목표
(프로그래머의) 인간성과 생산성의 조화
(프로그래밍 환경에 대한) 사회적 메커니즘의 변화
진보(향상; improvement)를 위한 방법의 제시
개발 스타일의 제시
소프트웨어 개발의 규율(discipline)의 제시
궁극적으로 위 항목을 통해 변화에 민첩하게(agile) 대처 가능하도록
3. XP의 핵심 가치(value)
4. XP 핵심 활동(Activity) : XP가 바라보는 주요 S/W 개발 활동
5. XP 규칙(Rule) : XP와 XSD(eXtreme Software Development)가 무엇인지를 규정
놀이 규칙(Rules of play)
XP를 규정
XP 핵심 가치에 기반함
교전 규칙(Rules of engagement)
놀이 규칙과 함께 XSD를 규정
Agile 원칙과 유사
지속적 테스트(continuous testing)
명확하고도 고품질인 코드(Clearness and quality of codes)
보편적 용어(Common Vocabulary)
모두의 책임 및 권한(Everybody has the authority)
개발자와 domain 전문가(business people)는 함께 작업해야
최고의 우선순위는 고객의 만족
S/W를 가능한 자주 제공(deliver)하도록
유효하게 동작하는 S/W(working S/W)
지속적 측정 및 결과에 따른 Feedback을 통한 목표 도달
효과적인 social network을 이루는 팀이 되도록
6. XP의 실천지침(Practices)
미세 규모의 피드백(Fine scale feedback)
지속적 프로세스(Continuous Process)
이해의 공유(Shared understanding)
프로그래머 편의(Programmer welfare)
지속적 통합(Continuous Integration)
Refactoring(설계 향상)
소규모 릴리스(Small Release)
개발은 누구에게나 최신 버전에서 수행되도록(이후 통합으로 인해 지연을 야기하지 않도록).
(성능 및 유지보수성 모두에서) 최적화된 코드의 유지
작고도 자주 수행되는 릴리스를 통한 신뢰도 향상
유지 가능한 페이스(Sustainable pace)를 지키도록. (40시간 이상의) 초과 작업은 금물. 이는전체 생산성을 떨어뜨림.
7. XP 개발 절차
Architectural Spike
Spike
팀원이 공통적으로 사용할 용어, 즉 System Metaphor를 만들어내기 위한 시스템
Release Planning을 위한 기본 자료로서, 일의 규모나 시간 요구량을 가늠하기 위한 솔루션. 일종의 prototype
8. XP에 대한 쟁점
불안정한 요구사항
프로젝트 규모 제한
비일관적 요구의 대처가능성 미약
요구 사항의 지속적 변화를 용인함으로써, 프로젝트의 범위, 일정, 비용 등에 대한 차질이 생김
XP는 소규모(12명 이하)에 적합해왔음. 대규모 프로젝트에서는 소규모 그룹으로 분할하여적용 가능.
XP는 사용자의 관점이 (통합) 일관됨을 가정함(다중 사용자의 경우에 대비하여 CCB(Change Control Board)가 존재함에도).