애자일 - woowa-techcamp-2021/store-4 GitHub Wiki
애자일
애자일이란 무엇일까?
- 워터폴 방식과 대비되는 개발 방법론(or 철학)
- 신속한 반복 작업을 통해 실제 작동 가능한 소프트웨어를 지속적으로 개발, 제공한다.
- 계획 -> 설계(디자인) -> 개발(발전) -> 테스트 -> 검토(피드백)으로 반복진행
- 작은 작업 단위
- 빠른 수정과 주기적인 방향성 확인
- 대략적인 기능 출시(배포) - 사용자 피드백(시장 반응) - 세부기능 출시 (개선)
장점
- 계획에 걸리는 시간을 줄일 수 있음
- 점진적 테스트를 통한 버그를 빠르게 발견
- 계획의 수정에 대해서 유연
- 프로토타입 모델을 빠르게 출시 가능
단점
- 확정되지 않은 계획 및 요구사항으로 인한 반복적인 유지보수가 많음
- 확정되지 않은 계획으로 개발 진행 시 이해하지 못하고 진행하는 부분이 많을 수 있음
- 반복적인 업무로 속도는 빠를 수 있으나 미흡한 기능들에 대한 대처가 필요
- 개인이 아닌 팀이 중심이 되다 보니 공통으로 해야 할 작업들이 많을 수 있음
4가지 주요 특성
- 개인과 개인 간의 상호작용이 프로세스 및 툴보다 우선
- 작동하는 소프트웨어가 포괄적인 문서보다 우선
- 고객과의 협업이 계약 협상보다 우선()
- 변화에 대응하는 것이 계획을 따르는 것보다 우선
어떻게 해야할까?
애자일의 도구 '스크럼'
- 스크럼: 스프린트 (보통 2주 정도?) 단위로 계획 잡고 실행 / 매일 간단한 상황 공유, 진행 상황 정리 / 스프린트가 끝나면 회고 => 우리가 해왔던 것과 어느 정도 비슷한 듯?
- 백로그: 요구사항 리스트, 개발 대상(목록) - UserStory
- 스프린트: 짧은 기간에 동작하는 SW를 만드는데 이때 이 짧은 기간을 스프린트라고 한다.
- 제품 백로그: 전체 기간동안 개발할 백로그
- 스프린트 백로그: 1개 스프린트에서 개발할 백로그
- 제품 백로그 작성
- 사용자 관점에서 작성하기 (DB 연동과 같은것은 X)
- 스프린트 계획 미팅
- 스프린트 기간과 기간동안 진행할 스프린트 백로그 선정
- 일일 스크럼 미팅
- 어제 한일, 오늘 할 일, 이슈 사항 공유 (이슈나 리스크는 따로 정리하여 진행을 방해시키는 백로그와 연결)
- 스프린트 리뷰
- 스프린트의 결과물을 리뷰
- 스프린트 회고
- 스프린트에서의 과정을 회고
- 종류
- 스크럼
- 30일마다 동작 가능한 제품을 제공하는 스프린트 중심
- 매 정해진 시간에 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심의 방법론
- 익스트림 프로그래밍
- 테스트 주도 개발(TDD)
- planning game
- XP는 일반적으로 2주를 주기로 계획을 세우고 프로토 타입을 만들어서 최종 사용자 혹은 프로젝트를 의뢰한 의뢰인과 함께 무엇이 얼만큼 개발이 되었는지 혹은 알맞은 방향으로 개발이 진행이 되어가고 있는지 검사 혹은 회의
- Pair programming
- small release
- 스크럼
그외 애자일의 방법론 '칸반'
-
칸반
대표적인 예시 : 깃헙의 프로젝트 탭
-
지난 주까지 이슈와 병행해서 사용해봤는데 잘 되진 않았다.
아예 칸반보드를 중심으로 프로젝트를 진행하면 모르겠지만 단순히 관리를 돕는 도구 정도로 사용하면 오히려 귀찮아질 수 있다고 느꼈다.
-
대략적인 우리팀의 애자일 계획
- 정말 핵심이 되는 기능(로그인, 상품 목록 불러오기 + a)을 추려내서 최소한의 동작을 하는 프로덕트를 배포까지 하는 것을 1주차 스프린트 목표로 (이 때 모두가 협의 하에 FE, BE 구조도 도출)
- 이후 점진적으로 스타일링 / 기능 추가 (구체적인 계획은 매주 논의한다.)