기술개발/프로젝트 관리
애자일 스터디
한승욱
2021. 4. 6. 17:05
반응형
본 글을 여러 정보글을 토대로 본인이 정리해 본 글이다.
애자일
- 소프트웨어 개발 프로세스 중 하나
- 아무런 계획없는 '주먹구구식'과 계획이 지나치게 많은 방법들 사이 타협점을 찾고자 하는 방법
- 대표적으로 xp, 스크럼, 칸반 등이 있음
- 기존에는 문서로 보여줬다면 애자일은
코드
로 보여줌!!
- 좀 더 작은 단위로 개발을 해서, 해당 부분을 직접 고객에게 선보이고 피드백을 빠르게 전달받아 수정이나 이슈처리에 대한 기민한 대응을 하자
배경
스크럼 - 핵심 단어: 스프린트
- 반복적이고 점진적인 개발방법
- 여러 반복주기로 이뤄지며 각 반복주기가 종료될때마다 부분적으로 완성된 결과물이 만들어지도록 함
- 반복주기는 스프린트(Sprint)라고 하며 하나의 스프린트는 1~4주로 구성됨(보통 2주 정도)
- 즉, 각 스프린트마다 목표는 실행 가능한 제품을 만들어서 배포하는 것
각 스프린트의 결과물 - 잠재적으로 출시 가능한 제품 증분(Potentially Shippable Product Increment)
역할
- 제품 책임자(Product Owner: PO)
- 제품 백로그를 관리, 작성하고 이해관리자로부터 요구사항을 추출하여 제품 백로그에 반영한다.
- 요구사항에 우선 순위를 매기고 각 스프린트마다 우선순위를 관리, 조정한다.
- 스크럼 마스터(servant leader)
- 개발의 측면에서 PO가 말한 비즈니스 기능들을 개발 가능한 단위로 쪼개고 조율하는 역할
- (개발 가능한 단위의 분리는 최대한 작은 단위로 쪼개는 것이 좋다)
- 일반적인 PM과는 다르게 개발 팀원들을 코칭하고 개발팀이 프로젝트 진행중 문제가 생겼을 때 잘 해결할 수 있도록 도와주는 역할
- 개발팀원들이나 스크럼에 참여하는 사람들이 스크럼을 제대로 알고 수행하고 있는지에 대한 책임을 가지며 스크럼의 이론, 규칙들을 잘 따르도록 보장해야함
- 개발팀
- 고객으로부터 받은 요구사항을 가지고 제품을 개발, 테스트하는 팀(5~7명)
- 따로 리더 없음 - 민주적인 구조
- 자기 조직화(self-organization)되어 있어 외부의 명령 없이 스스로 스프린트 목표를 달성하기 위해 최상의 방법을 결정
제품 백로그(Product Backlog)
- 제품 책임자(PO)가
사용자 스토리
를 기반으로 작성
- 이해관계자로부터 추출된 제품이 제공해야 하는 기능이나 개발할 제품에 대한 요구사항 목록
- 우선순위를 가짐
- 제품 백로그의 우선순위 및 변경에 대해서는 원칙적으로 제품 책임자가 관리의 책임과 소유권을 가짐
- 제품 백로그는 릴리즈 계획 및 각 스프린트 수행을 위한 Input으로 사용
- 스프린트 수행시 선택된 제품 백로그에 대해 “스프린트 백로그” 추출
사용자 스토리(ser Story)
- 고객이나 개발자가 모두 이해할 수 있도록 고객이 작성하는 것
- 카드, 대화, 테스트 라는 세 측면을 이용하여 작성
카드
- 요구사항 문서화가 아닌! 고객의 요구사항 표현!
- ‘나는 ~로써 ~하기 위해 ~하고 싶다’라는 카드를 작성하며 who, why, what 정보가 모두 포함되어 있어야 함
대화
- 카드 내용의 세부사항을 구체화시킴으로서 인수기준이 정해지고, 이해의 공유(shared understanding)를 촉진
테스트
- 대화에서 논의한 인수 기준을 통해 스토리의 완료 여부를 판단
- 긍정적인 테스트와 부정적인 테스트를 모두 사용하여 인수 기준이 만족되었는지 판단
- 스토리포인트(Story Point)를 통해 점수를 메겨 개발 규모를 추정
- 사용자 스토리가 하나의 스프린트 내에 완료할 수 없을 만큼 크다면, 좀 더 작은 크기로 여러 개의 사용자 스토리로 분할
- 사용자 스토리는 사용자가 사용하는 기능 위주로 표현이 되므로, DB성능, 편리한 UI 등과 같은 비기능적 요구사항은 사용자 스토리 외의 다른 방식으로 백로그에 수집이 되어야 함
스프린트
스프린트 계획 회의
- 제품 백로그를 기반으로 스프린트 목표와 스프린트 백로그를 계획
- 스프린트 계획 파트1과 스프린트 계획 파트2로 나뉨
- 파트1 - 스프린트 동안 무엇(what)을 할지 우선순위가 높은 아이템들을 검토 및 목표 설정
- 파트2 - 파트1에서 결정한 무엇을 어떻게(how) 실행할지에 대해 설정
- 스프린트 약속(Sprint Commitment) - 각 스프린트가 끝날 때마다 어떤 결과물을 내놓을 것인지에 대한 현실적인 목표 설정(스프린트 회의 끝쯤에 설정)
스프린트 백로그 작성
- 제품백로그에서 결정된 우선순위를 기반으로 스프린트에 분배한 리스트
- 각각의 요구사항을 task 단위로 나누어 개발자들이 나눠서 작업을 수행
- 스크럼 보드(Scrum Board) 제작
스프린트는 플래닝을 통해 해당 스프린트에 진행할 작업을 정하고 시간을 추정했기 때문에, 플래닝때 정해진 작업을 스프린트 기간 내에 완료하는 것을 목표로 달립니다
- 카드를 끌어다 in progress 부분에 옮겨두고 작업을 진행
일일 스크럼 미팅(스탠드업)
- 스크럼 회의 - 매일 오전 데일리 미팅을 진행 해 오늘 할 일을 공유하고 어제 한 일을 간단히 리뷰(15분 정도)
- 어제 했던일과 오늘 할일, 수행중 문제점이나 장애요인 등을 공유
- 일일 스크럼 미팅을 함으로서 프로젝트 후반부에 문제점이 갑자기 발생하는 것을 예방
- 번다운 차트(Burndwon Chart)를 통해 진척도를 추적한다
- 가로축은 1회 스프린트 기간, 세로축은 남은 작업량
스프린트 리뷰 및 회고
스프린트 리뷰
- 스프린트동안 개발한 증분의 기능을 고객을 포함한 이해관리자들에게 보여주고 피드백을 받는 과정
- 고객의 피드백이나 여러 사항들을 정리하여 다음 스프린트에 반영되도록 제품 백로그를 다시 갱신
- 스프린트의 한주당 스프린트 리뷰시간은 한 시간으로 제약되어있으며 스프린트 리뷰를 준비하는데 30분을 넘지 않도록 해야함
스프린트 회고
- 스프린트를 진행한 후 스프린트 마지막날 스프린트 기간 동안 진행한 작업들을 플래닝 내용을 가지고 회고 진행
- 프로젝트를 진행하면서 좋았던점이나 문제점, 미진한 점 등을 도출 → 다음 스프린트를 보다 더 나은 방향으로 개선
다음 스프린트 시작
- 스프린트가 회고 후 휴식 기간없이 다음 스프린트를 진행
칸반 - 핵심 단어: WIP
- 칸반과 스크럼의 가장 두드러지는 차이는 스프린트 기간이 정해져 있지 않다는 것
- 칸반 역시 이슈카드가 들어올 때마다 데일리 미팅에서 플래닝 포커를 통해 시간 추정 작업 진행
- 이슈카드는 기한없이 backlog에 쌓이게 되고, 급한 작업단위 순서대로 in progress에 이슈카드를 넣고 처리
- In Progress바에 넣을 수 있는 이슈카드의 갯수는 제한되어 있음
나가며
주로,
프로젝트같은 종료일이 정해져야 하는 업무가 많이 발생하는 경우는 스크럼,
지속적인 업무를 다루며 프로젝트 개발 및 ops까지 함께 다뤄야 하는 상대적으로 작은 단위의 팀에서는 칸반을 사용하는 것이 효율적입니다.
출처
반응형