[- Disclaimer -]
아래 내용은 정보보안 공부 목적으로 작성된 것이나, 이를 토대로 허가되지 않은 대상에 실습을 진행할 경우 해킹 시도로 간주하여 법적 처벌을 받을 수 있음을 알려 드립니다.
XP (=eXtreme Programming)
✦ 수시 발생 고객 요구 사항에 유연한 대응을 하기 위해 고객의 적극 참여 및 단순하고 짧게 반복적인 개발 주기로 개발 생산성 향상
✧ Release Test마다 고객을 참여시켜 요구 기능 정상 동작 여부 확인
✧ 소규모 Proejct에 효과적
XP 5대 가치
✦ 의사 소통, 단순성, 용기, 존중, Feedback
XP 개발 Process - User Story (=사용자 스토리)
✦ 고객 요구 사항을 기능 단위의 간단한 시나리오로 구성
✧ 필요 시 간단한 Test Case 기재
XP 개발 Process - Release Planning (=릴리즈 계획)
✦ 부분 혹은 전체 개발 완료 시점 일정 수립
✦ Release
✧ 몇몇 Story가 부분 적용된 제품
XP 개발 Process - Spike (=스파이크)
✦ 요구 사항 신뢰성 높임
✦ 기술 문제 위험 감소를 위해 제작된 간단한 프로그램
✧ 처리할 문제 외 다른 조건들 전부 무시하고 작성 됨
XP 개발 Process - Iteration (=이터레이션)
✦ Release 세분화 단위
✧ 1~3 주 소요: 해당 기간 중 새 Story 작성 가능하며 진행 중인 Iteration 혹은 다음 Iteration에 포함 됨
XP 개발 Process - Acceptance Test (=인수 Test, 승인 검사)
✦ 하나의 Iteration 내 계획된 Release 단위의 부분 완료 제품 구현 시 수행하는 Test
✧ 사용자 Story 작성 시 함께 기재한 Test 사항에 대해 고객이 직접 수행
✧ Test 중 발견된 오류 사항은 다음 Iteration에 포함 됨
✧ Test 이후 새 요구 사항이 작성되거나 우선 순위가 변할 수 있음
✧ Test 완료 시 다음 Iteration 진행
XP 개발 Process - Small Release (=소규모 Release)
✦ Release를 소규모로 할 경우 고객 반응을 기능별로 확인 가능해 고객 요구 사항에 좀 더 유연하게 대응 가능
✧ 계획된 Release 기간 동안 진행된 Iteration 전부 완료 시 고객에 의한 최종 테스트 수행 후 최종 결과물을 고객에게 전달하여 Release
✧ Release가 최종 완제품이 아닌 경우 다음 Release 일정에 맞게 계속 계발 진행
XP 주요 실천 방식
✦ Pair Programming (=짝 프로그래밍)]
✧ 다른 사람과 함께 Programming을 수행함으로써 개발에 대한 책임을 공동으로 나눠 갖는 환경 조성
✦ Collective Ownership (=공동 Code 소유)
✧ 개발 Code에 대한 권한과 책임 공동 소유
✦ Test-Driven Development (=테스트 주도 개발)
✧ 개발자가 실제 Code 작성 전 Test Case를 먼저 작성하므로 자신이 뭘 해야 할지 정확히 파악
✧ 지속적으로 Test가 진행되게 자동화된 Testing 도구(구조, Framework) 사용
✦ Whole Team (=전체 팀)
✧ 개발에 참여하는 모든 구성원(고객 포함)들은 각가 자기 역할이 있고 그 역할에 책임을 가져야 함
✦ Continuous Integration (=계속적인 통합)
✧ Module 단위로 나눠 개발된 Code들은 한 작업이 마무리 될 때마다 지속적 통합
✦ Refactoring (=리펙토링, Design Improvement (=디자인 개선))
✧ 프로그램 기능 변경 없이 단순화, 유연성 강화 등을 통해 시스템 재구성
✦ Small Releases (=소규모 Releases)
✧ Release 기간을 짧게 반복해 고객 요구 변화 대응 신속



