[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 feature와
child 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) 끝 } |





댓글
댓글 쓰기