ALM/Task Management

Scrum 기반 개발 방법론

Terry Cho 2008. 4. 4. 18:06

본 개발 프로세스는 애자일 방법론중에서 Scrum 개발 방법론을 기반으로 한 방법론이며, 방법론의 개념과 함께, Atlassian社의 JIRA 이슈 추적 시스템을 이용하여 실제로 팀 프로젝트를 관리하는 방안을 설명한 구체적인 실용주의 방법론이다.

사용자 삽입 이미지

<그림. Scrum 프로세스 >


전체 시나리오

  • 고객 또는 분석가는 시스템에 구현되어야 하는 기능을 최종 사용자 입장에서 "기능"으로 서술한다. 이를 Product BackLog라고 하고, 각각의 기능에 대한 사용자 스토리등이 구체적으로 기입되어야 한다.
    이 과정에서 Product BackLog는 기능별로 하나의 카드에 작성될 수 도 있고 또는 UseCase Diagram에서 Use Case로 작성될 수 있다.
  • 이렇게 작성된 각각의 Product BackLog에 대해서 오픈 일정에 따라서 우선적으로 구현해야 할 기능들을 선출한다.
  • 애플리케이션 아키텍트 또는 디자이너는 이 Product BackLog를 검토하여, 실제 시스템에 구현될 세부 기능으로 분할한다. 이 기술적으로 분할되고 재해석된 기능들을 Sprint라고 정의한다.

    예를 들어 고객이 사이트에서 쇼핑몰 기능에 대한 시나리오를 작성하였을때, 쇼핑몰에 장바구니,카드결재,채팅,배송조회 등의 기능이 들어있다고 했을때, 카드 결재나 배송 조회와 같은 경우는 기술적으로 구현에 많은 시간이 소요된다고 판단이 되면 (외부 연계 때문에...) 이를 별도의 Sprint로 나누어 낼 수 있다. Sprint는 실제 개발팀에서 분석->설계->구현->테스트->배포까지 수행해야 하는 일련의 프로젝트 단위로 일반적으로는 고객의 Product BackLog가 하나의 Sprint로 맵핑될 수 있으나, 기능의 크기에 따라서 크기가 클 경우에는 여러개의 Sprint로 분할 할 수 있다.

  • 이렇게 분할된 Sprint들은 PM에 의해서 각 프로젝트 수행팀으로 배분된다. 프로젝트 수행팀을 스크럼팀이라고 하고, 이 팀은 PL과 개발원들로 구성된다. PM은 Sprint의 규모에 따라서 PL과 상의하여 적절한 일정과 Resource 투입을 결정하고, Sprint 수행중 일정이 늦어지거나 문제가 있을 경우 기능을 다음 Release로 넘기거나 또는 Resource를 더 투여하는 일련의 작업을 수행한다.
  • Sprint를 받은 Scrum Leader는 Sprint를 구현하기 위한 세부 기능과 작업을 Task라는 이름으로 작성하고, 이를 각 개발원에게 분배한다.

이런 일련의 사이클을 반복하면서 고객의 요구 기능은 각 Scrum 팀에서 개발되게 되고 릴리즈 주기별로 마무리되어야할 Sprint를 PM이 관리하여 정해진 시간내에 릴리즈를 맞출 수 있게 진행한다.

만약에 고객의 추가 요구사항이 있을 경우 고객이 Product BackLog에 이를 반영하고, 추가 요구 사항에 대해서 우선 순위를 조정함으로써 이번 릴리즈에 포함될지 다음 릴리즈에 포함될지를 결정한다. 이때 주의할 점은 기능의 추가나 변경이 있음에도 불구하고 Resource의 할당이나 시간이 변함이 없다면 기능을 다음 버전으로 미뤄야지 무리하게 넣을 경우 과도한 일정으로 인하여 품질 저하등의 문제를 야기 할 수 있다.

Task의 관리

각 개발원에게 할당된 Task에 대해서는 "화이트 보드 + 포스트잇" 을 이용하여 스크럼팀 별로 스케쥴을 관리할 수 있다.
처음 생성된 Task는 "TO DO" 상태로 지정되고, 이 Task를 개발자에게 할당이 된 후.. 개발자가 진행을 시작했을때 "IN PROGRESS" 상태로 옮긴다. 그리고 해당 Task에 대한 작업이 완료되었을때 "DONE"으로 이동된다.

이는 화이트 보드에서 3개의 섹션을 만들어서 관리할 수 도 있고, 또는 이슈 트랙킹 시스템에서 Task의 상태를 지정하는 방법으로도 가능하다.(이를 TaskBoard라고 한다.) 아래 그림은 Atlassian사의 JIRA의 상용 플러그인 GreenHooper의 화면이다.

사용자 삽입 이미지

<그림. GreenHooper를 이용한 JIRA의 TaskBoard 구현 >
 GreenHooper는 JIRA의 이슈를 본 방법론에 맞게 TO DO,IN PROGRESS,DONE 상태로 비주얼 하게 표시할 수 있게 해주며, 개발자별 Task Board를 관리할 수 있게 해준다.

다음 문서에서는 본 방법론을 기초로 하여 JIRA와 GreenHooper를 통한 자바스터디 개발 프로세스에 대해서 설명한다