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

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

아이티신비 2024. 1. 12. 09:00

26. 소프트웨어 오류는 모든 프로그래머가 다루어야 할 현실이며, 프로그래머는 오류를 피하기 위하여 흔히 발견되는 오류 유형을 파악하여 알아두는 것이 좋다. 다음은 흔히 발생하는 오류 중 어떤 유형인가?

main( )
{
char *aa; int bb;
aa = (char * ) malloc(10);
if ( bb == 0 )
free(aa);
free(aa);
}

① 메모리 누수(Leak) ② 중복 프리 선언

③ 별칭의 사용 ④ 배열 인덱스 오류

 

27. 범정부 데이터 참조모형 2.0에 따르면, 데이터 참조모델(범정부 DRM)은 ‘데이터 분류체계’, ‘데이터 모델’, ‘데이터 구조’, ‘데이터 교환’ 그리고 ‘데이터 관리’로 구성되어 있다. 다음 중 데이터분류체계와 가장 관련이 많은 것은?

 

① 주제영역 (subject area)

② 개념 개체관계도 (conceptual ERD)

③ 논리 개체관계도 (logical ERD)

④ 메타데이터 (meta data)

 

28. 애자일(agile)방법은 설계와 문서화보다는 소프트웨어 그 자체에 초점을 두는 개발방법론이다. 애자일 방법 중에 제일 많이 알려진 것이 익스트림 프로그래밍 (eXtreme Programming : XP)인데, 다음 중 XP와 가장 연관성이 적은 것은?

 

① 페어 프로그래밍(pair programming)

② 지속적인 통합(continuous integration)

③ 리팩토링(refactoring)

④ 제네릭 프로그래밍(generic programming)

 

29. 다음은 Java로 void processing(int) 함수를 구현한 예이다. 인자값 –10으로 processing() 함수를 호출할 때, 표준출력 결과값으로 올바른 것은?

void processing(int value) {
System.out.print(value+“:”);
assert(value > 0);
if ( value < 0 )
value = 10;
else
value = value + 10;
System.out.print(value);
return;
}

① -10:-10 ② -10:0 ③ -10:10 ④ -10:

 

30. Gamma에 의하여 제시된 디자인 패턴은 사용하는 목적에 따라 세 가지 유형으로 분류할 수 있다. 즉, 객체를 생성하는 패턴인 생성 유형, 클래스와 객체가 어떤식으로 조합되었는지를 나타내는 구조적 유형, 그리고 객체의 상호작용과 의무의 분산을 나타내는 행위적 유형으로 분류할 수 있다. 다음 문항에서 Gamma에 의한 디자인 패턴의 분류 중 사용하는 목적이 서로 다른 유형으로 연결된 것은?

 

① factory method pattern – abstract factory pattern

② singleton pattern – command pattern

③ bridge pattern – facade pattern

④ memento pattern – observer pattern

 

31. UML 2.2에서 UML 다이어그램은 다이어그램에서 표현하고자 하는 기본 개념의 유형에 따라서 구조 다이어그램과 행위 다이어그램으로 분류될 수 있다. 이러한 관점에서 볼 때 다음의 UML 다이어그램 중에서 다른 3가지 다이어그램과 다른 유형의 다이어그램은 어느 것인가?

 

① 컴포넌트 다이어그램(component diagram)

② 유스케이스 다이어그램(use case diagram)

③ 활동 다이어그램(activity diagram)

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

 

32. 다음은 XML 문서에 대한 설명이다. 다음 중에서 올바른 것을 모두 고른 것은?

가. XML 문서는 문서선언, DTD선언, 문서내용으로 구성되며 DTD선언은 문서내에서 생략이 가능하다.
나. 모든 태그는 <title>과 </title>처럼 쌍으로 구성된다.
다. XML문서의 주석은 /* */로 묶어 표현한다.
라. 태그 이름으로 <_book>은 잘못된 예이다.

① 가, 나

② 가, 나, 다

③ 가, 나, 라

④ 나, 다, 라

 

33. 다음은 웹 어플리케이션 개발에 사용되는 특정 프레임워크를 설명한 것이다. 다음 설명과 가장 연관성이 높은 것은?

- 엔터프라이즈 어플리케이션에서 필요로 하는 기능을 제공하는 프레임워크이다.
- 자바 객체의 생성, 소멸과 같은 라이프 사이클을 관리한다.
- 설정파일이나 어노테이션을 통해서 객체간의 의존관계를 설정할 수 있다.
- 자체적으로 AOP(Aspect Oriented Programming)와 POJO(Plain Old Java Object)를 지원한다.

① Struts ② Spring ③ EJB ④ iBATIS

 

34. 다음 설명의 테스팅 기법으로 가장 적합한 것은?

- 소프트웨어의 변경을 가한 후에 수정부분 뿐만 아니라 다른 부분이 영향을 받았는지를 검사하기 위해 수행하는 테스팅 기법이다.
- 테스트 중심 개발(test driven development) 방법의 자동화 테스팅 환경에서 많이 사용되는 테스팅 기법이다.

① 회귀 테스팅(regression testing)

② 결함기반 테스팅(fault-based testing)

③ 클러스터 테스팅(cluster testing)

④ 시나리오기반 테스팅(scenario-based testing)

 

 

35. 다음에서 설명하는 디자인 패턴과 가장 관련 있는 것은?

클라이언트 코드에 Automobile 클래스와 createAutomobile 메소드가 사용되었다고 가정하면, 실행시간에 Automobile 객체는 Acar 객체 또는 Bcar 객체로 바인딩 되고, 런타임의 선택에 따 createAutomobile 메소드는 새로 생성된 Acar 객체나 Bcar 객체를 반환한다.
대표

① composite pattern ② adapter pattern

③ iterator pattern ④ factory method pattern

 

36. 소프트웨어 프로세스 모델인 CMM(Capability Maturity Model)과 SPICE(Software Process Improvement and Capability dEtermination)에 대한 설명으로 가장 거리가 것은?

 

① CMM과 SPICE는 프로세스 심사를 위한 참조 모델을 제공한다. 즉, 개발 성숙도에 따라 차별화된 수준을 정의하고, 각 수준의 특징을 밝혀 심사할 때 어떤 기관이 어떤 수준에 있는지 판단할 수 있도록 예시하고 있다.

② CMM과 SPICE의 중요한 차이점은 성숙도 레벨과 심사 영역의 구분이다. CMM은 레벨 0부터 5까지의 6개의 성숙도 수준을 정의하고 있으나, SPICE는 레벨 1부터 5까지 5개 수준으로 나누고 있다.

③ CMM은 소프트웨어 프로세스 능력을 여러 분야에 걸쳐 평가하여 하나의 레벨로 평가하는 일차원적인 구조를 가지고 있다.

④ SPICE는 각 프로세스 영역마다 능력에 대한 평가를 별도로 할 수 있도록 이차원적인 구조를 가지고 있다.

 

37. 소프트웨어 개발 비용은 여러 가지의 다른 요소들과 일정한 상관관계가 있다. 오른쪽 그래프의 Y축을 개발 비용이라고 했을 때, X축 요소로 볼 수 있는 것 중 가장 적절한 것은?


① 관련 업무지식 및 경험

② 투입 인력

③ 신뢰도

④ 시스템의 규모

 

38. 다음은 세 과목의 점수를 입력받아 평균점수가 70점 이상이면 “합격”, 70점 미만이면“불합격”을 출력하는 프로그램의 일부이다. McCabe의 순환 복잡도 (cyclomatic complexity)는 얼마인가?

int test[]; int avPoint; int count=0;
while(count < 3)
{
int inputPoint;
printf("점수를 입력해주세요");
scanf("%d", &inputPoint);
test[count] = inputPoint;
count = count + 1;
}
avPoint = (test[0] + test[1] + test[2]) / 3;
if(avPoint >= 70)
{
printf("합격");
}
else
{
printf("불합격");
}
printf("출력이 종료 되었습니다");

① 3 ② 4 ③ 5 ④ 6

 

39. 다음은 C 프로그램의 일부이다. 다음 프로그램의 수행결과로 올바른 것은 ?

int idx, sum = 0;
for(idx = 0; idx < 10; idx++) {
if ( idx % 2 == 0 )
continue;
if ( idx == 6 )
break;
sum = sum + idx;
}
printf(“%d”, sum);

① 45 ② 25 ③ 9 ④ 4

 

40. 총 기능점수가 7,500FP 규모의 프로그램을 5명의 프로그래머가 참여하여 개발할 때 30개월이 소요될 것으로 예측되었다. 프로그래머 1인당 월평균 생산성은 얼마인가?

 

① 25FP/월

② 50FP/월

③ 150FP/월

④ 250FP/월

 

41. 다음은 Java 언어에서 사용되는 특정 GUI Layout Manager에 대해 설명한 것이다. 이에 가장 부합하는 것은 ?

이 Layout Manager는 NORTH, SOUTH, EAST, WEST, CENTER의 5 개의 영역으로 나뉘어 각 영역별로 한 개의 GUI 컴포넌트를 관리한다. 만약 NORTH 또는 SOUTH 영역이 채워지지 않으면, EAST, WEST, CENTER 영역이 커져서 전체 영역을 채운다. EAST 또는 WEST 영역이 채워지지 않으면, CENTER 영역이 커져서 빈 영역을 채운다.

① BorderLayout

② FlowLayout

③ GridLayout

④ BoxLayout

 

42. 정보시스템 구축․운영지침 제45조에 따른 표준산출물 관련 사항으로 『CBD SW표준 산출물 관리 가이드』가 발표되었다. 다음 산출물 중 이 가이드에서 정의된 분석 단계의 산출물을 모두 고른 것은?

가. 사용자 요구사항 정의서
나. 유스케이스 명세서
다. 엔티티 관계 모형 기술서
라. 컴포넌트 설계서

① 가

② 가, 나

③ 가, 나, 다

④ 가, 나, 다, 라

 

43. 다음 중 획득가치분석에 관한 설명으로 항상 성립하는 것은?

 

① 만약 BCWS(budgeted cost of work schedule) > BCWP(budgeted cost of work performed)이 성립하면, 비용차이(cost variance)는 0보다 작다.

② 만약 BCWS(budgeted cost of work schedule) > ACWP(actual cost of work performed)가 성립하면, 비용성과지수(cost performance index)는 1보다 작다.

③ 만약 BCWP(budgeted cost of work performed) > ACWP(actual cost of work performed)가 성립하면, 일정차이(schedule variance)는 0보다 크다.

④ 만약 BCWP(budgeted cost of work performed) > BCWS(budgeted cost of work schedule)가 성립하면, 일정성과지수(schedule performance index)는 1보다 크다.

 

44. 소프트웨어 사업대가 산정가이드를 기초로 소프트웨어 개발 사업의 기능점수를 간이법에 의해 산정하고자 한다. 다음의 데이터 및 트랜잭션 기능 유형 중에서 평균복잡도가 가장 높은 것과 가장 낮은 것으로 묶여진 것은 무엇인가?

 

① 내부논리파일-외부출력

② 내부논리파일-외부조회

③ 외부연계파일-외부출력

④ 외부연계파일-외부조회

 

 

45. 다음 중에서 가장 약한 결합도를 가지는 함수는 어느 것인가?

int g ;
int f1(int x, int y) {
return x + y + g ;
}
int f2(int x, int y) {
return x + y ;
}
struct RECT { int w; int h ; }
int f3(RECT r) {
return r.w * 2 ;
}
int f4(int p, int x, int y) {
if ( p > 0 ) return f1(x, y) ;
else if ( p == 0 ) return f2(x, y) ;
else {
struct RECT r ;
r.w = x ; r.h = y ;
return f3(r) ;
}
}
void main() {
int v1 = 10, v2 = 30 ;
int r = f4(10, v1, v2) ;
}

① 함수 f1

② 함수 f2

③ 함수 f3

④ 함수 f4

 

46. 소프트웨어 형상관리의 주요 활동으로서 변경 제어 절차가 있다. 다음 중에서 변경 제어 절차를 가장 올바른 순서로 배치한 것은?

 

① 변경 요청 - 형상관리위원회 - 요청서 분석 - 시스템설치 - 변경 구현 및 테스트

② 변경 요청 - 요청서 분석 - 형상관리위원회 - 변경 구현 및 테스트 - 시스템 설치

③ 시스템 설치 - 변경 요청 - 형상관리위원회 - 요청서 분석 - 변경 구현 및 테스트

④ 형상관리위원회 - 변경 요청 - 요청서 분석 - 변경 구현 및 테스트 - 시스템 설치

 

47. 다음 설명의 개발방법론에 가장 부합하는 모델은?

반복되는 각 주기마다 먼저 목표를 설정하며 목표를 성취하기 위한 방안과 존재하는 제약사항을 파악한다. 다음은 여러 대안들에 대하여 프로젝트의 위험분석을 실시한다. 그리고 문제와 위험을 해결하는 전략을 개발하는데, 벤치마킹, 시뮬레이션 등과 같은 방법을 이용한다. 그 후에 소프트웨어의 개발 및 검증을 수행하고 다음 단계를 계획한다.

① 나선형 모델(spiral model)

② 점증적 모델(incremental model)

③ 프로토타이핑 모델(prototyping model)

④ V 모델(V model)

 

48. 테스트를 수행하여 결함이 발견되면 발견된 결함에 대한 정보가 개발자에게 제공 되며, 이러한 문서를 결함보고서(defect report, bug report, anomaly report 등) 라고 부른다. 결함 보고서에서 일반적으로 포함되어야 할 항목과 가장 거리가 것은?

 

① 결함을 유발한 입력값

② 테스트 케이스의 실행에서 관찰된 실제 수행 결과

③ 테스트 케이스의 실행에서 기대된 값

④ 발견된 결함을 제거하기 위한 해결 방안

 

49. 다음 그림은 12개의 작업으로 구성된 프로젝트의 일정 계획이다. 간선은 작업들 간의 의존 관계를 나타내며, 노드는 작업과 그 작업의 소요기간을 나타낸다. 프로젝트 일정 계획의 최소예측기간과 위험관리 중점 노드가 바르게 짝지어진 것은?

① 60일, 작업 F

② 70일, 작업 I

③ 70일, 작업 F

④ 37일, 작업 J

 

50. 다음에서 함수 get_value()가 가지는 결합도로서 가장 적절한 것은?

int get_value(char* id, int x, int y) {
int result = 0 ;
if ( strcmp(id, "w") == 0 )
result = x * y ;
else
result = 2 * ( x + y ) ;
return result ;
}
void main() {
int v1 = 10, v2 = 20 ;
int r = get_value("h", v1, v2) ;
}

① 자료 결합도(data coupling)

② 스탬프 결합도(stamp coupling)

③ 제어 결합도(control coupling)

④ 공통 결합도(common coupling)

 


정답)

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

 

 

 


 

공감과 댓글은 아이티신비에게 큰 힘이 됩니다.

블로그 글이 유용하다면 블로그를 구독해주세요.♥