소프트웨어 개발 수명주기(Software Development Life Cycle)
09 Mar 2022소프트웨어 개발 수명주기(Software Development Life Cycle)
소프트웨어 개발 수명주기는 애플리케이션을 개발하고 배포하는 작업을 설명한다. 6개의 단계로 구성되어 있으며 여러 모델이 있다.
단계
- 요구 사항 분석
- 개발할 소프트웨어의 기능과 제약 조건, 목표 등을 정의
- 소프트웨어의 성격을 이해
- 개발 방법과 자원, 예산을 예측 후 요구명세서 작성
- 시스템 명세 단계
- 시스템이 어떻게 동작하는지 정의
- 입력 자료, 처리 내용, 생성되는 출력 정의
- 설계
- 2단계에서 정의한 기능을 실제로 수행할 수 있도록 수행 방법 결정
- 시스템 구조 설계
- 시스템을 구성하는 내부 프로그램이나 모듈 간의 관계와 구조 설계
- 프로그램 설계
- 프로그램 내의 각 모듈에서의 처리 절차나 알고리즘 설계
- 사용자 인터페이스 설계
- 사용자가 시스템을 사용하기 위해 보여지는 부분 설계
- 구현
- 3단계에서 결정한 문제 해결 방법을 프로그래밍 언어로 실제 프로그램을 작성
- 구조화 프로그래밍
- 지정문과 조건문, 반복문만을 사용하여 작성
- 순차 구조, 선택 구조, 반복 구조로 제어 구조 표현
- 구조가 명확해서 정확성 검증과 테스트 및 유지보수 용이
- 모듈러 프로그래밍
- 프로그램을 여러 개의 작은 모듈로 나누어 계층 관계로 구성
- 모듈별로 개발과 테스트 및 유지보수 가능
- 모듈 재사용 가능
- 테스트
- 개발한 시스템이 요구사항을 만족하는지, 실행 결과와 예상 결과가 맞는지 검사하고 평가
- 단위 테스트
- 시스템의 최소 구성요소가 되는 모듈에 대해 개별적 시행
- 통합테스트
- 단위 테스트를 통과한 모듈을 연결하여 전체 시스템으로 완성하여 통합적으로 시행
- 인수 테스트
- 완성된 시스템을 인수하기 위해 실제 자료를 사용한 최종 테스트
- 유지보수
- 시스템이 인수되고 설치된 후 일어나는 모든 활동
- 이후에 있는 커스터마이징, 구현, 테스트 등 포함
- 소프트웨어 생명주기에서 가장 긴 기간
- 수정형 유지보수
- 사용 중 발견한 오류 수정
- 적응형 유지보수
- 시스템과 관련한 환경적 변화에 적응하기 위한 재조정 작업
- 완전형 유지보수
- 시스템의 성능을 향상시키기 위한 개선 작업
- 예방형 유지보수
- 앞으로 발생할지 모를 변경사항을 수용하기 위한 대비 작업
모델
폭포수 모델(Waterfall model)
- 소프트웨어 개발 초기부터 시작하여 각 단계 진행
- 이전 단계가 완전히 끝날 때까지 다음 단계 시작 불가
- 프로세스 각 단계에 대한 연속성과 실행 가능성을 분석할 때 도움
- 사용자 요구사항 적용을 확인할 때 많은 시간 소요
원형 모델(Prototyping)
- 폭포수 모델의 단점 보완
- 점진적으로 시스템 개발
- 사용자의 요구사항을 정확히 파악하기 어려울 때 사용
- 샘플을 먼저 개발한 후 피드백을 받고 샘플을 폐기 후 개발
- 대규모 프로젝트에는 부적합
주먹구구식 모델(Build and Fix model)
- 요구사항 분석, 설계 등의 단계없이 개발 시작
- 만족할 때까지 수정 작업 진행
- 프로젝트 진행 파악, 개발 및 유지보수 어려움
나선형 모델(Spiral model)
- 폭포수 모델과 원형 모델의 장점 수용 & 위험 분석 추가
- 프로젝트 수행할 때 발생하는 위험 최소화
- 중간 중간 위험 분석을 하며 문제가 있을 경우 프로젝트 중단
- 프로젝트 관리가 복잡
V 모델
- 폭포수 모형에 시스템 검증과 테스트, 작업 강조
- 모듈의 상세 설계를 단위 테스트 과정에서 검증
- 시스템 설계는 통합 테스트 단계에서 검증
- 사용자의 요구는 시스템 테스트 과정에서 검증
- 반복이 없어 변경을 다루기 어려움
애자일 모델(Agile model)
- 고객의 요구 사항 변화에 유연하게 대응하는 일정 주기를 가지고 반복
- 고객과의 소통에 초점을 맞춤
- 스프린트라는 짧은 개발 주기 반복
- 개발 주기마다 결과에 대한 고객의 평가와 요구 수용
- 개발 주기에는 고객이 우선수위를 부여