188. 피쳐 모델 (Feature Model) 가변성 트리
핵심 인사이트: 소프트웨어 제품 라인(SPL)에서 "이 옵션은 넣고, 저 옵션은 빼라"는 요구사항을 줄글로 쓰면 개발자가 헷갈린다. 피쳐 모델은 "A를 선택하면 B는 무조건 빠져야 해" 같은 옵션들의 복잡한 상관관계를 나뭇가지 모양(트리)으로 그려서 한눈에 보여주는 메뉴판 설계도다.
Ⅰ. 피쳐 모델(Feature Model)의 개념
피쳐 모델링은 소프트웨어 제품 라인 공학(SPLE)에서 특정 도메인의 제품군이 가질 수 있는 모든 특징(Feature, 기능)들과 그들 간의 논리적 관계(제약 조건)를 트리(Tree) 구조로 시각화하는 기법입니다. 이를 통해 새로운 제품을 조립(Application Engineering)할 때, 어떤 옵션을 선택할 수 있고 어떤 조합은 불가능한지 직관적으로 파악할 수 있습니다.
Ⅱ. 피쳐 모델의 트리 구조와 기호 (Feature Tree)
스마트폰 운영체제(OS)의 피쳐 모델을 예로 들어보겠습니다.
[ 스마트폰 OS (Root) ]
│
┌──────────────────┼───────────────────┐
│ │ │
(●)통화기능 (○)생체인증 (▲)카메라
(Mandatory) (Optional) (OR / XOR)
│ │
┌───┴───┐ ┌───┴───┐
│ │ │ │
(●)지문 (●)홍채 (△)일반 (△)망원
1. 관계 (Relationship) 기호
- Mandatory (● 꽉 찬 원): 필수 기능. 부모가 선택되면 반드시 100% 선택되어야 합니다. (예: 통화 기능)
- Optional (○ 빈 원): 선택 기능. 부모가 선택되더라도 이 기능은 뺄 수 있습니다. (예: 생체 인증 탑재 여부)
- OR (▲ 꽉 찬 부채꼴): 하위 기능 중 최소 1개 이상을 다중 선택할 수 있습니다. (예: 카메라는 일반 렌즈나 망원 렌즈 중 하나 이상은 무조건 달아야 함)
- Alternative / XOR (△ 빈 부채꼴): 하위 기능 중 오직 1개만 선택해야 합니다. (예: 배터리 타입은 일체형과 분리형 중 하나만 선택)
2. 교차 제약 조건 (Cross-Tree Constraints)
트리 구조만으로는 표현할 수 없는 기능 간의 제약 조건을 추가로 명시합니다.
- Requires (요구): 기능 A를 선택하면, 멀리 떨어진 기능 B도 반드시 선택해야 함. (예: '얼굴 인식'을 선택하면, 전면 '카메라' 기능이 필수)
- Excludes (배제): 기능 A를 선택하면, 기능 B는 절대 선택할 수 없음. (충돌 방지)
Ⅲ. 피쳐 모델의 활용 효과
- 자동화된 제품 구성(Configuration): 피쳐 모델을 툴(도구)에 입력해 두면, 영업 사원이 고객의 요구사항을 체크박스로 선택할 때 "그 조합은 기술적으로 불가능합니다(Excludes)"라고 즉시 에러를 띄워 줍니다.
- 가변성(Variability) 추적: 비즈니스 요구사항(피쳐 모델)이 설계(아키텍처)와 소스 코드(컴포넌트)로 어떻게 매핑되는지 추적성을 제공합니다.
📢 섹션 요약 비유: 서브웨이 주문서와 같습니다. '빵(●필수)'은 무조건 골라야 하고, '쿠키 세트(○선택)'는 안 골라도 되며, '야채(▲OR)'는 여러 개 팍팍 넣어도 되지만, '소스(△XOR)'는 너무 섞이면 맛없으니 2개 중 하나만 고르라는 규칙을 보기 좋게 그려놓은 주문 가이드입니다.