소프트웨어 생명주기 개요
소프트웨어 생명주기는 소프트웨어를 개발하기 위한 설계, 운영, 유지보수 등의 각 과정을 단계별로 나눈 체계적 방법론입니다. 주요 개발 모델로는 폭포수 모델, 프로토타입 모델, 나선형 모델, 애자일 모델 등이 있습니다.
1. 폭포수 모델 (Waterfall Model)
- 특징
- 각 단계를 순차적으로 진행하며, 이전 단계로 되돌아갈 수 없음.
- 단계마다 결과물을 산출하고 철저히 검토한 후 다음 단계로 진행.
- 전통적이고 널리 사용되는 개발 모델로, "선형" 또는 "순차적" 모델이라고도 불림.
- 장점
- 단계별로 명확히 정의되어 관리가 용이함.
- 문서화가 철저하여 프로젝트 진행 상황을 쉽게 파악할 수 있음.
- 단점
- 사용자 요구사항 변경에 유연하게 대응하기 어려움.
- 초기 단계에서 모든 요구사항을 명확히 정의해야 함.
2. 프로토타입 모델 (Prototype Model)
- 특징
- 초기 단계에서 견본품(프로토타입)을 개발하여 사용자에게 보여줌.
- 피드백을 바탕으로 개선하여 최종 소프트웨어를 개발.
- "원형 모델"이라고도 불리며, 사용자와 시스템 간의 인터페이스에 중점.
- 장점
- 사용자 요구사항을 정확히 반영할 수 있음.
- 요구사항 변경에 유연하게 대응 가능.
- 단점
- 프로토타입 개발에 추가적인 비용과 시간이 소요될 수 있음.
3. 나선형 모델 (Spiral Model)
- 특징
- 계획 수립, 위험 분석, 개발 및 검증, 고객 평가 단계를 반복하며 점진적으로 소프트웨어 완성.
- 위험 분석을 강조하여 대규모 소프트웨어 개발에 적합.
- 장점
- 점진적 개발로 사용자 요구사항을 지속적으로 반영할 수 있음.
- 위험을 사전에 분석하여 문제 발생 가능성을 감소시킴.
- 단점
- 프로젝트 관리가 복잡하며, 소규모 프로젝트에는 부적합할 수 있음.
4. 애자일 모델 (Agile Model)
- 특징
- 고객 요구사항 변화에 유연하게 대응하며, 일정한 주기로 개발 단계를 반복.
- 고객과의 지속적인 소통을 통해 사용자 중심으로 개발 진행.
- 대표적인 방법론: 스크럼(Scrum), XP(eXtreme Programming), 칸반(Kanban), 린(Lean) 등.
- 4가지 핵심 가치
- 프로세스와 도구보다 개인과 상호작용 중점.
- 방대한 문서보다 실행 가능한 소프트웨어 중점.
- 계약 협상보다 고객과의 협업 중점.
- 계획 준수보다 변화에 유연한 반응 중점.
- 장점
- 고객 요구사항 변화에 신속히 대응 가능.
- 개발 기간 단축과 품질 향상이 가능.
- 단점
- 문서화 부족 가능성이 있으며, 프로젝트 관리가 복잡할 수 있음.
소프트웨어 공학 개요
- 정의
- 소프트웨어 위기를 극복하기 위해 연구된 방법론과 도구, 관리 기법 등을 다루는 학문.
- 소프트웨어 위기
- 하드웨어와 소프트웨어 개발 속도의 불균형으로 발생하는 문제.
- 목적
- 기본 원칙
- 현대적인 프로그래밍 기술을 지속적으로 적용해야 함.
- 소프트웨어 품질 유지를 위해 지속적인 검증 필요.
- 개발 관련 기록을 철저히 유지해야 함.