정보시스템감리/소프트웨어 공학

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

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

26. 다음 중 소프트웨어 요구 명세서(software requirements specification)에 포함되어야 할 항목으로 가장 적절한 것은?

가. 사용자 인터페이스 나. 시스템 구조
다. 성능 요구 라. 알고리즘
마. 인수 조건 바. 자원에 대한 제약 조건

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

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

 

27. 다음 그림은 클래스 다이어그램과 시퀀스 다이어그램에 바탕을 둔 설계의 일부이다. 본 설계가 위반한 설계 원칙으로 가장 적절한 것은?

① SRP(Single Responsibility Principle)

② LSP(Liskov Substitution Principle)

③ ISP(Interface Segregation Principle)

④ DRY(Don't Repeat Yourself)

 

28. 기계어에서 어셈블리 언어로, 어셈블리 언어에서 고급 언어로 표현하는 과정에서 적용된 추상화방법으로 가장 적절한 것은?

① 프로시저 추상화(procedure abstraction)

② 데이터 추상화(data abstraction)

③ 제어 추상화(control abstraction)

④ 기능 추상화(function abstraction)

 

29. 다음은 아키텍처 설계과정에서 결함허용(fault tolerance)을 높이기 위해 취할 수 있는 방법 중 하나에 대한 설명이다. 다음 설명으로 가장 적절한 것은?

- 그룹에서 활성화 요소가 입력을 처리하도록 구성된 형상
- 중복 요소를 위해 주기적으로 상태 업데이트
- 활성화 요소와 중복 요소 간에 상태 일치를 위해 체크 포인트 메커니즘 사용

① active redundancy(hot spare)

② passive redundancy(warm spare)

③ spare(cold spare)

④ condition monitoring

 

30. 다음은 UML 모델링을 위해 사용되는 특정 다이어그램의 활용에 대한 설명이다. 해당 다이어그램 으로 가장 적절한 것은?

- 유스케이스에서 흐름을 모델링하기 위해 사용된다.
- 객체의 연산에 대한 플로우차트로 활용될 수 있다.
- 비즈니스 프로세스나 작업 흐름을 모델링할 수 있다.

① 시퀀스 다이어그램(sequence diagram)

② 액티비티 다이어그램(activity diagram)

③ 상태 다이어그램(state diagram)

④ 협력 다이어그램(collaboration diagram)

 

31. 다음 코드를 수행할 때, 수행 결과로 가장 적절한 것은?

class Temp {
private static Temp t;
private int m = 0;
public Temp() { }
public static Temp getTemp() {
if (t == null) t = new Temp();
return t;
}
public int add(int i) {
m += i;
return m;
}
}
public class TempTest {
public static void main(String[] args) {
Temp obj1 = new Temp();
Temp obj2 = new Temp();
System.out.print(obj1.add(5) + “ ”);
System.out.print(obj2.add(5) + “ ”);
Temp obj3 = Temp.getTemp();
Temp obj4 = Temp.getTemp();
System.out.print(obj3.add(5) + “ ”);
System.out.println(obj4.add(5));
}
}

① 5 5 5 5

② 5 5 5 10

③ 5 5 10 15

④ 5 10 15 20

 

32. 어느 소프트웨어는 평균적으로 에러(error)가 2 일에 1개씩 발생한다고 한다. 이 소프트웨어가 3일 동안 에러(error) 없이 가동될 신뢰성은 얼마인가?

 

① 0.5 ② 0.125 ③ 0.675 ④ 0.25

 

 

33. 다음 코드를 수행할 때, 수행 결과로 가장 적절한 것은?

class Parent {
public Parent(){
System.out.println("Parent default");
}
public Parent(int i){
this("hello");
System.out.println("int constructor " +
i);
}
public Parent(char c){
this();
System.out.println("char constructor " +
c);
}
public Parent(String s){
this('A');
System.out.println("String constructor "
+ s);
}
}
class Child extends Parent{
public Child() {
super(10);
System.out.println("Child default");
}
public Child(int i) {
System.out.println("int constructor");
}
}
public class Exam {
public static void main(String[] args) {
Child c1 = new Child();
System.out.println("-----");
Child c2 = new Child(10);
}
}

① Parent default

char constructor A

String constructor hello

int constructor 10

Child default

-----

Parent default

int constructor

② Parent default

char constructor A

String constructor hello

int constructor 10

Child default

-----

int constructor

③ char constructor A

String constructor hello

int constructor 10

Child default

-----

Child default

int constructor

④ int constructor 10

String constructor hello

char constructor A

Parent default

-----

Child default

int constructor

 

34. 코딩 규칙 MISRA-C:2004에 제시된 규칙들이 참조하는 관련 표준으로 가장 거리가 것은?

 

① ISO/IEC 9899 Programming languages - C

② ISO/IEC 9126 Software Engineering – Product Quality

③ ISO/IEC 10646 Information technology — Universal Multiple-Octet Coded Character Set

④ ANSI/IEEE 754 IEEE Standard for Binary Floating- Point Arithmetic

 

35. 다음은 Excel 프로그램에서 셀의 글꼴을 설정하는 대화상자를 보여준다. 테스터에게 소스 코드가 제공되지 않는다고 가정할 때 이 대화 상자를 테스트 하기 위해서 적용되는 테스트 방법으로 가장 거리가 것은?

① 동등 분할(equivalence partitioning)

② 조합(pairwise) 테스팅

③ 분류트리(classification tree) 방법

④ 결정(decision) 테스팅

 

36. 통합 테스트는 모듈간의 인터페이스에 존재할 수 있는 결함 검출을 목표로 한다. 다음 중에서 인터페이스 결함과 가장 거리가 것은?

 

① 전달되는 매개변수들의 형이 잘못된 경우

② 정렬되지 않은 배열임에도 이진 탐색 루틴을 호출 하는 경우

③ 데이터 생성자와 소비자의 수행 속도 차이에 따른 결함

④ 주어진 기능에 대한 알고리즘을 부정확하게 구현한 경우

 

37. 소스 코드에 나타나는 bad smell과 이를 해결하기 위한 마틴 파울러(M. Fowler)의 리팩토링 기법으로 적절하지 않은 것은?

 

① duplicated code – extract method

② long method – introduce parameter object

③ large class – extract class

④ divergent change – inline method

 

38. 아래의 소스 코드에 대해 테스트를 수행하기 위하여 다음과 같이 테스트 데이터를 준비하였다. 조건 커버리지(condition coverage), 결정 커버리지 (decision coverage), 문장 커버리지(statement coverage) 기준으로 평가할 때, 다음 중 가장 적절한 것은? (단, short-circuit evaluation은 수행하지 않음)

① 조건 커버리지: 50%, 결정 커버리지: 50%, 문장 커버리지: 50%

② 조건 커버리지: 50%, 결정 커버리지: 100%, 문장 커버리지: 66%

③ 조건 커버리지: 100%, 결정 커버리지: 50%, 문장 커버리지: 66%

④ 조건 커버리지: 100%, 결정 커버리지: 100%, 문장 커버리지: 100%

 

39. 다음은 테스트 방법에 관한 설명이다. 각 테스트 방법에 대한 설명과 해당되는 테스트 방법의 이름이 가장 잘 짝지어진 것은?

가. 개발된 소프트웨어를 사용자가 실제 운영 환경에서 수행하는 테스트
나. 시스템의 변경된 부분이 기존 시스템에 부작용을 일으키는지 여부를 파악하기 위한 테스트
다. 개발자의 통제 하에 사용자가 개발 환경에서 수행하는 테스트
라. 시스템에 고장이 발생하더라도 시스템이 정상적 으로 작동하는지 여부를 파악하기 위한 테스트

① 가: 알파 테스트 나: 뮤테이션 테스트 다: 베타 테스트 라: 복구 테스트

② 가: 베타 테스트 나: 뮤테이션 테스트 다: 알파 테스트 라: 스트레스 테스트

③ 가: 알파 테스트 나: 회귀 테스트 다: 베타 테스트 라: 스트레스 테스트

④ 가: 베타 테스트 나: 회귀 테스트 다: 알파 테스트 라: 복구 테스트

 

 

40. 다음의 그림 (가)와 (나)는 변경요청과 이에 따른 수정이 필요한 모듈간의 관계를 보여 준다. 즉 (가)의 경우 변경요청1에 의해서 시스템을 구성하는 많은 수의 모듈이 변경되고 있으며 (나)의 경우에는 여러 개의 변경요청이 하나의 모듈에 집중되고 있다. 이러한 형태의 bad smell을 부르는 용어로 가장 적절한 것은?

① (가) switch statements, (나) divergent change

② (가) shotgun surgery, (나) divergent change

③ (가) switch statements, (나) middle man

④ (가) shotgun surgery, (나) middle man

 

41. 어떤 시스템의 운영상황이 다음과 같다고 할 때, 이 시스템의 가용성(availability)에 가장 가까운 값은? (단, 시스템 운영 시간은 (0 ~ 101)h로 가정하고 고장 발생 시각의 단위는 시[hour]임)

① 약 90% ② 약 93% ③ 약 96% ④ 약 99%

 

42. ISO/IEC 25010에서는 ISO/IEC 9126-2의 표준 문서에서 제시한 소프트웨어 품질 평가의 6가지 품질 특성에 2가지의 품질 특성을 추가하여 8개의 소프트웨어 품질 특성에 대해 평가방안을 제시하고 있다. ISO/IEC 25010에 추가된 2가지의 소프트웨어 품질 특성으로 가장 적절한 것은?

 

① 상호운용성과 이식성 ② 상호운용성과 보안성

③ 유지보수성과 이식성 ④ 유지보수성과 보안성

 

43. 다음은 사용자 인터뷰 일부를 발췌한 것이다. 이와 관련된 ISO 9126 품질 특성으로 가장 적절한 것은?

요즘 컴퓨터가 재부팅하면 20초 내에 켜지는 것처럼 만약 시스템이 멈추게 되어도 20초 내에 정상작동이 되도록 해주세요. 그리고 절대 저 이외에는 다른 사람들이 이 시스템을 껐다 켜지 못하게 해야 합니다. 아무나 껐다 켤 수 있다면 정말 큰일 나니까요.

① 효율성, 신뢰성 ② 기능성, 신뢰성

③ 기능성, 유지보수성 ④ 사용성, 이식성

 

44. COCOMO II(COnstructive COst MOdel II) 비용 예측 모델에 대한 설명으로 가장 적절하지 않은 것은?

 

① COCOMO II는 재사용성 강화 및 컴포넌트를 이용한 조립 개발 환경을 반영하여 COCOMO 비용 예측 모델을 보완하였다.

② COCOMO II는 3가지의 대표 모델, 즉 애플리케이션구성 모델, 초기 추정 모델, 후반 구조 모델을 포함하고 있다.

③ COCOMO II는 원시 코드의 라인 수를 정확히 예측하기 어렵다는 점을 고려하여 원시코드를 사용 하지 않고, 단계별로 정의된 방법으로 값을 계산하고 인건비를 예측하는 방식이다.

④ COCOMO II에 적용되는 기본 공식은 E = b × Sc × m(X)이다. 단, 여기서 b × Sc는 기초 소요 노력 예측값, m(X)는 비용 승수의 벡터를 의미한다.

 

45. 다음 표는 두 조직이 수행하고 있는 소프트웨어 개발 프로젝트에 대한 요약이다. B 조직의 개발자 1인당 평균 생산성은 A 조직의 개발자 1인당 평균 생산성의 1.5배로 알려져 있다고 가정할 때, (가)와 (나)의 값으로 가장 적절한 것은?

① (가) 40 FP/month, (나) 15개월

② (가) 50 FP/month, (나) 12개월

③ (가) 40 FP/month, (나) 10개월

④ (가) 50 FP/month, (나) 8개월

 

46. 다음 중 COCOMO II 모델에서 기능 점수 1 FP에 대한

SLOC가 큰 것에서 작은 언어 순으로 나타낸 것은?

 

① Assembly > Unix Shell Scripts > C > Java > Powerbuilder

② Assembly > C > Unix Shell Scripts > Java > Powerbuilder

③ Assembly > C > Unix Shell Scripts > Powerbuilder > Java

④ Assembly > C > Powerbuilder > Unix Shell Scripts > Java

 

47. 다음 중에서 서비스 지향 아키텍처(SOA)와 관련된 표준에 대한 설명으로 가장 거리가 것은?

 

① 속성-값의 쌍으로 이루어진 데이터 객체를 전달하기 위한 경량의 데이터 교환 표준

② 다양한 서비스를 포함하는 프로세스 프로그램을 정의하는 데 이용되는 워크플로 언어를 위한 표준

③ 서비스의 존재를 찾기 위해 이용될 수 있는 서비스 명세의 컴포넌트에 대한 정의

④ 서비스의 인터페이스와 바인딩에 대한 표준

 

48. 다음과 같은 특징을 갖는 미들웨어 아키텍처로 가장 적절한 것은?

- 대규모 엔터프라이즈 시스템을 구축할 때 중요한 기술이며, 서로 다른 독립적인 애플리케이션을 하나의 통합된 시스템으로 묶기 위한 접착제 같은 역할을 한다.
- 여러 가지 애플리케이션을 다양한 기술과 다양한 플랫폼을 이용하여 구축할 수 있으나 이 미들웨어를 사용하면 사용자는 현재의 애플리케이션을 엔터프라이즈급의 애플리케이션에 추가하기 위하여 다시 구축하거나 근본적인 변경을 가할 필요가 없다.
- 기본적으로 느슨한 결합의 비동기 기술이며, 동기화 미들웨어 기술과는 다르게 CORBA에서 볼 수 있는 것처럼 수신측과 송신측이 강하게 결합되어 있지 않다.

① RPC(Remote Procedure Call) Middleware

② MOM(Message Oriented Middleware)

③ ORB(Object Request Broker) Middleware

④ WAS(Web Application Server) Middleware

 

49. 다음은 서비스 지향 아키텍처(SOA)에서 비즈니스 서비스의 통합을 위해 사용되는 개념에 대한 설명이다. 설명에 해당하는 개념으로 가장 적절한 것은?

- 비즈니스 협업 관점에서 비즈니스 서비스 통합
- 여러 참여자가 거래 파트너끼리 메시지 교환
- 비즈니스 프로세스 안에서 다수의 참여자가 peer-to-peer 방식으로 협업
- 기업 사이의 프로세스 통합에 많이 사용됨

① Service Orchestration

② Service Choreography

③ Enterprise Service Bus

④ Enterprise Application Integration

 

50. 다음 그림은 XP(eXtreme Programming) 개발 프로세스를 나타낸 것이다. (가), (나), (다)에 해당하는 과정으로 가장 적절한 것은? (단, 그림에서 OOOO로 표시된 부분은 내용을 가리기 위해 의도적으로 사용하였음)

① (가) 사용자 스토리, (나) 인수 테스트, (다) 작은 릴리즈

② (가) 프로젝트 계획, (나) 인수 테스트, (다) 새로운 애플리케이션

③ (가) 유스케이스, (나) 통합 테스트, (다) 컴포넌트 조립

④ (가) 사용자 스토리, (나) 통합 테스트, (다) 새로운 애플리케이션

 


 

 

정답)

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