소프트웨어 생명주기

소프트웨어 생명주기(Software life cycle)는 소프트웨어에 대한 필요가 발생한 시점부터 개발, 배포, 운영, 유지보수와 폐기까지 이어지는 활동과 상태의 흐름을 뜻한다. 소프트웨어 공학에서는 소프트웨어 제품과 시스템을 장기간 관리하기 위한 활동을 정의하고, 변경과 품질, 비용...

영문명Software life cycle
분류소프트웨어 공학
주요 활동기획, 요구사항, 설계, 구현, 검증, 배포, 운영, 유지보수
대표 접근폭포수 모델, 반복·점진 개발, 애자일 소프트웨어 개발
관련 개념소프트웨어 개발 생명주기, DevOps, 품질 보증

소프트웨어 생명주기(Software life cycle)는 소프트웨어에 대한 필요가 발생한 시점부터 개발, 배포, 운영, 유지보수와 폐기까지 이어지는 활동과 상태의 흐름을 뜻한다. 소프트웨어 공학에서는 소프트웨어 제품과 시스템을 장기간 관리하기 위한 활동을 정의하고, 변경과 품질, 비용, 일정 및 책임을 체계적으로 다루는 관점으로 사용한다.

생명주기에는 요구사항 분석, 아키텍처와 상세 설계, 구현, 시험과 검증, 릴리스 및 배포, 운영과 유지보수가 포함된다. 이 활동들은 반드시 일회성·선형 순서로만 진행되지는 않으며, 반복·점진적 개발에서는 여러 활동이 겹치고 제품의 릴리스마다 되풀이될 수 있다. 폭포수 모델, 애자일 소프트웨어 개발, DevOps 등의 접근법은 활동을 구성하고 전달하는 방식에서 차이를 보인다.

생명주기를 다루는 문서와 산출물에는 요구사항 명세, 설계 자료, 소스 코드, 테스트 결과, 빌드와 배포 기록, 사용자 문서 및 운영 이력이 포함된다. 실제 조직에서는 프로젝트의 규모와 규제 환경에 따라 추적성, 자동화 및 승인 절차의 수준을 달리한다.[1]

역사

초기 단계형 개발

구조화된 개발 방법

반복·점진적 개발

지속적 전달과 운영의 통합

생명주기의 단계

기획과 타당성 분석

요구사항 분석

아키텍처와 설계

구현

시험과 검증

배포와 릴리스

운영과 유지보수

폐기와 이전

생명주기 모델

폭포수 모델

V 모델

나선형 모델

반복·점진 모델

애자일 소프트웨어 개발

DevOps

관리와 품질 보증

형상 관리

요구사항 추적성

품질 측정

위험 관리

보안과 규정 준수

자동화

지속적 통합

지속적 전달

모니터링과 피드백

관련 문서

  1. IEEE Computer Society: SWEBOK ↩