요 근래 SPL(Software Product Line)에 대한 자료를 조사했는데, 이거 처음 접해보는 거라 그런지 개념이 잘 서지 않는다.
소프트웨어 공학 시간에 배웠을법한데 왜 기억이 나지 않지;; 뭐 재사용성 같은 기본적인 내용은 배웠지만 이런 방법론에 대해서는 배우지 않았던 것 같다.
자료를 찾는것도 좋지만 나름대로 생각을 정리해가면 볼 필요가 있을듯.
우선 SPL이란 굳이 한국말도 번역하자면 "소프트웨어 제품 계열"인데, 소프트웨어 제품에 대한 범위 분석을 통해서 제품군을 식별하여
-모든 제품에 공통으로 적용될 수 있는 부분과 (Core Asset, 공통자산 이라고 하는군)
-제품군 내의 각 제품을 위한 제품 개발
이 두 가지에 대한 방법을 말한다.
자동차에 대한 예로 이해하면 좀 쉽다.
현대자동차의 소나타는 기아자동차의 K5와 중형 플랫폼을 같이 쓰지만, 디자인을 차별화해서 제품을 만들어 판다. 기아가 디자이너 한명을 영입해서 엄청난 효과를 봤지만 ^^
이렇게 되면 Core Asset은 중형 플랫폼이 되겠지. 또 중형차에 올라가는 엔진 중 2.0 GDI의 경우 i40나 소나타나 공통으로 적용하여 사용할거고.. K5 GDI 터보는 좀 다를라나..
여튼.. 플랫폼, 엔진, 미션 같은 것들은 어느 자동차나 적용해서 공통으로 사용할 수 있기 때문에, 한번 잘 만들어 놓으면 두루두루 쓸 수 있다. 이렇게 되면 생산성 역시 더 좋아질거고, 검증된 부품을 공통으로 사용하기 때문에 신뢰도도 높아질거다.
물론 중대한 오류가 있으면 리콜에 대한 타격이 클테지만, 이 때문에 Core Asset에 대한 관리가 필요하다는 거다.
SPL에서도 Core Asset에 대한 관리와 이를 이용해 만든 제품 라인업의 관리를 따로 하는 것을 강조하고 있다.
위의 내용을 정리해보면, 우선 Core Asset을 만들고 실제 제품군에 이 Core Asset을 적용하여 여러 Product를 만들자는건데,
처음에 딱 와닿는건 컴포넌트 프로그래밍 또는 클래스의 재사용 정도의 얘기인 것 같다.
SPL이나 CBD(Component-Based Development)나 그게 그거인 거 같은데...;; 큰 차이점이 뭘까..
SPL 이 등장하게 된 배경을 좀 찾아보면, 우선 재사용 목표 달성에서 시작되지 않았을까 싶다.
하나 제대로 만들어 놓으면 여러 제품에서 두루두루 사용되니 비용도 절감된다. 문제가 발생하면 이를 보완해 향상된 제품을 만들 수 있으니 유지보수도 쉽고 퀄리티도 높아지게 된다.
또한 이렇게 되면 Time-To-Market(시장접근성) 에 유리한 위치에 설 수 있게 되므로 경쟁력이 생기겠지.
듣고보니 운전면허 필기시험처럼 다 알고 있는 상식이다.
결국 소프트웨어 공학적인 관점에서 생각해보면 적은 노력으로 높은 품질의 소프트웨어를 만들자는 것일텐데..
결과적으로 SPL은 CBD의 개념보다 더 큰 범주에 속한다.
일반적으로 S/W 컴포넌트 뿐만 아니라, SPL 안에서 관련된 제품들에 사용되는 모든 Artifact(S/W 산출물)를 재사용하자는 것이다.
시스템 개발 계획부터 해서 소프트웨어 아키텍처/컴포넌트/프로세스 모델, 문서 등 시스템 개발을 위해 유용하게 사용될 수 있는 모든 것이 SPL 내의 컴포넌트라고 할 수 있으며, 이 컴포넌트의 재사용 및 이를 이용한 제품 개발에 대한 방법이 SPL의 개념이다.
태그 : SPL, softwareproductline


최근 덧글