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

2022년 제 23회 정보시스템 감리사 기출문제 풀이 - 소프트웨어공학(31-35)

by 꼬모부 2024. 1. 17.
728x90
2022년 제 23회 정보시스템 감리사 소프트웨어공학 기출문제 풀이 31-35번까지 풀이를 진행하겠습니다.
도움이 되시길 바랍니다.

 

소프트웨어공학

 

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

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

 

출제의도

버틀러 (Burtler) 그룹에 대한 내용을 찾기 어려워 다시 찾아보고 정리하겠습니다.

 

각 문항에 대한 설명
정답은 ① 가 – 다 – 라 – 마 – 바 - 나 입니다.

 


 

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

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

 

출제의도

좀더 공부하고 정리한 후 설명을 달겠습니다.

 

각 문항에 대한 설명
정답은 ① 블랙보드(Blackboard) - 가 입니다.

 


 

문제 33
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

 

출제의도

MC/DC (Modified Condition/Decision Coverage)는 소프트웨어 테스트에서 사용되는 기준 중 하나로, 각 조건이 프로그램 결정에 어떻게 영향을 미치는지를 확인하기 위해 설계된 테스트 케이스를 생성하는 것을 목표로 합니다. MC/DC는 조건 간의 독립성을 보장하면서 모든 조건을 최소 한 번은 평가하는 것이 목표입니다.

 

각 문항에 대한 설명
주어진 테스트 케이스 생성표에 따라서 각각의 조건에 대해 최소한 한 번은 참(True)과 한 번은 거짓(False)으로 평가되어야 합니다.

주어진 테스트 케이스 생성표에 따라 MC/DC 100%의 커버리지를 달성할 수 있는 최소한의 테스트 케이스 쌍은 다음과 같습니다:

TC1: True - True
TC2: True - False
TC3: False - True

따라서 ④ TC4: False - False은 MC/DC 100%의 커버리지를 달성하는데 필요하지 않습니다.

 


 

문제 34
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

 

출제의도
  1. 적용 전 코드에서는 withdraw 메서드가 일정 금액을 출금하고, 잔고가 부족할 경우 -1을 반환하는 에러 코드를 사용하고 있습니다.
  2. 적용 후 코드에서는 잔고 부족 시 B_exception이라는 예외를 던지도록 변경되었습니다. 이로써 에러 코드 대신 예외를 사용하여 에러 상황을 처리하게 되었습니다.
  3. 제공된 리팩토링 전후 코드를 살펴보면, 리팩토링 기법으로 사용된 것은 "에러 코드를 예외로 대체"하는 것입니다

 

각 문항에 대한 설명
① replace error code with exception:
이러한 변화는 코드의 가독성을 향상하고, 예외를 통해 에러 상황을 명시적으로 처리할 수 있게 됩니다. 따라서 "replace error code with exception"이 적절한 리팩토링 기법입니다.

② replace exception with test:
이 옵션은 예외를 테스트로 대체하는 것을 의미하며, 여기서는 해당 내용이 적용되지 않았습니다.

③ replace parameter with exception: 이 옵션은 메서드의 매개변수를 예외로 대체하는 것을 의미하며, 여기서는 해당 내용이 적용되지 않았습니다.

④ inline method:
이 옵션은 메서드를 호출하는 부분에 메서드의 내용을 직접 삽입하는 것을 의미하며, 여기서는 해당 내용이 적용되지 않았습니다.

 


 

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

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

 

출제의도

옳은 Git 설명을 고르기 위해서는 Git의 기본적인 동작과 관련된 내용을 이해해야 합니다.

 

각 문항에 대한 설명
가. 브랜치(branch) :
커밋(commit)을 가리키는 포인터 맞습니다. 브랜치는 특정 커밋을 가리키는 포인터 역할을 합니다.

나. 마스터(master) :
최초로 커밋을 수행할 때 생성되며, 커밋을 수행할 때마다 가장 최근의 브랜치를 가리킨다. 이해에 오류가 있습니다. 마스터 브랜치는 일반적으로 기본 브랜치로 생성되지만, 커밋이 수행될 때마다 마스터 브랜치가 업데이트되는 것은 아닙니다. 가장 최근의 브랜치를 가리키는 것도 아닙니다.

다. 토픽(topic)
브랜치에서 수행한 작업은 커밋을 통해 자동으로 마스터 브랜치에 병합된다. 일반적으로 토픽 브랜치에서의 작업은 병합을 위해 명시적으로 수행되어야 합니다. 자동으로는 이루어지지 않습니다.

라. 현재 작업 중인 브랜치에서 마스터 브랜치로 이동하기 위해서는 git checkout master 명령을 사용한다. 현재 작업 중인 브랜치에서 다른 브랜치로 이동하려면 git checkout 명령을 사용합니다.

마. 브랜치에 있는 개개의 커밋을 수행하면, 단계 적으로 브랜치 병합이 이루어진다. 일반적으로 브랜치에서의 개별 커밋이 이루어질 때마다 그 브랜치는 앞으로 나아가면서 변경이 적용되어 병합되는 것을 의미합니다.

바. 작업 중에 새로운 브랜치로 이동할 때, 작업 내용을 임시 저장하기 위하여 git stash 명령을 사용한다.
작업 중인 내용을 임시로 저장하고 새로운 브랜치로 이동할 때 git stash 명령을 사용할 수 있습니다.

따라서 옳은 설명으로는 "가, 나, 라"가 되며, 정답은 ②입니다.

 

다음 시간에는 소프트웨어 공학 기출문제 풀이 36-40번까지 풀이를 진행해 보겠습니다.
오늘도 읽어 주셔서 감사합니다.

 

반응형
LIST