폭포수 모델과 애자일의 차이: 진행 방식·계획·변경 대응·테스트·적합한 개발 비교

폭포수 모델은 요구사항 정의, 설계, 프로그래밍, 테스트의 공정을 상류에서부터 차례로 진행하며, 원칙적으로 앞 공정의 산출물을 확정한 뒤 다음 공정으로 넘어가는 개발 모델입니다. 처음에 전체 계획을 세우므로 진척과 비용을 관리하기 쉬운 반면, 나중 공정에서 요구사항의 오류가 발견되면 재작업이 커집니다. 애자일 개발은 몇 주 정도의 짧은 반복을 되풀이하며, 그때마다 동작하는 소프트웨어를 만들어 사용자의 의견을 반영하고, 변하는 요구에 맞춰 계획을 재검토해 나가는 진행 방식의 총칭으로, 대표적인 기법으로 스크럼과 익스트림 프로그래밍(XP)이 있습니다. 요구가 명확하고 잘 바뀌지 않으면 폭포수, 요구가 바뀌기 쉽고 쓸 수 있는 기능을 빨리 전달하고 싶으면 애자일이 적합합니다.

비교 항목폭포수 모델애자일 개발
공정의 진행 방식요구사항 정의 → 설계 → 프로그래밍 → 테스트의 공정을 상류에서부터 차례로 한 번씩 진행한다계획·설계·구현·테스트를 포함한 짧은 반복(스크럼에서는 스프린트)을 여러 번 되풀이한다
계획 수립 방식처음에 전체 범위, 일정, 비용을 정하고 그 계획에 따라 진행한다대략적인 방향을 정하고, 반복마다 우선순위가 높은 것부터 계획을 재검토한다
요구 변경에 대한 대응앞 공정의 산출물을 확정한 뒤의 변경은 재작업이 크다. 변경 관리 절차를 거쳐 한다변경을 전제로 하고 있어 다음 반복의 계획에 반영하기 쉽다
동작하는 소프트웨어가 나오는 시기주로 개발 막바지. 테스트를 마친 뒤 한꺼번에 인도한다반복마다 동작하는 소프트웨어(스크럼에서는 인크리먼트)가 나온다
테스트 시기프로그래밍 뒤에 단위 테스트·통합 테스트·시스템 테스트·인수 테스트를 차례로 한다(V 모델로 설계 공정과 대응시킨다)반복마다 한다. 자동화한 테스트와 지속적 통합으로 변경할 때마다 확인하는 경우가 많다
문서공정마다 요구사항 정의서와 설계서 등을 만들고 리뷰로 확정한다동작하는 소프트웨어를 중시하며, 문서는 필요한 만큼으로 줄이는 경우가 많다
사용자(발주자)의 참여 방식주로 처음의 요구사항 정의와 마지막의 인수 테스트반복마다 산출물을 보고 의견을 전한다. 스크럼에서는 제품 책임자가 만들 것의 우선순위를 정한다
진척 관리공정의 완료와 산출물로 측정한다. WBS와 간트 차트로 관리하기 쉽다반복마다 완성되어 동작하는 기능으로 측정한다
적합한 개발요구사항이 명확하고 잘 바뀌지 않는 개발, 하드웨어와 함께 사양을 일찍 확정하는 개발, 계약으로 범위와 비용을 먼저 정해야 하는 개발요구가 바뀌기 쉬운 개발이나, 만들면서 사용자의 반응을 확인하고 싶은 새로운 서비스의 개발

수치는 대략적인 자릿수 기준이며, 공정 세대와 제품에 따라 달라져요.

상황별 선택 기준

폭포수 모델
요구사항이 처음부터 분명하고 잘 바뀌지 않을 때, 많은 조직이 관여하고 공정마다 승인과 문서가 요구될 때, 임베디드 기기처럼 하드웨어 사양에 맞춰 일찍 확정해야 할 때 적합합니다.
애자일 개발
무엇을 만들어야 사용자에게 도움이 될지 처음에는 알 수 없을 때, 시장이나 요구의 변화에 맞춰 우선순위를 바꾸고 싶을 때, 조금씩이라도 쓸 수 있는 기능을 빨리 전달하고 싶을 때 적합합니다. 사용자나 발주자가 개발에 계속 참여하는 것이 전제가 됩니다.

자주 묻는 질문

애자일 개발에서는 계획이나 설계서를 만들지 않나요?

만듭니다. 애자일 개발은 계획을 하지 않는 것이 아니라, 처음에 세부까지 다 정하지 않고 반복마다 계획을 재검토하는 진행 방식입니다. 스크럼에서도 스프린트 초에 스프린트 플래닝에서 그 스프린트에서 무엇을 만들지 계획합니다. 문서도 필요한 것은 만듭니다.

애자일 소프트웨어 개발 선언이란 무엇인가요?

2001년에 소프트웨어 개발자 그룹이 정리한, 애자일 개발의 사고방식을 나타낸 선언입니다. 공정과 도구보다 개인과 상호작용을, 포괄적인 문서보다 동작하는 소프트웨어를, 계약 협상보다 고객과의 협력을, 계획을 따르기보다 변화에 대응하기를 가치 있게 여긴다는 4가지 가치를 내걸고 있습니다. 오른쪽 항목에도 가치가 있음을 인정하면서 왼쪽 항목을 더 중시한다는 표현으로 되어 있습니다.

스크럼과 애자일 개발은 어떻게 다른가요?

애자일 개발은 짧은 반복으로 변화에 대응하며 개발하는 사고방식과 진행 방식의 총칭입니다. 스크럼은 이를 실천하기 위한 대표적인 프레임워크 중 하나로, 제품 책임자, 스크럼 마스터, 개발자의 3가지 역할과, 1개월 이내의 정해진 길이의 스프린트 안에서 하는 이벤트를 정하고 있습니다.

폭포수와 애자일을 조합하는 경우도 있나요?

있습니다. 예를 들어 전체 요구사항과 큰 설계는 처음에 정하고, 그 뒤의 구현과 테스트는 짧은 반복으로 진행하는 식의 조합입니다. 또한 폭포수 모델 안에서도 시제품으로 요구를 확인하는 프로토타이핑이나, 공정을 여러 번 되풀이하는 스파이럴 모델 등 재작업을 줄이는 방법이 쓰여 왔습니다.

이해도 확인

소프트웨어 개발의 폭포수 모델의 특징으로 적절한 것은?

  1. A요구사항 정의·설계·구현·테스트 등의 공정을 상류부터 차례로 진행하며, 원칙적으로 앞 공정의 산출물이 확정된 뒤에 다음 공정으로 나아간다
  2. B짧은 기간의 반복을 되풀이하며, 그때마다 동작하는 소프트웨어를 만들어 사용자의 의견을 반영한다
  3. C처음에 시제품(프로토타입)을 만들어 사용자에게 보여 주고, 요구를 확인한 뒤에 본격적으로 개발한다
정답과 해설 보기

정답: A. 요구사항 정의·설계·구현·테스트 등의 공정을 상류부터 차례로 진행하며, 원칙적으로 앞 공정의 산출물이 확정된 뒤에 다음 공정으로 나아간다

폭포수 모델은 물이 위에서 아래로 흐르듯이 요구사항 정의, 설계, 프로그래밍, 테스트의 순서로 공정을 진행하는 개발 모델입니다. 공정마다 산출물을 리뷰로 확정하므로 계획을 세우기 쉽고 진척도 관리하기 쉬운 반면, 뒤 공정에서 요구사항의 오류가 발견되면 재작업이 커집니다. 요구사항이 명확하고 잘 바뀌지 않는 개발이나, 하드웨어와 함께 사양을 일찍 굳혀야 하는 개발에 쓰입니다. 반복하며 사용자의 의견을 반영하는 것은 애자일 개발 등의 반복형, 시제품으로 요구를 확인하는 것은 프로토타이핑 모델의 특징입니다.

소프트웨어 개발의 V 모델에서 요구사항 정의 공정에 대응하며, 그 공정에서 정한 내용을 만족하는지 확인하는 테스트는?

  1. A단위 테스트
  2. B통합 테스트
  3. C인수 테스트
정답과 해설 보기

정답: C. 인수 테스트

V 모델은 왼쪽에 요구사항 정의에서 설계·구현으로 내려가는 공정을, 오른쪽에 테스트를 올라가는 공정을 늘어놓고, 좌우의 대응하는 공정끼리를 연결한 개발 모델입니다. 요구사항 정의에는 인수 테스트(운영 테스트)가 대응하고, 설계 공정이 세밀해짐에 따라 시스템 테스트(종합 테스트), 통합 테스트, 단위 테스트가 대응합니다. 중간 공정의 대응은 조직이나 문헌에 따라 조금 다르며, 요구사항 정의에 시스템 테스트도 대응시키는 경우가 있지만, 발주자·사용자의 입장에서 요구사항을 확인하는 인수 테스트가 요구사항 정의에 대응한다는 점은 공통입니다. 테스트의 계획이나 합격 기준을 대응하는 설계 공정 시점에 만들어 두는 것이 이 모델의 요점입니다.

스크럼에서 제품 백로그 항목의 내용과 순서(우선순위)에 책임을 지고, 제품의 가치를 최대화하는 역할은?

  1. A스크럼 마스터
  2. B제품 책임자(프로덕트 오너)
  3. C개발자
정답과 해설 보기

정답: B. 제품 책임자(프로덕트 오너)

스크럼 팀은 제품 책임자, 스크럼 마스터, 개발자의 세 가지 역할로 이루어집니다. 제품 책임자는 만들어야 할 것의 목록인 제품 백로그를 관리하고, 어느 항목을 먼저 만들지 정하여 제품의 가치를 최대화하는 데 책임을 집니다. 스크럼 마스터는 스크럼의 사고방식을 팀과 조직에 퍼뜨리고, 진행상의 장애를 제거하는 지원 역할입니다. 개발자는 각 스프린트에서 동작하는 인크리먼트(산출물)를 만드는 사람들입니다.

  1. 스크럼에서 스프린트가 끝날 때 완성된 인크리먼트(동작하는 산출물)를 이해관계자에게 보여 주고 피드백을 받아, 앞으로의 방침이나 제품 백로그를 재검토하는 이벤트는?
  2. 익스트림 프로그래밍(XP) 등의 애자일 개발에서 수행되는, 프로그램의 외부에서 본 동작을 바꾸지 않고 내부 구조를 알기 쉽고 변경하기 쉬운 형태로 정리하는 작업은?
  3. 지속적 통합(CI)의 설명으로 적절한 것은?

소프트웨어 개발과 프로젝트 관리 문제 풀기

주요 용어 설명

폭포수 모델(Waterfall Model)
요구사항 정의, 설계, 프로그래밍, 테스트 등의 공정을 상류부터 차례로 진행하며, 원칙적으로 앞 공정의 산출물을 확정한 뒤에 다음 공정으로 나아가는 소프트웨어 개발 모델. 계획과 진척을 관리하기 쉬운 반면, 뒤 공정에서 요구사항의 오류가 발견되면 재작업이 커진다.
애자일 개발(Agile Development)
몇 주 정도의 짧은 기간의 반복을 되풀이하며, 그때마다 동작하는 소프트웨어를 만들어 사용자의 의견을 반영하고, 변화하는 요구에 맞춰 계획을 재검토해 가는 개발 방식의 총칭. 대표적인 기법으로 스크럼이나 익스트림 프로그래밍(XP)이 있다.
스크럼(Scrum)
애자일 개발의 대표적인 프레임워크. 제품 책임자, 스크럼 마스터, 개발자의 세 가지 역할과, 1개월 이내의 정해진 길이의 스프린트 안에서 수행하는 스프린트 계획, 일일 스크럼, 스프린트 리뷰, 스프린트 회고의 이벤트로, 동작하는 산출물을 조금씩 만들어 간다.
V 모델(V-Model)
요구사항 정의에서 설계·구현으로 내려가는 공정과, 단위 테스트에서 인수 테스트로 올라가는 테스트 공정을 V자 모양으로 늘어놓고, 요구사항 정의와 인수 테스트, 설계와 통합 테스트·시스템 테스트, 모듈 설계와 단위 테스트처럼 좌우의 공정을 대응시킨 개발 모델. 어느 설계 공정을 어느 테스트에 대응시킬지는 조직이나 문헌에 따라 조금 다르다.
테스트 주도 개발(TDD)
앞으로 만들 기능의 테스트를 먼저 작성하고, 그 테스트를 통과시키는 최소한의 코드를 작성하고, 테스트가 통과하는 상태를 유지한 채 리팩터링한다는 짧은 반복으로 개발을 진행하는 방법. 익스트림 프로그래밍(XP)의 실천 방법으로 퍼졌다.
CI/CD(지속적 통합·지속적 전달)
개발자의 변경을 자주 공유 브랜치에 통합하고 그때마다 빌드와 자동 테스트를 수행하는 지속적 통합(CI)과, 테스트한 변경을 언제든 운영 환경에 공개할 수 있는 상태로 유지하는 지속적 전달(CD)을 합친 명칭. 공개까지 자동으로 수행하는 경우는 지속적 배포라고 부른다.
WBS(작업 분할 구조)
프로젝트에서 만드는 산출물과 그것을 위한 작업을 상위에서 하위로 트리 형태로 분해한 것(Work Breakdown Structure). 가장 아래 요소를 작업 패키지라고 부르며, 추정, 일정, 담당 할당, 진척 관리의 단위로 삼는다.

관련 비교