소프트웨어 생명주기 (Software Development Life Cycle : SDLC)
소프트웨어 생명주기란 시스템의 요구분석부터 유지보수까지의 전 과정을 체계화한 절차로,
각 단계에서 수행되는 작업을 명확히 정의하여 개발 프로세스를 구조화한 것이다.
1. SDLC 단계
요구사항 분석 → 설계 → 구현 → 테스트 → 유지보수
1.1 요구사항 분석
- 다양한 이해관계자의 요구를 수집 및 분석하여 개발 대상 시스템의 기능과 제약조건을 명확히 정의
- 기능 요구사항과 비기능 요구사항으로 구분
기능 요구사항
- 시스템이 수행해야 할 서비스/기능에 대한 명세
- 예: 장바구니 기능, 포인트 결제 기능 등
비기능 요구사항
- 성능, 보안, 사용성 등 시스템의 특성 및 제약사항
- 예: 24시간 가동, 3초 이내 응답, 정기적인 패치 필요 등
1.2 설계
- 분석된 요구사항을 바탕으로 시스템이 동작할 수 있도록 구조와 수행 방식 설계
- 시스템 구조 설계 / 프로그램 설계 / UI 설계로 구성
1.3 구현
- 설계 결과를 바탕으로 프로그래밍 언어를 이용해 실제 소프트웨어 개발
- 인터페이스 구현, 자료구조 정의, 오류 처리 등 포함
1.4 테스트
- 시스템이 요구사항을 만족하는지 검증하는 단계
- 테스트는 다음과 같이 구분됨:
단위 테스트
- 모듈 또는 함수 단위로 테스트
- 기법: 인터페이스, 오류 처리, 자료구조, 실행 경로 테스트
통합 테스트
- 모듈 간 상호작용 검증
- 기법: 빅뱅, 샌드위치, 상향식, 하향식 테스트
시스템 테스트
- 시스템 전체 기능 검증
- 기법: 기능/비기능 요구사항 기반 테스트
인수 테스트
- 고객 계약 요건 만족 여부 확인
- 기법: 계약 인수, 사용자 인수, 운영 인수, 알파/베타 테스트
1.5 유지보수
- 시스템 인수 후 발생하는 모든 수정 및 개선 활동
- 유형: 예방, 교정, 완전, 적응 유지보수
2. 소프트웨어 생명주기 모델 종류
최적의 생명주기 모델은 프로젝트 규모, 리스크, 팀 경험 등에 따라 달라질 수 있음.
2.1 폭포수 모델 (Waterfall Model)
- 전통적, 단계별 순차 진행
- 각 단계 종료 후 다음 단계로 이동
- 장점: 명확한 절차 / 단점: 변경 대응 어려움
2.2 프로토타이핑 모델 (Prototyping Model)
- 프로토타입(모형)을 반복 구현하며 사용자 피드백 반영
- 요구사항 파악에 유리하지만 폐기 비용 증가
2.3 나선형 모델 (Spiral Model)
- 위험 분석 중심의 반복적 개발 모델
- 유연한 변경 대응 / 관리 복잡도 높음
- 절차: 계획 → 위험 분석 → 개발 → 평가 → 반복
2.4 반복적 모델 (Iteration Model)
- 점진적 완성 또는 병렬적 개발을 통해 통합
- 일정 단축 가능 / 관리 비용 증가