Agile 방법론 정리
18 Jan 2017 | agile scrum xp softwareengineeringAgile 방법론에 관해 공부한 내용에 대해 정리한 문서입니다.
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