프로세스 (8) - 애자일 프로세스 모델 (2) - 익스트림 프로그래밍(XP)

소프트웨어공학

2020. 5. 13. 17:11

1. eXtreme Process (XP)

  • 짧은 주기의 Iteration을 통해 요구변화에 신속하게 대응할 수 있는 경량 방법론 (애자일 방법론)
  • Kent Beck이 만들었으며, 그는 애자일을 선언한 17명의 개발자 중 한명이다.

 

1) XP의 장점

  • 신속한 개발 : RUP같은 프로세스는 산출물 부담(UML)으로 신속한 개발 불가
  • Time to market : 빠른 시장대응 능력 향상, 시장에 적시배포가 가능함
  • 유연한 대처 : 고전적인 프로세스 중심의 전통 방법론은 빠른시장에 대응하기 힘듬
  • 생산성 향상 : 개발자, 관리자, 고객을 하나의 팀으로 생각해서 조화로 인해 개발 생산성 향상

 

2) XP의 특징 (개발 면에서 유용한것만, 40시간 근무.. 이런거 뺐음)

  • 점진적 계획 : 계획(스토리)을 빨리 만들어서 일단 개발 시작후에 개발중에 계획이 진화됨
  • 점진적 릴리즈 : 다른 점진적 개발 프로세스처럼 짧은 주기동안 개발하고 릴리즈하여 피드백 확보
  • 테스트 드리븐 : 프로그램을 만들기 전에 테스트코드를 먼저 짜고 조건에 맞춰 프로그래밍 (TDD)
  • 짝프로그래밍 : 때로는 한 컴퓨터에서 두명의 개발자가 개발에 임함 -> 모든 코드가 코드리뷰됨
  • 지속적 통합 : Continuous Integration을 지향한다. 언제라고 할 것없이 개발하면 통합한다.
  • 리팩토링 : 프로젝트 동안 계속 리팩토링하여 설계를 더 나은 방식으로 향상시킨다.

 

2. XP의 과정

[그림] XP 과정

1) 유저스토리 (사용자스토리)

  • 사용자의 요구사항을 적어놓은 것으로, 스크럼의 사용자스토리와 동일.
  • XP버전 Usecase라고 볼 수 있으나, 형식이 없고 간단한 문장임 (e.g. 사용자는 현금을 인출한다),
  • 사용자 스토리는 사용자의 입자에서 적혀야하며, 개발자 입장에서 재해석해서 적으면 안됨.

 

2) 스파이크 / 구조적 스파이크

  • 기술적, 설계적 위험을 탐지하기 위해 프로젝트 시작전에 핵심기능을 간단하게
  • 만들어봄으로서 이게 진짜 되는건지 아니면 안될지, 오래걸릴지 미리 구현해보는 것임.
  • 핵심 기능 이외의 것은 신경쓰지 말고 전부 배제하고 최대로 간단하게 만듬

 

3) 릴리즈 계획

  • 릴리즈 시점에 대한 일정을 수립하고, 각 주기에 개발할 스토리를 유저가 선택하게끔 함.
  • 이 때 스파이크를 계속 만들어보면서 얼마나 이 프로젝트가 어렵고 오래걸릴지 예측해봄.

 

4) 주기 개발

  • 사용자스토리와 만들어놓은 스파이크들을 활용하여 개발을 시작한다.
  • 각 주기는 1~4주 정도가 적당하며 각 주기의 길이가 비슷한 것이 좋다.
  • 개발 중에 사용자 스토리가 새로 추가되거나 업데이트 될 수 있다.

 

5) 인수(승인) 테스트

  • 주기가 시작되면 동시에 고객이 스토리를 참고해서 테스트 시나리오를 만든다.
  • 사용자가 테스트 시나리오를 바탕으로 인수 테스트 코드를 작성한다.
  • 인수 테스트는 블랙박스 테스트이다. (내부 동작이나 로직을 모르는 상태에서 만듬)
  • 인수테스트를 반드시 통과해야 유저스토리 처리가 완료된다. 
  • 주어진 스토리가 인수테스트를 모두 통과하면 작은 릴리즈를 실시한다.

 

3. XP 프로세스 정리

  • 스토리/스파이크 → 릴리즈계획 → 주기 → 인수테스트 → 릴리즈
  • 주기 중 스토리 업데이트되면 릴리즈 계획단계로, 인수테스트 중 오류나면 주기 단계로
  • 릴리즈계획, 주기, 인스테스트를 거의 동시에 진행하면서 왔다갔다 한다. (3주정도)

 

4. Reference

 

XP 개발방법론

1. 코딩보다 테스트를 먼저 하는 방법론 XP(eXtreme Programming) 가. Xp(eXtreme Programming)의 정의 - 소프트웨어를 개발하기 위한 가볍고 효율적이며 낮은 위험도를 가진 방법론 - 고객이 원하는 소프트웨��

stechstar.tistory.com

 

XP 개발방법론

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. 우리가 가장 중요하게 여기는 것은 제 시간에, 지속적으로 가치 있는 소프트웨어를 인도함으로..

openbee.kr

 

XP(eXtreme Programming)

XP(eXtreme Programming) - 수시로 발생하는 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발과정의 반복을 극대화하여 개발 생산성을 향상시키는 방법 - 짧고 반복적인 개발 주기, 단순

tkdrms568.tistory.com

 

XP(eXtreme Programming) 기법

# XP(eXtreme Programming) 기법 * XP(eXtreme Programming), 익스트림 프로그래밍 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상시키는 방법 -

heeya7.tistory.com