소프트웨어 개발 생명주기(SDLC)는 하나의 소프트웨어 혹은 애플리케이션이 생성되고 소멸하기까지의 일련의 과정들을 말한다. 개념및 초기화 단계에서 결정된 프로젝트 실행 가능성부터 완성된 시스템 또는 애플리케이션의 프로젝트 종료/유지 관리 단계까지의 여러 단계를 포함하고 있다.
각 단계별로 전략 및 비즈니스 목표를 충족하는 시스템 또는 애플리케이션의 성공적인 구현을 보장하는 도구를 제공한다.
SDLC 목표
- 예상 비용 내에서 약속한 경우 고객의 기대치를 충족하거나 초과하는 품질 시스템을 제공
- 식별 가능하고 측정 가능하며 반복 가능한 프로세스를 사용하여 품질 시스템을 개발하기 위한 프레임워크 제공
- 각 시스템 개발 프로젝트가 라이프 사이클 전반에 걸쳐 효과적으로 관리될 수 있도록 프로젝트 관리 구조를 구축
- 시스템 개발 수명 주기 전반에 걸쳐 기능 및 기술 관리자를 포함한 모든 관계자들의의 역할과 책임을 식별하고 할당함
- 시스템 개발 요구 사항이 잘 정의되어 후속적으로 충족되는지 확인
SDLC 8단계
1. Project Concept / Initiation Phase(프로젝트 개념 / 착수 단계)
- 프로젝트 개념/시작 단계에서는 프로젝트 헌장, 비즈니스 사례, 비용-편익 분석 및 프로젝트를 진행하기 위한 팀 구성, 검토를 통해 프로젝트 가치를 결정한다.
- 이 단계에는 자금 지원 프로그램 및 프로젝트로 정의된 비즈니스 전략을 추구하는 가능성을 결정하는 데 필요한 작업이 포함된다.
- 주요 업무 범위에는 비즈니스 사례 개발, 타당성 조사 수행, 비용 편익 분석 수행이 포함된다.
- 프로젝트 착수에 대한 최종 결정이 내려지면 프로젝트 관리자가 프로젝트 팀을 구성하고 프로젝트 시작 체크리스트를 검토 및 완료하기 시작한다
2. Project Planning Phase(프로젝트 기획 단계)
- 계획 단계에서는 기본 프로젝트 구조, 실행 가능성, 프로젝트와 관련된 위험을 설정하고 관리 및 기술 방법론을 설명하는 데 도움이 되는 의도된 소프트웨어 제품의 초기 모델을 설정한다.
- 프로젝트 관리자, 후원자, 이해 관계자, 비즈니스 분석가, 테스터 및 관련 조직의 이름을 정의하는 프로젝트 조직도를 수립하고 문서화하여 모든 사람이 프로젝트 참여자를 명확하게 이해할 수 있도록 하고, 개인의 역할과 책임도 명확히 정의한다.
- 프로젝트 베이스라인 관리를 위한 형상관리 계획 수립 및 비즈니스 목표를 정의하는 작업 명세서 준비
- 개발 및 프로젝트 견적 워크시트를 작성하여 비용을 결정하고, 필요한 경우 프로젝트에 필요한 소프트웨어, 하드웨어 또는 외부 서비스에 대한 조달 계획을 준비한다.
- 3단계로 작업분류체계(WBS) 구성요소를 준비한다.
- SME(Subject Matter Experts)에게 WBS 활동 워크시트를 제공하여 프로젝트의 각 활동 및 작업에 필요한 작업 범위를 초기에 정의
- 각 기술 세트에 필요한 시간 및 예상 시간으로 분류된 작업이 포함된 WBS 작업에 대한 WBS 리소스 계획 템플릿을 준비단계. 완료되면 각 기술 세트에 필요한 총 시간을 정확하게 결정할 수 있다.
- 작업을 설명하는 작업 분류 구조 준비
위험 식별 및 해결 프로세스를 정의하는 위험 분석 계획을 준비한다. 위험 정보 데이터 수집 양식을 통합하여 위험이 식별되면 이후에 각 위험을 정량화, 분석 및 해결할 수 있다.
각 작업 수행에 대한 순서, 예상 일정 및 책임을 정의하여 프로젝트 제어를 수립하기 위한 프로젝트 계획을 준비한다.
3. Requirements Definition Phase(시스템 요구 사항 단계)
- 비즈니스 및 최종 사용자 요구 사항을 정의, 분석 및 문서화 한다.
- 요구 사항 수집 - 현재 수행중인 작업을 문서화하여 '있는 그대로' 평가하기
- 요구 사항 분석 - 비즈니스 분석가는 이해 관계자, 최종 사용자 및 고객과 협력하여 수행하는 작업이나 활동에서 더 효과적인 데 필요한 기능을 결정하고, 따라서 작업을 더 잘 수행할 수 있는 방법 강구.
- "갭 분석" - 처음에는 비교적 단순한 비즈니스 요구사항으로 여겨졌던 것이 실제로는 상당히 복잡한 시스템으로 발전 할 수 있는데, 이런 작업에 대한 분석과 계획 수립
4. System Design Phase(시스템 설계(디자인) 및 개발 단계)
- 승인된 요구사항 기반으로 설계 하는 단계
- 디자인은 개발자가 최소한의 추가작업으로 소프트웨어를 구축할 수 있도록 자세하게 작성한다.
- 디자인 요소는 각 요구 사항 또는 요구 사항 집합에 대해 구축되어야 한다.
- 일반적으로 기능 다이어그램, 화면 레이아웃, 비즈니스 규칙, 비즈니스 프로세스 다이어그램 및 전체 데이터 사전이 있는 엔터티 관계 다이어그램이 포함된다.
- 시스템 설계 단계에서는 시스템 및 기술 요구 사항을 정의하는 데 주의를 기울인다.
- 필요하다면 프로토 타입 개발
* 프로젝트가 승인되고 적절하게 계획되면 상당히 큰 프로젝트의 경우 요구 사항 수집, 분석 및 문서화를 완료하는 데 6~8주가 소요될 수 있다. 또한 설계 단계는 완료하는 데 6~8주가 소요될 수 있으며 요구 사항과 설계 단계 사이에서 몇주는 병행 작업을 할 수 있다. 즉, 개발이 시작되기 전에 프로젝트의 처음 10-12주가 요구 사항 및 설계 관련 활동에 소요된다는 것이다. 초기 프로젝트 계획을 위해 2-4주를 더 추가하고 개발은 프로젝트 시작 12-14주가 되어야 시작된다.
5. Testing Phase(테스트 및 승인 단계)
- 별도의 테스트 환경에서 요구 사항 및 설계의 효율성과 효율성을 검증하는 단계
- 필요한 모든 기능을 구현하고 모든 고객, 비즈니스 및 최종 사용자 요구 사항에 따라 수행할 수 있도록 테스트 요구 사항을 분석하고 문서화하는 데 필요한 작업 범위가 이 단계에 포함된다.
- 다양한 유형의 테스트(예: 단위, 통합, 시스템, 스트레스)가 있지만 모든 테스트 케이스는 소프트웨어의 정확성과 완전성을 검증하기 위해 실행된다.
- 최종 사용자는 비즈니스 프로세스 및/또는 사용자 기능을 가능하게 하는 사용자 인터페이스, 화면, 데이터 필드, 데이터 흐름 및 보고서의 적합성을 테스트하고 검증한다.
- 기술 테스터는 기본 하드웨어, 소프트웨어, 네트워크, 데이터베이스, 작업 흐름 및 보안 구성 요소가 아키텍처, 디자인 및 성능 요구 사항을 준수하는지 확인한다.
- 테스트 중에 발견된 결함 및 버그는 문서화되고 우선 순위를 지정하고. 모든 크리티컬한 결함은 배포전 수정된다.
6. Project Monitoring and Control Phase(프로젝트 모니터링 및 제어 단계)
- 프로젝트 모니터링 및 제어 단계에서는 프로젝트, 기술 및 빈번한 상태 회의에서 수집된 데이터를 통해 프로젝트를 감시한다.
- 프로젝트가 진행됨에 따라 식별될 수 있는 위험, 문제 및 조치 항목의 선별이 포함된다.
- 변경 사항을 기록하는 변경 관리 로그 - 프로젝트 기간 동안 발생한 변경 사항을 정확하게 기록하는 것이 중요하다. (후속 프로젝트를 개선하는 데 필요한 수정 사항을 평가할 때 사용)
- 예산 및 일정 내에서 프로젝트 완료에 위협이 되기 전에 위험, 프로젝트에 대한 영향, 발생 확률, 일정, 대응 및 조치를 캡처하여 위험 관리 로그에 위험을 기록한다
7. Production Turnover / Deployment Phase(생산 회전율 / 배포 단계)
- 이 단계는 최종 솔루션을 릴리즈 하는 데 필요한 작업 범위와 설치, 배포, 시스템 관리, 시스템 운영 및 최종 사용자 기능에 대한 가이드를 작성한다.
- 소프트웨어의 프로덕션 설치 및 고객 승인을 제공하며 성공적인 소프트웨어 실행, 정확성 및 완전성을 확인하기 위한 모든 테스트를 실행한다.
- 수신 조직이 소프트웨어가 의도한 대로 작동한다는 데 동의했는지, 유지 조직이 교육을 받았고 솔루션 유지 관리에 대한 책임을 맡을 준비가 되었는지, 헬프 데스크 조직이 적절하게 교육을 받고 준비되었는지 확인 절차를 진행한다.
- 이해관계자들은 새로운 시스템이나 시스템 개선 사항과 영향을 받는 비즈니스 프로세스의 변경 사항 모두에 대해 교육을 받아야 한다.
8. Project Closure / Maintenance Phase(프로젝트 종료/유지보수 단계)
- 이 단계에서는 비즈니스 및 기술 담당자가 프로젝트가 얼마나 잘 실행되었는지 평가하고 생산 기준이 설정되면 사소한 변경을 신속하게 요청할 수 있다.
- 시스템 개발 수명 주기의 이 마지막 단계에서는 다음과 같은 활동을 수행한다.
- 조직이 솔루션의 모든 구성 요소에 대한 모든 중요한 설계, 개발, 생산 지원, 인프라 및 보안 데이터에 대한 기록을 보유하고 있는지 확인
- 지식이 모든 유지 및 지원 담당자와 최종 사용자에게 효과적으로 전달되었는지 확인
- 고객으로부터 시스템에 대한 공식 승인 획득
- 프로젝트 중에 배운점 정리
- 장애 복구 프로그램 구현
- 시스템이 더 이상 조직의 요구 사항을 충족하지 않을 때 소프트웨어를 폐기하는 프로세스를 구현