Software/소프트웨어 공학

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

안녕하십니까? 씨앤텍시스템즈 유가현 선임연구원입니다.

 

이번 포스팅 주제는 "소프트웨어 개발 생명주기 모델 소개"입니다.

 

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

(Software Development Life Cycle, SDLC)

 

소프트웨어 개발 생명주기란,

소프트웨어를 어떻게 개발할 것인가에 대한 추상적인 표현으로

"순차적" 또는 "병렬적" 단계로 구성되어있습니다.

소프트웨어 개발 생명주기는 "개발 모델" 또는 "소프트웨어 공학 패러다임"이라고 부르기도 합니다.

 

소프트웨어 개발 생명주기 모델의 종류는 다음과 같습니다

  • 주먹구구식 개발 모델 (Build-Fix Model)
  • 폭포수 모델 (Waterfall Model)
  • 원형 모델 (Prototyping Model)
  • 나선형 모델 (Spiral Model)
  • 브이 모델 (V-Model)

 

1) 주먹구구식 개발 모델 (Bulid-Fix Model)

- 요구사항 분석, 설계 단계 없이 일단 개발에 들어간 후 만족할 때까지 수정작업 수행

- 크기가 매우 작은 규모의 소프트웨어 개발

- 정해진 개발 순서가 없기 때문에 개발 계획이 정확하지 않고 프로젝트 진행 사항 파악이 어려우며 개발 문서가 없어 개발 및 유지보수가 어려움

 

주먹구구식 개발 모델의 위와 같은 특성 때문에,

주먹구구식 개발 모델 이후로 체계적인 소프트웨어 개발 생명주기 모델이 생겨나게 됩니다.

 

2) 폭포수 모델 (Waterfall Model)

위에서 아래로 떨어지는 폭포처럼 순차적으로 소프트웨어를 개발하는 모델입니다.

대부분의 소프트웨어 개발 프로젝트에서는 폭포수 모델을 많이 사용하고 있습니다.

소프트웨어의 개발 과정을 체계적이고 순차적으로 접근하는 방법입니다.

 

일반적으로는 요구분석 -> 설계 -> 구현 -> 테스트 -> 운영(유지보수) 의 단계로 나누어 개발을 진행합니다.

Waterfall Model

폭포수 모델은 이전 단계가 완료가 되어야 다음 단계를 진행할 수 있기 때문에,

실제로 고객 요구사항 반영 여부를 확인하기 위해서는 오랜 시간이 걸리게 됩니다.

 

3) 원형 모델 (Prototyping Model)

앞서 폭포수 모델은 고객 요구사항을 실제로 확인하는데 오랜 시간이 걸린다는 단점이 있기 때문에

폭포수 모델의 단점을 보완하기 위해 만들어진 모델입니다.

원형 모델 또는 프로토타입 모델이라고도 불립니다.

 

점진적으로 시스템을 개발해 나가는 접근 방법으로 (interative & incremental)

원형 (Prototype)을 만들어 고객과 개발자가 함께 검증하고, 요구사항을 보완하여 점진적으로 완성도 높은 제품을 만들어 가는 방법입니다.

Prototyping Model

개발 초기 단계에 고객 요구사항을 완전히 파악하지 못하거나, 고객 자신이 원하는 시스템을 정확하게 모르는 경우에 사용되는 모델입니다.

 

4) 나선형 모델 (Spiral Model)

앞의 폭포수 모델과 원형 모델의 장점을 합하여 위험 분석을 추가한 점증적 개발 모델로,

프로젝트 수행 시 발생하는 위험을 관리하고 최소화 하는 것이 목적입니다.

 

여러 개의 작업 영역으로 구분할 수 있으며, 단계가 명확하게 구분되지 않고 프로젝트 특성이나 진행 상황에 따라 단계를 구분합니다.

Spiral Model

프로젝트의 모든 단계에서 위험을 분석하기 때문에 사전에 위험을 감소시킬 수 있습니다.

그러나, 폭포수 모델이나 원형 모델과 비교하여 복잡하기 때문에 프로젝트 관리가 어려운 단점이 있습니다.

 

5) 브이 모델 (V-Model)

브이 모델은 폭포수 모델의 변형으로 테스트 단계를 추가 확장한 모델입니다.

폭포수 모델은 산출물 중심이라면, 브이 모델은 각 개발 단계를 검증하는데 초점을 두고 있습니다.

V-Model

728x90

'Software > 소프트웨어 공학' 카테고리의 다른 글

형상 관리 개요  (0) 2021.11.02
WBS 소개  (0) 2021.09.28
소프트웨어 제품 품질 지표 소개  (0) 2021.08.25
요구사항 정의 및 분류  (0) 2021.07.28
소프트웨어 공학 소개  (0) 2021.05.17