정보시스템감리사/기출문제_21년_22회

43_feature_diagram_이해

론리나잇 2025. 4. 17. 01:43

 

 

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에서의 OptionalMandatory 구분

1. Mandatory Feature (필수 기능)

  • 필수 기능은 부모 기능이 선택되면 반드시 선택되어야 하는 기능을 의미합니다.
  • 부모가 선택되면 자식 기능이 반드시 포함됩니다.
  • 검정색 원(채워진 원)으로 표시됩니다.

2. Optional Feature (선택적 기능)

  • 선택적 기능은 부모 기능이 선택되었을 때 선택할 수도 있고 선택하지 않을 수도 있는 기능입니다.
  • 부모가 선택되더라도 자식 기능은 선택하지 않아도 됩니다.
  • 하얀색 원(빈 원)으로 표시됩니다.

3. Feature Diagram에서 원 색의 의미

  • 검정색 원 (Filled Circle): 필수 기능을 나타냅니다. 부모 기능이 선택되면 자식 기능도 반드시 선택되어야 합니다.
  • 하얀색 원 (Empty Circle): 선택적 기능을 나타냅니다. 부모 기능이 선택되었을 때 자식 기능을 선택할지 말지는 선택 사항입니다.

 

 

 

 

 

 

결론

  • 검정색 원 필수 기능(Mandatory)을 나타내고, 하얀색 원 선택적 기능(Optional)을 나타냅니다.
  • 문제에서 정답이 ④번인 이유는 이 구조가 필수 기능과 선택적 기능의 관계를 정확히 반영하고 있기 때문입니다.