Agile Software Development
애자일 소프트웨어 개발법
* Agile : a.날렵한, 민첩한
- 고객의 요구사항 변화에 Agile(민첩한)하게 대응할 수 있는 소프트웨어 프로세스이다.
- 앞으로 해야할 일들을 조금씩 계획해나간다. (이때, 이 소계획의 단위를 Increment라 부른다.)
(그러므로, 계획한 Increment 이후에는 어떤 작업을 진행할지 모른다.)
- 즉, 완성된 S/W는 일련의 Increment들로 구성된다.
- 애자일은 기존의 Software Process에서 발생되는 Overhead들에 대한 불만으로 고안된 프로세스이다.
(여기서 Overhead는 잦은 Documentation으로 인한 Delivery Time의 증가를 의미한다.)
- 애자일의 궁극적 지향점은 과한 수정 작업 없이 요구사항 변화에 빠르게 대응하여
System Delivery Time을 줄이는 데 있다.
Agile Development Process
- Plan-Driven Development와 달리,
애자일은 Requirements Engineering을 "반복"하지 않고,
요구사항이 변경되었다면 다음 Increment에 적용하여 개발한다.
- 또한 애자일은 Requirement Specification(Requirement Documentation)을 하지 않고
요구사항이 도출되었다면 곧 바로 설계에 들어간다.
Characteristics of Agile Development (애자일 개발법의 특징)
- 애자일 개발방법의 특징은 아래와 같다.
- Incremental Development
- 애자일 개발법에서는 여러 Increment의 Series로 소프트웨어가 구성된다.
- Release를 작은 규모로, 자주 수행한다.
- Iterative한 개발을 수행한다. - Customer Involvement
- Customer가 Full-Time으로 개발진들과 협업한다.
- 이때, Customer는 주로 Requirements Elicitation과 Testing에 관여한다. - Reduction of Process Overheads
- Documentation을 최소화하여 빠른 Delivery를 가능하게 한다.
Applicability of Agile Development (애자일 개발법이 적합한 분야)
- 애자일 개발법이 적합한 분야는 아래와 같다.
- Small-Sized Software Development with Co-Located Teams
- 애자일 개발법은 개발팀 전원이 한 공간에서 개발하는 작은 규모의 소프트웨어를 개발할 때 적합하다. - Customized Software Development
- 애자일 개발법은 User 중심의 Customized Software를 개발하는 경우,
빈번한 Feedback과 Changes에 대응하기 유리하다.
- Customer가 Development Process 전 과정에 참여할 수 있는 경우 애자일 개발법을 적용하기에 적절하다.
- Brand New Software Development
- 기존 소프트웨어를 유지 보수할 때 보다,
완전히 새로운 소프트웨어를 개발할 때 애자일 개발법을 적용하는 것이 더욱 적합하다.
Practical Problems of Agile Development (애자일 개발법의 문제점)
- 미흡한 Software Documentation으로 인해 요구사항을 명확히 파악하기 어렵다.
- 개발팀이 요구사항을 경험적으로 이해하고 있는 상황인데, 개발팀이 바뀌었을 때 대응하기 어렵다.
"Developers Should Abandon Agile" (URL)
- Agile 개발법이 "제대로" 적용되지 않으면, 개발에 방해가 되고 개발자들에게 빨리 해야 된다는 압박감만 높아진다.
- 제대로 적용되지 않은 Agile 개발법은 더 많은 결함을 낳고, 오히려 진척을 더욱 더디게 한다.
Reference: Software Engineering 10th Edition
(Ian Sommerville 저, Pearson, 2016)