Notice
Recent Posts
Recent Comments
Link
250x250
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

공부해보잠

XP(eXterme Programming)기법 본문

자격증/정보처리

XP(eXterme Programming)기법

heejk 2025. 1. 26. 16:55
XP(eXterme Programming)

수시로 발생하는 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상시키는 방법입니다.

 

특징:

  • XP는 짧고 반복적인 개발 주기, 단순한 설계, 고객의 적극적인 참여를 통해 소프트웨어를 빠르게 개발하는 것을 목적으로 합니다.
  • 릴리즈의 기간을 짧게 반복하면서 고객의 요구사항 반영에 대한 가시성을 높입니다.
  • 릴리즈 테스트마다 고객이 직접 참여해 요구한 기능이 제대로 작동하는지 확인합니다.
  • 비교적 소규모 인원의 개발 프로젝트에 효과적입니다.

부가설명:

  • 릴리즈: 일정 기간 동안 완성된 결과물을 주기적으로 제공해 고객이 지속적으로 평가할 수 있도록 합니다.
  • 가시성: 개발 진행 상황과 결과물이 고객에게 명확히 보여지도록 하여 신뢰를 높이고, 요구사항 반영 여부를 즉각 확인할 수 있도록 지원합니다.

XP의 5가지 핵심가치:

  • 의사소통 (Communication): 고객 및 팀원 간 활발한 협력과 소통을 통해 개발 과정을 최적화.
  • 단순성 (Simplicity): 필요한 기능만 구현하여 효율성을 극대화.
  • 용기 (Courage): 변화와 도전에 적극 대응하며 개선을 주저하지 않음.
  • 존중 (Respect): 팀원과 고객 간의 상호 존중을 바탕으로 협업 강화.
  • 피드백 (Feedback): 주기적인 테스트와 릴리즈를 통해 품질 개선과 요구사항 반영을 실현.

XP 개발 프로세스

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