미래산업 ICT/IT과학·기술

프로토타입(Prototype) 이란?

Flying Gander 2016. 12. 22. 22:00

최근 장기 프로젝트를 진행하며, 사용하는 단어 중에 프로토타입(Prototype)제작 이란 단어를 많이 사용 하고 있다.

사실 오랜 기간 IT 업계에서 근무를 했었지만, 난 사용하지 않던 단어다 보니, 이해가 잘 되지 않아 찾아보니, 요구를 하는 고객과 그 요구를 충족시켜 주는 측간의 개발 단계에서의 초기 모델과 같은 의미로 사용됨을 알 수 있었다.

내용을 보다 보면, 프로토타입으로 사용된 코드는 가능성을 타진하는 것으로 품질, 코딩규치그 에러처리 등 규칙을 따르지 않기 때문에 "재사용"을 하지 말아야 한다는 내용들도 있지만, 자바스크립트의 경우는 재사용이 당연시 되어 있는 듯 싶다.

우선 프로토 타입의 정의 부터 찾아보자. 


 

[위키백과 정의]

프로토타입(prototype)은 원래의 형태 또는 전형적인 예, 기초 또는 표준이다. 시제품이 나오기 전의 제품의 원형으로 개발검증과 양산 검증을 거쳐야 시제품이 될 수 있다. 프로토타입은 '정보시스템의 미완성 버전 또는 중요한 기능들이 포함되어 있는 시스템의 초기모델'이다. 이 프로토타입은 사용자의 모든 요구사항이 정확하게 반영할 때까지 계속해서 개선/보완 된다. 실제로 많은 애플리케이션들이 지속적인 프로토타입의 확장과 보강을 통해 최종 설계가 승인된다.

프로토타입이라는 낱말은 원초적 형태라는 뜻의 그리스어 낱말 πρωτότυπον(프로토타이폰) 에서 왔다. 이는 원초적이라는 뜻의 πρωτότυπος(프로토타이포스)의 중간음에서 온 것으로, 더 들어가서 "최초의"라는 뜻의 πρῶτος(프로토스) "인상"이라는 뜻의 τύπος(타이포스) 에서 비롯된 것이다.[1]

 

프로토타이핑의 장단점[편집]

[장점]

·         프로토타이핑은 사용자 중심의 개발 방법이다. 프로토타이핑의 중요한 목적 중의 하나가 바로 최종사용자의 요구를 극대화하는 것이다.

·         개발시간을 줄일 수 있다. 전통적인 방법으로는 운영 가능한 시스템이 나오기까지 오랜 시간이 걸리지만 프로토타이핑은 비교적 빠른 기간 안에 사용자가 평가할 수 있을 만한 결과를 만들어낸다.

·         오류를 초기에 발견할 수 있다. 전통적인 방법으로는 시스템이 완성된 후에야 오류를 발견할 수 있다. 따라서 시스템 개발기간이 3년이라면 오류를 발견하기까지 적어도 3년의 시간이 소요될 수 있다. 그러나 프로토타이핑은 개발 초기단계에서 오류를 판별 할 수 있도록 해준다.

·         변경이 용이하다. 사용자나 관리자는 현재까지의 개발 진행된 프로토타입을 직접 운영함으로써 여러 가지 제안과 변경할 점을 파악할 수 있고, 이러한 사항들은 진행되고 있는 개발과정에 반영하게 된다.

 

[단점]

·         시스템의 유지보수에 필수적인 시스템의 문서화 과정이 지나치게 축소되거나 생략될 수 있다. 단기적으로 볼 때는 이런 문서화 과정이 지나치게 축소되거나 생략될 수 있다. 단기적으로 볼 때는 이런 문서들이 별로 도움이 되지 않을 수 있다. 그러나 시간이 흐름에 따라 시스템의 수정과 보수가 필요하게 될 때, 시스템에 관련된 문서가 없다면 유지보수에 불필요한 노력이 따른다.

·         최종적으로 시간과 비용이 훨씬 많이 들 수 있다. 프로토타이핑은 언제든지 변경이 용이하지만 이러한 시스템의 변경이 계속 될수록 시간과 비용은 많아지게 된다.

·         프로토타이핑으로 완성된 시스템은 컴퓨터 자원의 활용 측면에서 볼 때 효율적이지 못하다. 이 개발방법은 자원의 효율성보다는 사용자 요구에 의해 개발되기 때문에 저장장치, 파일시스템, 중앙처리장치 등 하드웨어나 주변기기의 효율성이 무시되기 쉽다. 그러나 최근 컴퓨터 관련 기기들의 성능은 좋아지는 반면 가격은 하락하면서 이 문제의 비중은 크게 감소되고 있다.




n JavaScript : 프로토타입(prototype) 이해

JavaScript는 클래스라는 개념이 없습니다. 그래서 기존의 객체를 복사하여(cloning) 새로운 객체를 생성하는 프로토타입 기반의 언어입니다. 프로토타입 기반 언어는 객체 원형인 프로토타입을 이용하여 새로운 객체를 만들어냅니다. 이렇게 생성된 객체 역시 또 다른 객체의 원형이 될 수 있습니다. 프로토타입은 객체를 확장하고 객체 지향적인 프로그래밍을 할 수 있게 해줍니다. 프로토타입은 크게 두 가지로 해석됩니다. 프로토타입 객체를 참조하는 prototype 속성과 객체 멤버인 proto 속성이 참조하는 숨은 링크가 있습니다. 이 둘의 차이점을 이해하기 위해서는 JavaScript 함수와 객체의 내부적인 구조를 이해 해야 합니다. 

 

n 프로토타입이란?

JavaScript에서 기본 데이터 타입을 제외한 모든 것이 객체입니다. 객체가 만들어지기 위해서는 자신을 만드는 데 사용된 원형인 프로토타입 객체를 이용하여 객체를 만듭니다. 이때 만들어진 객체 안에 __proto__ (비표준) 속성이 자신을 만들어낸 원형을 의미하는 프로토타입 객체를 참조하는 숨겨진 링크가 있습니다. 이 숨겨진 링크를 프로토타입이라고 정의합니다.

-Posted by Flying Gander-