본문 바로가기
IT★자격증/정보시스템감리사 기출문제 풀이

2023년 제 24회 정보시스템 감리사 기출문제 풀이 - 소프트웨어공학(26-30)

by 꼬모부 2023. 11. 26.
728x90

[오늘부터는 소프트웨어공학 기출문제 26-30를 풀어보겠습니다.]

 

문제 26

26. 다음 Sequence diagram의 동작에서 적용된 디자인 패턴으로 가장 적절한 것은?

 

① Iterator

② Strategy

③ State

④ Chain of Responsibility

 

출제의도

사용자입장에서는 뭔가를 처리 요청을 하는데, 그림은 어떤 패턴을 통해 처리하는지 이해

 

각 항목에 대해서 설명하면:

① Iterator 패턴 :

이 패턴은 객체의 집합 내의 개별 요소를 순회하는 방법을 제공합니다.

이 패턴을 사용하면, 클라이언트는 집합의 내부 표현에 대해 알 필요 없이 요소를 순회할 수 있습니다.

 

② Strategy(정책) 패턴 :

이 패턴은 알고리즘을 정의하고, 각각을 별도의 클래스로 캡슐화하여, 그들을 상호 교환 가능하게 만듭니다. 이 패턴을 사용하면 알고리즘을 독립적으로 변경하여 클라이언트에게 영향을 주지 않습니다.

여러 알고리즘 중(정렬)에서 하나를 선택하는데 동일한 목적, 동일목적을 이루지만 성격이 다른 알고리즘을 사용해서 결과를 도출할 수 있다.

 

③ State 패턴 :

이 패턴은 객체의 내부 상태가 변경될 때마다 객체의 행동을 변경합니다.

이 패턴을 사용하면, 객체는 내부 상태를 변경함으로써 클래스를 변경하는 것처럼 보입니다.

 

④ Chain of Responsibility 패턴 :

이 패턴은 요청을 처리할 수 있는 객체의 체인을 정의하고, 요청을 체인을 따라 전달하여 요청을 처리합니다.

이 패턴을 사용하면, 요청을 보내는 객체와 받는 객체를 분리할 수 있습니다.

사용자 요청이 여러개인데(다양한 기능을 모아놓고), 요청을 해결할 때까지 처리(다중 IF문)

 

따라서, 요구사항을 모아놓고, 처리 할 때까지 반복 ④번이 정답니다.

 

문제 27

27. 다음은 3개의 Condition과 2개의 Action으로 구성된 Decision Table이다.

다음과 같이 TC1, TC 2, TC3, TC4 4개의 테스트케이스를 사용하는 경우 커버리지는? 

 

TC1: X = -200, Y = 0 

TC2: X = 0, Y = 200

TC3: X = -100, Y = 150

TC4: X = -100, Y = 250

 

① 1 / 8

② 2 / 8

③ 3 / 8

④ 4 / 8

 

출제의도 

문제를 잘 이해하고, 값에 맞게 있는것을 고르는 문제입니다.

 

부연설명

c는 컨디션, a는 액션

Rule에 의해 8가지 결정을 내림

TC: Test Case(4가지)

c1: -100 < = x

c2: 150 < y

c3: x+y >= 150

a1

a2

 

따라서,  컨디션 값에 룰을 대입해서 풀면 됩니다.

c1: -100 <= -200 f, c2: 150 < 0 f, c3: -200+0 >= 150 f ---> f, f, f

c1: -100 <= 0 t, c2: 150 < 200 t, c3: 0+200 >= 150 t ---> t,t,t

c1: -100 <= -100 t, c2: 150 < 150 f, c3: -100 + 150 >= 150 f --> t,f,f

c1: -100 <= -100 t, c2: 150 < 250 t, c3: -100 + 250 >- 150 t --> t,t,t

 

따라서, f, f, f; / t, t, t / t, f, t 가 룰 1, 6, 8번에 있으므로 3/8 정답은 ③입니다.

 

문제 28

28. Robert C. Martin은 clean architecture를 설명하 면서 컴포넌트 결합도에 대한 3가지 원칙을 제시 하였다. 이에 대한 설명 중 가장 적절하지 않은 것은?

① 자신보다 재사용성이 높은 컴포넌트에 의존해야 한다.
② 컴포넌트간의 의존성에 사이클이 존재하지 않아야 한다.
③ 자신보다 안정적(stable)인 컴포넌트에 의존해야 한다.
④ 자신보다 추상화된 컴포넌트에 의존해야 한다. 

 

출제의도

Robert C. Martin이 제시한 컴포넌트 결합도에 대한 3가지 원칙은 다음과 같습니다:

Acyclic Dependencies Principle (ADP): 컴포넌트 간의 의존성에 사이클이 존재하지 않아야 합니다.

Stable Dependencies Principle (SDP): 컴포넌트는 자신보다 안정적인 컴포넌트에 의존해야 합니다.

Stable Abstractions Principle (SAP): 컴포넌트는 자신보다 추상화된 컴포넌트에 의존해야 합니다.

 

따라서, 이 원칙들을 고려하면, 각 선택지를 분석해 볼 수 있습니다:

① 자신보다 재사용성이 높은 컴포넌트에 의존해야 한다:

이 원칙은 Robert C. Martin의 원칙에 포함되지 않습니다. 재사용성은 중요한 요소이지만, 이것이 컴포넌트가 다른 컴포넌트에 의존해야 하는 주된 이유는 아닙니다.

 

② 컴포넌트 간의 의존성에 사이클이 존재하지 않아야 한다:

이 원칙은 ADP에 해당하며, 이는 컴포넌트 간의 의존성이 복잡해지는 것을 방지합니다.

 

③ 자신보다 안정적인 컴포넌트에 의존해야 한다:

이 원칙은 SDP에 해당하며, 이는 컴포넌트가 안정적인 동작을 유지할 수 있도록 합니다.

 

④ 자신보다 추상화된 컴포넌트에 의존해야 한다:

이 원칙은 SAP에 해당하며, 이는 컴포넌트가 변경에 대해 유연하게 대응할 수 있도록 합니다.

 

따라서, 가장 적절하지 않은 설명은 ① 자신보다 재사용성이 높은 컴포넌트에 의존해야 한다입니다.

 

문제 29

29. 다음 중 인공신경망을 테스팅 할 때 사용할 수 있는 커버리지로 가장 적절하지 않은 것은?

① Neuron coverage
② Layer coverage
③ Component coverage
④ Sign-sign coverage 

 

출제의도

인공신경망을 테스팅할 때 사용할 수 있는 커버리지에 대해 설명드리겠습니다:

① Neuron coverage(뉴런 커버리지): 이는 신경망의 각 뉴런이 활성화되는지 여부를 측정하는 방법입니다.

이 커버리지는 신경망의 각 뉴런이 최소한 한 번은 활성화되도록 하는 것을 목표로 합니다.

 

② Layer coverage (레이어 커버리지): 이는 신경망의 각 레이어가 활성화되는지 여부를 측정하는 방법입니다.

이 커버리지는 신경망의 각 레이어가 최소한 한 번은 활성화되도록 하는 것을 목표로 합니다.

 

③ Component coverage(컴포넌트 커버리지): 일반적인 소프트웨어 테스팅에서 사용되는 커버리지 측정 방법으로, 특정 컴포넌트(함수, 클래스 등)가 테스트 중에 실행되는지를 측정합니다.

이는 인공신경망의 테스팅에 직접적으로 적용되는 커버리지 측정 방법이 아닙니다.

 

④ Sign-sign coverage(사인-사인 커버리지): 이는 두 연속적인 레이어 사이의 뉴런 쌍에 대해 출력 값의 부호 변화를 측정하는 방법입니다. 이 커버리지는 신경망의 각 뉴런 쌍이 모든 가능한 부호 변화 조합을 경험하도록 하는 것을 목표로 합니다.

 

따라서, 인공신경망을 테스팅할 때 사용할 수 있는 커버리지로 가장 적절하지 않은 것은 ③ 컴포넌트 커버리지입니다.

 

문제 30

30. 다음 설명으로 가장 적절한 용어는?

악의적인 행위자가 시스템에 무단으로 진입하거나 악의적인 행동을 유발하는 데 사용될 수 있는 소프트웨어 아키텍처 및 소스 코드의 문제점을 말하 며, 최근 소프트웨어 시스템에 영향을 미치는 다른 심각한 약점을 수용하기 위해 보안을 넘어 그범위가 확장되고 있다.

① Common Weakness Enumeration
② Technical Debt
③ Bad Smells
④ Anti-patterns 

 

출제의도

각 용어의 정의와 그들이 어떻게 소프트웨어 개발과 관련이 있는지를 이해하는 능력을 검증하는 것으로 보입니다.

 

각 선택지에 대한 설명은 다음과 같습니다:

① Common Weakness Enumeration (CWE): 소프트웨어의 보안 약점을 분류하고 설명하는 체계적인 방법입니다.

이는 악의적인 행위자가 시스템에 무단으로 진입하거나 악의적인 행동을 유발하는 데 사용될 수 있는 소프트웨어 아키텍처 및 소스 코드의 문제점을 포함합니다. 최근에는 소프트웨어 시스템에 영향을 미치는 다른 심각한 약점을 수용하기 위해 그 범위가 확장되고 있습니다.

 

② Technical Debt: 이는 소프트웨어 개발에서 발생하는 '빚’을 의미하며, 단기적인 해결책을 선택함으로써 장기적인 비용이 증가하는 상황을 가리킵니다.

 

③ Bad Smells: 이는 소프트웨어 코드에서 발견되는 특정 패턴을 의미하며, 이러한 패턴은 코드의 잠재적인 문제를 나타낼 수 있습니다.

 

④ Anti-patterns: 이는 소프트웨어 개발에서 피해야 하는 설계 패턴을 의미합니다. 이러한 패턴은 종종 문제를 해결하기보다는 더 큰 문제를 초래할 수 있습니다.

 

따라서, 가장 적절한 용어는 ① Common Weakness Enumeration (CWE)입니다.

 

[다음 시간에는 소프트웨어공학 기출문제 (31-35까지 풀어보도록 하겠습니다.]

반응형
LIST