프로젝트 관리 방식에 대해 공부할려고 한다.
Agile과 Waterfall를 다뤄볼거며 Waterfall에 대해 알아볼려고 한다.

워터폴(폭포수, Waterfall)이란?

워터폴(Waterfall) 방식은 소프트웨어 개발 방식 중 하나로, 프로젝트를 선형적이고 순차적으로 진행하는 방법론으로 폭포수라고도 불린다.

이 방식은 각 단계가 이전 단계의 완료를 전제로 하며, 요구사항 정의(설계), 디자인, 개발, 테스트, 배포의 과정이 순서대로 진행되어 이전 단계가 완료되지 않으면 다음 단계로 진행할 수 없다.

워터폴 방식은 주로 요구사항이 명확하고 고정적이며 변경 가능성이 적은 프로젝트에 적합하다. 일반적으로 자동차, 선박, 건축 등의 산업에서 워터폴 방식을 사용하는 경우가 많다.

워터폴 프로세스

1. 요구사항 정의(설계)

  • 고객의 문제를 정의하고 요구사항을 문서화하여 정리하는 단계다.
    • 프로젝트의 목적, 범위, 기능, 비기능 요구사항등
  • 어떤 작업이 필요한지, 필요한 리소스는 무엇인지, 우선순위는 무엇인지 등을 계획하는 단계다.
  • 요구사항이 명확해야 프로젝트를 시작하고 무사히 완성될 수 있기 때문에 요구사항을 분석하고 문서를 정리하는 데 많은 시간과 노력이 소요된다.
  • 웹사이트를 개발하는 경우(예시)
    • 웹 사이트의 목표, 대상 사용자, 주요 기능, 디자인 스타일, 보안 요구사항 등을 명확히 정의한다.

2. 디자인

  • 요구사항에 따라 프로젝트의 구조, 아키텍처, 인터페이스, 데이터베이스 등을 설계한다.
  • 웹사이트를 개발하는 경우(예시)
    • 웹사이트의 레이아웃, 색상, 폰트, 메뉴, 버튼 등을 디자인
    • 백엔드 시스템의 구성, 프레임워크 선택, API 정의 등을 수행한다.
  • 이를 통해 전체 시스템의 구조와 구현 방향을 결정한다.

3. 개발

  • 디자인에 따라 실제로 프로젝트를 구현하는 단계다.
  • 웹사이트를 개발하는 경우(예시)
    • HTML, CSS, JavaScript 등을 사용하여 프론트엔드를 코딩하고
    • 백엔드 시스템의 구성, 프레임 워크 선택, API 정의 등을 수행한다.
  • 전체 시스템의 구조와 구현 방향을 결정한다.

4. 테스트

  • 개발된 프로젝트를 검증하고 오류나 결함을 수정하는 단계다.
  • 웹 사이트를 개발하는 경우(예시)
    • 웹 사이트의 기능이 정상적으로 작동하는지, 사용자 경험이 만족스러운지, 보안 문제가 없는지 등을 테스트한다.
  • 개발된 시스템이 요구사항을 충족하고 오류가 최소화된 상태인지 확인한다.

5. 배포

  • 테스트를 통과한 프로젝트를 클라이언트에게 전달하고 실제 환경에서 작동하도록 준비하는 단계다.
  • 웹 사이트를 개발하는 경우(예시)
    • 웹 서버에 웹 사이트를 업로드하고 도메인 이름을 설정하여 공개적으로 접근할 수 있도록 한다.
  • 개발된 시스템이 실제 사용자들에게 제공되며 운영될 수 있다.

6. 유지보수

  • 배포된 프로젝트를 지속적으로 관리하고 업데이트하며 클라이언트의 피드백을 반영하는 단계다.
  • 웹 사이트를 개발하는 경우(예시)
    • 웹 사이트의 성능을 모니터링하고 버그를 수정하고 새로운 기능을 추가하며 보안 패치를 적용한다.
  • 프로젝트의 지속적인 개선과 클라이언트의 요구에 대한 대응을 수행한다.

장점

  1. 명확한 구조와 계획성

    • 각 개발 단계를 명확히 정의하고 순차적으로 진행하기 때문에 프로젝트 관리와 계획 수립이 용이하다.
    • 프로젝트의 각 단계마다 명확한 산출물이 있어 진행 상황을 쉽게 추적할 수 있다.
  2. 정확한 요구사항 정의

    • 초기 단계에서 요구사항이 명확히 정의되기 때문에 프로젝트 전반에 걸쳐 변동 사항이 적고, 개발팀이 명확한 목표를 가지고 작업할 수 있다.
  3. 문서화 강조

    • 각 단계의 결과물이 잘 문서화되므로 향후 유지보수나 신규 개발자 교육에 유용하다.
  4. 쉬운 진행 관리

    • 단계별로 명확한 목표와 결과물이 있어 관리자가 프로젝트를 모니터링하고 관리하기 상대적으로 쉽다.

단점

  1. 변경에 대한 유연성 부족

    • 워터폴 방식은 각 단계가 완료된 후 다음 단계로 넘어가는 방식이기 때문에 요구사항 변경에 대한 유연성이 떨어진다.
    • 초기 계획에서 벗어난 변경 사항이 발생하면, 전체 프로젝트 일정과 예산에 큰 영향을 미칠 수 있다.
  2. 고객 피드백 부족

    • 대부분의 고객 피드백은 프로젝트가 완료된 후에야 반영되므로, 개발 과정 중간에 고객 요구사항이 잘못 반영되었을 경우 수정이 어렵다.
  3. 초기 요구사항 정의의 중요성

    • 초기 단계에서 모든 요구사항을 정확하게 정의해야 하기 때문에, 프로젝트 초기에 불완전하거나 모호한 요구사항 정의가 이루어질 경우 큰 문제가 발생할 수 있다.
  4. 장기간의 개발 주기

    • 개발 과정이 길고 각 단계가 순차적으로 이루어지기 때문에, 실제 제품이 시장에 출시되기까지 오랜 시간이 걸릴 수 있다.
  5. 테스트와 피드백 지연

    • 테스트 단계가 개발 후반부에 있기 때문에, 초기 단계에서 발생한 오류나 문제를 발견하고 수정하는 데 시간이 걸릴 수 있다.

📌워터폴 방식은 명확한 요구사항이 있고, 변경 가능성이 낮으며, 프로젝트 규모가 크고 복잡한 경우 에 유용할 수 있다. 그러나 변화가 빈번하거나 요구사항이 명확하지 않은 프로젝트에는 적합하지 않을 수 있다.

Reference

소프트웨어 개발 방법론 - 워터폴 vs 애자일 워터폴이란? 소프트웨어 개발 방법론 : 폭포수, 애자일, 린 방법론