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

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

아이티신비 2024. 1. 2. 12:15

26. 소프트웨어 요구사항 정보의 형태는 비즈니스 요구사항,비즈니스 룰, 제약사항, 외부 인터페이스 요구사항,특성(Feature), 기능적 요구사항, 비기능적 요구사항,품질 속성, 시스템 요구사항, 사용자 요구사항 등으로구성될 수 있다. 이들 간의 연관관계를 그림으로 표현한 것 중 가장 적절하지 않은 것은? (단, 점선은 다른 형태의 요구사항에 영향을 주거나 다른 형태의 요구사항의 원천이 되는 경우를 의미한다.)

 


① 가 ② 나
③ 다 ④ 라

 

27. 소프트웨어 요구사항의 표준화를 위하여 소프트웨어 요구사항 패턴을 정의하였다. 다음 요구사항에 가장 적절한 소프트웨어 요구사항 패턴은?

 
선택한 고객에 대해 금액 조정(인출 또는 대출)을 할 수 있다. 금액 조정은 다음과 같은 정보를 가진다.
- 고객 ID
- 조정 금액
- 조정 이유
각 계좌 금액 조정에 유일한 ID가 자동으로 부여된다. 극소수의 직원만이 계좌 금액 조정을 할 수 있다.

① Chronicle Requirement Pattern
② Living Entity Requirement Pattern
③ Transaction Requirement Pattern
④ Configuration Requirement Pattern

 

28. 다음은 리팩토링 목록(Catalog of Refactoring) 에서 정의된 리팩토링 방법 중 하나를 설명하는 코드이다. 다음 코드 변경을 잘 설명하고 있는 리팩토링 방법의 이름으로 가장 적절한 것은?

 

(변경전)

let defaultOwner = {firstName: "Martin",
lastName: "Fowler"};

(변경후)

let defaultOwnerData = {firstName: "Martin",
lastName: "Fowler"};
export function defaultOwner() {return
defaultOwnerData;}
export function setDefaultOwner(arg)
{defaultOwnerData = arg;}

① Inline Variable

② Encapsulate Variable

③ Split Variable

④ Rename Variable

 

29. 다음 의사 코드(Pseudo Code)에 대하여 McCabe의 Complexity Number를 계산한 것 중 가장 적절한 것은? (단, 코드 실행에 대한 오류는 없는 것으로 가정함)

i = 0;
n=4; //N-Number of nodes present in the graph
while (i<n-1) do
j = i + 1;
while (j<n) do
if A[i]<A[j] then
swap(A[i], A[j]);
end do;
i=i+1;
end do;

① 4 ② 5

③ 6 ④ 7

 

30. 다음은 검색 알고리즘에 관한 JAVA Code 문제이다. 숫자 배열 {1, 2, 3, 4}와 정수 k는 3으로 입력 되었을 때, 출력 결과로 가장 적절한 것은?

public class Search
{
public static int search(List<Integer> list,
int k)
{
int left = 0, right = list.size() -1, result
= -1;
while(left <= right) {
int mid = left + ((right - left) / 2);
if (list.get(mid) > k) {
right = mid -1;
} else if (list.get(mid) == k) {
result = mid;
right = mid -1;
} else {
left = mid+1;
}
}
return result;
}
public static void main(String[] args) {
Integer[] intArr = {1, 2, 3, 4};
List<Integer> list = Arrays.asList(intArr);
System.out.println(search(list, 3));
}
}

 

① 1 ② 2

③ 3 ④ 4

 

31. 다음 중 컴포넌트 기반 개발 방법론에서 버틀러(Burtler) 그룹이 제안한 컴포넌트 성숙 단계를 1단계부터 6단계까지 순서대로 정리한 것으로 가장 적절한 것은?

가. GUI 콘트롤 이용 단계
나. CBD 성숙 단계
다. 구현 개념 이용 단계
라. 비즈니스 개념 이용 단계
마. 컴포넌트 재사용 단계
바. 기업 표준 단계

① 가 – 다 – 라 – 마 – 바 - 나

② 가 – 라 – 다 – 마 – 바 - 나

③ 가 – 다 – 라 – 바 – 마 - 나

④ 가 – 라 – 다 – 바 – 마 - 나

 

 

32. 다음은 아키텍처 스타일에 대한 설명이다. 각 설명에 대응하는 아키텍처 스타일이 가장 적절하지 않은 것은?

가. 입력되는 이벤트(event)에 대한 응답으로 프레임워크에서 제공하는 서비스를 투명하게 업데이트하는 메커니즘을 제공하고, 애플리케이션을 통해 프레임워크의 이벤트 처리 동작을 검사한다.
나. 복잡한 시스템 기능은 순차적인 하위작업들로 분리되며, 각 하위작업은 이 작업만을 담당하는 독립된 구성요소에 의해 스트림(stream) 데이터를 처리한다.
다. 시스템 구성요소가 버전별로 다른 방식으로 구성될 수 있으며, 파생된 시스템별 서비스를 위해 플러그 앤 플레이(plug-and-play) 인프라를 제공한다.
라. 시스템의 구조적 및 행동적 측면은 메타 객체에 저장되고 애플리케이션 논리 구성요소와 분리하며, 예기치 않은 상황에 자동으로 대처 할 수 있다.

① 블랙보드(Blackboard) - 가

② 파이프-필터(Pipe & Filter) – 나

③ 마이크로 커널(Microkernel) - 다

④ 리플렉션 (Reflection) - 라

 

33. 다음에 주어진 코드에 대하여 변형 조건/결정 커버리지(MC/DC)에 의한 테스트를 수행할 때, 하단에 주어진 테스트 케이스 생성표에 100% 커버리지를 달성하는 최소한의 테스트 케이스 쌍의 진리 값 표현으로 가장 적절하지 않은 것은? (단, 코드 실행에 대한 오류는 고려하지 않음)

public void coverage(int x, int y) {
if ((x > 0) && (y <= 0))
y = x;
system.out.printf(x, y);
}
 
테스트케이스 생성표
TC#
조건1 (x>0)의 진리 값
조건2 (y<=0)의 진리 값

① TC1 : True – True

② TC2 : True – Flase

③ TC3 : False - True

④ TC4 : False – False

 

34. 다음은 은행에서 일정 금액(amount)을 지급 (withdraw)하는 코드의 일부분을 리팩토링 한 것이다. 적용 후 코드를 생성하기 위해 사용된 리팩토링 기법으로 가장 적절한 것은? (단, 코드 실행상의 문제는 고려하지 않음)

적용전 코드
int withdraw(int amount) {
if (amount > _balence)
return 1;
else {
_balence -= amount;
return 0;
}
 
적용후 코드
void withdraw(int amount) throws B_exception {
if (amount > _balence) throw new
B_exception();
_balence -= amount;
}

① replace error code with exception

② replace exception with test

③ replace parameter with exception

④ inline method

 

35. 다음은 Git에 대한 설명이다. Git에 대한 옳은 설명만으로 가장 적절하게 묶은 것은?

가. 브랜치(branch) : 커밋(commit)을 가리키는 포인터
나. 마스터(master) : 최초로 커밋을 수행할 때 생성되며, 커밋을 수행할 때 마다 가장 최근의 브랜치를 가리킨다.
다. 토픽(topic) 브랜치에서 수행한 작업은 커밋을 통해 자동으로 마스터 브랜치에 병합된다.
라. 현재 작업중인 브랜치에서 마스터 브랜치로 이동하기 위해서는 git checkout master 명령을 사용한다.
마. 브랜치에 있는 개개의 커밋을 수행하면, 단계적으로 브랜치 병합이 이루어진다.
바. 작업중에 새로운 브랜치로 이동을 할 때, 작업 내용을 임시 저장하기 위하여 git stash 명령을 사용한다.

① 가, 나, 다 ② 가, 나, 라

③ 나, 다, 마 ④ 다, 마, 바

 

36. 다음의 아키텍처 분석/평가 방법에 대한 설명으로 가장 적절한 것은?

입력: 1) 아키텍처
2) 아키텍처 전략들
3) N개의 품질속성 시나리오
출력: 각 아키텍처 전략의 순위


단계 1. 시나리오 정리(N개의 시나리오를 N/3개의 시나리오로 축소)
단계 2. 시나리오 정제
단계 3. 시나리오 우선순위(N/6개의 시나리오로 축소)
단계 4. 각 시나리오의 응답수준별로 해당하는 효용값 부여
단계 5. 아키텍처 전략을 도출하고 각 아키텍처 전략에 대하여 관련 시나리오별 품질속성 응답수준을 결정
단계 6. 보정으로 기대되는 품질속성 응답수준의 효용값 결정
단계 7. 아키텍처 전략이 주는 총 이득 계산
단계 8. 투자수익률을 기초로 아키텍처 전략 선정
단계 9. 직관을 이용하여 결과 확인

① SAAM(Software Architecture Analysis Method)

② ATAM(Architecture Tradeoff Analysis Method)

③ ARID(Active Review for Intermediate Designs)

④ CBAM(Cost Benefit Analysis Method)

 

37. 다음 그림은 각 번호를 부여한 10개의 레거시 시스템을 대상으로 시스템 품질과 비즈니스 가치를 기준으로 평가한 결과이다. 재공학 대상과 유지 보수 대상을 가장 적절하게 묶은 것은?

① 재공학 – 9, 10 유지보수 – 4, 5

② 재공학 – 4, 5 유지보수 – 6, 7, 8

③ 재공학 – 6, 7, 8 유지보수 – 1, 2, 3

④ 재공학 – 9, 10 유지보수 – 6, 7, 8

 

38. 다음 절차로 진행하는 스토리 점수 추정 방법으로 가장 적절한 것은?

착수 준비
- 진행자를 선정한다.
- 추정에 전문가를 참여시킨다.
- 추정을 준비한다.
추정 대상
토론
- 진행자는 추정 방법을 설명하고 서
기를 선정한다.
- 제품 책임자는 개발 전문가에게 요구
기능을 설명한다.
- 개발 전문가는 질문 및 토론한다.
- 서기는 업무 범위와 제약사항을 기록한다.
추정 수행
- 개발 전문가는 각자 추정 값을 제시한다.
- 가장 작은 추정 값과 가장 큰 추정 값을 낸 사람이 이유를 설명하고 토론
한다. 이때 가정과 제약사항을 기록
한다.
- 각자 새로운 추정 값을 제시하고 차이가 줄어들 때까지 계속한다.

① 스토리 워크숍

② 플래닝 포커

③ 스크럼 회의

④ 스프린트 계획과 검토

 

39. 다음과 같이 스프링 모듈 간의 상호 의존 관계를 나타날 때, (가)에 대한 설명으로 가장 적절한 것은?

① spring-core와 spring-beans 모듈은 스프링 DI 기능과 IoC 컨테이너 구현을 제공하고, spring-expression 모듈은 스프링 애플리케이션에서 SpEL 지원을 제공한다.

② spring-aop 모듈은 AOP 기능을, spring-instrument 모듈은 클래스 계측 기능 지원을 제공한다.

③ spring-orm 모듈은 하이버네이트나 JPA와 같은 ORM 프레임워크 통합을 제공하고 spring-jms 모듈은 JMS 공급자와의 상호 작용을 쉽게 만들어준다.

④ spring-webmvc 모듈은 서블릿 기반의 웹 애플리케이션과 RESTful 웹 서비스 개발을 쉽게 해주며, spring-webflux 모듈은 반응형 웹 애플리케이션과 RESTful 웹 서비스 개발을 쉽게 해준다.

 

40. 다음 (가), (나)에 해당하는 Chidamber와 Kemerer의 객체 지향 척도로 가장 적절한 것은?

(가) 클래스에 있는 메서드들의 쌍을 고려하여 계산된다. 이 값은 공유된 속성이 없는 메서드 쌍의 수와 공유된 속성이 있는 메서드 쌍의 수의 차이이다.
(나) 클래스의 객체가 받은 메시지에 응답하여 실행될 가능성이 있는 메서드들의 수를 나타낸다. 이 값이 클수록 클래스가 복잡해지므로 클래스가 오류를 포함할 가능성은 더 높을 수 있다.

① (가) LCOM(Lack of cohesion in methods)

      (나) WMC(Weighted methods per class)

② (가) WMC(Weighted methods per class)

      (나) RFC(Response for a class)

③ (가) LCOM(Lack of cohesion in methods)

      (나) RFC(Response for a class)

④ (가) RFC(Response for a class)

      (나) LCOM(Lack of cohesion in methods)

 

41. Robert Martin의 Clean Architecture에서는 외부 요소에서 내부 요소 방향만의 의존성을 강조하고 있다. 이 아키텍처를 구성하는 요소들을 내부에서 외부의 순서로 가장 적절하게 나열한 것은?

 

① Entities – Interface Adapters – Use Cases –Frameworks and Drivers

② Entities – Use Cases – Interface Adapters -Frameworks and Drivers

③ Frameworks and Drivers – Use Cases –Interface Adapters - Entities

④ Frameworks and Drivers – Interface Adapters– Entities – Use Cases

 

42. 다음 문장들은 문서편집 프로그램에 대한 요구사항을 기술하고 있다. 이 중에서 ISO/IEC 25010의 신뢰성(reliability)에 대한 설명으로 가장 적절하게 묶은 것은?

가. 500페이지 정도의 문서를 2초 이내에 읽어야 한다.
나. 자신 고유의 파일 포맷뿐만 아니라 다른 문서 편집 프로그램의 파일 포맷도 읽어야 한다.
다. 메모리가 부족해지면 가용 메모리 양에 맞추어 문서의 일부분이라도 편집할 수 있도록 한다.
라. 예상치 못한 이유로 프로그램이 종료되면 재시작을하고 기존 문서를 바로 보여주도록 한다.

① 가 ② 나, 다

③ 다, 라 ④ 라

 

43. 다음 클래스 다이어그램은 Button이 눌렸을 때 기존에 구현된 LEDLight 클래스를 이용하여 ILamp 인터페이스를 구현하는 동작에 대한 설계를 보여 준다. 이 설계에서 적용되고 있는 2개의 디자인 패턴으로서 가장 적절한 것은?

① Strategy pattern과 Proxy pattern

② State pattern과 Adapter pattern

③ Command pattern과 Proxy pattern

④ Command pattern과 Adapter pattern

 

44. 다음의 Cause-Effect Graph에서 C1과 C2의 각 값에 대한 A1, A2, A3의 값으로 가장 적절한 것은?

 
 
CI
T
T
F
F
C2
T
F
T
F
A1
T
T
T
T
A2
T
F
F
F
A3
T
T
F
T

① 가 ② 나

③ 다 ④ 라

 

45. 다음은 시퀀스 다이어그램과 이와 일관성이 있는 클래스 다이어그램을 보여 준다. 시퀀스 다이어그램을 기준으로 할 때, 클래스 다이어그램에 존재하는 문제를 설명한 것으로 가장 적절한 것은?

① 클래스 C3에 op1() 연산이 반드시 정의되어야 한다.

② 클래스 C2에서 클래스 C3로의 관계는 의존관계가 아니라 연관관계가 되어야 한다.

③ 클래스 C1에서 클래스 C2로의 연관관계는 C2 클래스 쪽에'*' 등의 다중성이 명시되어야 한다.

④ 클래스 C1의 op12() 연산은 ‘-’가 아니라 '+'로 표시되어야 한다.

 

46. 시스템 요청에 대한 실패가 인명이나 환경에 피해를 주는 등 심각한 결과를 초래할 수 있는 시스템의 신뢰성을 표현하는 척도로 가장 적절한 것은?

 

① 평균 고장 간격 (MTBF: mean time between failure)

② 평균 고장 시간 (MTTF: mean time to failure)

③ 고장 발생 비율 (ROCOF: rate of occurrence of failure)

④ 온 디맨드 고장 확률 (POFOD: probability of failure on demand)

 

47. 시스템 확실성(dependability) 속성에 대한 다음 설명에서 (가), (나)에 들어갈 내용으로 가장 적절한 순서대로 나열한 것은?

(가)는 주어진 시점에 시스템이 작동 중이고 유용한 서비스를 제공할 확률이다.
(나)는 장비 고장이나 사이버 공격 등 손상 사건이 일어났을 때 중요한 서비스를 잘 유지할 수 있는지에 대한 추정이다.

① 가용성(availability), 보안성(security)

② 가용성(availability), 복원성(resilience)

③ 신뢰성(reliability), 보안성(security)

④ 신뢰성(reliability), 복원성(resilience)

 

48. 다음은 시스템의 신뢰성을 향상시키는 방법에 대한 설명이다. (가), (나)에 들어갈 내용으로 가장 적절한 순서대로 나열한 것은?

광범위한 컴파일러 검사가 가능한 강한 자료형의 언어를 사용하는 것과 포인터와 같이 오류가 발생하기 쉬운 요소의 사용을 최소화하는 것은 (가)기법이고, 체계적인 테스팅, 디버깅, 정적 분석은 (나) 기법의 예이다.

① 결함 내성, 결함 회피

② 결함 내성, 결함 감지 및 정정

③ 결함 회피, 결함 내성

④ 결함 회피, 결함 감지 및 정정

 

49. 다음 설명에서 (가)에 들어갈 내용으로 가장 적절한 것은?

(가)은/는 도메인 특화 애플리케이션을 구축하기 위하여 사용되는 공통 아키텍처와 공유되는 컴포넌트를 가지는 애플리케이션의 집합이다. 다양한 고객의 요구사항에 맞게 구성하고 적응할 수 있도록 설계되었으며, 하나의 애플리케이션 유형을 일반화하여 다른 고객을 위해서도 적응하는 것이다.

① 아키텍처 패턴

② 서비스 지향 시스템

③ 소프트웨어 제품라인

④ 애플리케이션 프레임워크

 

50. 다음 sequence diagram을 바탕으로 Class1의 m1() 연산에 대한 CC(순환복잡도)와 Class1의 CBO(Coupling Between Objects)의 값으로 가장 적절한 것은?(단, CBO를 계산할 때 Class1을 이용하는 다른 클래스는 포함하지 않음을 가정한다.)

① CC = 3, CBO = 3 ② CC = 4, CBO = 3

③ CC = 3, CBO = 2 ④ CC = 4, CBO = 2

 


 

정답)

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