증분 모델 (Incremental Model)
전체 시스템을 여러 개의 작은 부분(증분)으로 나누어 순차적으로 개발하고 제공하는 접근 방식. 각 증분은 완전한 기능을 갖춘 소프트웨어의 일부분으로, 사용자에게 점진적으로 제공
%%{init: {'theme': 'default', 'themeVariables': { 'fontSize': '14px'}, 'flowchart': {'width': 800, 'height': 600, 'diagramPadding': 15}}}%% graph TD %% 시작점 Start([프로젝트 시작]) --> Initial[초기 요구사항 분석] %% 증분 1: 핵심 기능 subgraph Inc1 [증분 1: 핵심 기능] R1[요구분석] --> D1[설계] D1 --> I1[구현] I1 --> T1[테스트] T1 --> V1[검증] end %% 증분 2: 확장 기능 subgraph Inc2 [증분 2: 확장 기능] R2[요구분석] --> D2[설계] D2 --> I2[구현] I2 --> T2[테스트] T2 --> V2[검증] end %% 증분 3: 최종 기능 subgraph Inc3 [증분 3: 최종 기능] R3[요구분석] --> D3[설계] D3 --> I3[구현] I3 --> T3[테스트] T3 --> V3[검증] end %% 증분 간 연결 Initial --> Inc1 V1 --> Inc2 V2 --> Inc3 V3 --> End([프로젝트 완료]) %% 산출물 연결 V1 -.제품 릴리즈 1.-> Rel1[동작하는 핵심 시스템] V2 -.제품 릴리즈 2.-> Rel2[확장된 시스템] V3 -.최종 릴리즈.-> Rel3[완성된 시스템] %% 피드백 루프 Rel1 -.피드백.-> R2 Rel2 -.피드백.-> R3 %% 스타일 정의 classDef default fill:#f9f9f9,stroke:#333,stroke-width:1px classDef phase fill:#e1f5fe,stroke:#01579b,stroke-width:1px classDef milestone fill:#e8f5e9,stroke:#2e7d32,stroke-width:1px classDef release fill:#fff3e0,stroke:#e65100,stroke-width:1px class Start,End,Initial milestone class R1,D1,I1,T1,V1,R2,D2,I2,T2,V2,R3,D3,I3,T3,V3 phase class Rel1,Rel2,Rel3 release style Inc1 fill:#f0f4f8,stroke:#666,stroke-width:1px style Inc2 fill:#e1f5fe,stroke:#666,stroke-width:1px style Inc3 fill:#e8f5e9,stroke:#666,stroke-width:1px
주요 단계
- 요구사항 분석: 현재 증분에 포함될 기능을 정의.
- 설계: 시스템 아키텍처와 상세 설계를 수행.
- 구현: 실제 코드를 작성.
- 테스트: 구현된 기능을 테스트하고 버그를 수정.
- 통합 및 배포: 새로운 증분을 기존 시스템과 통합하고 사용자에게 제공.
특징
- 단계적 개발: 전체 시스템을 여러 개의 증분으로 나누어 개발.
- 순차적 제공: 각 증분을 완성할 때마다 사용자에게 제공.
- 기능 우선순위: 중요도나 우선순위에 따라 증분을 계획.
- 반복적 프로세스: 각 증분마다 요구사항 분석부터 테스트까지의 과정을 반복.
- 점진적 기능 확장: 각 증분마다 새로운 기능이 추가되거나 기존 기능이 개선.
장점
- 조기 제품 출시: 첫 번째 증분부터 사용 가능한 제품을 제공할 수 있다.
- 유연한 변경 관리: 각 증분 사이에 요구사항 변경을 반영할 수 있다.
- 위험 감소: 중요한 기능을 먼저 개발하여 주요 위험을 조기에 해결할 수 있다.
- 사용자 피드백 활용: 각 증분 후 사용자 피드백을 받아 다음 증분에 반영할 수 있다.
- 병렬 개발 가능: 여러 팀이 동시에 다른 증분을 개발할 수 있다.
단점
- 전체 아키텍처 설계 필요: 초기에 전체 시스템의 아키텍처를 설계해야 한다.
- 인터페이스 관리 복잡성: 증분 간 인터페이스 관리가 복잡할 수 있다.
- 문서화 부담: 각 증분마다 문서화가 필요하여 작업량이 증가할 수 있다.
- 전체 비용 증가: 여러 번의 통합과 테스트로 인해 전체 비용이 증가할 수 있다.
적합한 프로젝트 유형
- 주요 요구사항은 명확하지만 세부사항은 변경될 수 있는 프로젝트
- 빠른 시장 출시가 필요한 프로젝트
- 새로운 기술이나 기능을 점진적으로 도입하고자 할 때
- 자금이나 인력 등의 자원이 제한적인 경우