프로젝트 관리 방식에 대해 공부할려고 한다.
Agile과 Waterfall를 다뤄볼거며 Waterfall에 대해 알아볼려고 한다.
워터폴(폭포수, Waterfall)이란?
워터폴(Waterfall) 방식은 소프트웨어 개발 방식 중 하나로, 프로젝트를 선형적이고 순차적으로 진행하는 방법론으로 폭포수라고도 불린다.
이 방식은 각 단계가 이전 단계의 완료를 전제로 하며, 요구사항 정의(설계), 디자인, 개발, 테스트, 배포의 과정이 순서대로 진행되어 이전 단계가 완료되지 않으면 다음 단계로 진행할 수 없다.
워터폴 방식은 주로 요구사항이 명확하고 고정적이며 변경 가능성이 적은 프로젝트에 적합하다. 일반적으로 자동차, 선박, 건축 등의 산업에서 워터폴 방식을 사용하는 경우가 많다.

워터폴 프로세스
1. 요구사항 정의(설계)
- 고객의 문제를 정의하고 요구사항을 문서화하여 정리하는 단계다.
- 프로젝트의 목적, 범위, 기능, 비기능 요구사항등
- 어떤 작업이 필요한지, 필요한 리소스는 무엇인지, 우선순위는 무엇인지 등을 계획하는 단계다.
- 요구사항이 명확해야 프로젝트를 시작하고 무사히 완성될 수 있기 때문에 요구사항을 분석하고 문서를 정리하는 데 많은 시간과 노력이 소요된다.
- 웹사이트를 개발하는 경우(예시)
- 웹 사이트의 목표, 대상 사용자, 주요 기능, 디자인 스타일, 보안 요구사항 등을 명확히 정의한다.
2. 디자인
- 요구사항에 따라 프로젝트의 구조, 아키텍처, 인터페이스, 데이터베이스 등을 설계한다.
- 웹사이트를 개발하는 경우(예시)
- 웹사이트의 레이아웃, 색상, 폰트, 메뉴, 버튼 등을 디자인
- 백엔드 시스템의 구성, 프레임워크 선택, API 정의 등을 수행한다.
- 이를 통해 전체 시스템의 구조와 구현 방향을 결정한다.
3. 개발
- 디자인에 따라 실제로 프로젝트를 구현하는 단계다.
- 웹사이트를 개발하는 경우(예시)
- HTML, CSS, JavaScript 등을 사용하여 프론트엔드를 코딩하고
- 백엔드 시스템의 구성, 프레임 워크 선택, API 정의 등을 수행한다.
- 전체 시스템의 구조와 구현 방향을 결정한다.
4. 테스트
- 개발된 프로젝트를 검증하고 오류나 결함을 수정하는 단계다.
- 웹 사이트를 개발하는 경우(예시)
- 웹 사이트의 기능이 정상적으로 작동하는지, 사용자 경험이 만족스러운지, 보안 문제가 없는지 등을 테스트한다.
- 개발된 시스템이 요구사항을 충족하고 오류가 최소화된 상태인지 확인한다.
5. 배포
- 테스트를 통과한 프로젝트를 클라이언트에게 전달하고 실제 환경에서 작동하도록 준비하는 단계다.
- 웹 사이트를 개발하는 경우(예시)
- 웹 서버에 웹 사이트를 업로드하고 도메인 이름을 설정하여 공개적으로 접근할 수 있도록 한다.
- 개발된 시스템이 실제 사용자들에게 제공되며 운영될 수 있다.
6. 유지보수
- 배포된 프로젝트를 지속적으로 관리하고 업데이트하며 클라이언트의 피드백을 반영하는 단계다.
- 웹 사이트를 개발하는 경우(예시)
- 웹 사이트의 성능을 모니터링하고 버그를 수정하고 새로운 기능을 추가하며 보안 패치를 적용한다.
- 프로젝트의 지속적인 개선과 클라이언트의 요구에 대한 대응을 수행한다.
장점
-
명확한 구조와 계획성
- 각 개발 단계를 명확히 정의하고 순차적으로 진행하기 때문에 프로젝트 관리와 계획 수립이 용이하다.
- 프로젝트의 각 단계마다 명확한 산출물이 있어 진행 상황을 쉽게 추적할 수 있다.
-
정확한 요구사항 정의
- 초기 단계에서 요구사항이 명확히 정의되기 때문에 프로젝트 전반에 걸쳐 변동 사항이 적고, 개발팀이 명확한 목표를 가지고 작업할 수 있다.
-
문서화 강조
- 각 단계의 결과물이 잘 문서화되므로 향후 유지보수나 신규 개발자 교육에 유용하다.
-
쉬운 진행 관리
- 단계별로 명확한 목표와 결과물이 있어 관리자가 프로젝트를 모니터링하고 관리하기 상대적으로 쉽다.
단점
-
변경에 대한 유연성 부족
- 워터폴 방식은 각 단계가 완료된 후 다음 단계로 넘어가는 방식이기 때문에 요구사항 변경에 대한 유연성이 떨어진다.
- 초기 계획에서 벗어난 변경 사항이 발생하면, 전체 프로젝트 일정과 예산에 큰 영향을 미칠 수 있다.
-
고객 피드백 부족
- 대부분의 고객 피드백은 프로젝트가 완료된 후에야 반영되므로, 개발 과정 중간에 고객 요구사항이 잘못 반영되었을 경우 수정이 어렵다.
-
초기 요구사항 정의의 중요성
- 초기 단계에서 모든 요구사항을 정확하게 정의해야 하기 때문에, 프로젝트 초기에 불완전하거나 모호한 요구사항 정의가 이루어질 경우 큰 문제가 발생할 수 있다.
-
장기간의 개발 주기
- 개발 과정이 길고 각 단계가 순차적으로 이루어지기 때문에, 실제 제품이 시장에 출시되기까지 오랜 시간이 걸릴 수 있다.
-
테스트와 피드백 지연
- 테스트 단계가 개발 후반부에 있기 때문에, 초기 단계에서 발생한 오류나 문제를 발견하고 수정하는 데 시간이 걸릴 수 있다.
📌워터폴 방식은 명확한 요구사항이 있고, 변경 가능성이 낮으며, 프로젝트 규모가 크고 복잡한 경우 에 유용할 수 있다. 그러나 변화가 빈번하거나 요구사항이 명확하지 않은 프로젝트에는 적합하지 않을 수 있다.
Reference
소프트웨어 개발 방법론 - 워터폴 vs 애자일 워터폴이란? 소프트웨어 개발 방법론 : 폭포수, 애자일, 린 방법론