Agile 방법론 정리

|

Agile 방법론에 관해 공부한 내용에 대해 정리한 문서입니다.

1. 배경

  • 소프트웨어 위기의 원인과 해결방안을 찾음
  • 변화하는 요구사항과 측정하기 힘든 작업량
  • 기술적인 해결책으로 객체지향 등장, 그리고 객체지향 개발을 하기 위한 적합한 개발 프로세스 필요

2. Waterfall의 문제점

  • 수행단계가 명확하게 나뉘어 있어, 앞선 파트가 끝나야만 다음 단계 실행가능
  • 요구사항에 맞게 개발되고 있는지 개발 후반부가 되어야 확인 가능함
  • 하위 단계 수행중 상위 단계(기획/요구사항등…)에서 수정될 경우 영향도가 매우 큼

    가장 큰 문제는 요구사항을 내는 고객도 실체가 보이기 전까진 완벽히 원하는 것을 내놓기 힘들다는 것입니다.

3. Agile 이란

Agile방법론의 기존 방법론과 가장 큰 차이점은 사상과 철학에 있습니다.

Agile 선언문

  • 공정과 도구보다 개인과 상호작용
  • 포괄적인 문서보다 작동하는 소프트웨어
  • 계약 협상보다 고객과의 협력
  • 계획을 따르기보다 변화에 대응하기를

어쩔수 없는 부분

고객의 요구사항은 바뀝니다.   
한번에 제대로 할 수 없습니다.   
개발 기간이 길수록 변경사항이 발생할 확률이 높습니다.   

해결 방안

짧은 개발기간으로 빠르게 실체를 만드며 지속적인 결과물을 전달합니다.
최대한 단순화 합니다.
고객과의 피드백/의사소통을 자주하여 바른 방향을 잡습니다.
개개인에게 동기부여하고 가장 효율을 낼 수 있는 환경을 만듭니다.
하나의 팀이 역활과 책임을 공유합니다.

4. Agile 종류

eXtreme Programming(XP)

명칭 설명
Whole Team 개발자외에 기획,고객,디자이너,테스터등 모든 사람을 팀원으로 구성합니다.
그 중 요구사항을 도출하는 고객이 가장 중요합니다.
Planning Game 이번 주기의 개발 범위를 결정하고 그 이후 개발 반복에서 무엇을 할것인가를 계획합니다.
Customer Test 의뢰인이 원했던 것과 다른지를 반복적으로 테스트 합니다.
짧은 주기별로 실체를 만들어 내기 때문에 가능.
Small Release 릴리즈 주기를 짧게 잡아 주기적으로 프로토타입을 제공합니다.

XP를 지키기 위한 기법으로는 아래와 같습니다.
출처 : 애자일 실천 사례 - XP편

  • 함께 앉기 : 커뮤니케이션 비용을 줄여줍니다.
  • 페어프로그래밍 : 특정 사람에게 의존성이 생기는 것을 방지합니다.
  • 사용자스토리 : 프로젝트에 참가하는 모든 사람이 이해하기 쉽습니다.
  • 주단위 계획 : 작업계획의 크기를 2~3주 단위로 구성합니다.
  • 휴식 : 집중력을 향상 시켜줍니다.
  • 지속적 통합(CI) : 나중에 한번에 통합했다가는 날벼락을 맞을수 있습니다.
  • 테스트 주도 프로그래밍(TDD)

Scrum

스크럼은 제품책임자(PO), 스크럼마스터(SM), 그 외 모든 팀원으로 구성됩니다.

PO SM
어떤 순서로 제품이 개발되어야 하는지 결정
팀 외부의 이해관계 당사자들의 피드백을 필터링
팀원들의 이슈를 듣고 해결하는 주체

스크럼은 아래와 같은 방식으로 진행됩니다.

순서 설명
제품 백로그 작성 사용자 스토리를 수집하여 제품 개발할 항목을 설정
스프린트 계획 미팅 제품 백로그중 이번 스프린트에서 개발할 항목을 정하고 공수산정
위 과정에서 스프린트 백로그가 생성됩니다.
1~4주 사이로 기간을 정하고 개발을 수행합니다.
스프린트 개발 진행 매일 스크럼 미팅을 통해 작업 계획및 이슈사항을 공유합니다.
번다운 차트를 통하여 개발 진척사항을 관리합니다.
스프린트 회고 이번 스프린트의 장단점을 도출하여 다음 스프린트에 반영합니다.
릴리즈 1~N개의 스프린트를 돌고 제품을 릴리즈 합니다.

Comments