SDLC (Software Development Life Cycle) 소프트웨어 개발 생명주기
소프트웨어 개발 생명주기(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(프로젝트 종료/유지보수 단계)
- 이 단계에서는 비즈니스 및 기술 담당자가 프로젝트가 얼마나 잘 실행되었는지 평가하고 생산 기준이 설정되면 사소한 변경을 신속하게 요청할 수 있다.
- 시스템 개발 수명 주기의 이 마지막 단계에서는 다음과 같은 활동을 수행한다.
- 조직이 솔루션의 모든 구성 요소에 대한 모든 중요한 설계, 개발, 생산 지원, 인프라 및 보안 데이터에 대한 기록을 보유하고 있는지 확인
- 지식이 모든 유지 및 지원 담당자와 최종 사용자에게 효과적으로 전달되었는지 확인
- 고객으로부터 시스템에 대한 공식 승인 획득
- 프로젝트 중에 배운점 정리
- 장애 복구 프로그램 구현
- 시스템이 더 이상 조직의 요구 사항을 충족하지 않을 때 소프트웨어를 폐기하는 프로세스를 구현