애자일 - woowa-techcamp-2021/store-4 GitHub Wiki

애자일

애자일이란 무엇일까?

  • 워터폴 방식과 대비되는 개발 방법론(or 철학)
  • 신속한 반복 작업을 통해 실제 작동 가능한 소프트웨어를 지속적으로 개발, 제공한다.
  • 계획 -> 설계(디자인) -> 개발(발전) -> 테스트 -> 검토(피드백)으로 반복진행
    • 작은 작업 단위
    • 빠른 수정과 주기적인 방향성 확인
    • 대략적인 기능 출시(배포) - 사용자 피드백(시장 반응) - 세부기능 출시 (개선)

https://i.pinimg.com/originals/61/2d/75/612d75b653215046608cb250d6f89e90.jpg

장점

  • 계획에 걸리는 시간을 줄일 수 있음
  • 점진적 테스트를 통한 버그를 빠르게 발견
  • 계획의 수정에 대해서 유연
  • 프로토타입 모델을 빠르게 출시 가능

단점

  • 확정되지 않은 계획 및 요구사항으로 인한 반복적인 유지보수가 많음
  • 확정되지 않은 계획으로 개발 진행 시 이해하지 못하고 진행하는 부분이 많을 수 있음
  • 반복적인 업무로 속도는 빠를 수 있으나 미흡한 기능들에 대한 대처가 필요
  • 개인이 아닌 팀이 중심이 되다 보니 공통으로 해야 할 작업들이 많을 수 있음

4가지 주요 특성

  • 개인과 개인 간의 상호작용이 프로세스 및 툴보다 우선
  • 작동하는 소프트웨어가 포괄적인 문서보다 우선
  • 고객과의 협업이 계약 협상보다 우선()
  • 변화에 대응하는 것이 계획을 따르는 것보다 우선

어떻게 해야할까?

애자일의 도구 '스크럼'

  • 스크럼: 스프린트 (보통 2주 정도?) 단위로 계획 잡고 실행 / 매일 간단한 상황 공유, 진행 상황 정리 / 스프린트가 끝나면 회고 => 우리가 해왔던 것과 어느 정도 비슷한 듯?
  • 백로그: 요구사항 리스트, 개발 대상(목록) - UserStory
  • 스프린트: 짧은 기간에 동작하는 SW를 만드는데 이때 이 짧은 기간을 스프린트라고 한다.
  • 제품 백로그: 전체 기간동안 개발할 백로그
  • 스프린트 백로그: 1개 스프린트에서 개발할 백로그
  1. 제품 백로그 작성
    • 사용자 관점에서 작성하기 (DB 연동과 같은것은 X)
  2. 스프린트 계획 미팅
    • 스프린트 기간과 기간동안 진행할 스프린트 백로그 선정
  3. 일일 스크럼 미팅
    • 어제 한일, 오늘 할 일, 이슈 사항 공유 (이슈나 리스크는 따로 정리하여 진행을 방해시키는 백로그와 연결)
  4. 스프린트 리뷰
    • 스프린트의 결과물을 리뷰
  5. 스프린트 회고
    • 스프린트에서의 과정을 회고

  • 종류
    • 스크럼
      • 30일마다 동작 가능한 제품을 제공하는 스프린트 중심
      • 매 정해진 시간에 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심의 방법론
    • 익스트림 프로그래밍
    • 테스트 주도 개발(TDD)
    • planning game
      • XP는 일반적으로 2주를 주기로 계획을 세우고 프로토 타입을 만들어서 최종 사용자 혹은 프로젝트를 의뢰한 의뢰인과 함께 무엇이 얼만큼 개발이 되었는지 혹은 알맞은 방향으로 개발이 진행이 되어가고 있는지 검사 혹은 회의
    • Pair programming
    • small release

그외 애자일의 방법론 '칸반'

  • 칸반

    대표적인 예시 : 깃헙의 프로젝트 탭

    • 지난 주까지 이슈와 병행해서 사용해봤는데 잘 되진 않았다.

      아예 칸반보드를 중심으로 프로젝트를 진행하면 모르겠지만 단순히 관리를 돕는 도구 정도로 사용하면 오히려 귀찮아질 수 있다고 느꼈다.

대략적인 우리팀의 애자일 계획

  • 정말 핵심이 되는 기능(로그인, 상품 목록 불러오기 + a)을 추려내서 최소한의 동작을 하는 프로덕트를 배포까지 하는 것을 1주차 스프린트 목표로 (이 때 모두가 협의 하에 FE, BE 구조도 도출)
  • 이후 점진적으로 스타일링 / 기능 추가 (구체적인 계획은 매주 논의한다.)