자격증 요약/정보처리기사

[23년 3회 2과목] 정보처리기사 필기 문제 풀이

문성 2026. 1. 19. 19:56

제2과목: 소프트웨어 개발 (21~40번)


21. 반정규화(Denormalization) 유형 중 중복 테이블을 추가하는 방법에 해당하지 않는 것은?

① 빌드 테이블의 추가

② 집계 테이블의 추가

③ 진행 테이블의 추가

④ 특정 부분만을 포함하는 테이블 추가

반정규화 : 시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정으로, 의도적으로 정규화 원칙을 위배하는 행위
 - 반정규화를 수행하면 시스템의 성능이 향상되고 관리 효율성은 증가하지만 데이터의 일관성 및 정합성, 무결성이 저하될 수 있다.
 - 과도한 반정규화는 오히려 성능을 저하시킬 수 있다.
 - 반정규화를 위해서는 사전에 데이터의 일관성과 무결성을 우선으로 할지, 데이터베이스의 성능과 단순화를 우선으로 할지를 결정해야한다.

반정규화 방법
테이블 통합

테이블 분할
 - 수평 분할
 - 수직 분할

중복 테이블 추가
 - 집계 테이블의 추가
 - 진행 테이블의 추가
 - 특정 부분만을 포함하는 테이블 추가

중복 속성 추가

답: 1번

 

22. 알고리즘 시간 복잡도 O(1)이 의미하는 것은?

① 컴퓨터 처리가 불가

② 알고리즘 입력 데이터 수가 한 개

③ 알고리즘 수행시간이 입력 데이터 수와 관계없이 일정

④ 알고리즘 길이가 입력 데이터보다 작음

빅오 표기법 (Big-O Notation)
일반적인 알고리즘에 대한 최악의 시간 복잡도를 빅오표기법으로 표현하면 다음과 같다.
O(1) : 입력값(n)에 관계 없이 일정하게 문제 해결에 하나의 단계만을 거침 (스택의 삽입(push), 삭제(pop)
O(log2n) : 문제 해결에 필요한 단계가 입력값(n) 또는 조건에 의해 감소함 (이진 트리, 이진 검색)
O(n) : 문제 해결에 필요한 단계가 입력값(n)과 1:1의 관계를 가짐 (for문)
O(nlog2n) : 문제 해결에 필요한 단계가 n(log2n)번만큼 수행 (힙 정렬, 2-way 합병 정렬)
O(n2) : 문제 해결에 필요한 단계가 입력값(n)의 제곱만큼 수행 (삽입 정렬, 쉘 정렬, 선택 정렬, 버블 정렬, 퀵 정렬)
O(2n) : 문제 해결에 필요한 단계가 2의 입력값(n) 제곱만큼 수행됨 (피보나치 수열)

답: 3번
 

23. 디지털 저작권 관리(DRM)의 기술 요소가 아닌 것은?

① 크랙 방지 기술

② 정책 관리 기술

③ 암호화 기술

④ 방화벽 기술

디지털 저작권 관리(DRM, Digital Right Management) :저작권자가 배포한 디지털 콘텐츠가 저작권자가 의도한 용도로만 사용되도록 디지털 콘텐츠의 생성, 유통, 이용까지의 전 과정에 걸쳐 사용되는 디지털 콘텐츠 관리 및 보호 기술
 - 원본 콘텐츠가 아날로그인 경우에는 디지털로 변환한 후 패키저(Packager)에 의해 DRM 패키징을 수행한다.
 - 콘텐츠의 크기에 따라 음원이나 문서와 같이 크기가 작은 경우에는 사용자가 콘텐츠를 요청하는 시점에서 실시간으로 패키징을 수행하고, 크기가 큰 경우에는 미리 패키징을 수행한 후 배포한다.
 - 패키징을 수행하면 콘텐츠에는 암호화된 저작권자의 전자서명이 포함되고 저작권자가 설정한 라이선스 정보가 클리어링 하우스에 등록된다.
 - 사용자가 콘텐츠를 사용하기 위해서는 클리어링 하우스에 등록된 라이선스 정보를 통해 사용자 인증과 콘텐츠 사용 권한 소유 여부를 확인받아야 한다.
 - 종량제 방식을 적용한 소프트웨어의 경우 클리어링 하우스를 통해 서비스의 실제 사용량을 측정하여 이용한 만큼의 요금을 부과한다.

디지털 저작권 관리(DRM) 구성요소
 - 클리어링 하우스 (Clearing House) : 저작권에 대한 사용 권한, 라이선스 발급, 암호화된 키 관리, 사용량에 따른 결제 관리 등을 수행
 - 콘텐츠 제공자 (Contents Provider) : 콘텐츠를 제공하는 저작권자
 - 패키저 (Packager) : 콘텐츠를 메타 데이터와 함께 배포 가능한 형태로 묶어 암호화하는 프로그램
 - 콘텐츠 분배자 (Contents Distributor) : 암호화된 콘텐츠를 유통하는 곳이나 사람
 - 콘텐츠 소비자 (Customer) : 콘텐츠를 구매해서 사용하는 주체
 - DRM 컨트롤러 (DRM Controller) : 배포된 콘텐츠의 이용 권한을 통제하는 프로그램
 - 보안 컨테이너 (Security Container) : 콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안 장치

디지털 저작권 관리(DRM)의 기술 요소
 - 암호화 (Encryption) : 콘텐츠 및 라이선스를 암호화하고 전자 서명을 할 수 있는 기술
 - 키 관리 (Key Management) : 콘텐츠를 암호화한 키에 대한 저장 및 분배 기술
 - 암호화 파일 생성 (Packager) : 콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술
 - 식별 기술 (Identification) : 콘텐츠에 대한 식별 체계 표현 기술
 - 저작권 표현 (Right Expression) : 라이선스의 내용 표현 기술
 - 정책 관리 (Policy Management) : 라이선스 발급 및 사용에 대한 정책 표현 및 관리 기술
 - 크랙 방지 (Tamper Resistance) : 크랙에 의한 콘텐츠 사용 방지 기술
 - 인증 (Authentication) : 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술

답: 4번
방화벽(Firewall)은 네트워크 보안 기술
 

24. 다음 트리를 Preorder(전위) 운행법으로 운행할 경우 가장 먼저 탐색되는 것은?

 

① A

② B

③ D

④ G

트리 순회(★)

※ 서브 트리를 하나의 노드로 생각할 수 있도록 그림과 같이 서브트리 단위로 묶는다.
※ A = Root
전위 (Pre-order): Root → 왼쪽 → 오른쪽
 - 1단계 : A 1 3
 - 2단계 : A B2E 3
 - 3단계 : A B DHI E 3
 - 4단계 : A B DHI E CFG (최종)

중위 (In-order): 왼쪽 → Root → 오른쪽
 - 1단계 : 1 A 3
 - 2단계 : 2BE A 3
 - 3단계 : HDI BE A 3
 - 4단계 : HDI BE A FCG

후위 (Post-order): 왼쪽 → 오른쪽 → Root
 - 1단계 : 1 3 A
 - 2단계 : 2EB 3 A
 - 3단계 : HID EB 3 A
 - 4단계 : HID EB FGC A

답: 1번
전위는 Root 먼저 순회한다.
 

25. 인터페이스 보안을 위해 네트워크 영역에 적용될 수 있는 솔루션과 거리가 먼 것은?

① IPSec

② SSL

③ SMTP

④ S-HTTP

인터페이스 보안 기능
네트워크 영역
 - 인터페이스 송수신 간 스니핑 등을 이용한 데이터 탈취 및 변조 위협을 방지하기 위해 네트워크 트래픽에 대한 암호화를 설정
 - 암호화는 인터페이스 아키텍처에 따라 IPSec, SSL, S-HTTP 등의 다양한 방식으로 적용
※IPsce(IP Security) : 네트워크 계층에서 IP 패킷 단위의 데이터 변조 방지 및 은닉 기능을 제공하는 프로토콜로, 암호화 수행시 양방향 암호화를 지원함

애플리케이션 영역
 - 소프트웨어 개발 보안 가이드를 참조하여 애플리케이션 코드 상의 보안 취약점을 보완하는 방향으로 애플리케이션 보안 기능을 적용

데이터베이스영역
 - 데이터베이스, 스키마, 엔티티의 접근 권한과 프로시저, 트리거 등 데이터베이스 동작 객체의 보안 취약점에 보안 기능을 적용함

※ 응용 계층의 주요 프로토콜
FTP (File Transfer) : 컴퓨터와 컴퓨터 또는 컴퓨터와 인터넷 사이에서 파일을 주고받을 수 있도록 하는 원격 파일 전송 프로토콜
SMTP (Simple Mail Transfer Protocol) : 전자 우편을 교환하는 서비스
TELNET : 멀리 떨어져 있는 컴퓨터에 접속하여 자신의 컴퓨터처럼 사용할 수 있도록 해주는 가상의 터미널 기능을 수행함
SNMP : TCP/IP의 네트워크 관리 프로토콜, 라우터나 허브 등 네트워크 기기의 네트워크 정보를 네트워크 관리 시스템에 보내는 데 사용되는 표준 통신 규약
DNS : 도메인 네임을 IP 주소로 매핑하는 시스템
HTTP : 월드 와이드 웹(WWW)에서 HTML 문서를 송수신 하기 위한 표준 프로토콜

답: 3번
 

26. 저작권 관리 구성 요소에 대한 설명이 틀린 것은?

① 콘텐츠 제공자: 콘텐츠를 제공하는 저작권자

② 콘텐츠 분배자: 콘텐츠를 메타 데이터와 함께 배포 가능한 단위로 묶는 기능

③ 클리어링 하우스: 키 관리 및 라이선스 발급 관리

④ DRM 컨트롤러: 배포된 콘텐츠의 이용 권한을 통제

지털 저작권 관리(DRM, Digital Right Management) :저작권자가 배포한 디지털 콘텐츠가 저작권자가 의도한 용도로만 사용되도록 디지털 콘텐츠의 생성, 유통, 이용까지의 전 과정에 걸쳐 사용되는 디지털 콘텐츠 관리 및 보호 기술
 - 원본 콘텐츠가 아날로그인 경우에는 디지털로 변환한 후 패키저(Packager)에 의해 DRM 패키징을 수행한다.
 - 콘텐츠의 크기에 따라 음원이나 문서와 같이 크기가 작은 경우에는 사용자가 콘텐츠를 요청하는 시점에서 실시간으로 패키징을 수행하고, 크기가 큰 경우에는 미리 패키징을 수행한 후 배포한다.
 - 패키징을 수행하면 콘텐츠에는 암호화된 저작권자의 전자서명이 포함되고 저작권자가 설정한 라이선스 정보가 클리어링 하우스에 등록된다.
 - 사용자가 콘텐츠를 사용하기 위해서는 클리어링 하우스에 등록된 라이선스 정보를 통해 사용자 인증과 콘텐츠 사용 권한 소유 여부를 확인받아야 한다.
 - 종량제 방식을 적용한 소프트웨어의 경우 클리어링 하우스를 통해 서비스의 실제 사용량을 측정하여 이용한 만큼의 요금을 부과한다.

디지털 저작권 관리(DRM) 구성요소
 - 클리어링 하우스 (Clearing House) : 저작권에 대한 사용 권한, 라이선스 발급, 암호화된 키 관리, 사용량에 따른 결제 관리 등을 수행
 - 콘텐츠 제공자 (Contents Provider) : 콘텐츠를 제공하는 저작권자
 - 패키저 (Packager) : 콘텐츠를 메타 데이터와 함께 배포 가능한 형태로 묶어 암호화하는 프로그램
 - 콘텐츠 분배자 (Contents Distributor) : 암호화된 콘텐츠를 유통하는 곳이나 사람
 - 콘텐츠 소비자 (Customer) : 콘텐츠를 구매해서 사용하는 주체
 - DRM 컨트롤러 (DRM Controller) : 배포된 콘텐츠의 이용 권한을 통제하는 프로그램
 - 보안 컨테이너 (Security Container) : 콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안 장치

디지털 저작권 관리(DRM)의 기술 요소
 - 암호화 (Encryption) : 콘텐츠 및 라이선스를 암호화하고 전자 서명을 할 수 있는 기술
 - 키 관리 (Key Management) : 콘텐츠를 암호화한 키에 대한 저장 및 분배 기술
 - 암호화 파일 생성 (Packager) : 콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술
 - 식별 기술 (Identification) : 콘텐츠에 대한 식별 체계 표현 기술
 - 저작권 표현 (Right Expression) : 라이선스의 내용 표현 기술
 - 정책 관리 (Policy Management) : 라이선스 발급 및 사용에 대한 정책 표현 및 관리 기술
 - 크랙 방지 (Tamper Resistance) : 크랙에 의한 콘텐츠 사용 방지 기술
 - 인증 (Authentication) : 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술

답: 2번
패키저에 대한 설명
 

27. 소프트웨어 패키징 도구 활용 시 고려사항으로 틀린 것은?

① 반드시 내부 콘텐츠에 대한 암호화 및 보안을 고려한다.

② 보안을 위하여 이기종 연동을 고려하지 않아도 된다.

③ 사용자 편의성을 위한 복잡성 및 비효율성 문제를 고려한다.

④ 제품 소프트웨어 종류에 적합한 암호화 알고리즘을 적용한다.

소프트웨어 패키징 시 고려사항
 - 사용자의 시스템 환경, 즉 운영체제(OS), CPU, 메모리 등에 필요한 최소 환경을 정의한다.
 - UI는 사용자가 눈으로 직접 확인할 수 있도록 시각적인 자료와 함께 제공하고 매뉴얼과 일치 시켜 패키징한다.
 - 소프트웨어는 단순히 패키징하여 배포하는 것으로 끝나는 거싱 아니라 하드웨어와 함께 관리될 수 있또록 Managed Service 형태로 제공하는 것이 좋다.
 - 사용자에게 배포되는 소프트웨어이므로 내부 콘텐츠에 대한 암호화 및 보안을 고려한다.
 - 다른 여러 콘텐츠 및 단말기 간 DRM(디지털 저작권 관리) 연동을 고려한다. → 이기종 연동 고려 해야한다.
 - 사용자의 편의성을 위한 복잡성 및 비효율성 문제를 고려한다.
 - 제품 소프트웨어 종류에 적합한 암호화 알고리즘을 적용한다.

답: 2번
 

28. 자료 구조에 대한 설명으로 틀린 것은?

① 큐는 비선형 구조에 해당한다.

② 큐는 First In First Out(FIFO) 처리를 수행한다.

③ 스택은 Last In First Out(LIFO) 처리를 수행한다.

④ 스택은 서브루틴 호출, 인터럽트 처리 등에 응용된다.

선형 구조 : 데이터가 연속적으로, 직선 모양으로 연결된 구조. 데이터 간의 관계가 '1:1'
 - 리스트 (List) : 순서가 있는 데이터의 집합 (선형 리스트, 연결 리스트)
 - 스택 (Stack) : 한쪽 끝에서만 삽입/삭제가 일어나는 LIFO(후입선출) 구조
 - (Queue) : 한쪽에서 삽입, 반대쪽에서 삭제가 일어나는 FIFO(선입선출) 구조
 - 데크 (Deque) : 양쪽 끝에서 모두 삽입과 삭제가 가능한 구조

비선형 구조 : 데이터가 계층적이거나 그물망처럼 연결된 구조. 데이터 간의 관계가 '1:다' 또는 '다:다'
 - 트리 (Tree) : 부모-자식 관계가 있는 계층적 구조 (예: 조직도, 디렉토리 구조)
 - 그래프 (Graph) : 노드와 노드를 잇는 간선으로 이루어진 그물망 구조 (예: 지도, SNS 인맥 관계

스택(Stack) : 가장 나중에 삽입된 자료가 가장 먼저 삭제되는 후입선출(LIFO, Last In First Out) 방식으로 자료를 처리
스택의 응용 분야
 - 함수 호출의 순서 제어
 - 인터럽트의 처리
 - 수식 계산 및 수식 표기법
 - 컴파일러를 이용한 언어 번역
 - 부 프로그램 호출 시 복귀주소 저장
 - 서브루틴 호출 및 복귀 주소 저장

(Queue) : 가장 먼저 삽입된 자료가 가장 먼저 삭제되는 선입선출(FIFO, First In First Out) 방식으로 자료를 처리 
 - 리스트의 한쪽에서는 삽입 작업이 이루어지고 다른 한쪽에서는 삭제 작업이 이루어지도록 구성한 자료 구조
 - 큐는 시작과 끝을 표시하는 두 개의 포인터가 있다

답: 1번
스택, 큐는 선형 구조
 

29. 순서가 A, B, C, D로 정해진 입력 자료를 스택에 입력한 후 출력한 결과로 불가능한 것은?

① D, C, B, A

② B, C, D, A

C, B, A, D

④ D, B, C, A

스택은 후입선출(LIFO, Last-In First-OUT)
입력 순서가 A → B → C → D 로 고정되어 있을 때.
① D, C, B, A : 차례대로 Pop하면 나온다.
② B, C, D, A : A,B Push → B Pop → C Push → C Pop → D Puch → D Pop → A Pop
 C, B, A, D : A,B,C Push 후 차례대로 Pop → D Push, Pop
④ D, B, C, A : D가 먼저 출려고디려면, A,B,C,D가 순서대로 Push 되어야 하므로 D다음에 B가 올 수 없다.

답: 4번
D와 B는 구조적으로 붙어있을 수가 없다.
 

30. 다음 중 단위 테스트를 통해 발견할 수 있는 오류가 아닌 것은?

① 알고리즘 오류에 따른 원치 않는 결과

② 탈출구가 없는 반복문의 사용

③ 모듈 간의 비정상적 상호 작용으로 인한 원치 않는 결과

④ 틀린 계산 수식에 의한 잘못된 결과

단위 테스트 (Unit Test) : 단위 테스트는 코딩 직후 소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트에 초점을 맞춰 테스트하는 것
 - 인터페이스, 외부적 I/O, 자료 구조, 독립적 기초 경로, 오류처리 경로, 경계 조건 등을 검사한다.
 - 사용자의 요구사항을 기반으로 한 기능성 테스트를 최우선으로 한다.
 - 구조 기반 테스트와 명세 기반 테스트로 나뉘지만 주로 구조 기반 테스트를 시행한다.

단위 테스트로 발견 가능한 오류
 - 알고리즘 오류에 따른 원치 않는 결과
 - 탈출구가 없는 반복분의 사용
 - 틀린 계산 수식에 의한 잘못된 결과

답: 3번
통합 테스트의 목적 : 모듈 간 상호 작용에서 발생하는 오류를 찾는 것
 

31. 다음 자료(9, 6, 7, 3, 5)를 버블 정렬을 이용하여 오름차순으로 정렬할 경우 Pass 2의 결과는?

① 3, 5, 6, 7, 9

② 6, 7, 3, 5, 9

③ 3, 5, 9, 6, 7

④ 6, 3, 5, 7, 9

9,6,7,3,5
(1회전) 6,9,7,3,5 → 6,7,9,3,5 → 6,7,3,9,5 → 6,7,3,5,9
(2회전) 6,7,3,5,9 → 6,3,7,5,9 → 6,3,5,7,9

삽입 정렬 (Insert Sort) : 이미 정렬된 부분과 비교하여 자기 위치를 찾아 삽입 (2번째 요소부터 시작)
예. 8,5,6,2,4
(1회전) 8,5,6,2,4 → 5,8,6,2,4 : 두 번째 값을 첫 번째 값과 비교하여 5를 첫 번째 자리에 삽입하고 8을 한 칸 뒤로 이동
(2회전) 5,8,6,2,4 → 5,6,8,2,4 : 세 번째 값을 첫 번째, 두 번째 값과 비교하여 6을 8자리에 삽입하고 8을 한칸 뒤로 이동
(3회전) 5,6,8,2,4 → 2,5,6,8,4 : 네 번째 값 2를 처음부터 비교하여 맨 처음에 삽입하고 나머지를 한 칸씩 뒤로 이동
(4회전) 2,5,6,8,4 → 2,4,5,6,8 : 다섯 번째 값 4를 처음부터 비교하여 5자리에 삽입하고 나머지를 한 칸씩 뒤로 이동

선택 정렬 (Selection Sort) : 최솟값을 찾아 맨 앞으로 보냄
예. 8,5,6,2,4
(1회전) 8,5,6,2,4 → 8,5,6,2,4 → 2,5,6,8,4 : 첫 번째부터 마지막 값 중 최소값 2를 찾아 첫 번째 값 8과 위치를 교환
(2회전) 2,5,6,8,4 → 2,5,6,8,4 → 2,4,6,8,5 : 두 번째부터 마지막 값 중 최소값 4를 찾아 두 번째 값 5와 위치를 교환
(3회전) 2,4,6,8,5 → 2,4,6,8,5 → 2,4,5,8,6 : 세 번째부터 마지막 값 중 최소값 5를 찾아 세 번째 값 6과 위치를 교환
(4회전) 2,4,5,8,6 → 2,4,5,8,6 → 2,4,5,6,8 : 네 번째부터 마지막 값 중 최소값 6을 찾아 네 번째 값 8과 위치를 교환

버블 정렬 (Bubble Sort) : 인접한 두 원소를 비교하여 교환. (가장 큰 값이 맨 뒤로 밀려남)
예. 8,5,6,2,4
(1회전) 8,5,6,2,4 → 5,6,8,2,4 → 5,6,2,8,4 → 5,6,2,4,8
(2회전) 5,6,2,4,8 → 5,2,6,4,8 → 5,2,4,6,8
(3회전) 2,5,4,6,8 → 2,4,5,6,8
(4회전) 2,4,5,6,8

답: 4번
 

32. 테스트 자동 생성 도구를 이용하여 테스트 데이터를 찾아내는 방법이 아닌 것은?

① 스터브(Stub)와 드라이버(Driver)

② 입력 도메인 분석

③ 랜덤(Random) 테스트

④ 자료 흐름도

테스트 자동화 도구
정적 분석 도구 (Static Analysis Tools)
 - 프로그램을 실행하지 않고 분석하는 도구
 - 소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함 등을 발견하기 위해 사용

테스트 케이스 생성 도구 (Test Case Generation Tools)
 - 자료 흐름도 : 자료 원시 프로그램을 입력받아 파싱한 후 자료 흐름도를 작성
 - 기능 테스트 : 주어진 기능을 구동시키는 모든 가능한 상태를 파악하여 이에 대한 입력을 작성
 - 입력 도메인 분석 : 원시 코드의 내부를 참조하지 않고, 입력 변수의 도메인을 분석하여 테스트 데이터를 작성
 - 랜덤 테스트 : 입력 값을 무작위로 추출하여 테스트

테스트 실행 도구 (Test Execution Tools)
 - 스크립트 언어를 사용하여 테스트를 실행하는 방법, 테스트 데이터와 테스트 수행 방법 등이 포함된 스크립트를 작성한 후 실행
 - 데이터 주도 접근 방식 : 스프레드시트에 테스트 데이터를 저장하고, 이를 읽어 실행하는 방식
 - 키워드 주도 접근 방식 : 스프레드시트에 테스트를 수행할 동작을 나타내는 키워드와 테스트 데이터를 저장하여 실행하는 방식

성능 테스트 도구 (Performance Tset Tools)
 - 애플리케이션의 처리량, 응답 시간, 경과 시간, 자원 사용률 등을 인위적으로 적용한 가상의 사용자를 만들어 테스트를 수행

테스트 통제 도구 (Test Control Tools)
 - 테스트 계획 및 관리, 테스트 수행, 결함 관리 등을 수행하는 도구로, 종류에는 형상 관리 도구, 결함 추척/관리 도구 등이 있음

테스트 하네스 도구 (Test hamess Tools)
 - 애플리케이션의 컨포넌트 및 모듈을 테스트하는 환경의 일부분으로, 테스트를 지원하기 위해 생성된 코드와 데이터를 의미
 - 테스트 하네스의 도구는 테스트가 실행될 환경을 시뮬레이션 하여 컴포넌트 및 모듈이 정상적으로 테스트되도록 함
 - 구성요소 : 테스트 드라이버, 테스트 스텁, 테스트 슈트, 테스트 케이스, 테스트 스크립트, 목 오브젝트

답: 1번
테스트 자동 생성 도구의 데이터 추출 기법과 테스트 환경 구축을 위한 도구를 구분할 수 있는지 묻는 문제
 

33. 형상 관리의 개념과 절차에 대한 설명으로 틀린 것은?

① 형상 식별은 형상 관리 계획을 근거로 형상 관리의 대상이 무엇인지 식별하는 과정이다.

② 형상 관리를 통해 가시성과 추적성을 보장함으로써 소프트웨어의 생산성과 품질을 높일 수 있다. 

③ 형상 통제 과정에서는 형상 목록의 변경 요구를 즉시 수용 및 반영해야 한다. 

④ 형상 감사는 형상 관리 계획대로 형상 관리가 진행되고 있는지, 형상 항목의 변경이 요구사항에 맞도록 제대로 이뤄졌는지 등을 살펴보는 활동이다. 

형상 관리 (SCM) : 소프트웨어의 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동
 - 소프트웨어 변경의 원인을 알아내고 제어하며, 적절히 변경되고 있는지 확인하여 해당 담당자에게 통보한다.
 - 형상 관리는 소프트웨어 개발의 전 단계에 적용되는 활동이며, 유지보수 단계에서도 수행된다.
 - 형상 관리는 소프트웨어 개발의 전체 비용을 줄이고, 개발 과정의 여러 방해 요인이 최소화되도록 보증하는 것을 목적으로 한다.
 - 관리 항목에는 소스 코드뿐만 아니라 각종 정의서, 지침서, 분석서 등이 포함된다.
 - 형상 관리를 통해 가시성과 추적성을 보장함으로써 소프트웨어의 생산성과 품질을 높일 수 있다.
 - 대표적인 형상 관리 도구 : Git, CVS, Subversion

형상 관리의 중요성
 - 지속적인 소프트웨어의 변경 사항을 체계적으로 추적하고 통제할 수 있다.
 - 제품 소프트웨어에 대한 무절제한 변경을 방지할 수 있다. (불필요한 사용자의 소스 수정 제한)
 - 제품 소프트웨어에서 발견된 버그나 수정 사항을 추적할 수 있다.
 - 소프트웨어는 형태가 없어 가시성이 결핍되므로 진행 정도를 확인하기 위한 기준으로 사용될 수 있다.
 - 소프트웨어의 배포본을 효율적으로 관리할 수 있다.
 - 소프트웨어를 여러 명의 개발자가 동시에 개발할 수 있다.

형상 관리 기능
형상 식별 : 형상 관리 대상에 이름과 관리 번호를 부여(식별)하고, 계층(Tree) 구조로 구분하여 수정 및 추적이 용이하도록 제어하는 작업
버전 제어 : 소프트웨어 업그레이드나 유지 보수 과정에서 생성된 다른 버전의 형상 항목을 관리하고, 이를 위해 특정 절차와 도구를 결합시키는 작업
형상 통제(변경 관리) : 식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준선이 잘 반영될 수 있도록 조정하는 작업
 - 변경 요구를 '즉시' 수용하는 것이 아니라, 형상 통제 위원회의 심의를 거쳐 변경의 타당성을 검토한 후 승인된 변경 사항만 반영
형상 감사 : 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업
형상 기록(상태 보고) : 형상의 식별, 통제, 감사 작업의 결과를 기록, 관리하고 보고서를 작성하는 작업
대표적인 형상 관리 도구 : Git, CVS, Subversion 

답: 3번
 - 형상 관리는 소프트웨어 개발 과정에서 발생하는 변경 사항을 체계적으로 추적하고 통제하여 가시성과 추적성을 확보하는 활동
 -  이는 제품의 품질 향상과 유지보수 효율성을 목적으로 하지, 프로젝트의 전체적인 '개발 비용' 자체를 직접적으로 관리(예: 예산 책정, 인건비 정산 등)하는 활동은 아닙니다.
 -  비용 관리는 프로젝트 관리의 영역입니다.


답: 3번
 

34. 프로젝트의 위험 요소를 사전에 예측하고 대비하는 모든 기술과 활동을 포함하는 것은?

① Critical Path Method

② Risk Analysis

③ Work Breakdown Structure

④ Waterfall Model

위험 식별 : 어떤 위험이 있는지 찾아내는 것
위험 분석 (Risk Analysis) : 발생 가능성과 영향력을 평가하는 것
위험 완화: 위험 발생 확률이나 영향을 줄이는 전략

① Critical Path Method (CPM, 임계 경로법): 프로젝트의 전체 기간을 계산하기 위해 가장 긴 경로(여유 시간이 없는 경로)를 찾는 공정 관리 기법입니다. 위험 예측보다는 '일정 계획'에 중점을 둡니다.

③ Work Breakdown Structure (WBS, 작업 분할 구조도): 프로젝트 전체 목표를 달성하기 위해 필요한 전체 업무를 세분화하여 계층적으로 나타낸 도표입니다. '범위 관리'의 기초가 됩니다.

④ Waterfall Model (폭포수 모델): 소프트웨어 개발 생명주기(SDLC) 모델 중 하나로, 각 단계를 순차적으로 진행하는 고전적인 모델입니다. 위험 관리가 주 목적인 모델은 '나선형 모델(Spiral Model)'입니다.

답: 2번
 

35. 분할 정복에 기반하며 피봇(pivot)을 사용하는 정렬 방식은?

① Selection Sort

② Bubble Sort

③ Insert Sort

④ Quick Sort

정렬
삽입 정렬 (Insert Sort) : 이미 정렬된 부분과 비교하여 자기 위치를 찾아 삽입 (2번째 요소부터 시작)
예. 8,5,6,2,4
(1회전) 8,5,6,2,4 → 5,8,6,2,4 : 두 번째 값을 첫 번째 값과 비교하여 5를 첫 번째 자리에 삽입하고 8을 한 칸 뒤로 이동
(2회전) 5,8,6,2,4 → 5,6,8,2,4 : 세 번째 값을 첫 번째, 두 번째 값과 비교하여 6을 8자리에 삽입하고 8을 한칸 뒤로 이동
(3회전) 5,6,8,2,4 → 2,5,6,8,4 : 네 번째 값 2를 처음부터 비교하여 맨 처음에 삽입하고 나머지를 한 칸씩 뒤로 이동
(4회전) 2,5,6,8,4 → 2,4,5,6,8 : 다섯 번째 값 4를 처음부터 비교하여 5자리에 삽입하고 나머지를 한 칸씩 뒤로 이동

선택 정렬 (Selection Sort) : 최솟값을 찾아 맨 앞으로 보냄
예. 8,5,6,2,4
(1회전) 8,5,6,2,4 → 8,5,6,2,4 → 2,5,6,8,4 : 첫 번째부터 마지막 값 중 최소값 2를 찾아 첫 번째 값 8과 위치를 교환
(2회전) 2,5,6,8,4 → 2,5,6,8,4 → 2,4,6,8,5 : 두 번째부터 마지막 값 중 최소값 4를 찾아 두 번째 값 5와 위치를 교환
(3회전) 2,4,6,8,5 → 2,4,6,8,5 → 2,4,5,8,6 : 세 번째부터 마지막 값 중 최소값 5를 찾아 세 번째 값 6과 위치를 교환
(4회전) 2,4,5,8,6 → 2,4,5,8,6 → 2,4,5,6,8 : 네 번째부터 마지막 값 중 최소값 6을 찾아 네 번째 값 8과 위치를 교환

버블 정렬 (Bubble Sort) : 인접한 두 원소를 비교하여 교환. (가장 큰 값이 맨 뒤로 밀려남)
예. 8,5,6,2,4
(1회전) 8,5,6,2,4 → 5,6,8,2,4 → 5,6,2,8,4 → 5,6,2,4,8
(2회전) 5,6,2,4,8 → 5,2,6,4,8 → 5,2,4,6,8
(3회전) 2,5,4,6,8 → 2,4,5,6,8
(4회전) 2,4,5,6,8

퀵 정렬 (Quick Sor)
레코드의 많은 자료 이동을 없애고 하나의 파일을 부분적으로 나누어 가면서 정렬하는 방법으로 키를 기준으로 작은 값은 왼쪽에, 큰 값은 오른쪽 서브파일로 분해시키는 방식으로 정렬
 - 분할(Divide)과 정복(Conquer)을 통해 자료를 정렬한다.
 - 평균 수행 시간 복잡도는 O(nlog2n)이고, 최악의 수행 시간 복잡도는 O(n2)이다.
 - 피봇(Pivot) : 정렬의 기준이 되는 중간값을 의미, 이 피봇을 기준으로 작은 값은 왼쪽, 큰 값은 오른쪽으로 모으는 과정을 반복

힙 정렬 (Heap Sort)
힙 정렬은 전이진 트리를 이용한 정렬 방식
 - 구성된 전이진 트리를 Heap Tree로 변환하여 정렬
 - 평균과 최악 모두 시간 복잡도는 O(nolg2n)

2-Way 합병 정렬 (Merge Sort)
이미 정렬되어 있는 두 개의 파일을 한 개의 파일로 합병하는 정렬 방식
 - 평균과 최악 모두 시간 복잡도는 O(nlog2n)

이진 검색(이분 검색, Binary Search)
전체 파일을 두 개의 서브파일로 분리해 가면서 Key 레코드를 검색하는 방식

해싱 함수 (Hashing Function)
 - 제산법 : 레코드 키를 해시표의 크기보다 큰 수 중에서 가장 작은 소수로 나눈 나머지를 홈 주소로 삼는 방식
 - 제곱법 : 레코드 키 값을 제곱한 후 그 중간 부분의 값을 홈 주소로 삼는 방식
 - 폴딩법 : 레코드 키 값을 여러 부분으로 나눈 후 각 부분의 값을 더하거나 XOR한 값을 홈 주소로 삼는 방식
 - 기수변환법 : 키 숫자의 진수를 다른 진수로 변환시켜 주소 크기를 초과한 높은 자릿수는 절단하고, 이를 다시 주소 범위에 맞게 조정하는 방법
 - 대수적 코딩법 : 키 값을 이루고 있는 각 자리의 비트 수를 한 다항식의 계수로 간주하고, 이 다항식을 해시표의 크기에 의해 정의된 다항식으로 나누어 얻은 나머지 다항식의 계수를 홈 주소로 삼는 방식
 - 숫자 분석법 : 키 값을 이루는 숫자의 분포를 분석하여 비교적 고른 자리를 필요한 만큼 택해서 홈 주소로 삼는 방식
 - 무작위법 : 난수를 발생시켜 나온 값을 홈 주소로 삼는 방식

답: 4번
 

36. 클린 코드(Clean Code)를 작성하기 위한 원칙으로 틀린 것은?

① 추상화: 상세 내용은 상위 클래스에서 구현하고 하위는 간략하게 나타낸다.

② 의존성: 다른 모듈에 미치는 영향을 최소화한다.

③ 가독성: 누구든지 읽기 쉽게 작성한다.

④ 중복성: 중복을 최소화한다.

소스 코드 최적화
클린 코드(Clean Code)
 - 가독성 : 누구든지 코드를 쉽게 읽을 수 있도록 작성
 - 단순성 : 코드를 간단하게 작성
 - 의존성 배제 : 코드가 다른 모듈에 미치는 영향을 최소화
 - 중복성 최소화 : 코드의 중복을 최소화
 - 추상화 : 상위 클래스/메소드/함수에서는 간략하게 애플리케이션의 특성을 나타내고 상세 내용은 하위 클래스/메소드/함수에서 구현

나쁜 코드(Bad Code)
 - 스파게티 코드 : 코드의 로직이 서로 복잡하게 얽혀 있는 코드
 - 외계인 코드 : 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 코드

답: 1번
상세 내용을 하위 클래스에서 구현한다.
 

37. 삽입(Push)과 삭제(Pop)가 한쪽 끝에서만 일어나며 LIFO 특징을 가진 자료구조는?

① Tree

② Graph

③ Stack

④ Queue

선형 구조 : 데이터가 연속적으로, 직선 모양으로 연결된 구조. 데이터 간의 관계가 '1:1'
 - 리스트 (List) : 순서가 있는 데이터의 집합 (선형 리스트, 연결 리스트)
 - 스택 (Stack) : 한쪽 끝에서만 삽입/삭제가 일어나는 LIFO(후입선출) 구조
 -  (Queue) : 한쪽에서 삽입, 반대쪽에서 삭제가 일어나는 FIFO(선입선출) 구조
 - 데크 (Deque) : 양쪽 끝에서 모두 삽입과 삭제가 가능한 구조

비선형 구조 : 데이터가 계층적이거나 그물망처럼 연결된 구조. 데이터 간의 관계가 '1:다' 또는 '다:다'
 - 트리 (Tree) : 부모-자식 관계가 있는 계층적 구조 (예: 조직도, 디렉토리 구조)
 - 그래프 (Graph) : 노드와 노드를 잇는 간선으로 이루어진 그물망 구조 (예: 지도, SNS 인맥 관계

스택(Stack) : 가장 나중에 삽입된 자료가 가장 먼저 삭제되는 후입선출(LIFO, Last In First Out) 방식으로 자료를 처리
스택의 응용 분야
 - 함수 호출의 순서 제어
 - 인터럽트의 처리
 - 수식 계산 및 수식 표기법
 - 컴파일러를 이용한 언어 번역
 - 부 프로그램 호출 시 복귀주소 저장
 - 서브루틴 호출 및 복귀 주소 저장

(Queue) : 가장 먼저 삽입된 자료가 가장 먼저 삭제되는 선입선출(FIFO, First In First Out) 방식으로 자료를 처리 
 - 리스트의 한쪽에서는 삽입 작업이 이루어지고 다른 한쪽에서는 삭제 작업이 이루어지도록 구성한 자료 구조
 - 큐는 시작과 끝을 표시하는 선형 구조 : 데이터가 연속적으로, 직선 모양으로 연결된 구조. 데이터 간의 관계가 '1:1'
 - 리스트 (List) : 순서가 있는 데이터의 집합 (선형 리스트, 연결 리스트)
 - 스택 (Stack) : 한쪽 끝에서만 삽입/삭제가 일어나는 LIFO(후입선출) 구조
 -  (Queue) : 한쪽에서 삽입, 반대쪽에서 삭제가 일어나는 FIFO(선입선출) 구조
 - 데크 (Deque) : 양쪽 끝에서 모두 삽입과 삭제가 가능한 구조

비선형 구조 : 데이터가 계층적이거나 그물망처럼 연결된 구조. 데이터 간의 관계가 '1:다' 또는 '다:다'
 - 트리 (Tree) : 부모-자식 관계가 있는 계층적 구조 (예: 조직도, 디렉토리 구조)
 - 그래프 (Graph) : 노드와 노드를 잇는 간선으로 이루어진 그물망 구조 (예: 지도, SNS 인맥 관계

스택(Stack) : 가장 나중에 삽입된 자료가 가장 먼저 삭제되는 후입선출(LIFO, Last In First Out) 방식으로 자료를 처리
스택의 응용 분야
 - 함수 호출의 순서 제어
 - 인터럽트의 처리
 - 수식 계산 및 수식 표기법
 - 컴파일러를 이용한 언어 번역
 - 부 프로그램 호출 시 복귀주소 저장
 - 서브루틴 호출 및 복귀 주소 저장

(Queue) : 가장 먼저 삽입된 자료가 가장 먼저 삭제되는 선입선출(FIFO, First In First Out) 방식으로 자료를 처리 
 - 리스트의 한쪽에서는 삽입 작업이 이루어지고 다른 한쪽에서는 삭제 작업이 이루어지도록 구성한 자료 구조
 - 큐는 시작과 끝을 표시하는 두 개의 포인터가 있다

답: 3번
 

38. 화이트박스 테스트와 관련한 설명으로 틀린 것은?

① 논리 흐름도(Logic-Flow Diagram)를 이용할 수 있다.

② 실제 프로그램을 실행하여 오류를 찾는 동적 테스트에 해당한다.

③ 프로그램의 구조를 고려하지 않고 요구나 명세를 기초로 결정한다.

④ 테스트 데이터를 선택하기 위해 검증 기준(Test Coverage)을 정한다.

테스트 케이스 : 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 입력 값, 실행 조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서로, 명세 기반 테스트의 설계 산출물에 해당한다.
 → 입력 값(테스트 데이터), 실행 조건(테스트 조건), 기대 결과(예상 결과)

블랙박스 테스트 : 소프트웨어의 내부 구조나 코드를 보지 않고, 사용자 요구사항 명세서를 보면서 기능이 정확히 수행되는지 테스트하는 기법

블랙박스 테스트 종류
동치(동등) 분할 검사 (Equivalence Partitioning Testing)
경계값 분석 (Boundary Value Analysis)
원인-효과 그래프 검사 (Cause-Effect Graphing Testing)
오류 예측 검사 (Error Guessing)
비교 검사 (Comparison Testing)

화이트박스 테스트 : 프로그램의 내부 로직(소스 코드) 직접 보면서 모든 논리적 경로를 테스트합니다

화이트박스 테스트 종류
기초 경로 검사 (Base Path Testing) : 제어 흐름 그래프에서 시작부터 끝까지 가는 독립적인 경로, 싸이클(반복)이 포함될 수 밖에 없음
제어 구조 검사 
 - 조건 검사 (Condition Testing)
 - 루프 검사 (Loop Testing)
 - 데이터 흐림 검사 (Data Flow Testing)

화이트박스 테스트의 검증 기준
문장 (Statement) 검증 기준
 - 소스 코드의 모든 구문이 한 번 이상 수행되도록 테스트 케이스 설꼐

분기
 (Branch) 검증 기준(결정 (Decision) 검증 기준)
 - 소스 코드의 모든 조건문에 대해 조건이 True인 경우와 False인 경우가 한 번 이상 수행되도록 테스트 케이스 설계

조건
 (Condition) 검증 기준
 - 소스 코드의 조건문에 포함된 개별 조건식의 결과가 True인 경우와 False인 경우가 한 번 이상 수행되도록 테스트 케이스 설계

분기
/조건 (Branch/Condition) 기준
 - 분기 검증 기준과 조건 검증 기준을 모두 만족하는 설계로, 조건문 True인 경우와 False인 경우에 따라 조건 검증 기준의 입력 데이터를 구분하는 테스트 케이스 설계

답: 3번
블랙박스 테스트에 대한 설명
 

39. 이진 검색(Binary Search) 방법으로 1부터 15까지 정렬된 레코드에서 14를 찾을 경우 비교 횟수는?

① 2회

② 3회

③ 4회

④ 5회

이진 검색 : 전체 목록의 중간값을 찾아, 찾고자 하는 값과 비교하며 범위를 절반씩 줄여나가는 방식
※중간값 찾기 (첫 값 + 끝 값)/2

1회차 :
중간값 찾기 : (1+15)/2 = 8
크기 비교 : 8과 14 비교 → 8 < 14 
결과 : 8보다 큰 오른쪽 범위로 이동 = 9~15

2회차 : 
중간값 찾기 : (9+15)/2 = 12
크기 비교 : 12와 14 비교 → 12 < 14 
결과 : 12보다 큰 오른쪽 범위로 이동 = 13~15

3회차 : 
중간값 찾기 : (13+15)/2 = 14
크기 비교 : 14와 14 비교 → 14 = 14 
결과 : 값이 일치하므로 검색 종료

답: 2번
비교횟수 3회
 

40. 데이터 타입, 구조, 제약 조건 등을 명시하는 DBMS의 필수 기능은?

① 정의 기능

② 조작 기능

③ 제어 기능

④ 절차 기능

DBMS (데이터 베이스 관리 시스템) 의 필수 기능
정의 기능 (DDL) : 구조, 타입, 제약조건
 - CREATE, ALTER, DROP

조작 기능 (DML) : 검색, 삽입, 삭제, 수정
 - SELECT, INSERT, UPDATE, DELETE

제어 기능 (DCL) : 보안, 무결성, 병행제어
 - GRANT, REVOKE, COMMIT, ROLLBACK

답: 1번