폭포수(Waterfall) 모델

각 단계를 순차적으로 진행하며, 이전 단계가 완료되어야 다음 단계로 넘어가는 전통적인 모델.

%%{init: {'theme': 'default', 'themeVariables': { 'fontSize': '14px'}, 'flowchart': {'width': 600, 'height': 400, 'diagramPadding': 15}}}%%
graph TB
    %% 주요 개발 단계
    Start([프로젝트 시작]) --> RA[요구사항 분석]
    RA --> SD[시스템 설계]
    SD --> DD[상세 설계]
    DD --> IM[구현]
    IM --> TE[테스트]
    TE --> DE[배포]
    DE --> MA[유지보수]
    MA --> End([프로젝트 종료])

    %% 산출물 정의
    subgraph Documents [단계별 산출물]
        subgraph Analysis [요구사항 분석]
            DOC1[요구사항 명세서]
            DOC2[타당성 분석서]
        end
        
        subgraph Design [설계]
            DOC3[시스템 설계서]
            DOC4[상세 설계서]
        end
        
        subgraph Implementation [구현]
            DOC5[소스 코드]
            DOC6[단위 테스트]
        end
        
        subgraph Test [테스트]
            DOC7[테스트 계획서]
            DOC8[테스트 결과서]
        end
        
        subgraph Deploy [배포]
            DOC9[사용자 매뉴얼]
            DOC10[운영 문서]
        end
        
        subgraph Maintenance [유지보수]
            DOC11[유지보수 보고서]
            DOC12[변경 이력서]
        end
    end

    %% 단계와 산출물 연결
    RA -.생성.-> Analysis
    SD -.생성.-> Design
    DD -.생성.-> Design
    IM -.생성.-> Implementation
    TE -.생성.-> Test
    DE -.생성.-> Deploy
    MA -.생성.-> Maintenance

    %% 스타일링
    classDef default fill:#f9f9f9,stroke:#333,stroke-width:2px
    classDef phase fill:#e1f5fe,stroke:#01579b,stroke-width:2px
    classDef artifact fill:#fff3e0,stroke:#e65100,stroke-width:2px
    classDef milestone fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px

    class Start,End milestone
    class RA,SD,DD,IM,TE,DE,MA phase
    class DOC1,DOC2,DOC3,DOC4,DOC5,DOC6,DOC7,DOC8,DOC9,DOC10,DOC11,DOC12 artifact

style Documents fill:#fafafa,stroke:#666,stroke-width:2px,stroke-dasharray: 5
style Analysis,Design,Implementation,Test,Deploy,Maintenance fill:#f5f5f5,stroke:#666,stroke-width:2px

주요 단계

  1. 타당성 조사: 프로젝트의 기술적, 경제적 타당성을 평가.
  2. 요구사항 분석: 시스템의 목적과 범위를 명확히 정의하고 요구사항 명세서를 작성.
  3. 설계: 시스템 아키텍처, 인터페이스, 프로그램 등을 설계.
  4. 구현(코딩): 실제 프로그램 코드를 작성.
  5. 테스트: 개발된 소프트웨어를 테스트하고 오류를 수정.
  6. 통합: 개발된 모듈을 하나의 시스템으로 통합.
  7. 유지보수: 소프트웨어를 배포하고 지속적으로 유지보수.

특징

  1. 순차적 진행: 각 단계가 순차적으로 진행되며, 한 단계가 완료되어야 다음 단계로 넘어간다.
  2. 문서 중심: 각 단계마다 상세한 문서를 작성하여 관리한다.
  3. 단계별 검증: 각 단계가 끝날 때마다 결과를 확인하고 다음 단계로 진행한다.

장점

  1. 이해하기 쉬움: 모델의 구조가 단순하고 직관적
  2. 관리 용이성: 각 단계가 명확히 구분되어 있어 프로젝트 관리가 용이
  3. 체계적 문서화: 각 단계마다 상세한 문서를 작성하므로 프로젝트의 진행 상황을 쉽게 파악할 수 있다

단점

  1. 변경 수용의 어려움: 요구사항 변경이나 오류 수정이 어렵다
  2. 늦은 결과 확인: 개발 후반부에 가서야 실제 동작하는 시스템을 볼 수 있다
  3. 유연성 부족: 각 단계가 엄격히 구분되어 있어 유연한 대응이 어렵다

적합한 프로젝트 유형

요구사항이 명확하고 변경이 적은 프로젝트에 적합


참고 및 출처