나선형 모델
Boehm이 제안한 나선형 (spiral model) 모델은 위험 관리를 위한 독특한 프로세스이다. 아래 그림에 나타낸 것처럼 모델의 작업이 복수의 주기를 가진 나사와 같이 구성되어 있다. 반복되는 나선형의 각 주기는 목표를 설정하는 일부터 시작한다. 또한 목표를 성취하기 위한 다른 방안과 존재하는 제약 사항을 파악한다. 다음은 여러 대안들을 저울질하고 평가해 본다. 평가의 초 점은 프로젝트의 위험이라는 개념이다. 다음 단계는 문제와 위험을 해결하는 전략을 개발하는데 벤치마킹, 시뮬레이션, 프로토타이핑과 같은 방법을 이용한다. 그 후에 소프트웨어를 개발하고 다음 단계를 계획한다.
나선형 모델의 중요한 특징은 개발을 위한 계획 및 요구분석 후에 위험 요 소와 차선책에 대하여 검토하는 단계가 있다는 점이다. 프로젝트의 초기에 실패 요인과 위험 요소들에 찾아내어 대비하자는 철학이 담겨 있다. 결국 소프트웨어 개발 프로세스를 위험 관리(risk management) 측면에서 보았다.
나선형 모델을 그림으로 나타내면 반복적으로 앞으로 나가는 나사 모양이 된다. 즉, 계획, 설계, 개발, 평가의 개발 주기가 한 번에 그치는 것이 아니라 시스템을 여러 부분으로 나누어 여러 번의 개발 주기를 거치면서 시스템이 완성된다. 이론적으로는 외부 나선 주기가 위험이 적은데 그 이유는 반복 과정을 거치면서 시스템이 더욱 구체화하고 이해되었기 때문이다. 시스템을 이루는 여러 기능 중에 성패를 좌우할 만한 기능(critical success features)들을 먼 저 개발하고 다른 기능들을 후에 추가해 나가는 점증적인 방법이다.
나선형 모델은 위 그림과 같으며 각 진화 단계마다 실시되는 작업 내용 은 다음과 같다.
- 계획 수립: 목표, 기능 선택, 제약 조건의 결정
- 위험 분석: 기능 선택의 우선 순위, 위험 요소의 분석
- 개발: 선택된 기능의 개발
- 평가: 개발 결과의 평가
나선형 모델은 대규모 시스템의 소프트웨어를 개발하는 데 가장 적합한 방법으로 평가받고 있다. 특히 이 방법은 개발자나 사용자가 각 확장 단계에서 발생할 위험에 대한 이해와 대책이 가능하다. 따라서 프로젝트가 실패로 끝날 수 있는 위험을 사전에 막는(risk reduction mechanism) 방법이 된다.
나선형 모델은 비 선형적이며 반복적으로 개발이 진행되므로 소프트웨어 품질 중 강인성을 높일 수 있는 방법이 된다. 한 사이클이 끝난 후 포함되지 못한 요구 사항을 다음 단계의 개발을 위한 요구 사항으로 첨가할 수 있다. 이것이 소프트웨어의 강인성이며 계속된 개선에 의하여 정확성을 획득할 수가 있다.
반면에 점증적으로 시스템을 개발할 때 얼마나 관리를 잘 할 것인가가 중요 하다. 초기에 위험 분석을 잘못하여 위험 요소가 발견되지 못하고 계속 진행된다면 큰 비용을 투입하고 실패로 끝날 수도 있다. 나선형 모형은 상대적으로 새로운 모형이므로 신중하게 적용할 필요가 있다.
나선형 방법은 재정적으로 혹은 기술적으로 위험 부담이 큰 경우 위험 분석(risk analysis)을 해 나가면서 시스템을 발전시켜 나가자는 취지의 모형이다. 즉 요구사항이나 아키텍처를 이해하기 어렵다거나 근본적으로 성능에 문제가 있거나 중심 되는 기술에 문제가 있는 경우 나선형 모델이 적합하다. 프로젝트가 실패로 끝날 수 있는 위험을 최소화하기 위하여 프로토타입을 작성하거나 차선책을 대비하여 가능성을 타진한다. 예를 들어 사용자가 어떤 인터페이스를 선호할지 확신이 서지 않는다면 인터페이스 선택 위험을 줄이기 위하여 여러 가지 인터페이스 방안을 만들고 프로토타입을 이용하여 평가해 본다.
V 모델
V 모델은 폭포수 모델에 시스템 검증과 테스트 작업을 강조한 것이다. Perry [Perry, 2000]에 의하여 제안된 것으로 세부적인 테스팅 프로세스로 구성되어 신뢰도 높은 시스템을 개발하는데 효과적인 것으로 알려져 있다. 위 그림에 표현된 것처럼 코딩을 중심으로 각 단계가 V자 모양의 대칭을 이루고 있다.
V 모델은 개발 작업과 검증 작업 사이의 관계를 명확히 들어내 놓은 폭포수 모델의 변형이라 할 수 있다. V 모델을 추상화 수준으로 나눈다면 요구 분석에서 구현까지의 작업은 상세화 하는 과정이며 구현에서 인수 설치까지는 시스템의 검증에 초점을 둔 작업이다. V 모델의 최상위 추상은 요구의 추출 과 운영을 다루고 있고 중간층은 문제의 이해를 소프트웨어 구조로 매핑하는 추상화에 집중하고 있다. 하위층은 모듈의 조립과 코딩에 초점을 두고 있다. 모듈에 대한 설계는 단위 테스팅 과정에서 검증하고 시스템 설계는 통합 테스트 단계에, 사용자의 요구는 시스템 테스팅 과정에 검증한다. V자 모양 사이를 점선으로 연결한 의미는 각 테스트 단계에서 오류를 발견하였을 때 왼편의 요구분석, 설계, 코딩 단계로 되돌아 갈 수 있음을 의미한다.
V 모델은 폭포수 모형에서는 감추어져 있는 반복과 재작업을 드러내 놓은 것이라 할 수 있다. 폭포수 모형은 문서와 결과물에 중점을 두는 반면 V 모델 은 작업과 결과의 검증에 초점을 두고 있다.
V 모델의 장점은 모든 단계에 검증과 확인 과정이 있어 오류를 줄일 수 있다는 것이다. 따라서 무엇보다도 높은 신뢰성이 필요한 응용 분야, 예를 들면 의료 제어 시스템이나 원전 제어 시스템의 개발 같은 곳에 적합하다.
V 모델의 단점은 생명주기의 반복을 허용하지 않아 변경을 다루기가 쉽지 않다는 점이다. 또한 작업이 종료되고 리뷰 후에는 관련된 결과물이 동결된다는 점이다. 이런 이상적인 모델은 요구의 명세가 아주 확실하여 개발하는 동 안 변경이 없는 경우에만 적합하다. 그러나 현실적으로 시스템 개발은 많은 변경이 필요하며 결과물을 동결하고 시험하여 단번에 릴리스 하는 방법은 변경을 다루기 어려운 점이 있다.
참고자료 출처 : 새로쓴 소프트웨어 공학 (저자 : 최은만)