적응형 소프트웨어 개발
IT 위키
더 많은 작업
- Adaptive Software Development; ASD, 적응적 소프트웨어 개발
- 계획을 고정하지 않고 추측(Speculate) – 협력(Collaborate) – 학습(Learn) 주기를 반복하며 변화에 적응해 가는 애자일 방법론
적응형 소프트웨어 개발은 짐 하이스미스(Jim Highsmith)가 1990년대에 RAD(Rapid Application Development) 경험을 바탕으로 정리하고 2000년 같은 이름의 책으로 펴낸 방법론이다. 하이스미스는 2001년 애자일 소프트웨어 개발 선언에 참여한 17명 가운데 한 사람이며, ASD 는 익스트림 프로그래밍, SCRUM, DSDM, FDD, 크리스털과 함께 애자일 방법론의 하나로 분류된다.
ASD 의 출발점은 복잡한 소프트웨어 개발에서는 결과를 처음부터 정확히 예측할 수 없다는 인식이다. 그래서 전통적인 '계획(Plan) – 설계(Design) – 구축(Build)' 의 선형 흐름 대신, 계획을 추측으로 낮춰 부르고 짧은 주기마다 결과에서 배우며 방향을 고친다. 상세한 사전 계획과 문서를 지키는 것이 아니라 변화에 적응하는 것을 목표로 삼는다.
| 단계 | 하는 일 |
|---|---|
| 추측(Speculate) | 프로젝트 사명과 제약, 기본 요구를 정하고 주기(cycle)별로 개발할 기능을 대략 배정한다. 계획은 언제든 틀릴 수 있다는 전제로 세운다 |
| 협력(Collaborate) | 개발자·고객·관리자가 함께 일하며 기능을 만든다. 서로 다른 지식을 모으는 팀워크와 의사소통을 중시한다 |
| 학습(Learn) | 고객 포커스 그룹 검토, 기술 검토(리뷰), 회고로 결과물과 과정의 품질을 확인하고 다음 주기의 추측에 반영한다 |
- 사명 중심(mission-focused): 세부 작업 목록이 아니라 프로젝트의 목적을 기준으로 판단한다
- 기능 중심(feature-based): 작업이 아니라 고객에게 보이는 기능 단위로 주기를 계획한다
- 반복적(iterative)이고 시간 상자(time-boxed) 단위로 진행한다
- 위험 주도(risk-driven): 위험이 큰 기능을 앞 주기에 배치한다
- 변화 수용(change-tolerant): 요구 변경을 실패가 아니라 학습의 결과로 받아들인다
| 구분 | 적응형 소프트웨어 개발(애자일) | 계획 주도 방법론(예: 폭포수 모델) |
|---|---|---|
| 계획 | 추측. 주기마다 다시 세움 | 사전에 상세히 확정 |
| 문서 | 필요한 만큼만 | 단계별 산출물 문서를 철저히 작성 |
| 변경 | 학습 결과로 수용 | 통제 대상(변경 관리 절차) |
| 성공 기준 | 고객에게 가치 있는 동작하는 소프트웨어 | 계획·명세 준수 |
"철저한 계획 및 문서화" 는 애자일 선언이 "포괄적 문서보다 동작하는 소프트웨어를, 계획을 따르기보다 변화에 대응하기를" 이라고 말할 때 뒤쪽에 둔 가치이므로 애자일 방법론의 특징이 아니다.