[정보처리기사] XP (eXtreme Programming)

Uno·2021년 4월 28일
0

정보처리기사

목록 보기
1/4

2020년 4회차에 나온 문제 - XP 개념

Agile 방법론의 기법 중 하나입니다.

  • 개발자 - 관리자 - 클라이언트 가 한 팀이 된 것처럼 움직이는 것이 특징이다.
  • 고객의 요구사항을 잘 받아들인다.(…)

XP을 도입해야하는 배경


  • 현대에 신속한 개발이 요구된다
  • Time To Market (적시에 배포하는 것) 이 시장에 대응성이 중요하다.
    (시장 선점효과도 있을 것이고, 앱개발이라면 버그로 인해 앱 이탈률을 막을 수 있을 것입니다.)
  • 유연한 대처가 중요하다. (비슷한 맥락이죠)

XP Practice (실천방안)


  • Pair Programming (짝프로그래밍)
    “Pair” 단어에서도 알 수 있듯이 “함께” 수행하는 프로그래밍을 의미합니다. 추가로 책임도 나누는 것도 포함된 개념입니다.

  • Test-Driven-Developement (테스트 주도 개발)
    TDD 라고 줄여 부르기도 합니다. 구현하기 전에 테스트 케이스를 먼저 작성하여, 최종 목표을 명확히 하며 진행할 수 있는 장점이 있죠. 테스트는 “자동화” 하여 수행합니다.

  • Whole Team (전체 팀)
    누군가는 책임이 모호한 경우, 책임회피가 발생할 수 있습니다. 그런것을 막고자 모두가 책임을 가지고 일하는 것을 의미하는 단어입니다.

  • Continuous Integration (지속적인 통합)
    뭔가 Merge의 느낌이 나죠? 각 개발자들이 모듈화 시켜 개발을 하고 본 프로젝트에 하나로 통합하는 활동을 의미합니다.

  • Design improvement (디자인 개선) or Refactoring (리팩토링)
    디자인이 시각적 디자인이 아닌 설계 구조를 의미할겁니다. MVC라든지 MVVM이라든지. 이러한 Scalability를 고려한 디자인 설계를 해야하고 그런 방식으로 코드를 리팩토리애야하는 활동을 의미합니다.

  • Small Releases (작은 단위의 배포)
    배포를 빠르게 하기위해 배포의 단위를 줄이는 단어입니다.

XP의 개발 절차 (개발프로세스)


(그림출처 : XP (eXtreme Programming) > 도리의 디지털라이프)

  • 사용자 스토리 (User Story)
    유저스토리 화살표를 보면 “요구사항” 과 “테스트 시나리오” 의 출발점이죠.
    유저라고 해서 실제로 사용하는 대상이라고 생각하실 수 있겠지만 “고객” 혹은 “클라이언트” 로 생각하시면 암기에 도움이 될 것 같네요.

  • 스파이크 (Spike)
    어려운 요구사항이나 잠재 솔루션(무슨 뜻인지 감이 안잡히네요.) 을 고려한 간단한 프로그램을 뜻한다고 합니다. 이를 통해서 사용자 스토리가 신뢰성이 높아지고 기술적인 문제 리스크가 감소한다고 합니다.

스파이크가 이해가 안되서 따로 좀더 조사해봤습니다.
Extreme Programming(XP) 방법론 의 설명을 제가 이해한대로 작성해보겠습니다.

  1. 유저스토리보드가 만들어진다. (Zeplin이나 XD와 같은 형태로)
  2. 요구사항 중에서 어려워보이는 것(==리스크가 있는것)을 찾는다.
  3. 이에 대해 “스파이크 솔루션” 이라는 것을 만든다.

그러면 스파이크 솔루션이 무엇인가?

어려운 문제를 해결하기 위한 해결책인데, 잘 보이지 않는 문제를 찾아주는 프로그램이다.
어찌보면 테스트를 수행하는 것이라고 생각할 수 있을 것 같아요.

  • 배포 계획 (Release Planning)
    1 ~ 3주를 하나의 Session으로 생각하고 배포를 계속 해나간다라고 생각하면 됩니다. 이것이 xp에서 말하는 배포계획입니다.

  • 주기 (Iteration)
    하나의 Session을 1~3주로 잡습니다. 그리고 이를 반복하는 것이 하나의 주기입니다.
    xp에서 반복을 할 때, 계획 -> 평가를 단순하게 하는 것이 중요하다고 합니다.
    이를 통해 사용자의 요구사항을 반영하기 쉽게해주고, 여러 문제에 대해서 대응성이 높아진다고 합니다.

  • 승인 테스트, 인수 테스트 (Acceptance Test)
    사용자(고객) 에게 인수할 때, 수행하는 테스트입니다.

  • 소규모 릴리즈 (Small Release)
    이 단계는 마지막 단계입니다. 짧게 여러번 배포하면서 고객에게 완성본의 형태를 잘 전달할 수 있고, 빠르게 배포하면서 얻는 경제적 이득(시장선점효과를 노릴 수 있다.) 등에 기여합니다.

참고자료

XP (eXtreme Programming) > 도리의 디지털라이프
Extreme Programming(XP) 방법론

profile
iOS & Flutter

0개의 댓글