장발의 개발러

소프트웨어 프로덕트 라인 (Software Product Lines) 본문

대학원/소프트웨어공학

소프트웨어 프로덕트 라인 (Software Product Lines)

장발의 개발러 2009. 5. 4. 16:45

****************************
 작성일: 2009.05.04(월)    
 작성자: Myung-Ju.Kim      
 블로그: imover.tistory.com
****************************

■ 내가 이해하고 있는 Software Product Lines

Software Product Lines(이하 SPL)는 Components Based Development(이하 CBD)와 같은 기존의 소프트웨어재사용 보다 큰 수준에서의 재사용을 의미 합니다. 여기서 말하는 큰 수준에서의 재사용이라 함은 그 범위가 컴포넌트, 모듈, 알고리즘 수준을 넘어 도메인모델(Domain model), 요구사항(Requirements), 아키텍처(Architecture), 컴포넌트(Components), 테스트케이스(Test cases), 퍼포먼스모델(Performance model)등과 같이 개발 시 많은 시간과 비용이 소모되는 산출물까지를 그 범위에 포함시킨다는 뜻입니다. SPL에서는 재사용의 대상이 되는 산출물들을 핵심자산(Core Assets)이라 부릅니다. 이러한 핵심자산은 제작되기 이전부터 가변성과 재사용성을 충분히 고려하여 신중하게 설계되어 제작 됩니다. 따라서 이러한 핵심자산을 재사용하여 새로운 소프트웨어를 만들게 되면 그렇지 않은 경우에 비해 보다 신속하고 정확하게 안정적인 소프트웨어를 만들어 낼 수 있으며, 그 결과 소프트웨어의 생산성과 품질 향상에 큰 이익을 가져올 수 있습니다.


■ 내가 생각하는 Software Product Lines 의 장점

휴대폰을 예로 들어 SPL의 장점을 설명해 보겠습니다. 휴대폰의 경우 아래와 같이 반드시 필요한 몇 가지의 기본 기능들이 있습니다.

 ● 전화를 걸고 받는 기능
 ● 액정을 통해 입출력에 대한 정보를 사용자에게 보여주는 기능
 ● 스피커를 통해 전화벨 또는 경고음을 울리는 기능
 ● 배터리를 이용해 전원을 충전하는 기능
 ● 전원을 켜거나 종료할 수 있는 기능

위와 같은 기본적인 기능들로만 이루어져 있는 휴대폰을 ‘A’라는 회사는 SPL에 기반하여 만들고 ‘B’라는 회사는 그렇게 하지 않았다면 각각의 완성된 휴대폰에 MP3기능과 카메라 기능이 추가된 새로운 제품을 개발해야 하는 상황이 주어졌을 때 A와B 둘 중 어느 쪽이 더 유리하게 개발할 수 있는지를 한번 살펴 보도록 하겠습니다.

A회사(SPL에 기반한 경우)
시장에서 MP3기능과 카메라 기능이 탑재된 휴대폰을 요구할 경우 기존 핵심자산안에 개발되어 있는 MP3기능과 카메라 기능을 휴대폰의 기본 기능과 조합하여 빠른 시간 안에 시장의 요구를 충족시킬 수 있는 신제품을 개발할 수 있습니다. (만약 휴대폰을 개발하는 회사에서 MP3기능과 카메라 기능 등의 핵심자산이 없을 경우 이러한 핵심자산을 보유하고 있는 회사와 전략적 제휴를 맺고 핵심자산을 공급받아 개발을 진행 할 수도 있습니다.)
이러한 개발이 가능한 이유는 휴대폰 자체의 아키텍처와 여러 기능들이 제작되기 이전부터 SPL에 기반하여 재사용성과 가변성을 충분히 고려하여 만들어졌기 때문입니다. 그리고 이렇게 만들어진 핵심자산은 이미 개별적인 테스트를 통해 안정성 또한 검증된 상태이기 때문에 신제품이 완성되었을 경우 그에 대한 안정성을 보장받을 수 있습니다. 이렇게 여러 가지의 핵심자산이 결합되어 생산된 신제품은 그 자체가 또 하나의 핵심자산이 되어 향후 다른 핵심자산과 결합되어 새로운 신제품으로 탄생될 수도 있으며, 모든 핵심자산은 시장의 변화와 고객의 요구에 신속하게 맞춰나가기 위해 지속적이고 체계적인 관리를 통해 계속해서 진화해 나갑니다.

B회사(SPL에 기반하지 않은 경우)
휴대폰의 아키텍처와 각각의 기능들이 처음부터 재사용성과 가변성을 고려하여 만들어지지 않았기 때문에 가장 기본이 되는 아키텍처부터 신제품에 맞게 새롭게 디자인하고 그에 맞춰 기본적인 기능들을 재개발한 후 MP3기능과 카메라 기능을 추가로 개발하여 제품에 적용 시켜야 합니다. 이처럼 SPL에 기반하지 않고 제품을 만들 경우 새로운 제품을 개발할 때 마다 이미 구현되어 있는 기능들을 반복해서 개발해야 하며 아키텍처 또한 매번 새롭게 디자인해야 하기 때문에 그에 따른 시간과 비용의 낭비가 많이 발생합니다. 물론 SPL에 비해 초기 개발 시간과 비용이 적게 든다는 장점은 있지만, 장기적인 관점으로 볼 때는 오히려 더 많은 시간과 비용이 듭니다.


이와 같이 SPL에 기반하여 제품을 개발할 경우 그렇지 않은 경우보다 초기 구축 시에는 많은 시간과 비용이 들어가긴 하지만 일단 한번 구축해 놓으면 효율적인 재사용을 통해 급변하는 시장 속에서 빠른 시간에 제한된 자원만으로 작은 비용을 들여 기능과 품질이 우수한 신제품을 개발할 수 있다는 큰 장점이 있습니다.