187. 소프트웨어 제품 라인 (SPL) 요구사항 가변성(Variability) 분석

핵심 인사이트: 자동차 회사가 소나타, 그랜저, 제네시스를 만들 때 엔진과 뼈대는 '공유(공통성)'하고, 내비게이션이나 가죽 시트 옵션만 '선택(가변성)'하듯, 소프트웨어도 핵심 코어(Core)는 하나로 찍어내고 고객 입맛에 따라 옵션만 바꿔 끼우는 거대한 생산 공장이 바로 SPL이다.

Ⅰ. 소프트웨어 제품 라인(Software Product Line, SPL)의 개념

유사한 특성을 가진 여러 소프트웨어 제품들을 개발할 때, 공통된 자산(Core Assets, 프레임워크/아키텍처) 을 미리 구축해 두고, 개별 제품의 요구사항에 맞춰 가변적인 요소(Variability) 만 조립하거나 수정하여 제품을 대량 생산(Mass Customization)하는 소프트웨어 공학 기법입니다.

Ⅱ. SPL의 2가지 핵심 활동 (투 트랙 모델)

SPL은 공장(플랫폼)을 짓는 일과, 그 공장에서 물건을 찍어내는 두 가지 활동으로 나뉩니다.

  1. 도메인 공학 (Domain Engineering): 공장 짓기 (Core Asset 개발)
    • 해당 도메인(예: 스마트폰 OS, 내비게이션 앱)의 시장을 분석하여 모든 제품에 들어갈 공통성(Commonality) 과 제품마다 달라질 가변성(Variability) 을 식별합니다.
    • 이를 바탕으로 재사용 가능한 핵심 아키텍처와 코어 자산을 튼튼하게 구축합니다.
  2. 응용 공학 (Application Engineering): 제품 찍어내기 (Product 개발)
    • 도메인 공학에서 만들어둔 핵심 자산을 가져와, A고객사나 B모델에 필요한 특정 가변성(옵션)을 결합하여 실제 최종 소프트웨어 제품을 빠르게 조립해 냅니다.

Ⅲ. 공통성(Commonality)과 가변성(Variability) 요구사항

요구공학 단계에서 가장 중요한 것은 무엇이 똑같고(공통), 무엇이 다를 수 있는지(가변) 를 명확히 갈라내는 것입니다.

구분설명스마트 TV 제품 라인 예시
공통성 (Commonality)제품 라인 내의 모든 제품이 반드시 가져야 하는 공통 요구사항입니다.전원 On/Off 기능, 채널 탐색, 볼륨 조절 기능
가변성 (Variability)제품군에 따라 선택적(Optional), 대안적(Alternative) 으로 존재할 수 있는 요구사항입니다.4K 해상도 지원 여부(Optional), 넷플릭스 앱 사전 탑재 여부(Alternative)

Ⅳ. SPL의 장점과 한계

  • 장점: 획기적인 개발 시간(Time-to-Market) 단축, 코어 자산의 반복 재사용을 통한 막대한 개발 비용 절감 및 품질(버그 최소화) 향상.
  • 한계: 처음 핵심 자산(공장)을 구축하는 초기 투자 비용(ROI)이 매우 큽니다. 제품군이 3개 미만이거나 요구사항 변동이 너무 잦은 스타트업 환경에는 부적합합니다.

📢 섹션 요약 비유: 서브웨이 샌드위치 가게입니다. '빵 굽고 고기 넣는 기본 과정(도메인 공학/공통성)'은 본사에서 미리 매뉴얼로 다 만들어 둡니다. 그리고 손님이 올 때마다 "할라피뇨 넣을까요? 치즈는 뭘로 할까요?(응용 공학/가변성)" 옵션만 선택하게 해서 1분 만에 완벽한 맞춤형 샌드위치를 찍어내는 공장식 주문 시스템입니다.