XP 기법

clay·2023년 1월 8일
0

소프트웨어 설계

목록 보기
3/39
post-thumbnail

XP(eXtream Programing)

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

  • XP는 해석하면 극단적이라는 뜻인데 짧고 반복적인 개발 주기, 단순한 설계 고객의 적극적인 참여를 통해 소프트웨어를 빠르게 개발하는 것을 목적으로 한다.
  • Release = 몇 개의 요구사항이 적용되어 부분적으로 기능이 완료된 제품을 제공의 기간을 짧게 반복하여 고객의 요구사항 반영에 대한 가시성 = 대상을 확인할 수 있는 정도을 높인다.
  • 소규모 인원의 개발 프로젝트에 효과적
XP의 5가지 핵심 가치
Communucation
Simplicity
Courage
Respect
Feedback

XP 개발 프로세스

User Story

  • 고객의 요구사항을 간단한 시나리오로 표현
  • 내용은 기능 단위로 구성, 필요하면 간단한 테스트 사항도 기재

Release Planning

  • 몇 개의 스토리가 적용되어 부분적으로 기능이 완료된 제품을 제공하는 것을 Release라고 한다.
  • 부분 혹은 전체 개발 완료 시점에 대한 일정을 수립한다.

Spike

  • 요구사항의 신뢰성을 높이고 기술 문제에 대한 위험을 감소시키기 위해 별도로 만드는 간단한 프로그램
  • 처리할 문제 외의 다른 조건은 모두 무시하고 작성

Iteration

  • 하나의 Release를 세분화 한 단위를 Iteration이라 함.
  • 1~3주 정도의 기간으로 진행
  • 이 기간에 새로운 스토리가 작성될 수 있고 진행 중인 Iteration 혹은 다음 Iteration에 포함될 수 있다.

Acceptance Test

  • 하나의 Iteration 안에서 계획된 Release 단위의 부분 완료 제품이 구현되면 수행하는 테스트
  • 사용자 스토리 작성 시 함께 기재한 테스트 사항에 대해 고객이 직접 수행
  • 테스트 과정에서 발견된 오류 사항은 다음 Iteration에 포함
  • 테스트 이후 새로운 요구사항이 작성되거나 요구 사항의 상대적 우선순위가 변결되 수 있다.
  • 테스트가 완료되면 다음 Iteration을 진행

Small Release

  • Release를 소규모로 하게 되면 고객의 반응을 기능별로 확인할 수 있어 고객의 요구사항에 좀 더 유연하게 대응할 수 있다.
  • 계획된 Release 기간 동안 진행된 Iteration이 모두 완료되면 고객에 의한 최종 테스트를 수행한 후 Release, 최종 결과물을 고객에게 전달
  • Release가 최종 완제품이 아닌 경우 다음 Release 일정에 맞게 개발을 계속 진행

XP의 주요 실천 방법

Pair Programing
다른 사람과 함께 프로그래밍을 수행함으로써 개발에 대한 책임을 공동으로 나눠 갖는 환경을 조성

Collection Ownership
개발 코드에 대한 권한과 책임을 공동으로 소유

Test-Driven Development
개발자가 실제 코드를 작성하기 전에 테스트 케이스를 먼저 작성하므로 자신이 무엇을 해야할지를 
정확히 파악
테스트가 지속적으로 진행될 수 있도록 자동화된 테스팅 도구(구조, 프레임워크)를 사용

Whole Team
개발에 참여하는 모든 구성원(고객 포함)들은 각자 자신의 역할이 있고 그 역할에 대한 
책임을 가져한다.

Continuous Integration
모듈 단위로 나눠서 개발된 코드들은 하나의 작업이 마무리될 때마다 지속적으로 통합

Design Improvement or Refactoring
프로그램 기능의 변경 없이 단순화, 유연성 강화 등을 통해 시스템을 재구성

Small Release
Release 기간을 짧게 반복함으로써 고객의 요구 변화에 신속히 대응할 수 있다.

Scrum이나 XP는 Agile 개발 방법론을 기반으로 한 대표적인 모형이다.

profile
샤코타임 팬

0개의 댓글