소프트웨어 개발 수명 주기
(Software Development Life Cycle, SDLC)
시스템 엔지니어링, 정보 시스템, 또는 소프트웨어 공학에서 정보 시스템을 계획, 개발, 시험, 채용하는 과정을 뜻하는 용어입니다.
대게 요구사항 분석→설계→개발→테스트→운영 단계로 구성되어 있습니다.
요구 사항 분석
- 요구 사항을 수집하고 제품의 요구와 조건을 결정
- 소프트웨어의 기능과 제약 조건 등을 명확히 정의
설계
- 정의한 기능을 실제 수행할 수 있도록 수행 방법을 논리적으로 결정
- 시스템 구조 설계/ 프로그램 설계 / 사용자 인터페이스 설계 / 데이터베이스 설계 등
구현
- 설계 단계에서 논리적으로 결정한 문제 해결 방법을 특정 프로그래밍 언어를 사용하여 구현
- 인터페이스 / 자료 구조 / 오류 및 예외 처리 등
테스트
- 시스템이 요구을 모두 만족하는지 검사하고 평가하는 단계
- 단위 테스트 / 통합 테스트 / 시스템 테스트 / 인수 테스트 등
유지 보수
- 시스템이 인수된 이 후 일어나는 모든 활동
소프트웨어 생명 주기 모델
폭포수 모델 (Waterfall Model)
- 가장 오래 된 모델
- 순차적으로 각 단계를 완료 후, 다음 단계로 넘어가는 모델
- 단계별 정의와 산출물이 명확하나, 요구 사항 변경이 어려움
프로토타이핑 모델 (Prototyping Model)
- 주요 기능을 프로토타입으로 구현하고, 이에 대한 고객의 피드백을 반영하여 소프트웨어를 개발
- 요구분석이 쉽고 타당성 검증이 가능하나 프로토타입 개발에 따른 비용 증가
나선형 모델(Spiral Model)
- 점진적으로 완벽한 시스템을 개발해 나가는 모델
- 위험성 감소와 변경에 유연한 대처가 가능하나, 단계 반복에 따른 추가 비용과 관리가 어려움
반복적 모델(Iteration Model)
- 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여 점증 완성시키는 모델
- 사용자의 요구사항 일부분 혹은 제품 일부분을 반복적으로 개발하여 최종 시스템으로 완성하는 모델
- 병행 개발로 인한 일정 단축이 가능하나, 관리 비용이 증가