제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번 |
'자격증 요약 > 정보처리기사' 카테고리의 다른 글
| [23년 1회 2과목] 정보처리기사 필기 문제 풀이 (0) | 2026.01.21 |
|---|---|
| [23년 2회 2과목] 정보처리기사 필기 문제 풀이 (1) | 2026.01.21 |
| [24년 1회 2과목] 정보처리기사 필기 문제 풀이 (1) | 2026.01.19 |
| [24년 2회 2과목] 정보처리기사 필기 문제 풀이 (0) | 2026.01.19 |
| [24년 3회 2과목] 정보처리기사 필기 문제 풀이 (0) | 2026.01.16 |
