애자일(Agile) 개발 프로세스
애자일(Agile)은 '민첩한', '생각이 재빠른, 기민한' 이라는 사전적인 의미를 갖고 있다. 애자일 개발(Agile development) 역시 이와 크게 다르지 않다. 애자일 개발은 변화에 신속하고 유연하게 대응하는 개발 방법론을 가리키는 말이다.
애자일 개발 프로세스와 전통적인 개발 프로세스와의 차이
전통적인 개발 프로세스들은 폭포수 모델과 계획 기반 개발을 따르는 반면, 애자일 개발 프로세스는 그에 반한다는 점에서 가장 큰 차이를 가진다.
항목 |
에자일 개발 방법 |
전통적인 개발 방법 |
계획수립의 상세수준 |
바로 다음 반복주기에 대해서만 상세한 계획 수립 |
다음에 이어지는 단계에 이르기까지의 산세한 계획수립 |
요구사항의 베이스라인 |
요구사항에 대한 베이스라인 설정을 강조하지 않음 |
요구사항 정의 단계에서 모든 요구사항을 Finalize할 것을 강조 |
아키텍처의 정의 방법 |
실제 개발된 기능 구현을 통하여 빠른 시간 내에 아키텍처의 실현 가능성을 증명해 보이고자 함 |
모델과 사양을 보다 상세화하는 과정을 통해 어플리케이션과 데이터 아키텍처를 초기에 정의하고자 함 |
테스트 방법 |
잦은 "개발-테스트"죽;를 통하여 많은 시간과 비용이 들어가기 전에 기능을 검증함 |
특정기능이 구현되고 나서야 단위-통합-시스템으로 확장해 나가는 방식을 취함 |
표준 프로세스의 적용 |
정의되고 반복적으로 수행되는 프로세스를 강조하지 않는 대신에 잦은 Inspection을 토대로 프로세스를 개발해 유연하게 적용하는 것을 강조 |
개발에 들어가기 전에 표준화된 프로세스를 제정하는 것을 중시 |
폭포수 모델과 계획 기반 개발 기법들은, 일련의 차례와 탄탄한 계획을 기반으로 하여 개발을 진행시킨다. 이것은, 이해하기도 쉽고 사용하기도 쉬운 바람직한 기법이기도 하지만, 이로 인해서 많은 부작용이 생길 수 있다. 가장 큰 부작용이 발생할 때는, 계획대로 진행되지 않을 경우이다. 이럴 경우에는 다음과 같은 부작용이 발생하게 된다.
‧ 납기일 전 철야
‧ 철야에도 불구하고 납기일 지연
‧ 지연에 따른 비난과 스트레스가 개발자에게 향하여 에너지 소진
‧ 결국 납품된 솔루션은 고객의 요구를 충족하지 못함
이런 부작용은 근본적인 개발 프로세스 접근법의 차이에서 나타난다. 전통적인 개발 프로세스들은 공업에서 사용하는 정형적 프로세스 제어 모델을 따르고 있다. 정형적 프로세스 제어모델은, 동일한 입력에 대해서 동일한 결과가 기대 될 경우에 적합하다. 하지만, 소프트웨어를 포함한 IT의 개발은 경험적 프로세스 제어 모델로 접근할 필요가 있다. 경험적 프로세스 제어 모델은 항상 불확실성을 수반하고 포용하고 있다. 애자일 개발 프로세스는 경험적 프로세스 제어모델로 개발을 관리한다.
애자일 개발 프로세스 종류
1. 익스트림 프로그래밍(Extreme Programing, XP)
애자일 개발 프로세스의 대표자로 애자일 개발 프로세스의 보급에 큰 역할을 하였다. 이 방법은 고객과 함께 2주 정도의 반복개발을 하고, 테스트와 우선 개발을 특징으로 하는 명시적인 기술과 방법을 가지고 있다.
2. 스크럼
30일마다 동작 가능한 제품을 제공하는 스플린트를 중심으로 하고 있다. 매일 정해진 시간에 정해진 장소에서 짧은시간의 개발을 하는 팀을 위한, 프로젝트 관리 중심의 방법론이다.
3. 크리스털 패밀리
이 방식은 프로젝트의 규모와 영향의 크기에 따라서 여러종류의 방법론을 제공한다. 그중에서 가장 소규모 팀에 적용하는 크리스털 클리어는 익스트림 프로그래밍 만큼 엄격하지도 않고 효율도 높지 않지만, 프로젝트에 적용하기 쉬운 방법론이다.
4. Feature-Driven Development
feature마다 2주정도의 반복 개발을 실시한다. Peter Coad가 제창하는 방법론으로써, UML을 이용한 설계 기법과도 밀접한 관련을 가진다.
5. Adaptive Software Development, ASD
소프트웨어 개발을 혼란 자체로 규정하고, 혼란을 대전제로 그에 적응할 수 있는 소프트웨어 방법을 제시하기 위해 만들어진 방법론이다. 내용적으로는 다른 방법론들과 유사하지만, 합동 애플리케이션 개발(Joint Application Development, 사용자나 고객이 설계에 참가하는 개발 방법론)을 사용하고 있는것이 조금 다르다.
6. 익스트림 모델링
익스트림 모델링은 UML을 이용한 모델링 중심 방법론이다. 다만, 여타 모델링 방법들과는 달리, 언제나 실행할 수 있고 검증할 수 있는 모델을 작성하는 공정을 반복해서, 최종적으로는 모델로부터 자동적으로 제품을 생성하게 한다.
(출처 : 위키백과)
'Develop' 카테고리의 다른 글
개인 업무 일지 (0) | 2018.05.14 |
---|---|
주요 리눅스 명령어 (0) | 2016.12.29 |