본문 바로가기
학교 공부/소프트웨어공학

소프트웨어 공학 - V 모델, 진화적 프로세스 모델(Prototype Model)

by krapoi 2022. 4. 8.
반응형

저번에 이어 소프트웨어 개발 프로세스들에 대해 알아볼 것이다.

이번에는 V 모델과 진화적 프로세스 모델에 대해 알아보겠다.

 

V 모델

폭포수 모델의 변형버전이다. 

폭포수 모델에 테스트 단계를 추가 확장시켰다. 각 개발 단계를 검증하는데 초점을 맞추었다. (폭포수 모델은 결과 중심)

그림을 보면 왜 이름이 V 모델인지 알 수 있다.

V 모델을 폭포수 모델에 테스트 단계를 추가한 것이니, 테스트 단계만 살펴보자.

만약 폭포수 모델이 뭔지 모른다면, 전 글을 보고 오자.

 

1) 단위 테스트

 

우선 단위 테스트(unit test)에는 모듈 검증을 하는데 이 모듈이 뭔지부터 알아보자.

모듈이란 함수, 서브 시스템을 구현하는데 필요한 기능들을 말한다.

 

그리고 이 테스트의 목표는 이 모듈을 개별적으로 다 검증하는 것이다.

검증의 내용은 내부의 논리적인 오류 검출, 사용자의 요구 사항의 내용대로 구현이 되었는가를 살펴본다.

 

2) 통합 테스트

 

통합 테스트(integration test)의 목표는 모듈 간의 인터페이스를 확인하는 것이다.

즉, 모듈 상호 간에 잘 결합이 되었는지를 살펴본다.

 

3) 시스템 테스트

 

시스템 테스트(system test)의 목표는 모듈이 모두 통합된 후 사용자의 요구사항을 만족하는지 확인하는 것이다.

시스템 전체가 정상적으로 작동하는지를 살펴본다.

 

4) 인수 테스트

인수 테스트(acceptance test)는 시스템이 예상대로 동작하고 요구사항에 부합하는지 확인한다.

사용자에게 인수하기 전 요구분석 명세서에 명시된 사항을 모두 충족하는지 살펴본다.

이 테스트가 끝나면 사용자가 인수하겠다고 허락한 것이므로,

시스템을 사용자에게 정상적으로 인수한 후 프로젝트를 종료한다.

 

진화적 프로세스 모델

1) 등장 배경

이 프로세스 모델의 대표적인 방법은 프로토타입 모델이라 할 수 있다..

이 모델이 등장하게 된 배경은 폭포수 모델의 단점 중 하나 때문이다.

 

폭포수 모델의 가장 큰 단점 중 하나가 단계를 거슬러 올라가 작업하는 것이 쉽지 않은 구조라는 것이다.

그런데 현실은 새로운 요구(예를 들어 "총 쏘는 기능에 총 던지는 기능도 추가해 주세요")가 수시로 발생하기 때문에 이에 민첩하게 대응할 수 있는 방법이 필요하다. 그래서 나온 모델이 이 진화적 프로세스 모델이다.

 

2) 특징

1. 우선 초기의 사용자 요구에 따라 입출력 중심으로 초기 버전의 프로토 타입을 개발한다.

2. 그다음 사용자는 사용자 인터페이스 중심의 화면과 실행 후 나타나는 가상의 결과 화면을 본다.

3. 그런 다음 변경된 요구 사항을 반영하거나 추가해 2차 포로 토타 입을 만들어 사용자에게 보여준다.

 

이 3 작업을 반복하여 최종 제품을 완성한다.

 

표로 나타내면 아래와 같다.

개발자 초기 사용자 요구에 따른 포로토 타입 개발 - 입출력 중심
사용자 UI 중심의 화면과 실행 후 가상 결과 화면 확인
프로토타입 확인 후 요구사항 추가 및 변경
개발자 사용자 요구사항을 반영한 2차 프로토타입 개발

 

그런데 이쯤 하다 보면 프로토타입이 도대체 뭔지 궁금해진다.

그러니 프로토타입에 대해 알아보자.

 

프로토타입

일단 프로토타입의 사전적 의미는 대량 생산에 앞서 미리 제작해보는 원형 또는 시제품, 제작물의 모형이라 할 수 있다.

소프트웨어 개발에선 절차를 따른 완전한 소프트웨어를 만들기 전 사용자의 요구를 받아 모형을 만들고, 이 모형을 사용자와 의사소통하는 도구로 활용한다.

 

프로토타입의 대표적인 예로 아파트 모델하우스가 있다.

모델하우스를 통해 내부구조, 인테리어, 마감재 종류 등을 살펴보고 여러 가지 분양 정보를 받는다.

모델하우스처럼 프로토타입 모델은 중간중간 프로토타입을 눈으로 확인함으로써 앞으로 완성될 소프트웨어가 어떻게 작동될 것인지를 예상할 수 있게 한다.

 

이 프로토타입을 만드는 것을 프로토타이핑(prototyping)이라 한다.

위 진화적 프로세스 모델의 방법이 프로토타이핑이며, 이 과정은 사용자가 만족할 때까지 여러 번 반복한다.

이렇게 사용자의 최종 요구를 반영한 완성품을 만드는 개발 방법이 프로토타입 방법이다.

 

프로토타입 모델은 사용자의 요구가 불투명하고, 요구 사항의 변화가 계속 많이 발생하는 경우에 적합하다.

또한 비용이 많이 필요한 대규모 시스템이나 새로운 혁신 기술을 사용할 경우 개발 전에 프로토타이핑을 통해 실형 가능성을 타진해볼 수 있다.

 

프로토타입 모델의 개발 생명주기

위 사진과 같이 요구사항 정의 및 분석을 한 뒤 프로토타입 모델을 개발하고, 완성된 것을 바탕으로 완성품을 설계한 뒤 구현을 한다.

 

이 프로토타입 모델은 최종 프로토타입을 어떻게 활용하느냐에 따라 두 가지 형태로 나눌 수 있다.

하나는 최종 프로토타입을 버리고 처음부터 새로 소프트웨어를 개발하는 실험적 프로토타입 모델이고,

다른 하나는 최종 프로토타입을 버리지 않고 지속적으로 발전시켜 개발해 가는 진화적 프로토타입 모델이다.

 

실험적 프로토타입 모델

이 모델은 일반적으로 말하는 프로토타입 모델이다.

사용자의 요구사항을 반복적으로 반영하여 최종 프로토타입을 만드는 데 목적이 있다.

즉 사용자의 요구를 충분히 알아내기 위해 사용자와 대화하는 도구로 프로토타입을 사용한다는 소리이다.

그리고 최종 프로토타입을 통해 결정된 요구를 가지고 다시 처음부터 제품을 만든다. (최종 프로토타입을 안 쓴다는 얘기)

 

 

 

진화적 프로토타입 모델

이 모델에서는 사용자의 요구를 충분히 반영하여 구현된 프로토타입을 버리지 않고 지속적으로 개선-보완하여 최종 시스템으로 완성시키는 모델이다.

대표적인 유형은 나선형 모델이다.

나선형 모델은 다음 포스팅에서 다룰 모델이다.

개발 절차

1) 요구 사항 정의 및 분석

이 부분은 폭포수 모델의 요구분석 단계와 유사하다.

차이점이 있다면 폭포수 모델에서는 요구 사항 정의를 완전하게 명세한 후 다음 단계로 넘어가지만,

프로토타입 모델에서는 1차로 개략적인 요구 사항을 정의한 후 2차, 3차.... n차를 반복하면서 프로토타입의 완성도를 높여 최종 프로토타입을 개발한다.

 

2) 프로토타입 설계

폭포수 모델은 요구 사항 정의와 분석이 완전히 끝난 상태에서 설계에 들어가지만,

프로토타입 모델의 설계에서는 사용자와 대화할 수 있는 수준으로 설계한다.

 

따라서 동작이 가능하도록 최종 코딩을 할 수 있는 설계가 아니라,

입력 화면과 출력 화면을 통해 사용자가 만들어질 시스템이 어떻게 수행되는지 파악할 수 있도록 사용자 인터페이스를 중심으로 설계한다.

 

3) 프로토타입 개발

내부적으로는 실제로 수행되는 것이 아니고, 입력 화면을 통해 사용자가 요구하는 항목이 빠지지 않고 입력되는지 확인하고, 출력 결과가 사용자가 원하는 것인지 보여주는데 목적이 있다.

완전한 실행 여부, 개발된 제품의 신뢰도, 품질 등은 나중으로 미루고 RAD(Rapid Application Development) 같은 도구를 이용해 빠르게 실행한다.

 

4) 사용자에 의한 프로토타입 평가

이 부분은 프로토타입 모델에서 매우 중요한 부분이다.

 

사용자는 1차로 개발된 프로토타입을 보며 요구 사항이 충실히 반영되었는지 확인한다.

사용자는 확인이 끝나면 추가 및 수정 요구 사항을 전달하고, 개발자는 이를 반영하여 2차 설계를 한 뒤 2차 프로토타입을 개발한다.

 

이 같은 과정을 n번 반복하여 사용자의 추가 요구 사항이 더 이상 없을 때 최종 프로토타입이 만들어진다.

 

5) 구현

앞서 설명한 것처럼 이 완성된 프로토타입을 가지고 어떻게 사용하는가에 따라 모델이 달라진다.

이 최종 프로토타입을 버릴지, 확장하며 지속적으로 개발하여 완제품을 만들지에 따라 실험적 프로토타입 모델로 갈지 진화적 프로토타입 모델로 갈지 정해진다.

 

이에 따라 소프트웨어 개발 계획이 달라진다. (위 각 모델의 사진 참고)

 

이제 이 프로토타입 모델의 장점과 단점에 대해 알아보자.

(진화적 프로세스 모델도 프로토타입 모델의 개발 방법을 쓰기 때문에 장점과 단점이 같음)

 

프로토타입(진화적 프로세스) 모델의 장점과 단점

1) 장점

  1. 반복적인 추가 및 수정 요구가 즉시 반영된다.
  2. 완성 제품을 대폭 수정해야 하는 대형 사고를 막을 수 있다.
  3. prototype을 고객과의 의사소통 도구로 활용할 수 있다.
  4. 사용자가 만족하는 최종 완제품을 만들 수 있다.

 

2) 단점

  1. 반복적인 개발단계로 인해 투입인력과 비용 산정이 어렵다.
  2. 개발자 입장에서는 프로토타이핑 관리/통제가 어렵다.
  3. 프로토타입에 따른 추가 비용이 들 수 있다.
  4. 개발 범위가 명확하지 않아 개발 종료나 개발될 소프트웨어의 목표가 불명확해질 수 있다.

 

이렇게 오늘은 V 모델, 진화적 프로세스 모델(프로토타입 모델)에 대해 알아보았다.

반응형