void f(int x) {
printf(“%d\n”, x);
#if defined(Feature1)
g1(x);
#if defined(Feature2)
g2(x);
#else
g3(x);
#endif
#endif
}
코드 분석:
- Feature1이 정의되면 g1(x)가 실행됩니다.
- Feature2가 정의되면 g2(x)가 실행되며, 정의되지 않으면 g3(x)가 실행됩니다.
- 만약 Feature1이 정의되지 않으면, g1(x)와 관련된 코드 부분은 실행되지 않습니다.
각 보기 분석:
- ①
- g1(x)가 실행되고, 그 후 g2(x) 또는 g3(x)가 실행된다고 설명합니다.
- 코드에서 Feature1이 정의되어야만 g1(x)가 실행되므로, g1(x)가 항상 실행되지는 않습니다.
- 따라서 이 보기는 코드 흐름과 일치하지 않습니다.
- ②
- f와 g1이 실행되고, 그 이후 g2와 g3가 별개로 실행되는 구조입니다.
- Feature2의 정의 여부와 관계없이 g2(x)와 g3가 독립적으로 실행되는데, 이는 코드 흐름과 맞지 않습니다.
- ③
- f와 g1이 실행되고, Feature2와 관계없이 g2와 g3가 다른 분기점에서 실행됩니다.
- 코드와 일치하지 않는 부분이므로 맞지 않습니다.
- ④
- g1(x)가 실행된 후 Feature2의 정의 여부에 따라 g2(x) 또는 g3(x)가 실행되는 구조입니다.
- 이 보기는 코드의 흐름과 정확히 일치합니다. Feature1이 정의되어 있으면 g1(x)가 실행되고, 그 후 Feature2에 따라 g2(x) 또는 g3(x)가 실행됩니다.
정답:
정답은 ④번입니다.
g1(x)이 실행되고, 그 후 Feature2가 정의되었으면 g2(x)가 실행되며, 정의되지 않으면 g3(x)가 실행됩니다. 이 구조가 코드의 흐름과 일치합니다.
Feature Diagram에서의 Optional과 Mandatory 구분
1. Mandatory Feature (필수 기능)
- 필수 기능은 부모 기능이 선택되면 반드시 선택되어야 하는 기능을 의미합니다.
- 부모가 선택되면 자식 기능이 반드시 포함됩니다.
- 검정색 원(채워진 원)으로 표시됩니다.
2. Optional Feature (선택적 기능)
- 선택적 기능은 부모 기능이 선택되었을 때 선택할 수도 있고 선택하지 않을 수도 있는 기능입니다.
- 부모가 선택되더라도 자식 기능은 선택하지 않아도 됩니다.
- 하얀색 원(빈 원)으로 표시됩니다.
3. Feature Diagram에서 원 색의 의미
- 검정색 원 (Filled Circle): 필수 기능을 나타냅니다. 부모 기능이 선택되면 자식 기능도 반드시 선택되어야 합니다.
- 하얀색 원 (Empty Circle): 선택적 기능을 나타냅니다. 부모 기능이 선택되었을 때 자식 기능을 선택할지 말지는 선택 사항입니다.
결론
- 검정색 원은 필수 기능(Mandatory)을 나타내고, 하얀색 원은 선택적 기능(Optional)을 나타냅니다.
- 문제에서 정답이 ④번인 이유는 이 구조가 필수 기능과 선택적 기능의 관계를 정확히 반영하고 있기 때문입니다.
'정보시스템감리사 > 기출문제_21년_22회' 카테고리의 다른 글
83_RAID디스크용량산정 (0) | 2025.04.19 |
---|---|
44_조합 테스트 기법 (1) | 2025.04.17 |
38_익스트림프로그래밍_이해 (0) | 2025.04.17 |
37_요구사항 도출 기법 (1) | 2025.04.17 |
36_응집도(cohesion)_구분하기 (0) | 2025.04.17 |