Concept
Agile 방법론은 소프트웨어 개발 방법에 있어서 아무런 계획이 없는 개발 방법과 계획이 지나치게 많은 개발 방법들 사이에서 타협점을 찾고자 하는 방법론이다. 계획이 없는 방법론의 경우, 앞으로의 일을 예측하기 힘들고 효율적이지 못하다는 점에서 취약점을 가지고 있으며, 계획에 너무 의존하는 경우는 그 형식적인 절차를 따르는데 필요한 시간과 비용을 무시할 수 없으며, 전체적인 개발의 흐름 자체를 느리게 하는 단점을 가지고 있다.
그렇기 때문에 Agile 방법론에서 택한, 그리고 다른 고전적인 방법론, 예를 들면 폭포수 모델 또는 나선 모형과 구별되는 가장 큰 차이점은 less document-oriented, 즉 문서를 통한 개발 방법이 아니라, code-oriented, 실질적인 코딩을 통한 방법론이라는 점이다.
그러므로 Agile 개발 방법론은 계획을 통해서 주도해 나갔던 과거의 방법론과는 다르게 앞을 예측하며 개발을 하지 않고, 일정한 주기를 가지고 끊임없이 프로토 타입을 만들어내며 그때 그때 필요한 요구를 더하고 수정하여 하나의 커다란 소프트웨어를 개발해 나가는 adaptive style 이라고 할 수 있다.
Agile 개발 프로세스란 어느 특정 개발 방법론을 가리키는 말은 아니고 “Agile(Agile=기민한, 좋은것을 빠르고 낭비없게 만드는 것) 개발을 가능하게 해 주는 다양한 방법론 전체를 일컫는 말이다. 예전에는 Agile 개발 프로세스는 “경량(Lightweight)” 프로세스로 불렸다. 익스트림 프로그래밍 (XP:eXtreme Programming)이 Agile 개발 프로세스의 대표적인 방법이라 볼 수 있다.
Traditional Model
Agile Model
Agile Statements
애자일 연합에서 추구하는 사상은 그들이 선언한 아래와 같은 글에서 잘 나타난다.
우리는 스스로 행하고 다른 이들도 이를 행할 수 있도록 도움을 줌으로써 소프트웨어 개발의 더 나은 방법을 전파한다. 이러한 작업을 통해 우리는 아래와 같은 가치에 도달하게 되었다.
- 절차와 도구를 넘어선 개성과 화합
- 종합적인 문서화를 넘어선 동작하는 소프트웨어
- 계약과 협상을 넘어선 고객과의 협력
- 계획 준수를 넘어서 변화에의 대응
이들의 앞선 가치들을 인정하면서도 뒤에 오는 가치들에 보다 큰 무게를 둔다.
Suitable Agile Projects
- IT and non-IT
- Facility moves
- Company reorganizations
- Changing business processes
- Projects with short production and implementation times
Characteristics of Agile Projects
- 4-12 week sprints
- Face to face
- Co-location
- Sponsor committed to agile
- Requirements change anticipated and accommodated
Other Items Required
- Vision
- Universally understood project lifecycle
- Requirements must be understood
- Shard and managed schedule
- Dedicated team
- Communication is critical
Stages
- Envision
- Speculate
- Explore
- Adapt
- Close
References
[1] James Shore and Shane Warden, The Art of Agile Development, O’Reilly Media, Inc., 2008.