프로그래밍/기타

애자일과 스크럼

코딩딩 2016. 10. 21. 16:51

애자일(Agile)이란?

소프트웨어 개발 방법에 있어서 아무런 계획이 없는 개발 방법과 계획이 지나치게 많은 개발 방법들 사이에서 타협점을 찾고자 하는 방법론이다. 흔히 폭포수 모델 개발 기법과 대비되는 기법이다.

폭포수 모델 기법

기존의 소프트웨어 개발현장에서 주로 사용되고있는 개발기법으로 분석, 설계, 개발, 테스트의 개발 공정을 거친 후 사양서 문서를 통해 원하는 바를 전달하는 기법이다.

폭포수 개발 기법


이에 반해 애자일은 짧은 주기(1주~1개월)로 기간을 나누어 그 기간 안에 전 공정을 거쳐 동작하는 완성품의 일부를 만들어 낸다. 그리고 그 과정을 반복한다.

애자일 개발



애자일의 필요성

"비지니스의 불확실성과 변화 가속성"

과거의 사업 방식을 보면 우선 비즈니스 조직이 '시장 분석'을 수행하고 요구사항 사양서/ 요구사항 정의서 같은 문서로 정리해서 IT 조직에 넘기고 시스템 개발을 발주한다. 그 후 IT조직은 받은 요구를 만족하는 시스템을 개발하여 비지니스 조직에 납품하고 비지니스 조직은 납품된 시스템을 시장에 릴리즈한다. 이러한 사이클은 적게 6개월에서 수년이 걸린다.

이러한 사업방식은 비지니스의 불확실성과 변화가 가속되면서 여러 문제점을 만들어내고, 심지어 전혀 사용되지 않는 기능을 만들어 내느라 애를 쓰게 된다. 

그이유는 첫째, 비지니스와 IT조직간의 목표차이이다. 비지니스 조직과 IT 조직은 발주-납품체계로 이어져있기 때문에 비지니스 조직의 목표는 시스템 개발이후 투자금이상의 이득을 보는 것이고, IT조직의 목표는 사양대로 시스템을 납품하는 것이다. 목적이 서로다른 두 조직은 자신의 이익만을 주장하게 되고, 이런 상황이 지속되게 되면 최초 요구사항을 가능한 많이, 가능한 상세하게 만들고 서로 합의하여 개발을 시작하기때문에 실제로는 사용하지도 않는 기능을 개발하게된다. 두번째로는 이런 일련의 과정은 오랜 시간이 걸리기 때문에 개발을 마치고 난후 이미 시장상황이 변화되어 버릴수 있기 때문이다.

애자일 개발은 비지니스와 IT의 목표를 공유한다. 1주~1개월 정도의 짧은 기간에 실제로 동작하는 제품을 만들어 릴리즈한 뒤 시장의 반응을 살펴보고, 다음 우선순위를 결정해 이어서 개발할 사항을 결정한 후 실제 개발을 진행한다. 애자일 개발은 사용자와 고객의 피드백을 빠르게 얻기위해 쓸데없는 기능을 만들지 않고, 시장 릴리즈 속도를 높여서 사업의 투자 대바 효과를 높이는 개발기법이다.


스크럼

프로젝트관리를 위한 상호,점진적 개발방법론이며, 애자일 소프트웨어 공학 중의 하나이다. 경험기반 프로세스로 미래를 예견하는 것이 아니라, 반복적인 실제 측정에 기반하여 지식을 획득해 나간다.


스크럼



 분류

명칭 

설명 

 역할

 제품소유자

 무엇을 개발할지 결정하는 사람

 개발팀 

 실제 개발 작업과 연관된 사람

 스크럼 마스터

 전체를 지원하고 관리하는 사람

 산출물 의미있는 제품 기능의 증가분 스프린트 내 완성된 기능으로 출하 가능한 소프트웨어

 제품 백로그

 우선순위가 정의된 제품 기능 목록

 스프린트 백로그

 스프린트 내 개발해야 할 기능 목록
 이벤트 스프린트

 개발 반복단위

 스프린트 계획 스프린트 내 개발 목록을 결정하는 미팅
 일일 스크럼 매일 아침에 진행하는 미팅

 스프린트 리뷰

 의미있는 제품의 기능의 증가분에 대한 스프린트 종료 시점에 수해하는 리뷰

 회고

 스프린트 마지막에 수행하는 개선활동 


참고도서

애자일 개발과 스크럼, 노나카 이쿠지로, 히라나베 겐지 지음