-
TIL.66 스크럼(Scrum)TIL 2020. 12. 13. 21:04728x90
스크럼(Scrum)이란?
프로젝트 관리를 위한 상호,점진적 개발방법론이며, 애자일 소프트웨어 개발 중의 하나이다.
스크럼(Scrum)은 소프트웨어 개발 프로젝트를 위하여 고안되었지만, 소프트웨어 유지보수 팀이나 일반적인 프로젝트/프로그램 관리에서도 적용될 수 있다. (출처 : wikipedia)
스크럼(Scrum)이란 원래 럭비에서 반칙으로 경기가 중단된 경우 양 팀의 선수들이 럭비공을 가운데 두고 상대팀을 밀치기 위해 서로 대치해 있는 대형을 말한다.
이처럼 팀이 중심이 되어 개발의 효율성을 높인다는 의미가 내포된 용어로
스크럼은 애자일(Agile) 방법론을 기반으로 한 기법, 방법, 프로세스 라 할 수 있겠다
고객(클라이언트)의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발을 진행하는 방법을 말한다.
그럼, 애자일 방법론은 무엇일까?
애자일 소프트웨어 개발(Agile software development) 혹은 애자일 개발 프로세스는 소프트웨어 엔지니어링에 대한 개념적인 얼개로, 프로젝트의 생명주기동안 반복적인 개발을 촉진한다. 최근에는 애자일 게임 보급 등의 여파로 소프트웨어 엔지니어링 뿐 아니라 다양한 전문 분야에서 실용주의적 사고를 가진 사람들이 애자일 방법론을 적용하려는 시도를 하고 있다.(출처 : wikipedia)
애자일 프로세스의 배경에는 소프트웨어 개발 자체가 다른 공학적인 프로세스와는 큰 차이가 있음을 인지하는 데에서 부터 시작되었다. 이는 소프트웨어 위기의 원인과 해결방안을 찾는 데에서 부터 시작되었다.
90년대 후반까지의 소프트웨어 공학과 개발방법론은 장기간에 걸쳐 많은 사람들을 투입하고 충분한 비용을 투입하여 진행하는 다른 공학의 프로세스와 비슷한 맥락에서 진행되었다.
그러나 소프트웨어는 유동적이고 개방적이다. 또한, 요구사항의 변경에 따른 작업량을 예측하기 힘들다. 그래서 이미 고전적인 소프트웨어 공학이나 관리 기법만으로는 대처할 수 없게 되었다. (출처 : wikipedia)
이러한 애자일 개발 프로세스를 기반으로 스크럼이라는 일련의 상호 점진적 개발방법론이 제기 되었으며
이러한 프로세스를 이용해 효과적으로 소트프웨어 개발 프로젝트를 진행하기 위해 스크름 방식을 사용한다
애자일 모형(Agile Model)
애자일 모형은 고객의 다양한 요구사항의 변화에 유연하게 대응하기 위한 제시되었습니다. 일정한 개발 주기를 반복하는 것이 애자일의 특징으로, 좋은 것을 빠르고 낭비 없이 만들기 위해 고객과의 소통에 초점을 맞춘 방법론을 통칭합니다.
애자일 모형은 스프린트(Sprint) 또는 이터레이션(Iteration)이라고 불리는 짧은 개발 주기를 반복하며, 반복되는 주기마다 만들어지는 결과물에 대한 고객의 평가와 요구를 적극 수용합니다.
애자일 모형을 기반으로 하는 소프트웨어 개발 모형에는 대표적으로 스크럼(Scrum), XP(eXtreme Programming), 칸반(Kanban), 린(Lean) 등이 있습니다.
애자일 모형 ( 출처 : 애자일 방법론. 말로만 들어왔던 애자일 방법론에 대해서 더 잘 이해하기 위해서… | by 심재철 | Medium)
스크럼 프로세스 알아보기
우리나라에는 없지만 외국에서는 스크럼만을 관리하는 스크럼 마스터라는 직업이 있을 정도로 중요하게 관리되고 있다.
이는 실제로 굉장히 많은 회사에서 스크럼 방식으로 개발 프로젝트를 관리하고 있다.
즉, 효과적으로 소프트웨어 개발 프로젝트를 진행하기 위해 사용하는 방식이 스크럼이다.
제조산업의 프로세스를 폭포수 프로세스(Waterfall)이라 부른다.
Waterfall 방식에서는 결과물이 1개 이며 단계가 마무리 될때까지 서로가 하는일이 다르며
상대적으로 서로간 의사소통이 적다는 특징이 있다.
하지만 이와 반대로 애자일 프로세스(Agile)는 결과물이 1차, 2차, 3차 등등 계속 업데이트 되는 방식으로
중간 중간 결과물이 어떻게 구현되었는지 서로 의논하고 확인해 볼 수 있으며 Merge를 여러차례 진행하여
중간 중간 발생하는 오류를 해결해나가는 방식으로 진행한다.
이러한 방법의 장점은
- 점진적으로 테스트 할 수 있어서 버그를 더 빠르게 발견 할 수 있다.
- 수정과 변경에 유연하다.
- 프로젝트를 시작할때 계획에 버리는 시간을 줄일 수 있다.
- 개발의 속도가 빨라 원하고자하는 목표를 단시간에 달성 할 수 있다.
개발 프로세스
스크럼에서는 다음과 같은 순서로 개발이 진행됩니다.
1. 제품 백로그 작성(Product Backlog)
백로그(Backlog)는 제품 개발에 필요한 모든 요구사항을 우선순위에 따라 나열한 목록으로, 이를 작성한 뒤 사용자 스토리를 기반으로 전체 일정 계획인 릴리즈 계획을 수립합니다.
2. 스프린트 계획 회의(Sprint Planning Meeting)
제품 백로그 중 이번 스프린트에서 수행할 작업을 대상으로 단기 일정을 수립합니다. 스프린트에서 처리할 요구사항을 개발자들이 나눠서 작업할 수 있도록 태스크(Task)라는 작업 단위로 분할하고, 개발자별로 수행할 작업 목록인 스프린트 백로그(Sprint Backlog)를 작성합니다.
3. 스프린트(Sprint)
실제 개발 작업을 진행하는 과정으로, 스프린트 백로그에 작성된 태스크를 대상으로 작업 시간(양)을 추정한 후 개발 담당자에게 할당합니다.
태스크를 할당할 때는 개발자가 원하는 태스크를 직접 선별하여 담당할 수 있도록 하는 것이 좋습니다.
이렇게 할당된 태스크는 보통 할 일(To Do), 진행 중(In Progress), 완료(Done)으로 구분되어집니다.
4. 일일 스크럼 회의(Daily Stand Up Meeting)
모든 팀원이 매일 약속된 시간에 약 15 분 정도의 짧은 시간동안 진행 상황을 점검합니다.
회의를 진행하면서 남은 작업 시간을 소멸 차트(Burn-down Chart)에 표시합니다. 소멸 차트는 해당 스프린트에서 수행할 작업의 진행 상황을 확인할 수 있도록 시간의 경과에 따라 남은 작업 시간을 그래프로 표현한 것입니다.
스크럼 마스터는 이 때 발견된 이슈를 해결할 수 있도록 도와줍니다.
5. 스프린트 검토(Sprint Review)
부분 또는 전체 완성 제품이 요구사항에 잘 부합되는지 사용자와 함께 테스팅을 수행합니다.
각 스프린트의 한 주당 한 번씩 진행하고, 제품 책임자는 개선할 사항에 대한 피드백을 정리한 후 다음 스프린트에 반영할 수 있도록 제품 백로그를 업데이트 합니다.
6. 스프린트 회고(Sprint Retrospective)
한 스프린트가 종료되면 스프린트 주기를 돌아보며 정해놓은 규칙을 잘 준수했는지, 개선할 점은 없는지 등을 확인하고 기록합니다.
돌아오는 월요일부터 시작하여 총 2번의 프로젝트를 진행하며 아래의 스크럼 요소를 중점적으로 지켜 진행할 예정이며
Trello를 사용하여 스크럼을 관리할 예정이다.
스프린트(Spint) : 스크럼의 단위로 해당 프로젝트에서는 1주일 = 1스트린트 단위로 진행한다.
플래닝 미티 (Planning Meeting) : 전체적으로 개발에 대한 진행방향을 정한다.
데일리 스탠드업 미팅 (Daily Standup) :매일 매일 해야할 업무와 협업이 필요한 부분을 팀원과 공유하여 진도 체크
회고 미팅(Retrospective Meeting) : 팀원들이 모여 이번 프로젝트를 전반적으로 자체평가하고 개선방향을 찾아본다.
프로젝트를 진행할 동안 내가 이를 통해 배워야하는게 무엇인지 생각하며 진행하자.
1. 기능의 본질에 집중해보는 것부터 시작한다.
2. 실제로 작은것에 만족하며 단계별로 업그레이드해 나가는 마인드가 중요하다고 한다.
여기까지 못했네 라기 보다는 지워지는 Backlog를 보며 만족감을 채워나가자.
3. 실제 스크럼 방식을 진행해보고, 내가 이해하고 남이 알아들을 수 있게 설명할 정도가 되도록 느껴보자
출처 : 스크럼(Scrum) 이란? - Eunsu's Dev Blog (eunsukim.me)
스크럼 (애자일 개발 프로세스) - 위키백과, 우리 모두의 백과사전 (wikipedia.org)
위코드의 교육 철학이다.
728x90'TIL' 카테고리의 다른 글
TIL.71 JsonResponse 활용 (0) 2020.12.18 TIL.67 Trello 다루기 (0) 2020.12.14 TIL. 62 회원가입, 로그인 _ HTTP 통신 (0) 2020.12.09 TIL.61 Bcrypt, Pyjwt (암호화) (0) 2020.12.08 TIL.60 인증 & 인가 (Hash/Hashing) (0) 2020.12.07