[자격증]/정보처리기사 실기

01. 요구사항 확인_03 XP 기법

Ben의 프로그램 2023. 6. 29. 17:15
728x90

XP eXtreme Programming 

  • XP eXtreme Programming 이란? 

    Agile 모형에 속하는 개발방법론으로 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 통해 개발 생산성 향상을 목표로 한다. 
  • XP 특징

    - 짧고 반복적인 개발 주기 
    - 단순한 설계
    - 고객의 참여 
    - 빠른 소프트웨어 개발
    - 짧은 릴리즈 기간 반복 -> 고객 요구사항 반영 -> 가시성 확보
  • XP 의 5가지 핵심 가치

    - 의사소통 Communication
    - 단순성 Simplicity
    - 용기 Courage
    - 존중 Respect
    - 피드백 Feedback

릴리즈 Release

  • 릴리즈 Release ?

    릴리즈는 고객 요구사항이 적용되어 부분적으로 완성된 제품을 제공하는 것을 말한다.

가시성 Visibility

  • XP 개발은 짧고 반복적인 개발 주기 마다 릴리즈를 고객에게 제공하기 때문에 고객은 요구사항이 잘 적용되고 있음을 주기적으로 확인할 수 있다. 이런 것을 가시성이 좋다고 표현한다.

XP 개발 프로세스

  • 일반적인 개발 프로세스

    '계획' 
    '진행'
    '검사'
    '출시'

    4가지 단계를 거친다. 

    XP 에서는 진행 = Iteration (주기), 출시 = Release (릴리즈) 이다. 

    즉 XP 에서는 다음 4가지 단계가 주축이 된다. 

    '릴리즈 계획 수립'
    '주기 Iteration'
    '승인 검사'
    '소규모 릴리즈'
  • 사용자 스토리 User Story ?

    고객의 요구사항을 시나리오로 표현한 것이다. 

  • 스파이크 Spike ?

    요구사항의 신뢰성 향상과 기술 문제 위험을 감소시키기 위해 별도로 만드는 간단한 프로그램이다.
  • XP 개발 프로세스 

    1. 릴리즈 계획 수립 Release Planning 
    : 사용자 스토리 중 부분적으로 기능이 완료된 제품, 즉 릴리즈를 언제 완료 할지 일정 수립

    2. Iteration 이터레이션
    : 1~3주 간 실제 개발 작업의 진행

    3. 승인 검사 Acceptance Test (인수 테스트)
    : 이터레이션에서 목표로 한 개발 완료시 수행하는 테스트 (고객의 승인을 받아야 함)
    : 고객의 승인을 받지 못하거나, 버그가 발생하면 다시 Iteration 주기로 돌아가서 개발을 한다. 

    4. 소규모 릴리즈 Small Release
    : 요구사항에 유연하게 대응할 수 있도록 소규모 릴리즈가 진행된다. (대규모 릴리즈, 즉 한번에 완제품을 만들면 고객의 요구사항에 대응하기가 힘들기 때문이다)

XP의 주요 실천 방법 (Practice) 

  • 1. Pair Programming
    : 이름만 보면 Scrum 에 들어 있을 것 같은 실천방법이다.
    : 다른 사람과 함께 개발 하는 환경

    2. Collective Ownership
    : 개발 코드에 대한 권한과 책임이 공동으로 소유됨

    3. Test-Driven Development
    : 예를 들어 자바 개발을 한다면, 클래스를 먼저 만드는 것이 아니라 개발된 클래스들이 있다고 가정하고 테스트 파일 먼저 만든 다음 해당 테스트 파일이 실제로 실행되도록 이어서 개발하는 것을 말한다.
    : 이런 개발 방식의 장점으로는 자신이 무엇을 해야할지를 정확히 파악할 수 있으며, 자동화된 테스팅 도구(구조, 프레임워크)를 상요할 수 있다는 점이다.

    4. Whole Team
    : 모든 팀원은 역할이 있고 각자 책임 저야 함

    5. Continuous Integration
    : 모듈 단위로 나눠서 개발된 코드들은 Iteration 하나가 끝날 때마다 통합된다.

    6. Refactoring
    : 코드를 재구성하는 것을 의미한다.
    : 목적은 프로그램을 쉽게 이해하고 쉽게 수정하여 빠른 개발을 할 수 있도록 함

    7. Small Releases
    : 릴리즈 기간을 짧게 작은 릴리즈를 반복함으로써 고객의 요구 변화에 민첩하고 신속하게 대응할 수 있게 됨.