애자일(AGILE) 방법론 개론 이라고 할까?

2013. 7. 24. 10:35OS/개발환경구축

1.     애자일 방법론 ( AGILE, 날렵한, 민첩함, (생각이) 재빠른, 기민함)

 


A.     애자일 선언문


우리는 소프트웨어를 개발하면서, 그리고 또한 다른 사람들의 개발을 도와주면서 소프트웨어를 개발하는 더 나은 방법들을 찾아나가고 있다. 이 작업을 통해 다음과 같은 가치를 추구하게 되었다.


프로세스나 도구 보다는 개인과 상호 작용을,
포괄적인 문서보다는 작동하는 소프트웨어를,
계약에 대한 협상보다는 고객과의 협력을,
계획을 고수하기 보다는 변화에 대응을


더욱 가치있게 여긴다. 이말은 전자도 가치가 있긴 하지만, 우리는 후자 쪽에 더 많은 가치를 둔다는 것이다.

 


B.      애자일 선언문의 바탕에 깔려있는 원칙들

 


                        i.         우리의 최고 우선 순위는 가치 있는 소프트웨어를 일찍 그리고 지속적으로 전달함으로써
고객을 만족시키는 것이다.

 

                       ii.         비록 개발 후반부일지라도 요구사항 변경을 환영하라.
애자일 프로세스들은 변화를 활용해 고객의 경쟁력에 도움이 되게 한다.

 

                      iii.         작동하는 소프트웨어를 자주 전달하라.
 약 2주에서 2개월 정도의 간격으로 전달하되, 간격이 짧을수록 좋다.

 

                      iv.         비즈니스 영역 사람들과 개발자들은 프로젝트 전체에 걸쳐 매일 함께 일해야 한다.

 

                       v.         동기가 갖추어져 있는 개인들로 프로젝트를 구성하라.
 그들에게 그들이 필요로 하는 환경과 지원을 제공하고 일을 끝낼 수 있도록 신뢰하라.

 

                      vi.         어떤 다른 개발팀을 상대로 혹은 개발팀 내에서 서로간의 정보를 전달하는
가장 효율적인 방법을 얼굴을 보고 하는 대화이다.

 

                     vii.         작동하는 소프트웨어가 진척 측정의 주된 척도이다.

 

                    viii.         애자일 프로세스들은 지속 가능한 개발을 장려한다.
스폰서, 개발자, 사용자들은 일정한 속도를 유지할 수 있어야 한다.

 

                      ix.         기술적 탁월함과 좋은 설계에 대한 지속적 관심이 기민함을 향상시킨다.

 

                       x.         간결함(하지 않아도 되는 일의 양을 최대화하는 기술)은 필수적이다.

 

                      xi.         최상의 Architecture, 요구사항, 그리고 설계는 자기 조직화되어 있는 팀에서 나온다.

 

                     xii.         정기적으로 팀 차원에서 어떻게 하면 더 효과적일 수 있을지에 대해 되돌아 보며
 자신들의 행동을 이에 따라 조율하도록 조정한다.

 

C.      애자일 역사

                        i.         출처: 소프트웨어공학센터  애자일초심자를 위한 '애자일 SW개발 101'

 

 

 

 

 

 

 

 

 


D.     애자일 방법론의 종류

 

                        i.         Scrum

 

                       ii.         Adaptive software development , ASD (적응형 소프트웨어 개발 방법론)

 

                      iii.         Feature Driven Development , FDD (기능 주도 개발방법론)

 

                      iv.         Dynamic Systems Development Method , DSDM

 

                       v.         Crystal family

 

                      vi.         extreme Programming , XP

 

                     vii.         Lean (린 소프트웨어 개발방법론)

 

                    viii.         Agile Unified Process , AUP (애자일 UP)

 

E.       애자일 방법론의 특징

애자일 소프트웨어 개발은 반복 점진적(iterative and incremental)개발을 기본 스타일로 가진다.
이런 스타일의 개발방식을 효과적으로 진행하기 위해 자기조직화(Self-organizing)나
교차기능팀(cross-functional teams)등의 기법들을 활용하고 있다.

 


F.      폭포수 방법론 과 애자일 방법론간 주요 차이점

 

                        i.         계획 중심 VS  고객 중심

폭포수 방법론은 프로젝트를 시작하기 전에 프로젝트 기간 전체에 대한 일정 계획을 수립하여,
이 계획에 따라 프로젝트를 진행한다.
애자일 방법론은 계획을 수립하되 불확실한 프로젝트 기간 전체를 감안하여 무리하거나 현실성 없는 계획을 수립하는 것이 아니라 현재 시점에 고객에게 중요하거나 확정된 내용을 중심적으로 수립한다.
프로젝트 상황에 따라 프로젝트 계획은 변동될 수 있다는 사실을 인정하고 진행한다.
그래서 계획보다는 고객이 중요하게 생각하는 기능을 먼저 개발하는 것을 원칙으로 한다.

 


                       ii.         빅뱅 릴리즈 vs 작은 릴리즈

폭포수 방법론은 프로젝트가 종료되는 시점에 한꺼번에 모든 기능을 릴리즈한다.
애자일 방법론은 iteration 이라는 일정 기간 단위로 작은 규모 크기의 릴리즈를 반복한다.
이렇게 하면 고객은 요구사항이 제대로 방영되고 있는지 조기에 확인 할 수 있어서 프로젝트 종료 시 요구사항에 맞지 않아 재개발하는 경우를 방지할 수 있다.

 


                      iii.         산출물 중심 vs 동작하는 소프트웨어 중심
폭포수 방법론에서는 계획된 단계별로 지정된 산출물이 작성되었는지 여부를 확인함으로써 프로젝트가 제대로 진행되고 있는지 확인한다.
애자일 방법론은 소프트웨어가 제대로 동작하는지, 얼마나 요구사항에 맞게 개발되었는지가 중요하다.
 하지만 애자일을 적용해서 개발을 진행한다는 것은 문서를 만들지 않는 것이 아니라
상황에 맞는 다양한 산출물을 만들 수 있다는 좀 더 유연한 의미로 받아들여야 한다.

 


G.     애자일 방법론을 도입하려는 이유


많은 기업들이 다음과 같은 이유로 애자일 방법론을 도입하려고 한다.

 


                        i.         팀의 생산성을 높이고 제품을 적기에 출시하기 위해

                       ii.         개발에 들어가는 비용을 줄이기 위해

                      iii.         소프트웨어 품질을 향상 시키기 위해

                      iv.         팀의 사기와 업무 만족도 향상을 위해