나선형(Spiral) 모델

위험 분석을 중심으로 반복적인 개발을 수행하며, 각 반복 주기마다 위험 요소를 평가하고 대응한다.

%%{init: {'theme': 'default', 'themeVariables': { 'fontSize': '14px'}, 'flowchart': {'width': 800, 'height': 600, 'diagramPadding': 15}}}%%
graph TD
    %% 시작점
    Start([프로젝트 시작]) --> Cycle1
    
    %% 반복 1: 타당성 검토
    subgraph Cycle1 [반복 1: 타당성 검토]
        P1[계획 수립]
        R1[위험 분석]
        D1[개발 및 검증]
        E1[고객 평가]
        
        P1 --> R1 --> D1 --> E1 --> P1
    end
    
    %% 반복 2: 요구사항 정의
    subgraph Cycle2 [반복 2: 요구사항 정의]
        P2[계획 수립]
        R2[위험 분석]
        D2[개발 및 검증]
        E2[고객 평가]
        
        P2 --> R2 --> D2 --> E2 --> P2
    end
    
    %% 반복 3: 시스템 설계
    subgraph Cycle3 [반복 3: 시스템 설계]
        P3[계획 수립]
        R3[위험 분석]
        D3[개발 및 검증]
        E3[고객 평가]
        
        P3 --> R3 --> D3 --> E3 --> P3
    end
    
    %% 반복 4: 구현 및 테스트
    subgraph Cycle4 [반복 4: 구현 및 테스트]
        P4[계획 수립]
        R4[위험 분석]
        D4[개발 및 검증]
        E4[고객 평가]
        
        P4 --> R4 --> D4 --> E4 --> P4
    end
    
    %% 반복 간 연결
    E1 --> Cycle2
    E2 --> Cycle3
    E3 --> Cycle4
    E4 --> End([프로젝트 완료])
    
    %% 각 반복의 산출물
    subgraph Deliverables [주요 산출물]
        Del1[개념 정의서]
        Del2[요구사항 명세서]
        Del3[설계 문서]
        Del4[시스템]
    end
    
    %% 위험 관리
    subgraph RiskManagement [위험 관리 특성]
        RM1[위험 식별]
        RM2[위험 분석]
        RM3[위험 해결]
        RM4[위험 모니터링]
        
        RM1 --> RM2 --> RM3 --> RM4
    end
    
    %% 프로젝트 특성
    subgraph Characteristics [프로젝트 진행 특성]
        C1[비용 증가]
        C2[투입 자원 증가]
        C3[프로토타입 정교화]
        
        C1 --> C2 --> C3
    end
    
    %% 산출물 연결
    Cycle1 -.생성.-> Del1
    Cycle2 -.생성.-> Del2
    Cycle3 -.생성.-> Del3
    Cycle4 -.생성.-> Del4
    
    %% 스타일링
    classDef default fill:#f9f9f9,stroke:#333,stroke-width:2px
    classDef cycle fill:#e1f5fe,stroke:#01579b,stroke-width:2px
    classDef risk fill:#ffecb3,stroke:#ffa000,stroke-width:2px
    classDef milestone fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
    
    class P1,P2,P3,P4,R1,R2,R3,R4,D1,D2,D3,D4,E1,E2,E3,E4 cycle
    class RM1,RM2,RM3,RM4 risk
    class Start,End milestone

style Cycle1 fill:#f0f4f8,stroke:#666,stroke-width:2px
style Cycle2 fill:#e1f5fe,stroke:#666,stroke-width:2px
style Cycle3 fill:#e0f7fa,stroke:#666,stroke-width:2px
style Cycle4 fill:#e8f5e9,stroke:#666,stroke-width:2px
style Deliverables fill:#fafafa,stroke:#666,stroke-width:2px,stroke-dasharray: 5
style RiskManagement fill:#fff3e0,stroke:#666,stroke-width:2px
style Characteristics fill:#f5f5f5,stroke:#666,stroke-width:2px,stroke-dasharray: 5

주요 단계

  1. 계획 수립: 목표 설정, 대안 식별, 제약 조건 파악
  2. 위험 분석: 위험 식별, 평가 및 해결 전략 수립
  3. 개발 및 검증: 소프트웨어 개발 및 테스트 수행
  4. 평가: 고객 평가 및 다음 단계 계획

특징

  1. 반복적 개발: 여러 번의 반복(나선)을 통해 제품을 점진적으로 개발.
  2. 위험 관리 중심: 각 단계마다 위험 분석과 처리를 수행.
  3. 프로토타입 생성: 각 나선에서 프로토타입을 만들어 평가.
  4. 유연성: 요구사항 변경에 유연하게 대응할 수 있다.

장점

  1. 높은 수준의 위험 분석으로 위험 회피 가능
  2. 대규모 및 중요 프로젝트에 적합
  3. 요구사항 변경에 유연하게 대응 가능
  4. 초기 단계에서 작동하는 소프트웨어 제공

단점

  1. 복잡하고 비용이 많이 들 수 있음
  2. 위험 분석에 높은 전문성 요구
  3. 소규모 프로젝트에는 적합하지 않음
  4. 프로젝트 종료 시점을 예측하기 어려움

적합한 프로젝트 유형

요구사항이 불확실하거나 지속적으로 변경될 수 있는 복잡한 프로젝트에 적합


참고 및 출처