목적을 달성하고, 성과를 최대화하는 방법
폭포수 VS 애자일
폭포수(Waterfall) 방법론은 그림에서 알 수 있듯이 소프트웨어 개발 단계가 위에서 부터 아래로 폭포에서 물이 떨어지듯이 순차적으로 진행된다. 폭포수 방법론은 한단계씩 진행함에 따라 다시 이전 단계로 가지 않고 계속 진행하기에 다음 단계로 가기전에 요구사항을 완벽하게 반영하여 개발했다는 것을 전제로 한다.
수직적으로 진행되기에 각 과정에 대한 이해가 용이하나 개발 도중에 요구사항이 변경되었을 경우, 추가적인 비용과 시간이 들게 된다.(수정사항을 반영하여 처음부터 진행해야 함)
애자일(Agile) 방법론은 폭포수 방법론과 다르게 소프트웨어 개발 단계를 명확하게 구분하지 않고 각 단계를 반복적으로 수행하면서 진행한다. 이때 요구사항을 추가하거나 제외하면서 소프트웨어를 개발하게 된다. 잦은 요구사항의 변경이나 큰 프로젝트를 맡게 되어 요구사항 분석 및 설계를 완벽하게 하기 어려운 경우, 애자일 방법론은 폭포수 방법론보다 적합한 개발 방법론이 될 수 있다.
개발 도중에 요구사항이 변경되었을 경우, 해당 요구 사항을 반영하기 용이하고 개발하면서 지속적으로 테스트 되기에 개발 초기에 버그를 발견할 수 있다.
'사전에 모든것을 정확히 예측하고, 계획하는 것은 불가능하다' 는 전제를 의식하고 있어야 한다. 미리 대략적인 전체상을 명확히 한 후에 어느 정도의 기간과 인원으로 일을 하는가를 결정한다. 그 범위 안에서 중요한 순서로 '프로덕트'를 만든다. (프로덕트 = 실제로 만들 수 있는 것, 문서 포함)
❗️중요 : 리스크가 큰 것을 먼저 만들고, 우선순위가 낮은 것은 나중으로 미루어, 요구분석, 설계에 시간을 적게 쓸 것.
❓ 모든 것을 정확히 예측하고, 계획한다는 것?
- 얼마나 기간이 걸리는가
- 몇 명이 투입 되는가
- 얼마나 비용이 발생하는가
애자일 방법론의 한 가지로 전원이 하나가 되어 작업, 회의, 성과물을 정하는 것이다.
요구를 정렬한다.
현실화 할 수 있는 것을 List화 하여 정렬한다. 항상 유지보수하여 최신으로 유지한다.
backlog의 관리자로, 프로젝트에 반드시 한 명이 필요하며 순서의 최종 결정권한을 가지고 결과를 책임진다. 개발팀을 활용해, 프로덕트 가치를 최대화한다. 그 과정에서 개발팀과 상담은 가능하나, 간섭은 할 수 없다.
P.O가 해야할 일
최장 1개월까지의 고정된 기간으로 나누어, 반복하여 개발하는데, 이 고정된 기간을 스프린트라고 한다. 개발팀은 이 기간 중에 계획, 설계, 개발, 테스트 전부를 수행한다. 스프린트 기간은 고정이며 변동되어서는 안 된다.
자주 계획한다.
스프린트에서 무엇을 만들 것인가? 어떻게 만들 것인가? → 스프린트 계획 미팅
Sprint Backlog
선택한 Product Backlog 항목을 완료시키기 위해 필요한 작업을 개발팀에서 정리하는 작업들을 task라고 하고, task의 일람을 Sprint Backlog라고 한다.
릴리즈 판단 가능한 프로덕트
완료의 정의에 의해 무엇으로 릴리즈 판단 가능한지를 정한다. 도중에 축소는 피한다.
완료의 정의 : 코드 리뷰, 유닛 테스트, 커버리지, 문서화, 보안, 성능 등
매일 상황을 확인한다.
데일리 스크럼(15분 정도)을 통해 개발팀의 상황을 매일 확인한다.
완성된 프로덕트를 확인한다.
스프린트 리뷰(1시간 정도)를 통해 개발팀의 성과를 P.O가 확인한다.
스프린트 되돌아보기
스프린트 종료 회의(1시간 정도)를 통해 프로세스나 tool 등의 관점에서 이번 스프린트를 검사한다. 잘 된 점, 개선해야 할 점 등을 관리하고 이후의 계획을 만든다.
P.O나 개발팀을 지원하는 역할을 한다.
스크럼 마스터가 할 일