Agile 스크럼

용어정리

  • 스크럼 : 점진적 개발 방법론
  • 스프린트 : 반복적 개발 단위로, 스크럼을 완성하기 위한 주기적인(1-4주 정도의 기간) 수행의 단위
  • 백로그 : 대략적인 할 일 목록 (요구사항 정의서, user story)
  • user story : Actor + UseCase (사용자로서, 사진 업로드를 하고싶다.)
  • 에픽 : user story를 틀로 묶어 놓은것
  • 태스크 : user story를 충족 시키기위해 개발적으로 정의하는 작업사항 (사진 업로드 모듈개발 / 사진 저장 모듈 개발 / 사진 메타정보 DB 저장 모듈 개발 …)

역할

  • Product Owner : 요구사항 정의, 백로그 업데이트, 백로그 우선순위 선정
  • 스크럼 팀 : 스프린트를 수행하는 역할
  • 스크럼 마스터 : Project Leader로서의 역할로 프로젝트에 대한 일정과 태스크를 조율하는 역할 수행하는 역할로서 프로젝트 일정 대한 리드 가아닌 개발을 수행하는 리드에 가깝습니다. 프로젝트를 관리하는 일 이외에도 스크럼을 팀에 전파하고 교육하는 책임을 갖습니다.

역할의 분리

Product Owner vs Scrum master
제품에대한 전문지식으로 비즈니스 기능 정의 vs 일정과 태스크 기반으로 팀 운용

스크럼 진행순서

1. 제품 백로그 준비
[ID , 항목 제목 (기능/비기능 구분) , 설명 , 예측 소요시간, 설명 링크, 우선순위, 진행상태, (비즈니스 가치) ]

2. 릴리즈 계획 수립
프로젝트의 스케쥴링으로, 큰 마일스톤 정의합니다. (마일스톤은 릴리즈보다 작은 단위)
필수 기능이 완성되었다면 릴리즈를 진행하여 각 버전마다 QA 및 고객의 요구사항에 부합하는지 테스트 할 수 있도록 계획을 수립합니다.

(작업 사항)

  • 주요 릴리즈 일정 수립
  • 릴리즈 일정별로 포함할 백로그 항목 지정

3. 스프린트 계획 수립
중요 마일스톤을 작은 스프린트 단위로 쪼갭니다.

(고려해야할 사항)

  • 팀원의 가용 시간
  • 각 태스크에 대해서 수행 시간 예측
  • 태스크 설정시 구체적인 종결 행위를 기반으로 태스크 설정 하는것이 좋습니다.
  • 태스크 설정시 분석,설계 / 구현 / 테스트 → 1:1:1 의 리소스 분배가 좋습니다.
  • 주요 태스크에 대해서는 어떤 형식으로든지 리뷰를 하는것이 좋습니다.
  • 태스크 기간 설정시 20%의 버퍼를 두는것이 좋습니다.

(작업 사항)

  • 백로그 항목을 구체적 태스크로 분할
  • 태스크를 PL(스크럼 마스터)가 적절한 팀원에게 배분
  • 배분받은 팀원이 태스크 수행시간 예측

4. 스프린트 관리
계획에 따라 프로젝트를 수행하면서 스프린트를 관리해야 합니다.

(작업사항)

  • 일일 스크럼
    어제 한일, 오늘 할일, 태스크 종료에 필요한 시간을 공유하면서 다른 팀원의 태스크 진행 상황및 이슈사항을 공유 할 수 있습니다.
    또한, 공유내용을 바탕으로 일정조정이 진행 될 수 있습니다.
  • PM은 변경 일정, 사항들을 백로그에 업데이트를 진행해줍니다.
  • 번다운 차트 작성으로 태스크 작업 도달량을 체크 합니다.
  • 태스크 상태 관리를 진행합니다

5. 스프린트 종료
종료 조건은 팀마다 설정 할 수 있습니다.
[ 정해진 시간 도달, 태스크의 종료, 예산 종료 등 ]

어떤 종료 조건을 선택하던 명시적인 종료 조건을 선정해야하는데 그예로는 다음과 같습니다.

코드 QA 완료
단위 테스트 100% 성공, 커버리지 60% 완료
설계 - 고객의 확인 완료, 프로토타입 A,B,C,D 기능 동작 확인

(작업사항)

  • 스프린트 리뷰
    적절한 구현이 완료되었는지, 품질은 만족하는지에대한 리뷰를 진행합니다.
    단순히 어떤 작업을 했다가 아닌 실제 구현코드, 산출문서, 테스트 결과등의 구체적인 자산을 통한 리뷰 진행하며, 고객을 참여시켜 간략한 데모를 수행 합니다.
  • 테스트 진행

6. 백로그 업데이트
리뷰 완료후 리뷰과정에서 나온 추가 요건이나 변경상황을 반영하여 백로그를 업데이트 합니다.

7. 회고
단순 스프린트 작업에대한 리뷰가 아닌, 방법론 자체에대한 리뷰를 진행합니다.
우리 팀에 맞는 더 좋은 스크럼 프로세스를 찾고 개선해나갑니다.

태스크 작성시 유의사항

우선순위 정하기
우선순위를 결정하는데있어서 가장 중요한 원칙은 “기본기능을 먼저 개발하되, 개발 난이도가 높은것을 우선으로 한다” 입니다.
구현실패의 가능성이 높은 부분을 먼저 개발하여 나중에 문제해결할 시간을 벌기 위해서 입니다.

(고려사항)

  • 긴급도 (필수 기능사항 우선 개발)
  • 우선순위 (난이도 높은 사항 우선 개발)

선행 개발 진행하기
어떤 기능 개발에 있어서, 배분받은 팀원이 해당 기능 구현에 경험이 없다면, 해당 기능에 대해 적용 가능한 기술을 찾고 검토하여 실제 개발에 들어가기전에 사전 검증을 함으로써 실제 개발 구현에 대한 일정에 차질없이 진행 될 수 있도록 합니다.
해당 선행 개발은 실제 구현과는 또 다른 별개의 태스크로 할당하여 진행합니다.