소프트웨어 생명 주기란 소프트웨어를 개발하기 위해 요구분석부터 유지보수까지의 전 과정을 단계별로 나눈 것입니다. 소프트웨어 개발 방법론은 이 생명 주기를 어떤 방식으로 진행할지에 대한 모델을 제시합니다.
➕ 1-1. 폭포수 모델 (Waterfall Model)
개념: 각 단계를 순차적으로, 위에서 아래로 물이 떨어지듯 진행하는 가장 전통적인 모델. 이전 단계가 완벽하게 끝나야만 다음 단계로 넘어갈 수 있습니다.
특징:
장점: 절차가 명확하고 관리가 용이하며, 각 단계의 결과가 문서화되어 이해하기 쉬움.
단점: 요구사항 변경에 대응하기 매우 어렵고, 중요한 문제점이 개발 후반부에 발견될 수 있음.
적합한 프로젝트: 요구사항이 명확하고 변경 가능성이 거의 없는 소규모 프로젝트.
➕ 1-2. 프로토타입 모델 (Prototyping Model)
개념: 사용자의 요구사항을 명확히 파악하기 위해, 개발 초기에 실제 작동하는 시제품(Prototype)을 만들어 사용자에게 직접 보여주고 피드백을 받아 시스템을 개선해나가는 모델.
특징:
장점: 사용자의 요구사항을 조기에 정확하게 파악할 수 있어, 최종 결과물의 만족도를 높임.
단점: 프로토타입을 폐기해야 하는 경우 개발 비용과 시간이 낭비될 수 있음.
➕ 1-3. 나선형 모델 (Spiral Model)
개념: 폭포수 모델과 프로토타입 모델의 장점을 결합하고, 위험 분석(Risk Analysis) 단계를 추가한 모델. 나선을 돌듯이 여러 번의 개발 과정을 거쳐 시스템을 완성합니다.
절차: 계획 및 정의 → 위험 분석 → 개발 및 검증 → 고객 평가의 사이클을 반복.
특징:
장점: 개발 과정에서 발생하는 위험을 조기에 식별하고 관리할 수 있어, 대규모의 복잡한 시스템 개발에 적합.
단점: 관리가 복잡하고, 위험 분석에 대한 전문성이 요구됨.
➕ 1-4. 애자일 모델 (Agile Model)
개념: "민첩한", "기민한"이라는 뜻으로, 처음부터 완벽한 계획을 세우기보다, 짧은 주기의 반복(Iteration)을 통해 점진적으로 소프트웨어를 개발하고, 지속적으로 요구사항 변경에 대응하는 방법론.
핵심 가치: 계획보다는 변화에 대한 대응, 문서보다는 동작하는 소프트웨어, 계약보다는 고객과의 협력을 중시.
주요 방법론:
스크럼 (Scrum): 짧은 개발 주기인 스프린트(Sprint)(보통 2~4주)를 반복. 매일 짧은 회의(데일리 스크럼)를 통해 팀의 진행 상황을 공유.
XP (eXtreme Programming): 짝 프로그래밍(Pair Programming), 테스트 주도 개발(TDD), 지속적인 통합(CI) 등 구체적인 실천 방법을 강조.
✅ 2. 프로젝트 관리 (Project Management)
프로젝트 관리란 정해진 기간(Time), 비용(Cost), 범위(Scope) 내에서 프로젝트를 성공적으로 완료하기 위해 자원을 계획, 조직, 통제하는 활동입니다.
➕ 2-1. 프로젝트 관리의 3대 요소 (3P)
사람 (People): 프로젝트 팀원, 관리자, 고객 등 모든 이해관계자.
문제 (Problem): 해결해야 할 과제, 프로젝트의 목표.
프로세스 (Process): 문제를 해결하기 위한 작업의 절차와 순서.
➕ 2-2. 프로젝트 일정 관리 기법
프로젝트의 전체 기간을 예측하고, 각 작업의 일정을 관리하기 위한 기법입니다.
WBS (Work Breakdown Structure, 작업 분해 구조):
프로젝트의 전체 작업을 관리하기 쉬운 작은 단위의 활동으로 계층적으로 분해한 목록.
PERT/CPM:
PERT (Program Evaluation and Review Technique): 각 작업의 기간을 낙관치, 기대치, 비관치 3가지로 예측하여, 불확실성이 높은 프로젝트의 일정을 관리하는 데 사용.
CPM (Critical Path Method, 주 경로 기법): 프로젝트의 시작부터 끝까지 가장 긴 시간이 걸리는 작업들의 경로(주 경로, Critical Path)를 찾아내는 기법. 주 경로에 포함된 작업이 지연되면 전체 프로젝트가 지연되므로, 집중적인 관리가 필요.
간트 차트 (Gantt Chart):
프로젝트의 각 작업을 가로 막대 형태로 표현하여, 작업의 시작일, 종료일, 진행 상황을 한눈에 볼 수 있도록 한 차트.
📌 요약
소프트웨어 개발 방법론은 소프트웨어 생명 주기를 관리하는 모델이며, 전통적인 폭포수 모델부터 위험 관리를 강조하는 나선형 모델, 변화에 유연하게 대응하는 애자일 모델까지 다양합니다.
애자일은 짧은 주기의 반복을 통해 점진적으로 개발하는 현대적인 방법론으로, 스크럼과 XP가 대표적입니다.
프로젝트 관리는 기간, 비용, 범위의 제약 조건 내에서 목표를 달성하는 활동입니다.
PERT/CPM은 프로젝트의 전체 기간을 예측하고 주 경로(Critical Path)를 찾아내어 일정을 관리하는 핵심적인 기법입니다.