# 4. 자격증/정보처리기사

정보처리기사 # 2021.05_2과목 소프트웨어 개발

둥굴둥굴둥굴레차 2021. 8. 9. 00:50

 

 

힙 정렬(Heap Sort)에 대한 설명으로 틀린것은?

  1. 정렬할 입력 레코드들로 힘을 구성하고 가장 큰 키 값을 갖는 루트 노드를 제거하는 과정을 반복하여 정렬하는 기법이다.
  2. 평균 수행 시간은 O(nlog2n)이다.
  3. 완전 이진트리(complete binary tree)로 입력자료의 레코드를 구성한다.
  4. 최악의 수행 시간은 O(2n4)이다.
평군과 최악 모두 O(nlog2n)이다.

O(1) : 상수형 복잡도 (해시 함수)
O(logN) : 로그형 복잡도 (이진 탐색)
O(N) : 선형 복잡도 (순차 탐색)
O(NlogN) : 선형 로그형 복잡도 (퀵 정렬, 병합정렬)
O(N^2) : 제곱형 (버블 정렬, 삽입 정렬, 선택 정렬)

 

 

다음 설명의 소프트웨어 테스트의 기본원칙은?

 

 - 파레토 법칙이 좌우한다.

 - 애플리케이션 결함은 대부분 소수의 특정한 모듈에 집중되어 존재한다.

 - 결함은 발생한 모듈에서 계속 추가로 발생할 가능성이 높다.

 

  1. 살충제 패러독스
  2. 결함 집중
  3. 오류 부재의 궤변
  4. 완벽한 테스팅은 불가능
[소프트웨어 테스트]

 - 파레토 법칙 : 20%에 해당하는 코드에서 80%의 결함이 나타난다.

 - 살충제 패러독스 : 동일한 테스트 케이스로는 새 결함을 발견할 수 없으므로 주기적으로 테스트 케이스를 개선해야 한다.

 - 오류 부재의 궤변 : 사용자의 요구사항을 만족하지 못한다면 오류가 없어도 품질이 높다고 말할 수 없다.

 

 

 

버전 관리 항목 중 저장소에 새로운 버전의 파일로 갱신하는 것을 의미하는 용어는?

  1. 형상 감사(Configuration Audit)
  2. 롤백 (Rollback)
  3. 단위 테스트(Unit Test)
  4. 체크인(Check-In)
[소프트웨어 버전 등록 용어]
 - 저장소 : 최신 버전의 파일들과 변경 내역에 대한 정보들이 저장되어 있는 곳
 - 가져오기(import) : 버전 관리가 되고 있지 않은 아무것도 없는 저장소에 처음으로 파일을 복사
 - 체크아웃(Check-out) : 프로그램을 수정하기 위해 저장소에서 파일을 받아 옴, 소스 파일과 함께 버전 관리를 위한 파일들을 받아 옴
 - 체크인(Check-In) : 체크아웃한 파일의 수정을 완료한 후 저장소의 파일을 새로운 버전으로 갱신
- 커밋 : 체크인을 수행할 때 이전에 갱신된 내용이 있는 경우에는 충돌을 알리고 diff 도구를 이용해 수정한 후 갱 신
 - 동기화: 저장소에 있는 최신 버전으로 자신의 작업공간을 동기화
 - 롤백(rollback) : DB에서 업데이트에 오류가 발생할 때, 이전 상태로 되돌리는 것. 후진 복귀라고도 한다.

[참고] 형상 감사(Configuration Audit)
무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업

 

 

소프트웨어 테스트와 관련한 설명으로 틀린것은?

  1. 화이트 박스 테스트는 모듈의 논리적인 구조를 체계적으로 점검할 수 있다.
  2. 블랙박스 테스트는 프로그램의 구조를고려하지 않는다.
  3. 테스트 케이스에는 일반적으로 시험 조건,테스트 데이터, 예상 결과가 포함되어야한다. 
  4. 화이트박스 테스트에서 기본 경로(BasisPath)란 흐름 그래프의 시작 노드에서 종료노드까지의 서로 독립된 경로로 싸이클을 허용하지 않는 경로를 말한다.
 - 화이트 박스 테스트
모듈 안의 작동을 직접 관찰 할 수 있다.
내부 구조와 동작을 검사하는 테스트 방식, 소프트웨어의 내부 소스를 테스트.
기본 경로는 싸이클을 최대 한번만 지나야한다.
내부의 논리적인 모든 경로를 테스트해 테스트 케이스를 설계.
조건 검사
기초 경로 검사
루프 검사

 - 블랙 박스 테스트
내부 구조나 작동 원리를 모르는 상태에서 입력에 따른 출력 결과를 테스트
경계값 분석
동치불할검사
원인-효과 그래프 검사
오류 예측 검사
비교 검사

 

 

애플리케이션의 처리량, 응답시간, 경과시간, 자원사용률에 대해 가상의 사용자를 생성하고 테스트를 수행함으로써 성능 목표를 달성하였는지를 확인하는 테스트 자동화 도구는?

  1. 명세 기반 테스트 설계 도구
  2. 코드 기반 테스트 설계 도구
  3. 기능 테스트 수행 도구
  4. 성능 테스트 도구
[단위 테스트 종류]
 - 명세 기반 테스트 : 주어진 명세를 빠짐없이 테스트 케이스로 구현하고 있는지 확인하는 테스트
 - 구조 기반 테스트 : 프로그램 내부 구조 및 복잡도를 검증하는 화이트박스 테스트 시행, 제어 흐름과 조건 결정 등이 목적
 - 성능 테스트 도구 : 애플리케이션의 처리량, 응답시간, 경과시간, 자원 사용률 등 성능 목표 달성 여부 확인. 인위적으로 적용한 가상 사용자를 만들어 테스트 수행

 

 

 

디지털 저작권 관리(DRM) 구성 요소가 아닌 것은? 

  1. Dataware house
  2. DRM Controller
  3. Packager
  4. Contents Distributor
[저작권 관리 구성요소]
 - 콘텐츠 분배자(Contents Distributor): 암호화된 콘텐츠를 유통하는곳/사람
 - 콘텐츠 제공자(Contents Provider) : 콘텐츠를 제공하는 저작권자
 - 패키저(Packager): 콘텐츠를 메타데이터와 함께 배포가능한 형태로 묶어 암호화. 사용자 중심으로 패키징(아마?)
 - 클리어링 하우스(Clearing House): 키 관리 및 라이센스 발급 관리
 - DRM Controller : 배포된 콘텐츠의 이용권한을 통제
 - 그 외 : 저작권 표현, 콘텐츠 식별체계 표현, 정책 관리, 크랙 방지

 

 

블랙박스 테스트를 이용하여 발견할 수 있는 오류가 아닌 것은?

  1. 비정상적인 자료를 입력해도 오류 처리를 수행하지 않는 경우
  2. 정상적인 자료를 입력해도 요구된 기능이 제대로 수행되지 않는 경우
  3. 반복 조건을 만족하는데도 루프 내의 문장이 수행되지 않는 경우
  4. 경계값을 입력할 경우 요구된 출력 결과가 나오지 않는 경우
[블랙박스 테스트]
1) 경계값 분석 : 경계값에서 오류가 발생될 확률이 높다는 점을 이용
2) 기능 테스트
3) 프로그램 구조 고려 X

3번이 정답

 

 

정렬된 N개의 데이터를 처리하는 데 O(Nlog2N)의 시간이 소요되는 정렬 알고리즘은?

  1. 합병정렬
  2. 버블정렬
  3. 선택정렬
  4. 삽입정렬
O(Nlog2N) ⇒ 힙정렬, 2-way 합병정렬
O(N2) ⇒ 버블정렬, 삽입정렬, 선택정렬, 퀵정렬, 쉘정렬

정렬된 데이터의 경우, 버블정렬과 삽입정렬은 O(N) 이 될 수 있음

 

 

다음 postfix로 표현된 연산식의 연산 결과로 옳은 것은?

 

3 4 * 5 6 * +

 

  1. 35
  2. 42 
  3. 81
  4. 360
[prefix]
전위 표기법

[infix]
중위 표기법

[postfix]
후위 표기법

 

 

 

EAI(Enterprise Application Integration) 구축 유형에서 애플리케이션 사이에 미들웨어를 두어 처리하는 것은?

  1. Message Bus
  2. Point-to-point
  3. Hub & Spoke
  4. Hybrid
EAI (Enterprise Application Integration)
기업 내 상호 연동이 가능하게 해주는 솔루션
비즈니스 간 통합 및 연계성을 증대시켜 각 시스템 간의 확정성을 높여줌

[EAI 구축 유형]

Point-to-Point
가장 기본적인 애플리케이션 통합 방식. 애플리케이션을 1:1 로 연결
변경 및 재사용이 어려움

Hub & Spoke
허브를 통해 데이터를 전송하는 중앙 집중형 방식
확장 및 유지 보수가 용이하지만 허브 장애 발생 시 시스템 전체에 영향

Message Bus (ESB 방식)
애플리케이션 사이에 미들웨어를 두어 처리하는 방식
확장성이 뛰어나며 대용량 처리가 가능

Hybrid
그룹 내에서는 Hub & Spoke 방식, 그룹 간에는 Message 방식 사용
데이터 병목 현상 최소화

 

 

인터페이스 구현 검증 도구가 아닌 것은?

  1. Foxbase
  2. STAF
  3. watir
  4. xUnit
[인터페이스 구현 검증 도구]
xUnit, STAF, Fitnesse, NTAF, Selenium, watir

xUnit : Java, C++ 등 다양한 언어 지원하는 단위 테스트 프레임워크
STAF : 서비스 호출 및 컴포넌트 재사용 등 환경 지원하는 테스트 프레임워크
FitNesse : 웹 기반 테스트케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임워크
NTAF : FitNesse의 장점인 협업 기능과  STAF의 장점인 재사용 및 확장성을 통합한 네이버의 테스트 자동화 프레임워크이다.
Selenium : 다양한 브라우저 및 개발 언어 지원하는 웹 애플리케이션 테스트 프레임워크
Watir : Ruby를 사용하는 애플리케이션 테스트 프레임워크
Ruby : 인터프리터 방식의 객체지향 스크립트 언어

 

 

소프트웨어 패키징에 대한 설명으로 틀린 것은?

  1. 패키징은 개발자 중심으로 진행한다.
  2. 신규 및 변경 개발소스를 식별하고, 이를 모듈화하여 상용제품으로 패키징 한다.
  3. 고객의 편의성을 위해 매뉴얼 및 버전관리를 지속적으로 한다.
  4. 범용 환경에서 사용이 가능하도록 일반적인 배포 형태로 패키징이 진행된다.
[소프트웨어 패키징]
모듈별로 생성한 실행 파일들을 하나로 합쳐서 설치 파일을 만드는 것.
따라서 사용자 중심으로 패키징.

 

 

테스트와 디버그의 목적으로 옳은 것은?
     
     1. 테스트는 오류를 찾는 작업이고 디버깅은 오류를 수정하는 작업이다.
     2. 테스트는 오류를 수정하는 작업이고 디버깅은 오류를 찾는 작업이다.
     3. 둘 다 소프트웨어의 오류를 찾는 작업으로 오류 수정은 하지 않는다.
     4. 둘 다 소프트웨어 오류의 발견, 수정과 무관하다.

테스트는 오류를 찾는 작업이고 디버깅은 오류를 수정하는 작업이다.

Coding→ Testing→ Error 발생 (== Bug 발견)→ Error 수정 (== Debugging)→ Retesting

 

 

다음 중 스택을 이용한 연산과 거리가 먼 것은?

  1. 선택정렬
  2. 재귀호출
  3. 후위표현(Post-fix expression)의 연산
  4. 깊이우선탐색
[선택정렬]
큐를 이용해 정렬