Agile 프로젝트 퀵가이드(10) : Execution & Control편-스프린트 계획

Updated:

이제 본격적인 스프린트 #1~#N을 시작해봅시다.

스프린트#0에서 릴리즈 계획 수립을 통해 스프린트 #1~#N에 걸쳐 전체 백로그 출시에 대한 계획을 수립했을지라도, 스프린트 이터레이션(Iteration)이 반복되면서 계획이 수정될 필요가 있습니다. 또한 실제 스프린트를 진행하기 위해서는 초기의 개괄적인 계획보다 구체적이고 실현 가능한 목표를 세워야 합니다.

스프린트 계획은, 릴리즈 계획에서 이번 스프린트에 할당한 백로그의 범위를 검토하고 이를 어떻게 구현할지를 결정합니다.

즉, 스프린트 계획이란 이번 스프린트에서 무엇을 이루어 낼지 목표를 정하고, 이를 위한 백로그 선정 및 백로그 수행을 위한 상세 내역을 정하는 활동입니다. 그리고 이렇게 결정된 작업의 상세화된 내역을 스프린트 백로그(Sprint Backlog)라고 부릅니다.


스프린트 목표 정의 : 이번 스프린트에서 무엇을 할 것인가?

스프린트 목표는 이미 제품 출시 계획(Release Plan)시에 정의하였던 것을 기초로 합니다. 스프린트가 진행되면서 이전 스프린트에서 완료하지 못한 백로그가 있거나 초과 달성한 경우, 또는 시장이 요구하는 고객가치가 변경된 경우가 있다면, 이번 스프린트의 목표 역시 자연스럽게 수정되어야 합니다. 예를 들면, 프로젝트 초반에 스프린트 #1에서 전체 사용자 인터페이스의 전체 구조와 메인 화면을 만드는 것이 목표가 될 수 있지만, 애석하게도 스프린트 #1 완료시 이러한 목표가 달성되지 못했다면 스프린트 #2에서 이를 보완하여 목표를 수정해야 할 것입니다.

따라서, 스프린트 목표 정의 활동은 이전 스프린트에서 완료하지 못한 스토리 등을 종합하여 이번 스프린트에서 집중해야 할 작업이 무엇인지 식별하여 제품 책임자와 개발팀이 함께 합의를 이루어야할 것입니다. 개발팀이 이번 스프린트에서 완료할 제품 백로그 항목을 정한 다음에는 전체 스크럼 팀이 스프린트 목표를 정함으로써 이는 결과적으로 스프린트가 종료되었을 때 제품에 대한 완료기준(DoD : Definition Of Done)이 되기도 합니다.

스프린트 목표를 정의하기 위해 스크럼 팀은 다음의 절차를 따릅니다.

  • 고객과 제품 책임자가 중심이 되어 개발팀과 함께 새롭게 도출한 요구사항, 이전 스프린트에서 완료하지 못한 스토리 등을 종합하여 스토리들을 우선순위대로 정렬하고 릴리즈 계획을 갱신한다.
  • 제품 책임자는 제품 백로그를 바탕으로 해당 스프린트에서 개발하려는 업무 목표와 스토리들을 개발팀에 제시한다.
  • 개발팀은 해당 스프린트 기간 동안 완료할 수 있는 스토리들을 제품 백로그 우선순위에 따라서 가져온다.
  • 제품 책임자에게 해당 기능의 업무 시나리오와 완료 조건, 제약사항 등을 자세히 물어보고 범위를 확정한다. 서로 이견이 발생할 수 있기 때문에 충분히 토론한다.
  • 때로는 간단한 화면 스케치나 참고자료를 보여 주어서 완료 조건을 명확하게 한다.
  • 고객의 요구사항이 추가될 경우, 우선순위가 가장 낮은 요구사항은 Sprint Backlog에서 삭제됨을 명확하게 한다.


스프린트 백로그 정의 : 목표 달성을 위해 작업을 어떻게 달성할 것인가?

스프린트 목표를 정하고 스프린트에서 수행할 제품 백로그 아이템을 선택한 후, 개발팀은 이번 스프린트에서 이 기능들을 어떻게 “완료”된 제품 증분으로 구현할지를 결정해야 합니다. 스프린트에서 선택된 제품 백로그 아이템과 그것들을 완료하여 배포하기 위한 계획을 모두 합쳐 스프린트 백로그라고 부릅니다.

스프린트 백로그를 정의하기 위한 활동은 다음과 같이 수행됩니다.

  1. 팀원들은 스프린트 기간 동안 수행할 사용자 스토리를 제품 백로그에서 선택한다. 짝 프로그래밍을 한다면, 두 명이 함께 선택할 수도 있다.
  2. 작업하기로 한 스토리 포인트가 개인별로 지나치게 차이가 많이 난다면, 합의 하에 조정한다.
  3. 팀 전체가 선택한 스토리 포인트의 합을 구하고, 그 합이 이전 스프린트들의 팀 속도보다 지나치게 높거나 낮을 경우 조정한다.
  4. 특정 사용자 스토리에 대해 스토리를 완료하기 위한 상세 태스크를 도출한다.
  5. 도출된 태스크에 담당자와 예상 작업시간을 적는다.
  6. 스크럼 마스터는 태스크에 적힌 개인별 시간의 합을 구하고, 스프린트 내 작업일(Work Day)에 비추어 적절한지 판단하고 조정한다.
  7. 제품 책임자와 스크럼 마스터는 팀원들이 세운 계획을 리뷰하고, 태스크에 식별되지 않은 작업이 있다면 추가한다.
  8. 스프린트 동안 작업할 계획에 대해 요약하여 팀원들과 공유한다.
  9. 팀원들 모두 정해진 스프린트 기간 동안 계획한 것을 완료하기로 서약한다.


스프린트 계획시 주의사항

스프린트 계획 수립시 “팀이 달성 가능한?” 백로그 정의에 몰두하다 보면 자칫 촛점을 잃을 수 있습니다. 목표에 집중하여야 하며 정해진 기간 내에 달성할 수 있도록 팀은 최대한 헌신하려는 계획이 필요합니다.

스프린트 기간 동안은 스프린트 목표에 집중할 수 있도록 해야 한다.

  • 스프린트 스프린트는 정해진 기간 동안 정해진 목표를 달성하기 위한 계획법이다.
  • 스프린트 중에 스프린트 계획에 포함된 백로그 외에 항목이 추가되는 것은 지양해야 하며, 이러한 상황이 반복되어 목표 달성이 어려울 경우, 스크럼 마스터는 스프린트 취소를 선언할 수 있는 권리를 가진다.
  • 팀원들이 최대한 스프린트 기간 동안에 목표량에 집중하여 일할 수 있는 환경이 제공되어야 한다.

스프린트 길이 정의

  • 기간이 짧은 경우 스프린트마다 프로젝트의 방향성을 점검해보고 올바르게 수정할 수 있게 되는 장점이 있다.(짧은 스프린트 ⇢ 짧은 피드백주기 ⇢ 더 잦은 고객의 피드백 = 잘못된 방향에 따른 시간낭비 감소)
  • 반면, 매 스프린트마다 고객가치를 반영한다는 의미는 고객의 변경 요청 분량이 늘어난다는 의미로도 볼 수 있다. 또한 개발팀은 짧은 스프린트 기간 내에 동작하는 S/W를 개발해야 하므로 심리적인 압박이 증가한다.
  • 스프린트 길이가 길면, 팀이 추진력을 얻기 위한 시간을 갖게 되고, 발생하는 문제를 해결하면서 스프린트를 달성할 수 있는 충분한 여력을 가질 수 있는 반면, 고객 확인과 피드백을 받는 주기가 길어지는 만큼 프로젝트 리스크가 증가하게 된다.
  • 스프린트 길이를 균일하게 가져가는 것이 좋다. 스프린트 길이가 변경되면 모든 사람이 특정시기에 해야 할 일에 대해 혼란을 겪을 수 있다.

스토리 완료 조건(DoD:Definition of Done)을 모두가 명확하게 인지해야 한다.

  • 제품 백로그에 있는 스토리 중 완료된 것과 미완료된 것은 명확하게 구분할 수 있어야 한다.
  • 완료기준에 대해 팀원들과 공유하지 않으면, 팀원 별로 결과물에 대한 품질 차이가 발생할 수 있다.

스프린트 계획을 위한 JIRA 사용법

전반적인 JIRA 사용법에 대해서는 개략적으로 Agile 프로젝트 Starting 퀵가이드-Appendix.JIRA환경설정 편에서 다루었습니다. 여기서는 스프린트 계획과 관련된 JIRA 사용법을 간단하게 설명합니다.


1) 백로그 할당

스프린트 계획에서 선정된 백로그를 이번 스프린트 일감에 할당한다.
JIRA 사이드 메뉴의 “해야할 일 목록”(Ver 8.x에서는 “백로그”)으로 들어가서 우측 아래 화면 아래에 있는 해야할 일 목록으로부터 일감을 드래그하여 스프린트로 끌고 온다.

2) 백로그 상세화

스프린트 백로그의 상세화 작업을 통해 도출한 세부 task를 등록한다. JIRA 일감으로는 “부작업” or “sub-task”유형에 해당한다.
다음과 같이 사용자 스토리 or 작업에 해당하는 일감을 조회한 뒤, 아래에 부작업이라고 되어 있는 부분 우측의 +기호를 선택하면 쉽게 추가할 수 있다.

부작업 + 버튼이 안보일 경우에는 아래 그림과 같이 “더 많은 조치 ▾” 버튼을 누른 후에, 하위 작업 생성 버튼을 누르면 된다.

3) 담당자 할당하기

JIRA는 다양한 유저 인터페이스를 제공하여, 일감에 대한 속성 편집이 가능하다.
일감의 상세보기 화면에서 “할당” 버튼을 클릭하거나, 오른편에 담당자 box를 이용하여 입력할 수 있다.

또는 아래와 같이 이슈 편집 창을 이용하여 담당자를 지정할 수 있다.

4) 스프린트 시작하기

스프린트 백로그 할당이 어느 정도 완료가 되었으면 스프린트 시작 버튼을 누르고, 사이드메뉴의 “작업중인 스프린트”로 이동하여, 현재 활성화된 스크럼 보드 화면을 볼 수 있게 된다.

이제 스프린트를 진행하면서 보드 화면을 통해 각자의 일감 상태를 변경하고, 서로의 일감 상태를 공유할 수 있다.


이상과 같이 JIRA를 통해 스프린트 일감을 세팅함으로써, 스크럼 팀원들간 소통을 원활하고 투명하고 빠르게 할 수 있습니다.
다음번 포스팅은 일일 스크럼 미팅에 대해서입니다.

< EOF >