본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

피처 모델(Feature Model, 특성 모델)은 소프트웨어 제품 계열에 속한 제품들이 가질 수 있는 기능(피처)과 그 사이의 필수·선택·택일 관계를 트리 모양의 피처 다이어그램으로 나타내, 만들 수 있는 모든 제품 구성을 한눈에 보여 주는 가변성 모델이다.

피처는 사용자가 알아볼 수 있는 시스템의 특성이나 기능 단위이고, 하나의 구체적인 제품은 올바른 피처 선택(valid feature selection) 하나에 해당한다. 피처 모델은 제품 계열의 공통성과 가변성을 피처 단위로 정리해, 어떤 제품을 만들 수 있고 어떤 조합은 안 되는지를 나타낸다.[1]

피처 모델은 1990년 미국 카네기멜런대 소프트웨어공학연구소(SEI)의 강교철(K. C. Kang) 등이 발표한 FODA(Feature-Oriented Domain Analysis, 피처 지향 도메인 분석) 방법에서 처음 소개되었다.[2][3] 제품 계열 방법론의 영역공학 단계에서 공통성과 가변성을 분석한 결과를 담는 대표 산출물이다.

피처 다이어그램 표기

편집 원본 편집

루트는 제품(또는 시스템) 자체이고, 아래로 갈수록 세부 피처가 된다. 부모와 자식 사이의 관계는 다음 네 가지로 표기한다.[2][1]

관계 표기 뜻 논리식
필수(Mandatory) 자식 쪽 끝에 속이 찬 원 부모가 선택되면 자식도 반드시 선택된다 자식 ⇔ 부모
선택(Optional) 자식 쪽 끝에 속이 빈 원 부모가 선택되어도 자식은 넣을 수도 뺄 수도 있다. 자식은 부모가 있을 때만 들어간다 자식 ⇒ 부모
택일(Alternative, XOR) 자식들로 가는 선을 속이 빈 호로 묶음 부모가 선택되면 자식 가운데 정확히 하나를 고른다 자식들 중 하나 ⇔ 부모, 자식끼리는 동시에 참일 수 없다
OR 자식들로 가는 선을 속이 찬 호로 묶음 부모가 선택되면 자식 가운데 하나 이상을 고른다 (자식1 ∨ … ∨ 자식n) ⇔ 부모

트리 구조로 다 나타낼 수 없는 제약은 교차 트리 제약(cross-tree constraint)으로 따로 적는다. 'A 를 고르면 B 도 필요하다'(requires, A ⇒ B), 'A 와 B 는 함께 고를 수 없다'(excludes) 같은 것이다. 피처 모델 전체를 하나의 명제 논리식으로 바꾸면, 어떤 선택이 올바른지, 결코 선택될 수 없는 피처가 있는지, 만들 수 있는 제품이 몇 가지인지를 도구로 분석할 수 있다.[1]

조건부 컴파일과의 대응

편집 원본 편집

C 언어의 #if defined(...) 같은 전처리기 조건부 컴파일은 피처를 코드에 구현하는 흔한 방법이라, 코드의 조건 구조를 피처 다이어그램으로 옮겨 읽을 수 있다.

void f(int x) {
    printf("%d\n", x);
#if defined(Feature1)
    g1(x);
#if defined(Feature2)
    g2(x);
#else
    g3(x);
#endif
#endif
}
  • f 의 printf 는 조건 없이 늘 실행된다. f 가 루트 피처다
  • g1 은 Feature1 이 정의될 때만 들어간다. f 아래의 선택 피처(속이 빈 원)다
  • g1 이 들어간 경우에만 Feature2 를 따지고, 그때 g2 와 g3 중 정확히 하나가 들어간다(#if 와 #else). g1 아래 g2·g3 는 택일(속이 빈 호)이다
  • g2 와 g3 는 g1 안쪽에 중첩되어 있으므로 f 아래가 아니라 g1 아래에 붙는다

g1 을 필수(속이 찬 원)로 그리면 Feature1 이 없는 제품을 나타낼 수 없고, g2·g3 를 OR(속이 찬 호)로 그리면 둘을 함께 넣은 제품도 허용하게 되어 #else 의 뜻과 어긋난다.

표기 구별하기

편집 원본 편집
헷갈리는 쌍 구별
속이 찬 원 / 속이 빈 원 찬 원은 필수, 빈 원은 선택. 원은 하나의 부모-자식 선에 붙는다
속이 빈 호 / 속이 찬 호 빈 호는 택일(정확히 하나), 찬 호는 OR(하나 이상). 호는 여러 자식 선을 묶는 그룹 표기다
피처 모델 / 클래스 다이어그램 피처 모델은 제품 구성의 가능성(가변성)을, 클래스 다이어그램은 한 시스템의 정적 구조를 나타낸다
  1. ↑ 1.0 1.1 1.2 Gregory Gay, 「Lecture 3: Feature Models」 TDA594 Software Engineering Principles for Complex Systems 강의 자료, Chalmers University of Technology, 2022, https://greg4cr.github.io/courses/fall22tda594/Lectures/Fall-22-Lecture3-FeatureModels.pdf, 확인일: 2026-11-05.
  2. ↑ 2.0 2.1 Eduardo Figueiredo, 「Feature Modeling」 강의 자료, DCC/UFMG, https://homepages.dcc.ufmg.br/~figueiredo/disciplinas/lectures/feature-modeling_v01.pdf, 확인일: 2026-11-05.
  3. ↑ K. C. Kang 외, 「Feature-Oriented Domain Analysis (FODA) Feasibility Study」, Technical Report CMU/SEI-90-TR-021, Software Engineering Institute, Carnegie Mellon University, 1990.