Akashic Records

SDLC(Software Development Life Cycle) 본문

오래된글/소프트웨어공학

SDLC(Software Development Life Cycle)

Andrew's Akashic Records 2018. 4. 19. 13:52
728x90

PLT 1 SDLC(Software Development Life Cycle)

개요

소프트웨어 위기라는 이야기가 나온 지 수 십년이 지났지만, 아직도 소프트웨어는 여전히 품질, 납기 문제와 내재된 결함을 갖고 있다. 이러한 소프트웨어가 갖는 문제점을 해결하기 위해 소프트웨어 개발 프로세스에 소프트웨어 개발 생명주기모델을 도입한다.


정의

소프트웨어를 개발하기 위한 정의 과정, 개발 과정, 유지보수 과정, 폐기 과정까지를 하나의 연속된 주기로 보고, 효과적으로 수행하기 위한 방법론을 모델화 한다.


필요성

- 소프트웨어를 획득하는 과정에서 나타나는 소프트웨어 위기를 극복하기 위한 방안 필요

- 효과적으로 소프트웨어를 개발하기 위해 표준화된 수행 방법과 절차가 필요

- 고품질의 소프트웨어를 획득하는 데에도 일정 수준이상의 생산성을 확보

구성

<= 진행방향


진행방향 =>

Quality Management

Process Quality

Process Maturity

ISO 9001/9000-3

ISO/IEC 12207

15288

SPICE

ISO 15504

<= Quality =>

<= Life Cycle =>

<= Maturity =>

국제표준에서의 소프트웨어 개발 생명주기 모델의 위치


소프트웨어 개발 생명주기 모델의 단계


구분

내용

정의단계

(Definition Phase)

타당성, 요구 명세화

타당성 조사, 소프트웨어의 기능과 제약조건을 정의하는 명세서 작성하는 단계

개발단계

(Development Phase)

개발 단계(설계, 구현)

명세서를 만족하는 소프트웨어를 실제 개발, 구현하는 단계

확인, 검증 단계(시험, 설치)

요구 명세화 내용을 기준으로 사용자가 원하는 소프트웨어인지를 확인하는 검증단계

지원단계

(Support Phase)

유지보수, 폐기 단계

운영환경의 변화 및 사용자 요구사항의 변화를 수용하기 위한 진화/적응 및 프로그램 폐기


소프트웨어 개발 생명주기 모델의 분류

구분

내용

폭포수 모델

Waterfall Model

- 고전적 라이프사이클 패러다임

- 분석, 설계, 개발 구현, 시험, 유지보수를 순차적으로 접근하는 방법

프로토타이핑 모델

Prototyping Model

- 개발 대상인 시스템 주요기능을 초기에 운영모델로 개발하는 것

- 점진적 개발방법(폭포수 모델 단점 보안)

- 일회용, 진화용 시제품

반복적 개발 모델

Incremental Development Model

- 폭포수 모델변형으로, 소프트웨어를 구조적 관점에서 하향식 계층구조의 수준별 증분을 개발하여 이를 통합하는 방식


Evolutionary Development Model

- 시스템이 가지는 여러 구성요소의 핵심부분을 개발한 후 각 구성요소를 개선 발전시켜 나가는 방법

RAD기법 모델

Rapid Application Development

- 사용자에 주도로 요구사항 정의, 분석, 설계

- Code Generator에 의한 신속한 시스템 개발 기법

4세대 모형

4th Generation Technique

- CASE 및 자동화도구를 이용하여 요구사항 명세로부터 실행코드를 자동으로 생성할 수 있게 해주는 기법


소프트웨어 개발 생명주기 모델의 선정기준

  • 수행프로젝트의 규모와 성격에 따른 개발주기 선정 및 개발생명 주기기반의 개발방법론과 관리 방법론을 도입

  • 도입된 개발, 관리 방법론과 연계하여 최대한의 생산성 확보 여부를 고려해야 함.

  • 개발 소요시간, 비용, 기대 품질을 고려하여 불필요한 작업항목을 최소화하여 진행 할 수 있는 기준을 도입

  • 개발 과정의 통제수단과 소프트웨어 산출물 인도 방식에 따라 개발모형을 선정 해야함.


소프트웨어 개발 생명주기의 문제점

  • RAD 개발 모델과 프로토타입 모델에서는 사용자 참여가 충분하지만, 여타의 개발 모델에서는 사용자의 참여가 미흡하여 소프트웨어 완성 단계에서 품질의 문제가 있을 수 있다.

  • 각 진행단계별 진행내용에 대한 점검을 대부분 문서위주로 확인 하는 방식이기 때문에 비효율적인 작업진행 가능성 있음.

  • 단계별로 진행 내용을 수행하고 이에 따라서 다음 단계를 진행하기 때문에 전체 생명주기의 진행이 늦어질 가능성 있음.

  • 지속적으로 발전해서 개발이 필요하거나 계속해서 확장되는 시스템에는 부적합한 모델임.


728x90
Comments