애자일 개발(Agile Development)란?

몇 주 정도의 짧은 기간의 반복을 되풀이하며, 그때마다 동작하는 소프트웨어를 만들어 사용자의 의견을 반영하고, 변화하는 요구에 맞춰 계획을 재검토해 가는 개발 방식의 총칭. 대표적인 기법으로 스크럼이나 익스트림 프로그래밍(XP)이 있다.

일본어 명칭: アジャイル開発

애자일 개발(Agile Development)은(는) 소프트웨어 개발과 프로젝트 관리 등 1개 분야의 연습 문제 2개에 나와요.

분야: 소프트웨어 개발과 프로젝트 관리

애자일 소프트웨어 개발 선언

애자일 개발의 사고방식은 2001년에 발표된 애자일 소프트웨어 개발 선언에 정리되어 있습니다. 선언은 프로세스나 도구보다 개인과 상호 작용을, 포괄적인 문서보다 동작하는 소프트웨어를, 계약 협상보다 고객과의 협력을, 계획을 따르기보다 변화에 대응하기를 가치 있게 여긴다고 말합니다. 오른쪽 항목에도 가치가 있음을 인정하면서 왼쪽 항목을 더 중시한다는 표현으로, 문서나 계획이 필요 없다는 뜻은 아닙니다.

폭포수 모델과의 차이

폭포수 모델에서는 처음에 요구사항을 확정하고 전체를 한 번의 흐름으로 만들므로, 사용자가 동작하는 것을 볼 수 있는 것은 개발이 끝날 무렵이 됩니다. 애자일 개발에서는 우선순위가 높은 기능부터 조금씩 만들어 짧은 간격으로 동작하는 것을 보여 주므로, 요구의 오해나 변화를 일찍 알아챌 수 있습니다. 그 대신 최종적인 범위나 비용을 처음에 굳히기 어려워, 계약의 형태나 사용자가 개발에 계속 관여하는 체제가 필요해집니다. 어느 쪽이 좋은지는 요구의 확실성이나 변경에 드는 비용에 따라 정해집니다.

하드웨어에 가까운 개발에서의 활용

칩이나 기판은 다시 만드는 데 큰 비용과 시간이 들므로, 하드웨어 자체의 개발에서는 사양을 일찍 굳히는 계획형 진행 방식이 중심입니다. 한편 펌웨어나 드라이버, EDA 스크립트, 검증 환경 등의 소프트웨어에서는 지속적 통합과 자동 테스트를 조합한 애자일 개발이 자주 쓰입니다. 실기가 아직 없는 단계에서는 시뮬레이터나 FPGA 시제품 위에서 소프트웨어를 먼저 동작시키고, 하드웨어 일정과 소프트웨어의 반복을 조합하여 진행합니다.

도전해 보기: 애자일 개발(Agile Development) 관련 문제

익스트림 프로그래밍(XP) 등의 애자일 개발에서 수행되는, 프로그램의 외부에서 본 동작을 바꾸지 않고 내부 구조를 알기 쉽고 변경하기 쉬운 형태로 정리하는 작업은?

  1. A페어 프로그래밍
  2. B리버스 엔지니어링
  3. C리팩터링
정답과 해설 보기

정답: C. 리팩터링

리팩터링은 중복된 코드를 합치고, 긴 함수를 나누고, 이름을 알기 쉽게 하는 등으로 기능을 바꾸지 않고 코드의 구조를 개선하는 작업입니다. 동작이 바뀌지 않았음을 확인하기 위해 자동화된 테스트를 준비하고, 조금씩 변경하면서 테스트를 실행합니다. 페어 프로그래밍은 두 사람이 한 대의 컴퓨터로 함께 프로그램을 작성하는 XP의 실천 방법입니다. 리버스 엔지니어링은 기존 프로그램을 분석하여 사양이나 설계를 밝혀내는 것입니다.

자주 묻는 질문

애자일 개발에서는 설계서를 쓰지 않나요?

쓰지 않는 것은 아닙니다. 애자일 소프트웨어 개발 선언은 포괄적인 문서보다 동작하는 소프트웨어를 중시한다고 하지만, 문서의 가치도 인정하고 있습니다. 유지보수나 안전성 설명에 필요한 문서는 필요한 만큼, 소프트웨어와 함께 갱신하면서 만듭니다.

애자일 개발과 스크럼은 같은 것인가요?

스크럼은 애자일 개발의 대표적인 프레임워크 중 하나입니다. 애자일 개발은 짧은 반복으로 가치를 전달하는 사고방식의 총칭으로, 스크럼 외에 테스트 주도 개발이나 페어 프로그래밍 등의 실천 방법을 가진 익스트림 프로그래밍(XP) 등이 있습니다.

해설 속 애자일 개발(Agile Development)

애자일 개발(Agile Development)이(가) 나오는 문제 (2)

  1. 익스트림 프로그래밍(XP) 등의 애자일 개발에서 수행되는, 프로그램의 외부에서 본 동작을 바꾸지 않고 내부 구조를 알기 쉽고 변경하기 쉬운 형태로 정리하는 작업은?
  2. 소프트웨어 개발의 폭포수 모델의 특징으로 적절한 것은?

관련 용어

폭포수 모델(Waterfall Model) 경계값 분석(Boundary Value Analysis) 동치 분할(Equivalence Partitioning) 분기 커버리지(Branch Coverage) 블랙박스 테스트(Black-box Testing) 스크럼(Scrum) 임계 경로법(CPM) 테스트 주도 개발(TDD) 화이트박스 테스트(White-box Testing) 획득가치관리(EVM)

용어집으로 돌아가기