최근에 기술면접을 보았는데, 방법론과 생명주기를 혼동하는 것 같다는 피드백을 받아 개념 정리를 위해 기술합니다.
폭포수, V모델, 나선형 등은 "생명주기 모델"이자 동시에 "개발 방법론"으로도 분류되는 경우가 많다.
개발에서 "방법론이란 용어가 넓게 쓰이기 때문."
| 용어 | 설명 | 예시 |
|---|---|---|
| 소프트웨어 생명주기 | 소프트웨어의 일반적 흐름 (요구 → 설계 → 구현 → 테스트 → 유지) | - |
| 생명주기 모델 | 생명주기를 어떻게 구조화해서 적용할지 | 폭포수, V 모델, 나선형, 반복형 |
| 개발 방법론 | 생명주기 모델 + 그걸 실행하는 전략 및 실천 방법 | 좁게 보면: 스크럼, XP / 넓게 보면: 폭포수 포함 |
현장에서나 교재마다 이걸 나누는 기준이 조금씩 달라서 혼란스러울 수 있다.
[소프트웨어 생명주기]
└── 소프트웨어가 태어나고, 자라고, 유지되고, 종료되는 전 과정을 의미
(요구 분석 → 설계 → 구현 → 테스트 → 유지보수)
↓ "이 과정을 어떻게 적용할까?"
[생명주기 모델]
└── 생명주기를 구조화한 개발 흐름 방식
├── 폭포수 모델
├── V 모델
├── 프로토타입 모델
├── 나선형 모델
├── 반복형 모델
└── 애자일 모델
↓ "이 모델을 어떻게 운영할까?"
[개발 방법론]
소프트웨어를 개발할 때 생명주기의 각 단계를 어떻게 효과적으로 수행할지를 정리한 체계적인 절차 또는 전략.
| 번호 | 방법론 | 유형 | 특징 및 적합한 프로젝트 유형 | 장점 | 단점 | |
|---|---|---|---|---|---|---|
| 1 | 폭포수 모델 (Waterfall) | 전통적 방법론 | 순차적 접근 방식으로, 요구사항이 명확하고 변경이 적은 대규모 시스템 개발에 적합 | 명확한 단계 구분, 관리 용이 | 요구사항 변경에 유연하지 않음, 후반 단계에서의 수정 어려움 | |
| 2 | 애자일 방법론 (Agile) | 애자일 계열 | 반복적이고 점진적인 개발을 통해 빠르게 변화하는 요구사항에 대응하는 소프트웨어 개발에 적합 | 유연성, 빠른 피드백, 고객과의 협업 중시 | 초기 계획 부족 시 혼란 가능성, 역할 이해와 경험 부족 시 비효율 초래 가능 | |
| 3 | 나선형 모델 (Spiral) | 전통적 방법론 | 위험 분석과 반복적 개발을 통해 복잡하고 대규모 시스템 개발에 적합 | 위험 관리, 유연한 조정 가능성 | 복잡성 증가, 높은 비용, 고숙련 인력 필요 | |
| 4 | V-모델 (V-Model) | 전통적 방법론 | 각 개발 단계에 상응하는 테스트 단계를 설정하여 품질 보장을 강조하는 소프트웨어 개발에 적합 | 높은 품질 보장, 명확한 구조 | 테스트 계획 수립에 시간 소요, 초기 단계에서의 오류 발견 어려움 | |
| 5 | 프로토타입 모델 (Prototype) | 전통적 방법론 | 사용자 피드백을 통해 요구사항을 명확히 하고자 하는 소프트웨어 개발에 적합 | 사용자 요구사항 명확화, 초기 피드백 반영 가능 | 초기 단계에서의 불완전한 시스템 제공, 사용자 기대치 과도한 상승 가능 | |
| 6 | 스크럼 (Scrum) | 애자일 계열 | 짧은 주기의 스프린트를 통해 반복적 개발을 수행하며, 팀원 간의 협업과 역할 분담이 중요한 프로젝트에 적합 | 빠른 피드백, 팀 협업 강화, 역할 중심 관리 | 역할 이해와 경험 부족 시 혼란 가능성, 스프린트 계획 수립에 시간 소요 | |
| 7 | 칸반 (Kanban) | 애자일 계열 | 작업 흐름의 시각화와 작업 제한을 통해 지속적인 개선을 추구하는 소프트웨어 개발에 적합 | 프로세스 유연성, 지속적 개선 가능 | 명확한 역할 구분 부족 시 비효율 초래 가능, 작업 흐름의 시각화 필요 | (Ominext) |