QA(Quality Assurance)/용어

프로토타입(Prototype)

whitejin0 2022. 1. 10. 13:33
반응형

프로토타입(prototype)의 사전적 의미는 대량 생산에 앞서 미리 제작해보는 원형 또는 시제품으로, 제작물의 모형이라 할 수 있다. 소프트웨어 개발에서는 정식 절차에 따라 완전한 소프트웨어를 만들기 전에 사용자의 요구를 받아 일단 모형을 만들고 이 모형을 사용자와 의사소통하는 도구로 활용한다.

프로토차입의 예 : 아파트 모델하우스

프로토타입의 대표적인 예가 아파트 모델하우스이다. 모델하우스를 통해 내부 구조, 인테리어, 마감재 종류를 살펴보고 이런저런 분양 정보를 얻는다. 아파트를 건축하는 데 약 2년 정도 걸린다고 할 때 모델하우스도 못 보고 계약했다가 입주할 때쯤 완성된 내부가 계약자가 생각한 것과 많이 다르다면 참 난감할 것이다.

 

대규모 소프트웨어도 마찬가지이다. 2년 정도 걸려 완성했는데 최종 제품이 사용자가 생각한 것과 많이 다르면 문제가 심각해질 수 있다. 아파트 모델하우스처럼 프로토타입 모델은 중간 중간 프로토타입을 눈으로 확인함으로써 앞으로 완성될 소프트웨어가 어떻게 작동될 것인지를 예상할 수 있게 한다.

 

모델을 만드는 것을 모델링이라고 하듯, 프로토타입을 만드는 것을 프로토타이핑(prototyping)이라 한다. 개발자는 사용자의 초기 요구 사항을 반영하여 1차 프로토타입을 만들고, 이것을 사용자에게 보여준다. 그러면 사용자는 1차 프로토타입을 보면서 추가 요구나 수정 요구를 하고, 개발자는 이런 요구 사항을 받아들여 2차 프로토타입을 만든다. 이것이 프로토타이핑이며, 이 과정을 사용자가 만족할 때까지 여러 번 반복하여 사용자의 최종 요구를 반영한 완성품을 만드는 개발 방식이 프로토타입 방법이다.

 

프로토타입 모델은 폭포수 모델을 기반으로 개발하면서 사용자의 요구를 충분히 반영하기 위해 [그림 2-10]처럼 프로토타입을 추가한 모델이다.

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

프로토타입 모델은 사용자의 요구가 불투명하고, 요구 사항의 변화가 계속 많이 발생하는 경우에 적합하다. 또한 비용이 많이 필요한 대규모 시스템이나 새로운 혁신 기술을 사용할 경우 개발 전에 프로토타이핑을 통해 실현 가능성을 타진해볼 수 있다.

프로토타입 모델은 최종 프로토타입을 어떻게 활용하느냐에 따라 두 가지 형태로 나눌 수 있다. 하나는 최종 프로토타입을 버리고 처음부터 새로 소프트웨어를 개발하는 실험적 프로토타입 모델이고, 다른 하나는 최종 프로토타입을 버리지 않고 지속적으로 발전시켜 개발해 가는 진화적 프로토타입 모델이다.

1. 실험적 프로토타입 모델

실험적(experimental) 프로토타입 모델은 일반적으로 말하는 프로토타입 모델이다. [그림 2-11]처럼 사용자의 요구 사항을 반복적으로 반영하여 최종 프로토타입을 만드는 데 목적이 있다. 즉 사용자의 요구를 충분히 알아내기 위해 사용자와 대화하는 도구로 프로토타입을 사용한다. 그리고 최종 프로토타입을 통해 결정된 사용자의 요구를 가지고 다시 처음부터 본격적으로 제품을 만든다.

따라서 최종 프로토타입은 더는 쓸모가 없다. 아파트 모델하우스의 개념과 같다. 아무리 잘 지은 모델하우스일지라도 전기, 난방, 수도 시설을 보완하여 완전한 집으로 만들어 살지는 않는다. 본보기집으로써의 목적만 달성하면 필요 없으므로 철거한다.

실험적 프로토타입 모델 절차

2. 진화적 프로토타입 모델

실제로 작동하지 않는 프로토타입도 만드는 과정에 비용과 시간이 많이 든다. 실험적 프로토타입 모델에서는 사용자의 요구를 충분히 반영한 최종 프로토타입을 만들어 사용한 뒤 버린다면, 진화적(evolutionary) 프로토타입 모델에서는 [그림 2-12]처럼 사용자의 요구를 충분히 반영하여 구현된 프로토타입을 버리지 않고 지속적으로 개선·보완하여 최종 시스템으로 완성시킨다. 대표적인 유형이 나중에 설명할 나선형 모델이다.

진화적 프로토타입 모델 절차

 

반응형

'QA(Quality Assurance) > 용어' 카테고리의 다른 글

선형 순차적 모델  (0) 2022.01.10
V 모델  (0) 2022.01.10
정적 분석  (0) 2021.12.21
소프트웨어 테스팅 종류  (0) 2021.12.13
기능 테스트 & 비기능 테스트  (0) 2021.12.13