애자일이란?
1.사전적 정의
- 정해진 계획만 따르기보다, 개발 주기 혹은 소프트웨어 개발 환경에 따라 유연하게 대처하는 방식 (출처: 네이버 지식 백과)
- 신속하고 변화에 유연하며 적응적인(adaptive) 소프트웨어 개발을 목표로 하는 다양한 경량 개발 방법론 전체를 일컫는 총칭으로, 반복(iteration)이라 불리는 단기 단위를 채용함으로 위험을 최소화하는 개발 방법이다.(출처: 두산 백과)
- agile: 날렵한, 민첩한, (생각이) 재빠른 (출처: 네이버 영어사전)
즉 agile 영어 뜻 그대로 애자일은 상황에 따라 유연하게 일을 처리하기 위해 택하는 방법론을 말합니다. <그림1>은 개방 방법을 차로 비유한 상황입니다. 우측 첫번째 그림과 같이 차를 만들기 위해 처음부터 끝까지 완벽하게 계획된 설계하는 것이 아닌, 그 아래쪽 그림과 같이 개발하는 것이 애자일입니다. 즉 뭔가 탈것 혹은 굴러가는 것을 반복하여 만들어 목표를 당성하는 "작은 사이클을 반복하여 최소기능제품(MVP: minimum Viable Product)를 진화시켜 나가는것" 방법론이죠.
조금 추상화하여 생각하면 알 수 있듯이, 애자일은 소프트웨어 개발 방법론에서 시작했지만, (UML과 비슷하게) 현재는 타 분야에서도 쓰입니다. 애자일을 단순히 개발 방법론으로 보는 것이 아닌 일하는 방식 혹은 조직문화 또는 가치관으로 여기는 것이죠. 아무튼 이러한 애자일 방법론은 또 여러가지로 나뉘어지는데, 본 게시글에서는 work flow를 관리하는 방법론 두가지를 설명하고자 합니다. 첫번째는 스크럼, 두번째는 칸반입니다.
스크럼이란?
1. 사전적 정의
- 스크럼(scrum)은 프로젝트 관리를 위한 상호, 점진적 개발방법론이며, 애자일 소프트웨어 개발론 중의 하나다. 스크럼(scrum)은 소프트웨어 개발 프로젝트를 위하여 고안되었지만, 소프트웨어 유지보스 팀이나 일반적인 프로젝트/프로그램 관리에서도 적용될 수 있다. (출처: 위키백과)
사실 스크럼은 사전적 정의만 본다면 애자일 방법론이 맞긴한데 어떤 특수한 특징을 가지는지 알 수가 없습니다. 따라서 이를 알기 위해 스크럼의 순서를 살펴보겠습니다.
2. 스크럼의 순서(진행)
스크럼에서는, 30일간의 주기로 실제 동작하는 제품을 만들면서 개발을 진행하지만, 1스크럼=30일이 권장 기간이지만 상황에 따라 1주~4주의 유연성을 가집니다. 스크럼의 순서를 말하기 전에 스크럼에서 나오는 간단한 단어를 짚고 가겠습니다. <그림2>는 실제 스크럼이 일어나는 과정을 그림으로 설명하고 있습니다. 이와 함께 글을 읽으시면 도움이 될것입니다.
1. 스크럼 단어
- 제품 백로그(Product Backlog): 개발할 제품에 대한 요구 사항 목록
- 스프린트(Sprint): 반복적인 개발 주기(회사에서 정하는 이터레이션이 개발 주기가 된다. 계획 회의부터 제품 리뷰가 진행되는 날짜 까지의 기간이 1스프린트다.)
- 스프린트 계획회의(Sprint Planning Meeting): 스프린트 목표와 스프린트 백로그를 계획하는 회의
- 스프린트 백로그(Sprint BackLog): 각각의 스프린트 목표에 도달하기 위해 필요한 작업 목록
- 일일 스크럼 회의(Daily Scrum Meeting): 날마다 진행되는 미팅(어제 한일, 오늘 할일, 장애 현상 등을 공유)
- 실행 가능한 제품(shippable product) 개발: 스프린트의 결과로써 나오는 실행 가능한 제품
2. 스크럼 순서
- 제품에서 요구하는 기능과 우선순위를 제품 백로그로 정한다.
- PO(project owner)가 정한 제품의 우선순위를 어디까지 작업할지 팀과 조율한다. 조율하여 선정된 제품 백로그가 이번 스프린트의 목표가 된다.
- 스프린트 목표를 구현 가능 하도록 팀에서 스프린트 백로그를 작성한 뒤 작업을 할당한다
- 스프린트를 진행하는 동안, 매일 정해진 장소와 시간에 모든 개발 팀원이 참여하는 일일 스크럼 회의를 가진다
- 스크럼 회의(데일리 스크럼) : 업무를 시작하기 전, 모든 팀원들이 모여 일의 진행 상황을 확인, 점검하는 회의다. ex) 업무 방해 요소는? 오늘 할일은?
- 매회의 스프린트가 종료할 때마다, 스프린트 리뷰 미팅을 통해 만들어진 제품을 학습하고 이해한다. 참가자는 팀원, PM, 스크럼 마스터, CEO, 고객 등 해당 제품 개발의 이해 관계자 모두가 될 수 있다.
- 제품의 학습과 이해가 끝나면, 스프린트 회고를 통해 팀의 개발 프로세스에 대한 개선의 시간을 갖는다. 참가자는 해당 스프린트를 진행했던 팀원이다.
- 스프린트 기간 중 다음 스프린트를 준비하기 위해 PO와 필요 인원이 모여 백로그를 준비하는 시간을 갖는다.
짧게 요약하자면, 스크럼은 시간을 중시하여 개발하는 방법론입니다. 짧으면 1주, 길면 4주의 기간동안 하나의 스프린트를 완성하여(스프린트가 빠르게 달린다는 뜻이기도 하죠) 리뷰를 받고 제품 개선을 하는 방식인거죠. 이렇게 1스프린트, 2스프린트...N스프린트를 하다보면 결국 스프린트 백로그를 다하게되고 최종적으로 제품 백로그를 다 완료하여 원하는 제품을 출시하게 되는 것입니다.
잠깐 생각해보면 시간이 중시되어 개발자들이 시간에 쫓길 수 있는 방법론일 수도 있겠다고 생각이 듭니다. 그럼 이제 칸반을 살펴보죠, 칸반을 볼 때 스크럼과 무엇이 다른지 보면 눈에 잘 들어올 수 있습니다.
칸반이란?
1. 사전적 정의
- 칸반이란 생산시스템의 생산흐름을 통제하기 위하여 사용되는 마분지 카드를 의미한다. (출처: 네이버 지식백과)
- 칸반은 일 양을 수용할 수 있는 정도를 관리하고 시스템 레벨의 병목현상을 관리하는 프로세스 관리 방법론이다. (출처: 위키피디아)
소프트웨어 개발론에서 칸반은 시각적으로 프로세스를 관리하는 방법입니다. 연속적인 업무 흐름을 보여주므로서, 무엇을 언제, 어떻게, 얼마나 개발을 진행할지 의사결정을 하는데 도움을 주게됩니다. 글로만 설명하면 명확하지 않으므로 그림과 함께 이해하는 것이 좋을 것 같습니다.
칸반을 사용하면
1. 흐름이 한눈에 보입니다.
2. 프로세스 전반에 걸쳐 적시 개발(Just in time)을 지원합니다.
3. In Progress 항목에서 WIP Limits(Work In Progress): 동시에 진행될 수 있는 항목을 제한시켜, 병목이 어디에서 일어나는지 알 수 있습니다. 이는 일의 효율적인 관리로 이어집니다.
그렇다면 스크럼과 칸반의 차이점을 이해해보며 글을 마치겠습니다.
Scrum(스크럼) | Kanban(칸반) |
제한 시간이 존재한다(sprint 기간 설정) | 업무 수용 범위에 제한이 있다.(WIP 설정) |
Sprint 기간 내에 완료할 수 있는 작업 규모. | 작업 규모에 대해 특정하지 않는다. |
새로운 작업은 스프린트 도중 추가 불가 | 시간적 여유가 있다면 작업 추가 가능 |
개발 속도에 집중된 업무 방식 | 개발 퀄리티에 집중된 업무 방식 |
Daily scrum이라는 정해진 약속이 있다. | 정해진 약속이 없으며, 스크럼보다 자유롭다 |
'소프트웨어개발론' 카테고리의 다른 글
유스케이스 기반 통합 테스트 작성 (0) | 2022.09.05 |
---|