폭포수 모델(Waterfall Model)이란 소프트웨어 개발 시 단계적으로 개발하는 방법론을 말한다. 분석→설계→개발(디자인→퍼블리싱→프로그래밍)→테스트→적용→안정화의 단계를 따른다. 폭포수가 거슬러 올라갈 수 없듯이, 소프트웨어 개발도 반드시 앞 단계가 먼저 완료되어야 다음 단계의 개발을 진행할 수 있다는 뜻이다. 소프트웨어 개발 방법론(SDM)의 일종이다. 반대말은 애자일 개발 방법론이다.
요구사항을 기반으로 명확하고 조직화된 구조로 설계
설계 단계: 아키텍쳐 설계 ➡️ 인터페이스 설계 ➡️ 프로그램 설계
설계 방법
전통적(구조적) 설계 방법
객체지향 설계 방법
설계 결과를 프로그램으로 작성
구현된 모듈이 명세서를 만족하는지 테스트하여 확인
고려 사항
코딩 표준 준수(코딩 컨벤션)
테스트 절차 준수
코드 인스펙션: 코드의 정적 분석
모듈 ➡️ 서브 시스템 ➡️ 전체 시스템으로 통합
통합 테스트: 모듈들을 통합하여 점증적으로 시스템 구축
시스템 테스트: 최종적으로 통합된 전체 시스템이 요구사항을 만족하는지 확인
알파 테스트
소프트웨어 개발 현장에서 수행
일반 소프트웨어: 테스트 팀이 알파 테스트 수행(내부적 인수 테스트) ➡️ 베타 버전 릴리즈
주문형 소프트웨어: 제품 인수 동의가 이루어질때까지 수행(인수 테스트)
베타 테스트
고객의 실제 사용 환경에서 수행
제품 출시 전 릴리즈된 베타 버전으로 가망 사용자로부터 미리 제품 평가
인도: 실제 사용을 위해 고객에게 소프트웨어 배포
유지보수(≒진화): 소프트웨어 수정 및 보완 활동
유지보수의 종류
수정 유지보수(corrective maintenance): 오류 수정
적응 유지보수(adaptive maintenance): 환경 변화(하드웨어, OS 등) 대응
완전 유지보수(perfective maintenance): 기능 개선, 성능 향상
예방 유지보수(preventive maintenance): 미래 유지보수성을 향상시키기 위한 활동
단순한 선형 모델 - 이해 쉬움
단계별로 정형화된 접근 방법 - 체계적 문서화 가능
프로젝트 진행 상황 명확히 파악 가능
요구사항을 완벽하게 작성해야 함
변경 수용 어려움
시스템의 동작을 후반에 확인 가능
대형 프로젝트에 적용 부적합
지나친 문서화
위험 분석 결여
일정 지연 가능성 큼