공부해보잠
XP(eXterme Programming)기법 본문
XP(eXterme Programming)
수시로 발생하는 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상시키는 방법입니다.
특징:
- XP는 짧고 반복적인 개발 주기, 단순한 설계, 고객의 적극적인 참여를 통해 소프트웨어를 빠르게 개발하는 것을 목적으로 합니다.
- 릴리즈의 기간을 짧게 반복하면서 고객의 요구사항 반영에 대한 가시성을 높입니다.
- 릴리즈 테스트마다 고객이 직접 참여해 요구한 기능이 제대로 작동하는지 확인합니다.
- 비교적 소규모 인원의 개발 프로젝트에 효과적입니다.
부가설명:
- 릴리즈: 일정 기간 동안 완성된 결과물을 주기적으로 제공해 고객이 지속적으로 평가할 수 있도록 합니다.
- 가시성: 개발 진행 상황과 결과물이 고객에게 명확히 보여지도록 하여 신뢰를 높이고, 요구사항 반영 여부를 즉각 확인할 수 있도록 지원합니다.
XP의 5가지 핵심가치:
- 의사소통 (Communication): 고객 및 팀원 간 활발한 협력과 소통을 통해 개발 과정을 최적화.
- 단순성 (Simplicity): 필요한 기능만 구현하여 효율성을 극대화.
- 용기 (Courage): 변화와 도전에 적극 대응하며 개선을 주저하지 않음.
- 존중 (Respect): 팀원과 고객 간의 상호 존중을 바탕으로 협업 강화.
- 피드백 (Feedback): 주기적인 테스트와 릴리즈를 통해 품질 개선과 요구사항 반영을 실현.
XP 개발 프로세스
사용자 스토리(User Story)
- 고객의 요구사항을 간단한 시나리오 형태로 작성하며, 기능 단위로 구성.
- 필요한 경우 **간단한 테스트 사항(Test Case)**을 포함하여 요구사항 검증 용이.
릴리즈 계획 수립(Release Planning)
- 릴리즈: 몇 개의 사용자 스토리를 포함하여 부분적으로 완료된 제품을 고객에게 제공하는 것.
- 계획: 릴리즈 단위로 일정과 목표를 설정하며, 부분적 기능 제공으로 고객 피드백 반영 가능.
스파이크(Spike)
- 요구사항 신뢰성 확보와 기술적 위험 감소를 위해 작성하는 간단한 프로그램.
- 특정 문제를 해결하기 위한 실험적인 코드로, 다른 요소는 배제하고 핵심 문제에만 집중.
이터레이션(Iteration)
- 릴리즈를 세분화한 단위로, 보통 1~3주 단위로 진행.
- 새로운 스토리 작성 및 추가 가능하며, 진행 중이거나 다음 이터레이션에 포함 가능.
- 이터레이션 동안 요구사항 구현, 테스트, 검토 작업이 이루어짐.
승인 검사(Acceptance Test, 인수 테스트)
- 이터레이션 내에서 구현된 제품의 기능을 검증하기 위해 고객이 직접 수행하는 테스트.
- 사용자 스토리에 기재된 테스트 사항을 기준으로 진행하며, 발견된 오류는 다음 이터레이션에 반영.
- 테스트 완료 후 새로운 요구사항 추가 및 우선순위 조정 가능.
소규모 릴리즈(Small Release)
- 릴리즈 단위를 소규모로 설정하여 고객의 반응을 빠르게 확인하고, 요구사항 변화에 유연하게 대응 가능.
- 각 릴리즈 후 고객의 피드백을 반영하여 다음 릴리즈에 개선.
- 릴리즈가 최종 제품이 아닌 경우, 추가 개발을 반복하여 완성도를 높임.
XP의 주요 실천 방법(Practice)
짝프로그래밍 (Pair Programming) | 두 명이 한 컴퓨터로 함께 코딩하며, 한 명이 코딩을, 다른 한 명이 코드 리뷰를 담당. 협력을 통해 코드 품질과 생산성 향상. |
공동 코드 소유 (Collective Code Ownership) | 모든 팀원이 코드의 소유권을 공유하여 누구나 코드 수정 가능. 책임과 권한을 분산시켜 유지보수성과 품질 강화. |
테스트 주도 개발 (Test-Driven Development) | 코드를 작성하기 전에 테스트 코드를 먼저 작성. 테스트 통과를 목표로 코드 구현, 반복적인 리팩토링으로 신뢰성 있는 코드 작성. |
전체 팀 (Whole Team) | 개발자, 디자이너, 테스터, 고객 등이 포함된 다학제적 팀 구성. 긴밀한 협력을 통해 효율적인 개발 과정을 지원. |
계속적인 통합 (Continuous Integration) | 코드를 자주 통합하여 빌드와 테스트를 반복 수행, 통합 과정에서 발생하는 문제를 조기에 발견하여 개발 속도와 품질 향상. |
디자인 개선 또는 리팩토링 (Refactoring) | 코드의 기능은 유지하면서 구조를 개선하여 가독성과 유지보수성을 높임. 반복적인 리팩토링을 통해 코드 품질 지속 관리. |
소규모 릴리즈 (Small Release) | 릴리즈 단위를 소규모로 설정하여 짧은 주기로 고객에게 제품 제공. 고객 피드백을 기반으로 개선 작업을 반복해 요구사항에 유연하게 대응 가능. |
출저 및 참고
정보처리 산업기사 기본서(시나공)
728x90
'자격증 > 정보처리' 카테고리의 다른 글
요구사항 분석 (0) | 2025.01.27 |
---|---|
요구사항 정의 (0) | 2025.01.26 |
스크럼(Scrum) 기법 (0) | 2025.01.26 |
소프트웨어 개발 방법론 (0) | 2025.01.26 |
소프트웨어 생명 주기 (0) | 2025.01.23 |