* 스크럼(Scrum)은 프로젝트관리를 위한 상호,점진적 개발방법론이며, 애자일 소프트웨어 공학 중의 하나이다.
소프트웨어 개발은 애자일 개발 방법론을 기반으로 진행되어 진다. 이 방법론의 특징은 협업을 중요시하며 태스크를 관리하는 기법을 중심으로 진행된다. 따라서 이런 태스크를 관리하는것이 매우 중요한데 이를 도와주는 대표적인 태스크 관리 시스템으로 JIRA가 있다.
JIRA : 스크럼 방법론을 기반으로 태스크 관리 도구이며 프로젝트를 관리할 수 있게 하는 도구다.
주요기능 정리
JIRA를 사용하기 전에 먼저 엑셀을 통해서 구현하고자 하는 서비스의 주요 기능을 정의 하여 팀원들과 공유하여 리뷰하면서 수정하며 정리한다.
이때, 위와 같이 두 단계로 나눠서 Feature(기능)을 기술하는데 기능 1에선 일반적으로 생각할 수 있는 기능을 기술하고 기능 2에서는 상세 기능을 정의하는데 이런 기능 리스트를 정의할 때 4가지중요한 점이 있다.
“As a {user}, I want to do {something}나는 {사용자}로서 {무엇을}하고 싶다.” 형태의 스토리 기술 방법을 사용하여 서술한다.
스토리 : 전체적으로 기능이 스토리 형태로 흐름을 가져가야 순서대로 기능을 기술할 수 있고 이해하기 편하며, 조금 더 빠짐없이 리뷰가 가능하다.
테스트 가능 : 각 기능은 테스팅이 가능한 수준으로 디테일하게 서술되어야한다.
디자인 가능 : 디자이너가 기능에 있는 스토리에 따라서 UX를 만들 수 있는 정도로 충분히 기술되어야 한다.
UX 는 User eXperience로 쉽게 말해 사용자 경험을 의미합니다. 어떤 서비스나 기능을 제공할 때 사용자의 경험을 분석하여 보다 편하고 효율적인 방향으로 진행 될수 있도록하는 과정과 결과이다.
JIRA Agile Board(애자일 보드)
엑셀로 작성해둔 기능들을 JIRA에 기능들을 등록하기 전에 Agile Board를 알아야 한다.
스크럼 애자일 방법론을 보면 ‘스크럼 보드’라는 것이 소개되어 있는데 해야 할 일(To Do), 진행중인 일(In Progress), 완료된 일(Complete)로 진행 단계에 맞추어 일을 나누는 것이다. 이러한 스크럼 보드를 웹 형태로 만들어 놓은 것이 JIRA의 애자일 보드이다. 이렇게 단계별로 나누어서 일을 관리하게 되면 각자 해야할 일들을 작성 해 두어 자세한 기능관리가 가능하다.
애자일 보드는 팀원과의 협력을 도와주는 서비스 이므로 팀원들을 초대한다.
이름에는 본인이 진행하고자 하는 프로젝트의 이름을 적는다.
이렇게 하면 빈 애자일 보드를 생성할 수 있다.
이슈의 종류
JIRA에 입력되는 해야 할 일 기능들을 ‘이슈’라고 정의 하는데 이슈에는 몇가지의 타입이 존재한다.
Epic : LV1 기능으로 주요 기능들을 중심으로 정의한다.
Story : 사용자가 직접 사용하는 기능이다.
Story Point : 개발에 걸리는 시간이나 난이도를 지정한다.
Chore : 사용자가 이용하는 기능이 아닌 개발자만 개발해야하는 내용을 작성한다.
Task : 해야하는 일 이지만 개발과는 다른 업무 ( 회의, 기획, 문서작성 등 )
Bug : 테스트 엔지니어에 의해서 테스팅 되고 버그로 리포팅된 타입이다.
Sub Task : 스토리나 초어를 개발하는 과정에서 세부적인 업무의 할당이다. 이러한 세부 업무의 할당은 개별 개발자에게 할당되며 0.5에서 2일 정도에 끝날 수 있는 테스크가 할당이 되어야 한다.
에픽 등록
홈 화면에서 ‘c’를 누르면 이슈 만들기 창이 뜨는데 이슈 유형을 에픽으로 수정하여 이름과 설명 요약을 작성하면 된다.
그러면 이와 같이 에픽이 만들어진것을 확인할 수 있다.
이슈 등록과 매핑
Priority : 해당 이슈가 얼마나 중요한지를 나타내는 척도로
Blocker : 해결되지 않으면 프로젝트가 진행될 수 없는 경우
Critical : 프로젝트 진행은 가능하나 해결하지 않으면 정상적인 서비스 개발이 어려운 경우
Major : 꼭 개발해야 하는 경우
Minor : 개발은 해야 하나 없어도 상관 없는 경우
Trivial : 있으나 없으나 크게 상관 없는 경우
릴리즈 버전 정의와 맵핑
릴리즈 : 작동 가능한 서비스 가능한 상태로 만드는 것, 운영 서버로 올리는 것
요즘 애자일 에서는 ‘쇼트 릴리즈’ 방식을 사용하여 짧은 주기로 릴리즈 한다. 보통 이상적인 경우 스프린트 하나가 끝나고 난 후 릴리즈를 하게 된다.
어떠한 기능을 언제 릴리즈 할 것인가를 정의 하는 것을 ‘릴리즈 계획’이라고 하는데 JIRA는 이 기능을 지원하고 있다.
스프린트 계획
스토리 포인트 부여하고 스프린트를 생성하고 기간을 설정한다.
스프린트 시작,진행
작업의 상태 설정
코멘트를 이용한 진행 상태 추가
해당 이슈를 해결하는데 필요한 내용이나 무슨 일을 했는지에 대한 로그를 남기는 것으로 커뮤니케이션 용도로 사용한다. (알람-이메일)
Version Control System 연동을 이용한 이슈별 코드 변경 추적 : JIRA는 Git 에 커밋 할 때 해당 이슈에 #을 넣어서 커밋하게 되면 해당 이슈에 관련된 소스코드 변경 부분을 링크로해서 반영 부분을 보여준다.
JIRA의 확장
JIRA는 개인별 혹은 프로젝트별로 대시보드를 구성해서 현황을 쉽게 확인 할 수 있다.
사용자별 이슈 할당 현황 : 팀원별로 할당된 이슈의 수를 모니터링 하여 적절하게 이슈를 분산해서 배치할 수 있다.
Block, Critical, Major 이슈 개수 : 중요도가 높은 이슈들은 항상 모니터링하는 것이 좋다.
신규생성 대 해결되는 이슈 그래프 : 스프린트 끝으로 갈수록 이슈가 생성되는 그래프를 해결되는 이슈 그래프가 쫒아가야한다.
나에게 할당된 이슈
내가 모니터링하고 있는 이슈
다른 프로젝트의 진척 상황 : 프로젝트 매니저의 경우 여러개의 프로젝트의 진척사항을 모니터링 하는것이 좋다.