[소프트웨어 공학] 2강. 소프트웨어 생명주기 모형

소프트웨어 생명주기 모형


소프트웨어(시스템) 구축 프로젝트

프로젝트 : 특정 제품이나 서비스를 창출하기 위해서 취해지는 한시적인 과업


정보시스템 개발 프로젝트


소프트웨어 개발 생명주기

생명주기 (Life Cycle / 사용주기) : 전체 진행을 이해하거나 진행하기 위한 전후 관계가 있는 소단위 분류


소프트웨어 개발 생명주기 (SDLC)


소프트웨어 개발 생명주기 모델 - 1

소프트웨어 개발 생명주기 모델 (SDLC Model)


소프트웨어 개발 방법론 - 1

소프트웨어를 보다 효율적으로 개발하고 고품질의 소프트웨어를 얻고자 하는 개발 방법

개발 방법론 소프트웨어 개발 방법론
* 개발 생명주기 모델을 따름 * 소프트웨어 개발 모델을 포함한 것 보다 광범위한 부분임
* 개발 조직, 지침서, 표준 절차, 회사 방침등..

고전적인 소프트웨어 공학 측면에서는 두 가지를 큰 구분없이 혼동하여 사용함


소프트웨어 개발 방법론 - 2

회사와 같은 조직은 프로젝트 단위로 시스템(소프트웨어)을 어떻게 구현할 것인지 방법론을 가지고 있음

소프트웨어 개발 생명주기 모델 소프트웨어 개발 방법론
* 소프트웨어 개발 시 개발자의 생산성을 높이고 고품질의 소프트웨어를 개발할 수 있도록 제시된 모델임 * 소프트웨어 개발 생명주기 모델을 포함한 것보다 광범위한 부분임


폭포수 모델 (Waterfall Model)


프로토타입 모델 - 1

폭포수 모델을 개선한 점진적 진화적 개발 방법

개발할 시스템의 실제 모습에 대한 이해가 먼저 필요하거나, 실제 개발 완료시 어떤 위험요소들이
있는지 판단이 우선적으로 필요할 때 자주 사용되는 모델


function 선_적용_모델_구현() {
  분석();
  설계();
  구현();
}

function 전체구현() {
  구현();
  테스트();
  배포_및_운영();
}

if (
  요건_정의()
    .선_적용_모델_구현()
    .프로토_타입_평가()
) {
  전체구현();
} else {
  while (만족) {
    선_적용_모델_구현();
  }
  전체구현();
}


소프트웨어 개발 생명주기 모델 - 2

반복적 개발 모델 (Iterative Development Model) : a.k.a 클라이언트 주도 개발 (CDD)


RAD 개발 모델


소프트웨어 개발 생명주기 모델 정리

분야 세부이슈
폭포수 모델 * Waterfall Model
* 고전적 라이프사이클 패러다임 (Classic Life-Cycle Paradigm)
* 분석, 설계, 개발, 구현, 시험, 유지보수를 순차적으로 접근하는 방법
프로토타입 모델 * Prototyping Model
* 개발 대상인 시스템 주요기능을 초기에 운영모델로 개발하는 것
* 점진적 개발방법(Waterfall Model의 단점 보완)
* 일회용, 진화용 시제품
반복적 개발 모델 * 증분 모델 (Incremental Development Model)
* 폭포수 모델 변형으로, 소프트웨어를 구조적 관점에서 하향식 계층구조의 수준별 증분을 개발하여 이를 통합하는 방식
* 진화형 모델 (Evolutionary Development Model)
* 시스템이 가지는 여러 구성요소의 핵심부분을 개발한 후 각 구성요소를 개선 발전시켜 나가는 방법
RAD기법 모델 * Rapid Application Development
* 사용자 주도로 요구사항 정의, 분석, 설계 수행
* Code Generator에 의한 신속한 시스템 개발 기법
* CASE 및 자동화 도구를 이용하여 요구사항 명세로부터 실행코드를 자동으로 생성할 수 있게 해주는 기법 등을 사용