소프트웨어 생명주기 모형
소프트웨어(시스템) 구축 프로젝트
프로젝트
: 특정 제품이나 서비스를 창출하기 위해서 취해지는 한시적인 과업
- 최종 목적을 가진 한시적이고 독창적인 업무임
- 동일한 업무를 반복적이며, 지속적으로 수행하는 운영업무와 구분됨
- 사람에 의하여 수행되고, 프로젝트를 수행하기 위한 자원에 제한이 있음
- 프로젝트를 수행하기 위하여 계획작업을 한 후 수행되고 각 프로젝트 수행이 잘 되도록 통제작업이 이루어짐
정보시스템 개발 프로젝트
- 정보시스템을 구축하는 활동
- 정보시스템을 단순히 개발하는 활동뿐만 아니라 운영, 유지보수 및 폐기하는 일련의 활동
- 소프트웨어 공학적 측면에서의 프로젝트 === 정보시스템 개발 프로젝트
- 일련의 (정보시스템)
개발활동을 수행하는 작업
으로 구성되어 있음 - 소프트웨어 공학 측면에서 프로젝트는
개발활동의 집합
으로 이해됨. - 개발활동을 효율적으로 효과적으로 수행하기 위하여 체계적인 접근 방식 및 일련의 기술을 필요로 함
- 일련의
정보시스템 개발 프로젝트를 어떻게 잘 수행할 수 있는 방법
을 찾는 것이 중요한 과제
소프트웨어 개발 생명주기
생명주기 (Life Cycle / 사용주기)
: 전체 진행을 이해하거나 진행하기 위한 전후 관계가 있는 소단위 분류
소프트웨어 개발 생명주기 (SDLC)
- Software Development Life Cycle 또는 System Development Life Cycle
- 소프트웨어 개발을 위하여 진행되는 개별단위의 활동 (Activity)
- 소프트웨어 개발 생명주기는 다섯 가지의 단계를 거침
- 요건정의 -> 분석 -> 설계 -> 구현 -> 배포 및 운영
소프트웨어 개발 생명주기 모델 - 1
소프트웨어 개발 생명주기 모델 (SDLC Model)
-
소프트웨어 개발을 하고자 하는 목적에 따라서 생명주기의 형태가 다르거나,
다르게 가지고 가는 것이 개발활동을 더 효율적으로 할 수 있음 -
생명주기의 형태 모델을 제시하고 이를 따름으로서 개발자의 생산성을 높이고
고품질의 소프트웨어를 개발할 수 있도록 함
소프트웨어 개발 방법론 - 1
소프트웨어를 보다 효율적으로 개발하고 고품질의 소프트웨어를 얻고자 하는 개발 방법
개발 방법론 | 소프트웨어 개발 방법론 |
---|---|
* 개발 생명주기 모델을 따름 | * 소프트웨어 개발 모델을 포함한 것 보다 광범위한 부분임 * 개발 조직, 지침서, 표준 절차, 회사 방침등.. |
고전적인 소프트웨어 공학 측면에서는 두 가지를 큰 구분없이 혼동하여 사용함
소프트웨어 개발 방법론 - 2
회사와 같은 조직은 프로젝트 단위로 시스템(소프트웨어)을 어떻게 구현할 것인지 방법론을 가지고 있음
소프트웨어 개발 생명주기 모델 | 소프트웨어 개발 방법론 |
---|---|
* 소프트웨어 개발 시 개발자의 생산성을 높이고 고품질의 소프트웨어를 개발할 수 있도록 제시된 모델임 | * 소프트웨어 개발 생명주기 모델을 포함한 것보다 광범위한 부분임 |
폭포수 모델 (Waterfall Model)
- 일반적인 개발업무의 표준적으로 적용되는 방법론
- 분석, 설계, 개발, 구현, 테스트, 배포, 운영이 물 흐르듯 차근히 진행되는 모델
프로토타입 모델 - 1
- 개발 대상인 시스템 주요기능을 선 적용모델(Prototyping Model)로 먼저 개발함
- 문제점 등을 분석 판단한 후 프로토타입에 살을 붙이는 방법으로 개발해 나가는 모델임
폭포수 모델을 개선한 점진적 진화적 개발 방법
개발할 시스템의 실제 모습에 대한 이해가 먼저 필요하거나, 실제 개발 완료시 어떤 위험요소들이
있는지 판단이 우선적으로 필요할 때 자주 사용되는 모델
function 선_적용_모델_구현() {
분석();
설계();
구현();
}
function 전체구현() {
구현();
테스트();
배포_및_운영();
}
if (
요건_정의()
.선_적용_모델_구현()
.프로토_타입_평가()
) {
전체구현();
} else {
while (만족) {
선_적용_모델_구현();
}
전체구현();
}
소프트웨어 개발 생명주기 모델 - 2
반복적 개발 모델 (Iterative Development Model) : a.k.a 클라이언트 주도 개발 (CDD)
- 사용자의 요구사항의 일부분을 제품의 일부분으로 반복적으로 개발하여
최종제품을 완성하는 방법
RAD 개발 모델
-
RAD (Rapid Applicatoiin Development)
-
시스템 개발과정 중 불 필요한 과정의 생략
-
CASE(Computer-Aided Software Engineering, 컴퓨텉를 사용한 소프트웨어 공학)나 Source Code Generator 등의 자동화 툴을 사용하거나 이미 어느 정도 구축된 컴포넌트 및 솔루션을 활용하여 보다 빠른 소프트웨어 개발을 하기 위한 방법론
-
프레임워크를 이용해서 빠른 개발을 하는 것도 해당됨
-
제한된 범위의 단독시스템을 CASE와 같은 다양한 도구들ㅇ르 사용하여 신속하게 개발함
-
장점
- 짧은 개발시간
- 검증된 도구와 컴포넌트 사용으로 시스템 오류 등 감소 시킴
-
단점
- 기술적 위험이 큼
- 복잡하고 고성능이 요구되는 시스템을 구축하기는 어려움
소프트웨어 개발 생명주기 모델 정리
분야 | 세부이슈 |
---|---|
폭포수 모델 | * Waterfall Model * 고전적 라이프사이클 패러다임 (Classic Life-Cycle Paradigm) * 분석, 설계, 개발, 구현, 시험, 유지보수를 순차적으로 접근하는 방법 |
프로토타입 모델 | * Prototyping Model * 개발 대상인 시스템 주요기능을 초기에 운영모델로 개발하는 것 * 점진적 개발방법(Waterfall Model의 단점 보완) * 일회용, 진화용 시제품 |
반복적 개발 모델 | * 증분 모델 (Incremental Development Model) * 폭포수 모델 변형으로, 소프트웨어를 구조적 관점에서 하향식 계층구조의 수준별 증분을 개발하여 이를 통합하는 방식 * 진화형 모델 (Evolutionary Development Model) * 시스템이 가지는 여러 구성요소의 핵심부분을 개발한 후 각 구성요소를 개선 발전시켜 나가는 방법 |
RAD기법 모델 | * Rapid Application Development * 사용자 주도로 요구사항 정의, 분석, 설계 수행 * Code Generator에 의한 신속한 시스템 개발 기법 * CASE 및 자동화 도구를 이용하여 요구사항 명세로부터 실행코드를 자동으로 생성할 수 있게 해주는 기법 등을 사용 |