[2021년 정보시스템감리사][소프트웨어공학] 43번

43. 다음의 소스 코드와 관련성이 가장 깊은 feature diagram?

 

void f(int x) {

printf(“%d\n”, x);

#if defined(Feature1)

g1(x);

#if defined(Feature2)

g2(x);

#else

g3(x);

#endif

#endif

}



     











[해설]

feature diagram

 - SW product line의 모든 product을 간략히 표현하기 위한 방법 


parent featurechild feature와의 관계 표현

-      Mandatory : child feature is required. 부모가 실행되면 자식 feature가 실행되어야 함

-      Optional : child feature is optional. 부모가 실행되면 자식 feature가 실행될 수도 아닐 수 도 있음

-      Or : at least one of the sub-features must be selected. 하나가 선택될 수도, 모두 선택될 수도 있음

-      Alternative(xor) : one of the sub-features must be selected. 배타적으로 둘 중 하나만 선택

 

▣ 문제의 상황

-      C / C++에서 전처리문 : 실질적인 컴파일 이전에 미리 처리되는 문장

-      선행처리기라고도 하며, 컴파일러는 사용자가 작성한 코드를 컴파일하기 전에 전처리문에서 정의해 놓은 작업을 먼저 수행

-      주요 전처리문

  #include : 파일 처리

  #define, #undef : 형태 정의

  #if, #ifdef, #ifndef, #else, #elif, #endif : 조건 처리 

void f(int x) {

printf(“%d\n”, x);

#if defined(Feature1)         // Feature1이 정의되어 있다면, optional

g1(x);

#if defined(Feature2)    // Feature2가 정의되어 있다면, XOR

g2(x);

#else                        // Feature2가 정의되어 있지 않다면

g3(x);

#endif                      // #if defined(Feature2)

#endif                           // #if defined(Feature1)

}

 


댓글

이 블로그의 인기 게시물

영리목적의 마케팅 정보를 전송하기 위한 개인정보 처리 조치