정보시스템감리 기출문제/소프트웨어 공학

(제 20회) 소프트웨어 공학 / (26)~(50)

아이티신비 2024. 1. 5. 09:30

26. 품질 속성 시나리오(quality attribute scenario)는 품질 속성에 대한 요구사항을 명확하게 기술하는 대표적인 방식이다. 다음 중에서 품질 속성 시나리오를 구성하는 항목과 가장 거리가 것은?

 

① stimulus response를 유발하기 위한 stimulus를 명시한다.

② response stimulus에 대하여 요구되는 결과를 명시한다.

③ artifact stimulus의 대상으로서 response를 산출하는 대상을 명시한다.

④ stakeholder 해당 품질속성과 밀접한 관련이 있는 이해관계자를 명시한다.

 

27. 동일한 입력에 대해서 엘리베이터 제어 시스템은 내부 상황에 따라서 다른 동작을 보인다. 예를 들어 “open door” 버튼이 선택된 경우, 엘리베이터가 이동 중이면 무시하여야 하고, 정지 중이면서 문이 닫혀있거나 닫히는 중인 경우에만 문을 열어야 한다. 이와 같은 동작 특성을 가지는 시스템을 테스트할 때의 테스트 설계 기법으로 가장

적절한 기법은?

 

① 분기(branch) 테스팅

② 경계값 분석(boundary value analysis) 테스팅

③ 상태 전이(state transition) 테스팅

④ 결정표(decision table) 테스팅

 

28. 다음의 설명에 가장 적절한 개념은 무엇인가?

낮은 품질의 소프트웨어가 결국은 미래에 사용자의 니즈를 충족시키는 것을 지연시킨다.
비즈니스 이해관계자 및 경영진과 소프트웨어 품질에 대한 의사 소통시 유용한 비유이다.

① bad smell

② technical debt

③ quality cost

④ software entropy

 

29. 다음 클래스 다이어그램은 주문처리 기능에 대한 설계를 보여 준다. 이 클래스 다이어그램에 적용된 설계 원칙으로서 가장 적절한 것은?

① SRP(Single Responsibility Principle)

② ISP(Interface Segregation Principle)

③ DIP(Dependency Inversion Principle)

④ LSP(Liskov Substitution Principle)

 

30. 다음 유스케이스 다이어그램은 도서관 시스템에 대한 간략한 기능을 보여준다. 이 유스케이스 다이어그램에 표시된 관계 중에서 가장 적절하게 사용되고 있는 것은?

① (가) ② (나) ③ (다) ④ (라)

 

31. 다음 클래스 다이어그램은 TestAutomation 클래스가 StateCoverageGenerator 또는 TransitionCoverage Generator를 이용하여 테스트케이스를 자동 생성 하는 모습을 보여 준다. 이 설계와 가장 밀접한 관계가 있는 feature diagram은?

 

① (가) ② (나) ③ (다) ④ (라)

 

32. 사용자 요구사항의 변경 요청 및 플랫폼의 변경을 효율적으로 수용하기 위해서는 아키텍처를 설계하면서 변경용이성(modifiability)을 고려해야 한다. 다음 중에서 변경용이성을 높이기 위하여 적용하는 방법과 가장 거리가 것은?

 

① 모듈간의 바인딩을 실행시간보다 컴파일 또는 빌드시점에 함으로써 모듈의 동작을 명확히 하도록 한다.

② 정보은닉 개념을 적용하여 모듈에 대한 명확한 인터페이스를 도입하거나 중재자를 도입하여 모듈간의 의존관계를 감소시킨다.

③ 하나의 모듈이 하나의 명확한 역할을 하며, 하나의 모듈이 여러 역할을 하는 경우 모듈을 분할하도록 한다.

④ 모듈의 크기가 너무 큰 경우 적절하게 작은 크기의 모듈로 분할함으로써 변경 비용을 감소시키도록 한다.

 

 

33. Robert Martin은 clean architecture를 설명하면서 컴포넌트 응집도에 대한 3가지 원칙을 제시하였다. 다음 중에서 제시된 컴포넌트 응집도와 거리가 가장 것은?

 

① REP(The Reuse/Release Equivalence Principle)

② CCP(The Common Closure Principle)

③ SCP(The Single Change Principle)

④ CRP(The Common Reuse Principle)

 

34. 다음은 A 회사를 대상으로 CMM/CMMI의 성숙도를 평가하기 위해 평가자들이 파악한 내용들을 간략하게 정리한 것이다. 이 내용을 근거로 이 회사의 성숙도 수준을 평가한 것으로 가장 적절한 것은?

- 소프트웨어 프로세스가 잘 정의되어 있고, 조직이 이를 잘 준수하고 있다.
- 조직 내 별도의 그룹이 이 프로세스를 전담하며, 개발자들에게 교육을 진행하고 있다.
- 조직에서 정의한 프로세스 표준을 프로젝트 특성에 맞게 테일러링하여 사용하기도 한다.
- 이 프로세스를 기반으로 개발 공정, 비용, 일정, 기능이 통제되고 있다.

① 레벨 2: managed

② 레벨 3: defined

③ 레벨 4: quantitatively managed

④ 레벨 5: optimizing

 

35. 다음은 클래스 A와 B 사이에 존재하는 연관관계 (association)에 대한 스테레오타입(stereotype)과 이를 코드로 표현한 것이다. 가장 적절하지 않은 것은?

① 가 ② 나 ③ 다 ④ 라

 

36. 전자정부 표준프레임워크 실행환경은 7개 서비스 그룹으로 구성되며 38개 서비스를 제공한다. 다음 중 ‘업무처리’ 서비스 그룹에 포함되는 서비스로 가장 적절한 것은?

가. scheduling
나. transaction
다. exception handling
라. job execution
마. process control
바. sync/async processing

① 가, 라 ② 나, 바 ③ 다, 마 ④ 라, 바

 

37. 스크럼(scrum) 방법론을 따라 소프트웨어를 개발한다고 하자. 전체 스토리 포인트가 400이고 개발팀의 속도가 25로 추정된다면 해당 릴리스를 완성하기 위해서는 몇 개월의 프로젝트 일정이 필요한가? (단, 한 스프린트는 2주이고, 한 달은 4주라 가정한다.)

 

① 2개월 ② 4개월 ③ 6개월 ④ 8개월

 

38. 다음은 ‘항공권 예약 시스템’의 요구사항의 일부를 나열한 것이다. 여기서 비기능 요구사항만을 고른 것으로 가장 적절한 것은?

가. 항공편, 탑승객, 예약을 입력하는 방법이 결정 되어야 한다.
나. 여행사와 고객이 데이터베이스에 접근할 때 어떤 정보를 얻을 수 있는지 결정해야 한다.
다. 시스템은 일주일에 2분 정도의 다운만 허용하며 그 이외에는 항상 사용할 수 있어야 한다.
라. 티켓에 어떤 정보를 표시할지 결정해야 한다.
마. 자주 탑승하는 고객을 서비스하기 위하여 시스템을 확장할 수 있어야 한다.

① 다 ② 가, 라 ③ 나, 라 ④ 다, 마

 

39. 다음은 외부 품질 속성과 관련이 있는 내부 속성과의 관계를 나타낸 그림이다. (가), (나), (다)에 들어갈 외부 속성을 가장 바르게 나열한 것은?

             (가)          (나)      (다)

① 유지보수성 신뢰성 사용성

② 유지보수성 사용성 신뢰성

③ 사용성 신뢰성 유지보수성

④ 신뢰성 사용성 유지보수성

 

40. 다음 표를 보고 추정한 개발 팀의 속도(velocity)로 가장 적절한 것은?

① 8 ② 13 ③ 15 ④ 36

 

41. 다음은 발생한 트러블을 처리하기 위해 디자인 패턴을 적용하여 구현한 프로그램의 각 클래스에 대한 해설과 클래스 다이어그램이다. 가장 적절한 디자인 패턴은?

 

① observer

② template method

③ abstract factory

④ chain of responsibility

 

42. ISO/IEC 33063:2015(E)에는 소프트웨어 테스팅을 위한 process assessment model이 정의되어 있다. 다음 중 ISO/IEC 33063:2015(E)의 test management process 그룹에 속하지 않는 프로세스는?

 

① test planning process

② test monitoring and control process

③ test completion process

④ test execution process

 

43. ITIL V3에서 lifecycle phase 와 lifecycle process 의 연결이 가장 적절한 것은?

① 가-A, 나-B, 다-C, 라-D

② 가-B, 나-A, 다-D, 라-C

③ 가-A, 나-C, 다-D, 라-B

④ 가-B, 나-A, 다-C, 라-D

 

 

44. Provider 클래스가 Service 인터페이스에 정의된 기능을 제공하고 User 클래스가 인터페이스에 정의된 기능을 사용한다는 의미를 표현한 클래스 다이어그램으로 가장 적절한 것은?

① (가) ② (나) ③ (다) ④ (라)

 

45. 스크럼(scrum)에서 작업을 진행하는 순서로 가장 적절한 것은?

(가) 스프린트 계획 (나) 스프린트 리뷰
(다) 스프린트 회고 (라) 릴리스 계획

① (다) → (나) → (다) → (라)

② (라) → (가) → (나) → (다)

③ (다) → (라) → (가) → (나)

④ (나) → (다) → (라) → (가)

 

46. 다음 JAVA 코드를 실행한 결과 중, 가장 적절한 것은?

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Stack;
import java.util.TreeMap;
import java.util.TreeSet;
public class TestB
{
public static int list = 0, map = 0, set = 0,
collection = 0;
public static void collectionCounter(Object abc)
{
if (abc instanceof List) list++;
if (abc instanceof Map) map++;
if (abc instanceof Set) set++;
if (abc instanceof Collection)
collection++;
}
public static void main(String[] args)
{
collectionCounter(new HashSet<Object>());
collectionCounter(new HashMap<Object,
Object>());
collectionCounter(new ArrayList<Object>());
collectionCounter(new LinkedList<Object>());
collectionCounter(new Stack<Object>());
collectionCounter(new TreeSet<Object>());
collectionCounter(new TreeMap<Object,
Object>());
System.out.println("list = "+list+" map =
"+map+" set = "+set+" collection = "+collection);
}
}

① list = 2 map = 2 set = 2 collection = 1

② list = 2 map = 3 set = 3 collection = 5

③ list = 3 map = 2 set = 2 collection = 5

④ list = 3 map = 3 set = 3 collection = 1

 

47. 다음은 리팩토링 전 후의 코드 변화이다. 적용된 리팩토링 기법으로 가장 적절한 것은?

public void print(int times) {
//테두리 출력
System.out.print(“+”);
for (int i = 0; i < _content.length(); i++) {
System.out.print(“-”);
}
System.out.print(“+”);
//내용 출력
for (int i = 0; i < times; i++) {
System.out.print(“|” + _content + “|”);
}
//테두리 출력
System.out.print(“+”);
for (int i = 0; i < _content.length(); i++) {
System.out.print(“-”);
}
System.out.print(“+”);
}

 

 
public void print(int times) {
printBorder();
printContent(times);
printBorder();
}
private void printBorder() {
System.out.print(“+”);
for (int i = 0; i < _content.length(); i++) {
System.out.print(“-”);
}
System.out.print(“+”);
}
private void printContent(int times){
for (int i = 0; i < times; i++) {
System.out.print(“|” + _content + “|”);
}
}

① hide method ② push down method

③ inline method ④ extract method

 

48. 서비스 지향 아키텍처인 XML 웹서비스에 대한 다음 설명에서 (가)~(다)에 들어갈 내용을 순서대로 나열한 것은?

( 가 ) 은(는) 서비스 인터페이스 정의를 위한 표준, 즉, 서비스 오퍼레이션과 서비스 바인딩이 정의 되는 방식을 결정한다. ( 나 ) 은(는) 서비스 메소드 호출과 데이터 전달 등 메시징을 위해 사용되는 표준이다. 웹서비스 메시지 전송은 ( 다 ) 등의 프로토콜이 사용된다.

① (가) UDDI (나) SOAP (다) HTTP

② (가) UDDI (나) HTTP (다) TCP/IP

③ (가) WSDL (나) SOAP (다) HTTP

④ (가) WSDL (나) HTTP (다) TCP/IP

 

49. 다음 중 소프트웨어 형상관리에 대한 설명으로 틀린 것은?

 

① 특정 컴포넌트의 일련의 버전을 코드라인(codeline)이라고 하고, 시스템에 포함되는 컴포넌트들의 가장 최근 버전의 집합을 베이스라인(base line)이라고 한다.

② 버전 저장소로부터 개인 작업공간으로 가지고 오는 것을 체크아웃(check-out)이라고 하고 변경된 컴포넌트들을 버전 저장소에 반영하는 것을 체크인(check-in)이라고 한다.

③ 동일한 컴포넌트를 다른 목적으로 독립적인 개발을 하려면 분기(branch)를 사용하고, 각 분기에서 변경된 내용을 합치는 것을 병합(merge) 라고 하는데 병합 시 충돌(conflict)이 발생할 수 있다.

④ 컴포넌트의 버전 간 차이를 델타(delta)라고 하며, 어떤 버전으로부터 이전 버전을 생성하기 위한 규칙은 후향(backward) 델타, 어떤 버전으로부터 이후 버전을 생성하기 위한 규칙은 전향(forward) 델타라고 한다.

 

50. 다음 pseudo code를 보고 최소 문장 커버리지 (statement coverage) 테스트 케이스(test case)의 수와 최소 분기 커버리지(branch coverage) 테스트 케이스(test case)의 수로 가장 적절한 것은?

read a, b;
if (a+b > 10) then
print “Big”;
endif
if (a > 10) then
print “aBig”;
endif
print a, b;

① 문장 커버리지 : 2, 분기 커버리지 : 2

② 문장 커버리지 : 1, 분기 커버리지 : 1

③ 문장 커버리지 : 1, 분기 커버리지 : 2

④ 문장 커버리지 : 2, 분기 커버리지 : 1

 


 

정답)

26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50