정보처리기사 필기 — 기출 1회 풀이
목차 106
2022년 4월 시행(제1회) 기출. 100문항·5과목 × 20문항. 출처: 기출1회 기출문제
Part Ⅰ 소프트웨어 설계 (문 001~020)
문 001. UML 다이어그램 중 순차 다이어그램에 대한 설명으로 틀린 것은?
- ① 객체 간의 동적 상호작용을 시간 개념을 중심으로 모델링 하는 것이다.
- ② 주로 시스템의 정적 측면을 모델링하기 위해 사용한다.
- ③ 일반적으로 다이어그램의 수직 방향이 시간의 흐름을 나타낸다.
- ④ 회귀 메시지(Self Message), 제어블록(Statement block) 등으로 구성된다.
정답 및 해설 보기
정답 ②
순차 다이어그램은 객체 간 동적 상호작용을 시간 흐름(수직축) 중심으로 표현하는 행위(동적) 다이어그램이다. ②는 "정적 측면 모델링"이라 했으나 정적 구조 표현은 클래스·객체 다이어그램의 역할이므로 틀렸다.
- ①·③ 순차 다이어그램의 정의(동적·시간축)로 옳다.
- ④ 회귀 메시지·제어블록 등 구성 요소 설명으로 옳다.
UML 다이어그램 분류:
| 구분 | 종류 | 역할 |
|---|---|---|
| 구조(Structure) | 클래스·객체·컴포넌트·배치·복합체구조·패키지 | 정적 구조·관계(시스템 뼈대) |
| 행위(Behavior) | 유스케이스·순차·커뮤니케이션·활동·상태·상호작용개요 | 동적 흐름(어떻게 동작하나) |
🔑 암기 — 순차 다이어그램 = 행위(동적), 시간은 수직축.
문 002. 메시지 지향 미들웨어(Message-Oriented Middleware, MOM)에 대한 설명으로 틀린 것은?
- ① 느리고 안정적인 응답보다는 즉각적인 응답이 필요한 온라인 업무에 적합하다.
- ② 독립적인 애플리케이션을 하나의 통합된 시스템으로 묶기 위한 역할을 한다.
- ③ 송신측과 수신측의 연결 시 메시지 큐를 활용하는 방법이 있다.
- ④ 상이한 애플리케이션 간 통신을 비동기 방식으로 지원한다.
정답 및 해설 보기
정답 ①
MOM은 비동기(Asynchronous) 메시지 큐 기반 미들웨어다. 송신측은 메시지를 큐에 넣고 응답을 기다리지 않으므로 느슨한 결합·확장성을 얻는다. 즉각적 응답이 필요한 업무(실시간 조회·예매 등)에는 동기 방식이 적합하므로 ①이 틀렸다.
- ②·③·④ 시스템 통합·메시지 큐 활용·비동기 통신으로 모두 옳다.
미들웨어 종류:
| 종류 | 핵심 | 특징 |
|---|---|---|
| DB | DB 연결 | 응용이 특정 DB에 종속되지 않게(ODBC·JDBC) |
| RPC | 원격 프로시저 호출 | 원격 함수를 로컬처럼 호출(동기) |
| MOM | 메시지 기반 | 메시지 큐로 교환(비동기·느슨한 결합·이기종 통합) |
| ORB | 객체 지향 | 원격 객체를 로컬처럼 호출(CORBA) |
| TP-Monitor | 트랜잭션 | 다수 트랜잭션의 안정 처리 감시·제어 |
⚠️ 함정 — RPC = 동기 / MOM = 비동기.
문 003. 익스트림 프로그래밍에 대한 설명으로 틀린 것은?
- ① 대표적인 구조적 방법론 중 하나이다.
- ② 소규모 개발 조직이 불확실하고 변경이 많은 요구를 접하였을 때 적절한 방법이다.
- ③ 익스트림 프로그래밍을 구동시키는 원리는 상식적인 원리와 경험을 최대한 끌어 올리는 것이다.
- ④ 구체적인 실천 방법을 정의하고 있으며, 개발 문서보다는 소스코드에 중점을 둔다.
정답 및 해설 보기
정답 ①
익스트림 프로그래밍(XP)은 애자일 방법론의 대표 기법이다. ①은 "구조적 방법론"이라 했으나, 구조적 방법론은 정해진 절차를 중시하는 폭포수 계열로 애자일과 반대 성격이므로 틀렸다.
- ② 잦은 변경 대응, ③ 상식·경험 활용, ④ 문서보다 코드 중심 — 모두 XP 특징으로 옳다.
| 구분 | 애자일 | 폭포수 |
|---|---|---|
| 철학 | 변화 대응 | 철저한 계획 |
| 개발 | 반복·점진(스프린트) | 순차·단계 |
| 고객 참여 | 전 과정 지속 | 초기 단계 |
| 문서화 | 동작 SW 중시(최소화) | 단계별 상세 문서 |
| 대표 모델 | 스크럼·XP·칸반 | 폭포수·V-모델 |
문 004. 유스케이스(UseCase)의 구성 요소 간의 관계에 포함되지 않는 것은?
- ① 연관
- ② 확장
- ③ 구체화
- ④ 일반화
정답 및 해설 보기
정답 ③
유스케이스 구성 요소 간 표준 관계는 연관(Association)·포함(Include)·확장(Extend)·일반화(Generalization) 다. 구체화(Realization) 는 유스케이스 관계의 표준 용어가 아니므로 ③이 포함되지 않는다.
| 관계 | 표기 | 의미 |
|---|---|---|
| 포함(Include) | < |
A 실행 시 B가 반드시 실행(공통 기능 모듈화) |
| 확장(Extend) | < |
특정 조건에서 B가 실행될 수도 있음(부가 기능) |
| 일반화(Generalize) | 속 빈 화살표 | B는 A의 한 종류(상속·역할 분류) |
🔑 암기 — 유스케이스 관계: 연관·포함·확장·일반화(구체화 ✗).
문 005. 요구사항 분석에서 비기능적(Nonfunctional) 요구에 대한 설명으로 옳은 것은?
- ① 시스템의 처리량(Throughput), 반응 시간 등의 성능 요구나 품질 요구는 비기능적 요구에 해당하지 않는다.
- ② '차량 대여 시스템이 제공하는 모든 화면이 3초 이내에 사용자에게 보여야 한다'는 비기능적 요구이다.
- ③ 시스템 구축과 관련된 안전, 보안에 대한 요구사항들은 비기능적 요구에 해당하지 않는다.
- ④ '금융 시스템은 조회, 인출, 입금, 송금의 기능이 있어야 한다'는 비기능적 요구이다.
정답 및 해설 보기
정답 ②
비기능적 요구는 성능·품질·보안·사용성 등 기능을 "어떻게(How well)" 수행할지에 대한 제약이다. ②의 "3초 이내" 응답은 성능 제약이므로 비기능적 요구가 맞다.
- ①·③ 성능·품질·안전·보안은 모두 비기능적 요구의 핵심인데, 해당하지 않는다고 했으므로 틀렸다.
- ④ 조회·인출·입금·송금은 시스템이 제공할 기능 자체이므로 기능적 요구다.
| 구분 | 기능적 요구 | 비기능적 요구 |
|---|---|---|
| 정의 | 제공할 기능·서비스 | 기능 수행 시 지킬 품질·제약 |
| 관점 | 무엇을(What) | 얼마나 잘(How well) |
| 예 | 로그인·게시글 등록 | 응답 2초 이내·암호화 저장·24/365 가용 |
문 006. 정보공학 방법론에서 데이터베이스 설계의 표현으로 사용하는 모델링 언어는?
- ① Package Diagram
- ② State Transition Diagram
- ③ Deployment Diagram
- ④ Entity-Relationship Diagram
정답 및 해설 보기
정답 ④
정보공학 방법론은 데이터 중심 분석·설계로, DB 설계 표현에 개체-관계 다이어그램(ERD) 을 사용한다. ①·②·③은 UML 다이어그램(패키지·상태전이·배치)으로 DB 논리구조 표현 목적과 다르다.
| 방법론 | 중심 관점 | 모델링 기법 |
|---|---|---|
| 구조적 | 프로세스(흐름) | DFD·DD |
| 정보공학 | 데이터(정보) | ERD |
| 객체지향 | 객체(데이터+행위) | UML |
문 007. 미들웨어(Middleware)에 대한 설명으로 틀린 것은?
- ① 여러 운영체제에서 응용 프로그램들 사이에 위치한 소프트웨어이다.
- ② 미들웨어의 서비스 이용을 위해 사용자가 정보 교환 방법 등의 내부 동작을 쉽게 확인할 수 있어야 한다.
- ③ 소프트웨어 컴포넌트를 연결하기 위한 준비된 인프라 구조를 제공한다.
- ④ 여러 컴포넌트를 1대 1, 1대 다, 다대 다 등 여러 가지 형태로 연결이 가능하다.
정답 및 해설 보기
정답 ②
미들웨어의 핵심 가치는 투명성(Transparency) 으로, 사용자가 복잡한 내부 동작을 몰라도 기능을 쉽게 쓰게 한다. ②는 사용자가 내부 동작을 확인할 수 있어야 한다고 했으므로 투명성에 반해 틀렸다.
- ①·③·④ 미들웨어의 위치(OS와 응용 사이)·인프라 제공·다양한 연결 형태로 옳다.
⚠️ 함정 — 미들웨어는 내부 동작을 감추는(투명성) 것이 목적. "내부 동작을 알아야 한다"는 반대 진술.
문 008. UI의 설계 지침으로 틀린 것은?
- ① 이해하기 편하고 쉽게 사용할 수 있는 환경을 제공해야 한다.
- ② 주요 기능을 메인 화면에 노출하여 조작이 쉽도록 하여야 한다.
- ③ 치명적인 오류에 대한 부정적인 사항은 사용자가 인지할 수 없도록 한다.
- ④ 사용자의 직무, 연령, 성별 등 다양한 계층을 수용하여야 한다.
정답 및 해설 보기
정답 ③
좋은 UI는 오류 발생 시 그 사실을 명확히 알리고 원인·해결을 안내해야 한다. ③은 치명적 오류를 사용자가 인지할 수 없게 한다고 했으므로 좋은 UI 지침과 정반대다.
- ①·②·④ 사용 편의·주요 기능 노출·다양한 계층 수용으로 옳다.
UI 설계 4대 원칙:
| 원칙 | 설명 |
|---|---|
| 직관성 | 처음 봐도 쉽게 이해·사용 |
| 유효성 | 사용자 목적을 정확히 달성 |
| 학습성 | 쉽게 배우고 익힘 |
| 유연성 | 다양한 요구·실수 수용(실행 취소 등) |
문 009. 객체지향 개념에서 다형성(Polymorphism)과 관련한 설명으로 틀린 것은?
- ① 다형성은 현재 코드를 변경하지 않고 새로운 클래스를 쉽게 추가할 수 있게 한다.
- ② 다형성이란 여러 가지 형태를 가지고 있다는 의미로, 여러 형태를 받아들일 수 있는 특징을 말한다.
- ③ 메소드 오버라이딩(Overriding)은 상위 클래스에서 정의한 일반 메소드의 구현을 하위 클래스에서 무시하고 재정의할 수 있다.
- ④ 메소드 오버로딩(Overloading)의 경우 매개 변수 타입은 동일하지만 메소드명을 다르게 함으로써 구현, 구분할 수 있다.
정답 및 해설 보기
정답 ④
오버로딩은 한 클래스 안에서 같은 이름의 메소드를 두되 매개변수의 개수나 타입을 다르게 하는 것이다. ④는 "매개변수 타입은 동일, 메소드명을 다르게"라 했는데, 이름을 다르게 하면 별개의 메소드일 뿐 오버로딩이 아니므로 틀렸다.
- ①·② 다형성의 개념·장점, ③ 오버라이딩 정의로 옳다.
| 구분 | 오버로딩 | 오버라이딩 |
|---|---|---|
| 개념 | 한 클래스 내 동일 이름·다른 매개변수 | 상속 관계에서 부모 메소드 재정의 |
| 이름 | 동일 | 동일 |
| 매개변수 | 달라야 함(개수·타입) | 동일 |
| 리턴 타입 | 관계 없음 | 동일 |
⚠️ 함정 — 오버로딩의 조건은 "이름 같음 + 매개변수 다름". "이름 다름"은 오버로딩 아님.
문 010. 소프트웨어 개발 영역을 결정하는 요소 중 다음 사항과 관계있는 것은?
- 소프트웨어에 의해 간접적으로 제어되는 장치와 소프트웨어를 실행하는 하드웨어
- 기존의 소프트웨어와 새로운 소프트웨어를 연결하는 소프트웨어
- 순서적 연산에 의해 소프트웨어를 실행하는 절차
- ① 기능(Function)
- ② 성능(Performance)
- ③ 제약조건(Constraint)
- ④ 인터페이스(Interface)
정답 및 해설 보기
정답 ④
제시된 세 항목(하드웨어 연결·소프트웨어 간 연결·실행 절차)은 모두 서로 다른 대상이 만나 데이터를 주고받는 접점과 그 약속(규칙) 을 가리키므로 인터페이스(Interface) 에 해당한다.
- ① 기능(무엇을)·② 성능(얼마나 잘)·③ 제약조건(어떤 한계)과는 의미가 다르다.
문 011. 객체에 대한 설명으로 틀린 것은?
- ① 객체는 상태, 동작, 고유 식별자를 가진 모든 것이라 할 수 있다.
- ② 객체는 공통 속성을 공유하는 클래스들의 집합이다.
- ③ 객체는 필요한 자료 구조와 이에 수행되는 함수들을 가진 하나의 독립된 존재이다.
- ④ 객체의 상태는 속성값에 의해 정의된다.
정답 및 해설 보기
정답 ②
클래스가 객체들의 공통 속성을 모아놓은 설계도이고, 객체는 그 설계도로 만들어진 실체(인스턴스)다. ②는 "객체는 클래스들의 집합"이라며 순서를 뒤바꿔 틀렸다(공통 속성의 집합은 클래스 쪽 정의).
- ①·③·④ 객체의 특징(상태·동작·식별자 / 독립된 존재 / 속성값으로 정의되는 상태)으로 옳다.
| 용어 | 비유 | 설명 |
|---|---|---|
| 클래스 | 설계도(붕어빵 틀) | 객체를 만드는 정의(틀) |
| 객체 | 실체(붕어빵) | 틀로 만들어진 실재 |
| 인스턴스 | '그' 붕어빵 | 특정 클래스로 만든 객체임을 강조 |
문 012. 속성과 관련된 연산(Operation)을 클래스 안에 묶어서 하나로 취급하는 것을 의미하는 객체지향 개념은?
- ① Inheritance
- ② Class
- ③ Encapsulation
- ④ Association
정답 및 해설 보기
정답 ③
데이터(속성)와 그것을 처리하는 연산(메소드)을 하나의 클래스로 묶는 것은 캡슐화(Encapsulation) 다. 외부는 허용된 메소드로만 접근하게 되어 정보 은닉(Information Hiding) 이 가능해진다.
- ① 상속(Inheritance)·② 클래스(Class)·④ 연관(Association)은 데이터·연산을 하나로 묶는 개념과 직접 관련이 없다.
🔑 암기 — 캡슐화 = 속성 + 연산 묶기 → 정보 은닉.
문 013. 애자일(Agile) 프로세스 모델에 대한 설명으로 틀린 것은?
- ① 변화에 대한 대응보다는 자세한 계획을 중심으로 소프트웨어를 개발한다.
- ② 프로세스와 도구 중심이 아닌 개개인과의 상호소통을 통해 의견을 수렴한다.
- ③ 협상과 계약보다는 고객과의 협력을 중시한다.
- ④ 문서 중심이 아닌, 실행 가능한 소프트웨어를 중시한다.
정답 및 해설 보기
정답 ①
애자일 선언문은 "계획 준수보다 변화 대응"을 핵심 가치로 둔다. ①은 변화 대응보다 자세한 계획 중심이라 했으므로 애자일과 반대(폭포수 특징)이라 틀렸다.
- ②·③·④는 애자일 선언문의 가치(개인과 상호작용 / 고객 협력 / 동작하는 SW)를 옳게 설명한다.
애자일 선언문 4대 가치(왼쪽 > 오른쪽):
| 더 중시 | 덜 중시 |
|---|---|
| 개인과 상호작용 | 프로세스와 도구 |
| 동작하는 소프트웨어 | 포괄적 문서 |
| 고객과의 협력 | 계약 협상 |
| 변화에 대한 대응 | 계획 준수 |
문 014. 명백한 역할을 가지고 독립적으로 존재할 수 있는 시스템의 부분으로 넓은 의미에서는 재사용되는 모든 단위라고 볼 수 있으며, 인터페이스를 통해서만 접근할 수 있는 것은?
- ① Model
- ② Sheet
- ③ Component
- ④ Cell
정답 및 해설 보기
정답 ③
명백한 역할·독립적 존재·재사용 단위·인터페이스로만 접근하는 것은 컴포넌트(Component) 다. 미리 만든 부품(컴포넌트)을 조립해 소프트웨어를 만드는 방식이 컴포넌트 기반 개발(CBD)이다.
문 015. GoF(Gang of Four) 디자인 패턴을 생성, 구조, 행동 패턴의 세 그룹으로 분류할 때, 구조 패턴이 아닌 것은?
- ① Adapter 패턴
- ② Bridge 패턴
- ③ Builder 패턴
- ④ Proxy 패턴
정답 및 해설 보기
정답 ③
GoF 패턴은 생성·구조·행동으로 분류된다. 어댑터·브리지·프록시는 구조 패턴이지만, 빌더(Builder) 는 복잡한 객체의 생성과 표현을 분리하는 생성 패턴이므로 구조 패턴이 아니다.
| 구분 | 목적 | 대표 패턴 |
|---|---|---|
| 생성(Creational) | 객체 생성의 유연성 | 싱글톤·팩토리메소드·빌더·추상팩토리·프로토타입 |
| 구조(Structural) | 더 큰 구조 조합 | 어댑터·프록시·브리지·컴포지트·데코레이터·퍼사드 |
| 행동(Behavioral) | 상호작용·책임 분배 | 전략·옵저버·템플릿메소드·커맨드·상태 |
🔑 암기 — 빌더 = 생성 패턴(구조 패턴 ✗).
문 016. UI와 관련된 기본 개념 중 하나로, 시스템의 상태와 사용자의 지시에 대한 효과를 보여주어 사용자가 명령에 대한 진행 상황과 표시된 내용을 해석할 수 있도록 도와주는 것은?
- ① Feedback
- ② Posture
- ③ Module
- ④ Hash
정답 및 해설 보기
정답 ①
사용자 행동에 대해 시스템이 응답을 보여주는 것은 피드백(Feedback) 이다. 버튼 클릭 반응·다운로드 진행률·제출 결과 메시지 등이 해당한다. 피드백이 없으면 사용자가 처리 여부를 알 수 없다.
- ② Posture(자세·형태)·③ Module(기능 단위)·④ Hash(암호화 기법)는 설명과 무관하다.
문 017. UI의 종류로 멀티 터치(Multi-touch), 동작 인식(Gesture Recognition) 등 사용자의 자연스러운 움직임을 인식하여 서로 주고받는 정보를 제공하는 사용자 인터페이스를 의미하는 것은?
- ① GUI(Graphical User Interface)
- ② OUI(Organic User Interface)
- ③ NUI(Natural User Interface)
- ④ CLI(Command Line Interface)
정답 및 해설 보기
정답 ③
멀티 터치·동작 인식·음성 등 자연스러운 움직임 기반 인터페이스는 NUI(Natural User Interface) 다. 멀티 터치, 동작 인식 게임, 음성 비서가 대표 사례다.
| 종류 | 조작 방식 | 예 |
|---|---|---|
| CLI | 명령어 입력 | 터미널·DOS |
| GUI | 그래픽(아이콘·창) 클릭·터치 | Windows·모바일 앱 |
| NUI | 음성·제스처·시선 | 멀티 터치·음성 비서·동작 인식 |
| OUI | 변형 가능(구부리기 등) | 플렉서블 디스플레이 |
문 018. 소프트웨어 모델링과 관련한 설명으로 틀린 것은?
- ① 모델링 작업의 결과물은 다른 모델링 작업에 영향을 줄 수 없다.
- ② 구조적 방법론에서는 DFD(Data Flow Diagram), DD(Data Dictionary) 등을 사용하여 요구 사항의 결과를 표현한다.
- ③ 객체지향 방법론에서는 UML 표기법을 사용한다.
- ④ 소프트웨어 모델을 사용할 경우 개발될 소프트웨어에 대한 이해도 및 이해 당사자 간의 의사소통 향상에 도움이 된다.
정답 및 해설 보기
정답 ①
모델링 결과물은 다음 단계 모델링의 입력이 되어 서로 영향을 준다(예: 유스케이스 → 클래스·순차 다이어그램). 모델링은 유기적으로 연결돼 지속 보완되므로, "영향을 줄 수 없다"는 ①이 틀렸다.
- ② 구조적 방법론의 DFD·DD, ③ 객체지향의 UML, ④ 모델링의 효용(이해·의사소통)으로 모두 옳다.
문 019. 유스케이스 다이어그램(Use Case Diagram)에 관련된 내용으로 틀린 것은?
- ① 시스템과 상호작용하는 외부 시스템은 액터로 파악해서는 안된다.
- ② 유스케이스는 사용자 측면에서의 요구사항으로, 사용자가 원하는 목표를 달성하기 위해 수행할 내용을 기술한다.
- ③ 시스템 액터는 다른 프로젝트에서 이미 개발되어 사용되고 있으며, 본 시스템과 데이터를 주고받는 등 서로 연동되는 시스템을 말한다.
- ④ 액터가 인식할 수 없는 시스템 내부의 기능을 하나의 유스케이스로 파악해서는 안된다.
정답 및 해설 보기
정답 ①
액터(Actor)는 시스템 외부에서 상호작용하는 모든 대상으로, 사람뿐 아니라 외부 시스템·장치도 포함한다(결제 시스템·연동 시스템 등). ①은 외부 시스템을 액터로 파악하면 안 된다고 했으므로 틀렸다.
- ③이 "시스템 액터 = 연동되는 외부 시스템"을 옳게 설명해 ①과 충돌한다. ②·④도 유스케이스 작성 원칙으로 옳다.
문 020. 소프트웨어 아키텍처 모델 중 MVC(Model-View-Controller)와 관련한 설명으로 틀린 것은?
- ① MVC 모델은 사용자 인터페이스를 담당하는 계층의 응집도를 높일 수 있고, 여러 개의 다른 UI를 만들어 그 사이에 결합도를 낮출 수 있다.
- ② 모델(Model)은 뷰(View)와 제어(Controller) 사이에서 전달자 역할을 하며, 뷰마다 모델 서브시스템이 각각 하나씩 연결된다.
- ③ 뷰(View)는 모델(Model)에 있는 데이터를 사용자 인터페이스에 보이는 역할을 담당한다.
- ④ 제어(Controller)는 모델(Model)에 명령을 보냄으로써 모델의 상태를 변경할 수 있다.
정답 및 해설 보기
정답 ②
MVC는 관심사 분리 패턴이다. 모델은 핵심 데이터·로직을 담당하고 뷰·컨트롤러의 존재를 알지 못하며, 하나의 모델에 여러 뷰가 연결될 수 있다. ②는 모델이 전달자 역할을 하고 뷰마다 모델이 하나씩 연결된다고 했으므로 틀렸다(전달자는 컨트롤러에 가깝고, 모델:뷰 = 1:N).
- ①(응집도↑·결합도↓)·③(뷰의 역할)·④(컨트롤러가 모델 상태 변경)는 MVC 설명으로 옳다.
💡 보충 — 하나의 모델 데이터를 막대그래프·꺾은선그래프 등 여러 뷰로 동시에 표현 가능(모델:뷰 = 1:N).
Part Ⅱ 소프트웨어 개발 (문 021~040)
문 021. 통합 테스트(Integration Test)와 관련한 설명으로 틀린 것은?
- ① 시스템을 구성하는 모듈의 인터페이스와 결합을 테스트하는 것이다.
- ② 하향식 통합 테스트의 경우 넓이 우선(Breadth First) 방식으로 테스트를 할 모듈을 선택할 수 있다.
- ③ 상향식 통합 테스트의 경우 시스템 구조도의 최상위에 있는 모듈을 먼저 구현하고 테스트한다.
- ④ 모듈 간의 인터페이스와 시스템의 동작이 정상적으로 잘되고 있는지를 빨리 파악하고자 할 때 상향식보다는 하향식 통합 테스트를 사용하는 것이 좋다.
정답 및 해설 보기
정답 ③
통합 테스트는 단위 테스트를 마친 모듈을 결합하면서 모듈 간 인터페이스가 정상 동작하는지 확인하는 단계다. ③은 "상향식"이라면서 "최상위 모듈을 먼저 구현·테스트"한다고 했으므로 틀렸다. 최상위부터 시작하는 것은 하향식이고, 상향식은 최하위 모듈부터 시작한다.
- ① 통합 테스트의 정의, ②·④ 하향식 통합 테스트의 특징으로 옳다.
| 구분 | 하향식(Top-down) | 상향식(Bottom-up) |
|---|---|---|
| 진행 방향 | 상위 → 하위 | 하위 → 상위 |
| 필요한 가짜 모듈 | 스텁(Stub) | 드라이버(Driver) |
| 역할 | 미개발 하위 모듈 대체 | 미개발 상위 모듈 대체(데이터·제어 전달) |
| 장점 | 전체 구조 조기 파악 | 하위 모듈 결함 조기 발견 |
| 단점 | 하위 결함 발견 지연·스텁 다수 | 전체 구조 파악 늦음 |
🔑 암기 — 하향식 = Stub(하위 대체) / 상향식 = Driver(상위 대체).
문 022. 다음과 같이 레코드가 구성되어 있을 때, 이진 검색 방법으로 14를 찾을 경우 비교되는 횟수는?
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
- ① 2
- ② 3
- ③ 4
- ④ 5
정답 및 해설 보기
정답 ②
이진 검색은 정렬된 데이터의 중간값과 비교하여 범위를 절반씩 줄인다. 1~15에서 14를 찾는 과정은 다음과 같다.
| 회차 | 검색 범위 | 중간값 | 판단 |
|---|---|---|---|
| 1회 | 1~15 | 8 | 14 > 8 → 오른쪽 |
| 2회 | 9~15 | 12 | 14 > 12 → 오른쪽 |
| 3회 | 13~15 | 14 | 일치 → 종료 |
중간값을 8 → 12 → 14 순으로 3번 비교해 찾으므로 비교 횟수는 3회다.
| 구분 | 순차 검색 | 이진 검색 |
|---|---|---|
| 방식 | 처음부터 하나씩 비교 | 중간값 비교로 범위 절반씩 축소 |
| 전제 | 없음 | 정렬되어 있어야 함 |
| 복잡도 | O(n) | O(log n) |
문 023. 소프트웨어 공학에서 워크스루(Walkthrough)에 대한 설명으로 틀린 것은?
- ① 사용사례를 확장하여 명세하거나 설계 다이어그램, 원시코드, 테스트 케이스 등에 적용할 수 있다.
- ② 복잡한 알고리즘 또는 반복, 실시간 동작, 병행 처리와 같은 기능이나 동작을 이해하려고 할 때 유용하다.
- ③ 인스펙션(Inspection)과 동일한 의미를 가진다.
- ④ 단순한 테스트 케이스를 이용하여 프로덕트를 수작업으로 수행해 보는 것이다.
정답 및 해설 보기
정답 ③
워크스루와 인스펙션은 둘 다 정적 리뷰지만 같지 않다. 워크스루는 개발자(저자)가 주도하는 비공식 검토로 이해 증진·아이디어 공유가 목적이고, 인스펙션은 훈련된 사회자(Moderator)가 주도하는 공식 절차로 체크리스트를 활용해 결함 발견에 집중한다. ③은 둘이 동일하다고 했으므로 틀렸다.
| 구분 | 워크스루 | 인스펙션 |
|---|---|---|
| 목적 | 이해 증진·지식 공유 | 결함 발견 |
| 형식 | 비공식적 | 공식적·엄격한 절차 |
| 주도자 | 개발자(저자) | 훈련된 사회자 |
| 사전 준비 | 필수 아님 | 필수(체크리스트) |
문 024. 소프트웨어의 개발과정에서 소프트웨어의 변경사항을 관리하기 위해 개발된 일련의 활동을 뜻하는 것은?
- ① 복호화
- ② 형상관리
- ③ 저작권
- ④ 크랙
정답 및 해설 보기
정답 ②
소스 코드·문서 등 모든 산출물의 변경 과정을 체계적으로 관리·통제하는 활동은 형상관리(Configuration Management) 다. 누가·언제·무엇을·왜 바꿨는지 이력을 추적해 충돌을 막고 특정 시점 버전으로 복원할 수 있다.
- ① 복호화(암호 해제)·③ 저작권(창작물 권리)·④ 크랙(불법 변경)은 변경 관리 활동과 다르다.
문 025. 테스트 케이스와 관련한 설명으로 틀린 것은?
- ① 테스트의 목표 및 테스트 방법을 결정하기 전에 테스트 케이스를 작성해야 한다.
- ② 프로그램에 결함이 있더라도 입력에 대해 정상적인 결과를 낼 수 있기 때문에 결함을 검사할 수 있는 테스트 케이스를 찾는 것이 중요하다.
- ③ 개발된 서비스가 정의된 요구 사항을 준수하는지 확인하기 위한 입력 값과 실행 조건, 예상 결과의 집합으로 볼 수 있다.
- ④ 테스트 케이스 실행이 통과되었는지 실패하였는지 판단하기 위한 기준을 테스트 오라클(Test Oracle)이라고 한다.
정답 및 해설 보기
정답 ①
테스트 케이스는 테스트의 목표·방법이 결정된 후에 작성한다(목표·방법 결정 → 그에 맞는 입력값·예상 결과 설계). ①은 "결정하기 전에 작성"이라 했으므로 순서가 틀렸다.
- ② 테스트의 중요성, ③ 테스트 케이스의 정의, ④ 테스트 오라클의 정의로 모두 옳다.
🔑 암기 — 테스트 오라클 = 통과/실패를 판단하는 기준(예상 결과·정답지).
문 026. 객체지향 개념을 활용한 소프트웨어 구현과 관련한 설명 중 틀린 것은?
- ① 객체(Object)란 필요한 자료 구조와 수행되는 함수들을 가진 하나의 독립된 존재이다.
- ② JAVA에서 정보은닉(Information Hiding)을 표기할 때 private의 의미는 '공개'이다.
- ③ 상속(Inheritance)은 개별 클래스를 상속 관계로 묶음으로써 클래스 간의 체계화된 전체 구조를 파악하기 쉽다는 장점이 있다.
- ④ 같은 클래스에 속하는 개개의 객체이자 하나의 클래스에서 생성된 객체를 인스턴스(Instance)라고 한다.
정답 및 해설 보기
정답 ②
private 은 "같은 클래스 내부에서만 접근 가능"하게 제한하는 접근 제한자로, 정보 은닉을 구현하는 가장 강한 수단이다. ②는 private의 의미가 '공개'라 했으므로 틀렸다('공개'를 의미하는 것은 public).
- ①·③·④ 객체·상속·인스턴스 개념으로 옳다.
JAVA 접근 제한자(넓은 → 좁은):
| 제한자 | 접근 범위 |
|---|---|
| public | 모든 곳 |
| protected | 같은 패키지 + 상속받은 자식 |
| default | 같은 패키지 |
| private | 같은 클래스 |
🔑 암기 — public > protected > default > private.
문 027. DRM(Digital Rights Management)과 관련한 설명으로 틀린 것은?
- ① 디지털 콘텐츠와 디바이스의 사용을 제한하기 위해 하드웨어 제조업자, 저작권자, 출판업자 등이 사용할 수 있는 접근 제어 기술을 의미한다.
- ② 디지털 미디어의 생명 주기 동안 발생하는 사용 권한 관리, 과금, 유통 단계를 관리하는 기술로도 볼 수 있다.
- ③ 클리어링 하우스(Clearing House)는 사용자에게 콘텐츠 라이선스를 발급하고 권한을 부여해주는 시스템을 말한다.
- ④ 원본을 안전하게 유통하기 위한 전자적 보안은 고려하지 않기 때문에 불법 유통과 복제의 방지는 불가능하다.
정답 및 해설 보기
정답 ④
DRM은 디지털 콘텐츠의 저작권을 보호하기 위한 기술로, 그 존재 목적 자체가 불법 유통·복제 방지와 안전한 원본 유통이다(음원이 정해진 앱에서만 재생되거나 OTT 영상 녹화를 막는 기술 등). ④는 전자적 보안을 고려하지 않아 복제 방지가 불가능하다고 했으므로 DRM의 목적을 부정하는 틀린 진술이다.
- ①·②·③ DRM의 정의·생명주기 관리·클리어링 하우스로 옳다.
💡 보충 — 클리어링 하우스 = 사용 권한 관리·라이선스 발급·결제 처리를 담당하는 구성 요소.
문 028. 위험 모니터링의 의미로 옳은 것은?
- ① 위험을 이해하는 것
- ② 첫 번째 조치로 위험을 피할 수 있도록 하는 것
- ③ 위험 발생 후 즉시 조치하는 것
- ④ 위험 요소 징후들에 대하여 계속적으로 인지하는 것
정답 및 해설 보기
정답 ④
위험 모니터링은 식별해 둔 위험의 발생 징후를 지속적으로 감시·추적하고 새로운 위험이 나타나는지 확인하는 활동이다. ④ "위험 요소 징후들을 계속적으로 인지"가 정확하다.
- ① 위험을 이해 = 위험 분석 단계
- ② 위험을 피하도록 = 위험 대응 중 회피 전략
- ③ 발생 후 즉시 조치 = 위험 대응·사후 처리
위험 관리 프로세스:
| 단계 | 활동 |
|---|---|
| 식별 | 잠재 위험 목록 작성 |
| 분석 | 발생 확률·영향 분석 → 우선순위 |
| 대응 계획 | 회피·전가·완화·수용 전략 수립 |
| 모니터링·통제 | 징후 추적·새 위험 식별 |
문 029. 동시에 소스를 수정하는 것을 방지하며 다른 방향으로 진행된 개발 결과를 합치거나 변경 내용을 추적할 수 있는 소프트웨어 버전 관리 도구는?
- ① RCS(Revision Control System)
- ② RTS(Reliable Transfer Service)
- ③ RPC(Remote Procedure Call)
- ④ RVS(Relative Version System)
정답 및 해설 보기
정답 ①
제시된 기능은 모두 버전 관리(형상 관리) 도구의 특징이다. 보기 중 버전 관리 도구는 RCS(Revision Control System) 뿐으로, 중앙 서버 방식 이전에 개발자 개인 PC에서 파일 버전을 관리하던 초기 형태의 VCS다.
- ② RTS(신뢰성 전송)·③ RPC(원격 프로시저 호출)는 통신 기술, ④ RVS는 표준 용어가 아니다.
버전 관리 시스템의 세대:
| 세대 | 방식 | 대표 도구 |
|---|---|---|
| 1세대 | 로컬 | RCS·SCCS |
| 2세대 | 중앙 집중식 | SVN·CVS |
| 3세대 | 분산 | Git·Mercurial |
문 030. 화이트박스 테스트와 관련한 설명으로 틀린 것은?
- ① 화이트박스 테스트의 이해를 위해 논리흐름도(Logic-Flow Diagram)를 이용할 수 있다.
- ② 테스트 데이터를 이용해 실제 프로그램을 실행함으로써 오류를 찾는 동적 테스트(Dynamic Test)에 해당한다.
- ③ 프로그램의 구조를 고려하지 않기 때문에 테스트 케이스는 프로그램 또는 모듈의 요구나 명세를 기초로 결정한다.
- ④ 테스트 데이터를 선택하기 위하여 검증기준(Test Coverage)을 정한다.
정답 및 해설 보기
정답 ③
화이트박스 테스트는 소프트웨어의 내부 구조와 로직을 들여다보며 모든 경로(분기·반복)가 올바른지 점검하는 기법이다. ③ "프로그램 구조를 고려하지 않고 요구·명세를 기초로 결정"은 블랙박스 테스트 설명이므로 틀렸다.
- ①·②·④ 논리흐름도 활용·동적 테스트·커버리지 기준으로 옳다.
| 구분 | 화이트박스 | 블랙박스 |
|---|---|---|
| 관점 | 개발자(내부 구조) | 사용자(요구 명세) |
| 기반 | 소스 코드·내부 로직 | 요구사항 명세서 |
| 대표 기법 | 구문/결정/조건 커버리지 | 동등 분할·경계값 분석·원인-결과 그래프 |
문 031. 알고리즘과 관련한 설명으로 틀린 것은?
- ① 주어진 작업을 수행하는 컴퓨터 명령어를 순서대로 나열한 것으로 볼 수 있다.
- ② 검색(Searching)은 정렬이 되지 않은 데이터 혹은 정렬이 된 데이터 중에서 키값에 해당되는 데이터를 찾는 알고리즘이다.
- ③ 정렬(Sorting)은 흩어져있는 데이터를 키값을 이용하여 순서대로 열거하는 알고리즘이다.
- ④ 선형 검색은 검색을 수행하기 전에 반드시 데이터의 집합이 정렬되어 있어야 한다.
정답 및 해설 보기
정답 ④
선형(순차) 검색은 데이터를 처음부터 하나씩 비교하므로 정렬 여부와 무관하게 사용할 수 있다. ④ "선형 검색은 반드시 정렬되어 있어야 한다"는 틀렸다. 정렬이 필수인 것은 이진 검색이다.
- ①·②·③ 알고리즘·검색·정렬의 기본 개념으로 옳다.
문 032. 버블 정렬을 이용하여 다음 자료를 오름차순으로 정렬할 경우 PASS 1의 결과는?
9, 6, 7, 3, 5
- ① 6, 9, 7, 3, 5
- ② 3, 9, 6, 7, 5
- ③ 3, 6, 7, 9, 5
- ④ 6, 7, 3, 5, 9
정답 및 해설 보기
정답 ④
버블 정렬은 인접한 두 원소를 비교해 오름차순이면 큰 값을 뒤로 보낸다. 9, 6, 7, 3, 5 의 PASS 1:
| 비교 | 결과 |
|---|---|
| 9 ↔ 6 | 6, 9, 7, 3, 5 |
| 9 ↔ 7 | 6, 7, 9, 3, 5 |
| 9 ↔ 3 | 6, 7, 3, 9, 5 |
| 9 ↔ 5 | 6, 7, 3, 5, 9 |
1회전이 끝나면 최댓값 9가 맨 뒤로 이동한다. PASS 1 결과는 6, 7, 3, 5, 9다.
| 정렬 | 개념 | 복잡도 |
|---|---|---|
| 선택 | 최솟값을 찾아 앞으로 | O(n²) |
| 버블 | 인접 2개 비교·교환 | O(n²) |
| 삽입 | 정렬된 부분에 끼워 넣기 | O(n²) |
문 033. 다음은 인스펙션(Inspection) 과정을 표현한 것이다. (가)~(마)에 들어갈 말을 [보기]에서 찾아 바르게 연결한 것은?
계획 → (가) → (나) → (다) → (라) → (마)
[보기]
-
㉠ 준비
-
㉡ 사전 교육
-
㉢ 인스펙션 회의
-
㉣ 수정
-
㉤ 후속 조치
-
① (가) - ㉡, (나) - ㉢
-
② (나) - ㉠, (다) - ㉢
-
③ (다) - ㉢, (라) - ㉤
-
④ (라) - ㉣, (마) - ㉢
정답 및 해설 보기
정답 ②
인스펙션의 표준 절차는 계획 → 사전 교육(개요) → 준비 → 인스펙션 회의 → 수정(재작업) → 후속 조치다. 보기를 대입하면 (가)=㉡사전 교육, (나)=㉠준비, (다)=㉢인스펙션 회의, (라)=㉣수정, (마)=㉤후속 조치가 된다.
따라서 (나)-㉠, (다)-㉢으로 연결한 ②가 정답이다.
| 단계 | 내용 |
|---|---|
| 계획 | 자료·일정·담당자 결정 |
| (가) 사전 교육 | 참가자에게 개요·자료 교육 |
| (나) 준비 | 회의 전 각자 결함 검토 |
| (다) 인스펙션 회의 | 결함 목록화·토의 |
| (라) 수정 | 결함 수정(재작업) |
| (마) 후속 조치 | 수정 반영 확인·마무리 |
문 034. 소프트웨어를 보다 쉽게 이해할 수 있고 적은 비용으로 수정할 수 있도록 겉으로 보이는 동작의 변화 없이 내부구조를 변경하는 것은?
- ① Refactoring
- ② Architecting
- ③ Specification
- ④ Renewal
정답 및 해설 보기
정답 ①
겉보기 동작(기능)은 그대로 유지하면서 내부 코드 구조만 개선해 가독성·유지보수성을 높이고 중복을 제거하는 작업은 리팩토링(Refactoring) 이다.
- ② 아키텍팅(시스템 뼈대 설계)·③ 명세(요구사항 문서화)·④ 갱신(새 버전 교체)과는 다르다.
문 035. 단위 테스트(Unit Test)와 관련한 설명으로 틀린 것은?
- ① 구현 단계에서 각 모듈의 개발을 완료한 후 개발자가 명세서의 내용대로 정확히 구현되었는지 테스트한다.
- ② 모듈 내부의 구조를 구체적으로 볼 수 있는 구조적 테스트를 주로 시행한다.
- ③ 필요 데이터를 인자를 통해 넘겨주고, 테스트 완료 후 그 결과값을 받는 역할을 하는 가상의 모듈을 테스트 스텁(Stub)이라고 한다.
- ④ 테스트할 모듈을 호출하는 모듈도 있고, 테스트할 모듈이 호출하는 모듈도 있다.
정답 및 해설 보기
정답 ③
필요 데이터를 인자로 넘겨주고 실행 후 결과값을 받는 가상의 모듈은 상위 모듈을 대체하는 드라이버(Driver) 다. ③은 이를 스텁이라 했으므로 틀렸다. 스텁(Stub) 은 하위 모듈을 대체해, 호출을 받으면 미리 정한 값을 반환하는 역할이다.
- ① 단위 테스트의 정의, ② 내부 구조를 보는 구조적(화이트박스) 테스트, ④ 호출/피호출 모듈 관계로 옳다.
🔑 암기 — 드라이버 = 상위 대체(데이터·제어 전달) / 스텁 = 하위 대체(정해진 값 반환).
문 036. IDE(Integrated Development Environment) 도구의 각 기능에 대한 설명으로 틀린 것은?
- ① Coding - 프로그래밍 언어를 가지고 컴퓨터 프로그램을 작성할 수 있는 환경을 제공
- ② Compile - 저급언어의 프로그램을 고급언어 프로그램으로 변환하는 기능
- ③ Debugging - 프로그램에서 발견되는 버그를 찾아 수정할 수 있는 기능
- ④ Deployment - 소프트웨어를 최종 사용자에게 전달하기 위한 기능
정답 및 해설 보기
정답 ②
컴파일(Compile)은 사람이 이해하기 쉬운 고급 언어로 작성한 코드를 컴퓨터가 이해하는 저급 언어(기계어) 로 번역하는 과정이다. ②는 "저급 → 고급"이라 했으므로 번역 방향이 반대라 틀렸다.
- ①·③·④ 코딩·디버깅·배포 기능 설명으로 옳다.
문 037. 아래 Tree 구조에 대하여 후위 순회(Postorder)한 결과는?

- ① a → b → d → c → e → g → h → f
- ② d → b → g → h → e → f → c → a
- ③ d → b → a → g → e → h → c → f
- ④ a → b → d → g → e → h → c → f
정답 및 해설 보기
정답 ②
후위 순회는 왼쪽 → 오른쪽 → 루트 순서로, 루트를 가장 마지막에 방문한다. 주어진 트리를 따라가면 다음과 같다.
- b 서브트리: d 방문 → b 방문 →
d b - c 서브트리: e의 g·h 방문 후 e →
g h e, 이어서 f →f, 마지막 c →g h e f c - 마지막에 루트 a 방문
전체 결과는 d → b → g → h → e → f → c → a 로 ②가 정답이다.
| 순회 | 방문 순서 |
|---|---|
| 전위(Preorder) | 루트 → 왼 → 오 |
| 중위(Inorder) | 왼 → 루트 → 오 |
| 후위(Postorder) | 왼 → 오 → 루트 |
🔑 암기 — 전/중/후위는 루트를 각각 처음/중간/마지막에 방문.
문 038. 인터페이스 구현 시 사용하는 기술로 속성-값 쌍(Attribute-Value Pairs)으로 이루어진 데이터 오브젝트를 전달하기 위해 사용하는 개방형 표준 포맷은?
- ① JSON
- ② HTML
- ③ AVPN
- ④ DOF
정답 및 해설 보기
정답 ①
JSON(JavaScript Object Notation) 은 {"키": "값"} 형태의 속성-값(Key-Value) 쌍으로 데이터를 표현하는 개방형 표준 포맷이다. 가볍고 사람이 읽기 쉬우며 파싱이 빨라 인터페이스 데이터 교환의 사실상 표준으로 쓰인다.
- ② HTML은 웹 페이지의 구조를 표현하는 마크업 언어다.
- ③ AVPN·④ DOF는 문제에서 설명하는 개방형 표준 데이터 교환 포맷이 아니다.
| 구분 | JSON | XML |
|---|---|---|
| 문법 | {"key": "value"} |
<key>value</key> |
| 표현 | 속성-값 쌍 | 태그 기반 트리 구조 |
| 특징 | 단순·경량·파싱 빠름 | 구조 표현 유연·스키마 검증 |
문 039. 순서가 있는 리스트에서 데이터의 삽입(Push), 삭제(Pop)가 한 쪽 끝에서 일어나며 LIFO(Last-In-First-Out)의 특징을 가지는 자료구조는?
- ① Tree
- ② Graph
- ③ Stack
- ④ Queue
정답 및 해설 보기
정답 ③
한 쪽 끝(Top)에서만 삽입(Push)·삭제(Pop)가 일어나고 마지막에 들어온 것이 먼저 나가는 LIFO(후입선출) 구조는 스택(Stack) 이다. ④ 큐(Queue)는 반대로 먼저 들어온 것이 먼저 나가는 FIFO 구조다.
| 구분 | 스택 | 큐 |
|---|---|---|
| 구조 | LIFO(후입선출) | FIFO(선입선출) |
| 입출구 | 한 쪽(Top) | 양 쪽(Front·Rear) |
| 삽입/삭제 | Push / Pop | Enqueue / Dequeue |
| 활용 | 함수 호출·되돌리기 | 작업 스케줄링·버퍼 |
문 040. 다음 중 단위 테스트 도구로 사용될 수 없는 것은?
- ① CppUnit
- ② JUnit
- ③ HttpUnit
- ④ IgpUnit
정답 및 해설 보기
정답 ④
단위 테스트 프레임워크로 ① CppUnit(C++)·② JUnit(Java)·③ HttpUnit(웹·HTTP 응답 테스트용 자바 프레임워크)은 모두 실제 사용되는 도구다. ④ IgpUnit은 표준 단위 테스트 도구가 아니다.
🔑 암기 — xUnit 계열(JUnit·CppUnit·NUnit·HttpUnit 등)이 대표적인 단위 테스트 프레임워크.
Part Ⅲ 데이터베이스 구축 (문 041~060)
문 041. 다음 조건을 모두 만족하는 정규형은?
- 테이블 R에 속한 모든 도메인이 원자값만으로 구성되어 있다.
- 테이블 R에서 키가 아닌 모든 필드가 키에 대해 함수적으로 종속되며, 키의 부분 집합이 결정자가 되는 부분 종속이 존재하지 않는다.
- 테이블 R에 존재하는 모든 함수적 종속에서 결정자가 후보키이다.
- ① BCNF
- ② 제1정규형
- ③ 제2정규형
- ④ 제3정규형
정답 및 해설 보기
정답 ①
세 조건을 단계별로 보면, 1조건(모든 도메인 원자값) = 1NF, 2조건(부분 함수 종속 없음) = 2NF, 3조건(모든 결정자가 후보키) = BCNF의 조건이다. 세 조건을 모두 만족하는 가장 높은 정규형은 BCNF다. ③ 3NF는 이행 함수 종속 제거까지이고, "모든 결정자가 후보키"는 그보다 엄격한 BCNF의 조건이다.
| 정규형 | 조건 |
|---|---|
| 1NF | 도메인이 원자값 |
| 2NF | 부분 함수 종속 제거 |
| 3NF | 이행 함수 종속 제거 |
| BCNF | 결정자가 후보키가 아닌 함수 종속 제거 |
| 4NF | 다치 종속 제거 |
| 5NF | 조인 종속 제거 |
🔑 암기 — 정규화 단계: 두부이결다조(도메인원자값·부분종속·이행종속·결정자후보키·다치종속·조인종속).
문 042. 데이터베이스의 트랜잭션 성질들 중에서 다음 설명에 해당하는 것은?
트랜잭션의 모든 연산들이 정상적으로 수행 완료되거나 아니면 전혀 어떠한 연산도 수행되지 않은 원래 상태가 되도록 해야 한다.
- ① Atomicity
- ② Consistency
- ③ Isolation
- ④ Durability
정답 및 해설 보기
정답 ①
"모든 연산이 완료되거나 전혀 수행되지 않은 원래 상태" = All or Nothing = 원자성(Atomicity) 이다. 일부만 성공하는 경우는 없어야 하며, 중간에 실패하면 모두 취소(Rollback)한다.
| 성질 | 개념 |
|---|---|
| 원자성(Atomicity) | All or Nothing(모두 성공/모두 실패) |
| 일관성(Consistency) | 트랜잭션 전후 제약조건 유지 |
| 고립성(Isolation) | 동시 실행 시 서로 독립적 |
| 지속성(Durability) | 완료된 결과는 장애에도 영구 보존 |
🔑 암기 — 트랜잭션 4대 성질 = ACID.
문 043. 분산 데이터베이스 시스템과 관련한 설명으로 틀린 것은?
- ① 물리적으로 분산된 데이터베이스 시스템을 논리적으로 하나의 데이터베이스 시스템처럼 사용할 수 있도록 한 것이다.
- ② 물리적으로 분산되어 지역별로 필요한 데이터를 처리할 수 있는 지역 컴퓨터(Local Computer)를 분산 처리기(Distributed Processor)라고 한다.
- ③ 분산 데이터베이스 시스템을 위한 통신 네트워크 구조가 데이터 통신에 영향을 주므로 효율적으로 설계해야 한다.
- ④ 데이터베이스가 분산되어 있음을 사용자가 인식할 수 있도록 분산 투명성(Distribution Transparency)을 배제해야 한다.
정답 및 해설 보기
정답 ④
분산 데이터베이스의 핵심 목표는 분산 투명성(Transparency) 으로, 데이터가 어디에 흩어져 있는지 사용자가 몰라도 하나의 DB처럼 쓰게 한다(위치·중복·장애 투명성). ④는 투명성을 "배제"해 사용자가 분산을 인식하게 한다고 했으므로 목표와 정반대라 틀렸다.
- ①·②·③ 분산 DB의 정의·분산 처리기·네트워크 설계로 옳다.
문 044. 다음 테이블을 보고 강남지점의 판매량이 많은 제품부터 출력되도록 할 때 다음 중 가장 적절한 SQL 구문은? (단, 출력은 제품명과 판매량이 출력되도록 한다.)
<푸드> 테이블
| 지점명 | 제품명 | 판매량 |
|---|---|---|
| 강남지점 | 비빔밥 | 500 |
| 강북지점 | 도시락 | 300 |
| 강남지점 | 도시락 | 200 |
| 강남지점 | 미역국 | 550 |
| 수원지점 | 비빔밥 | 600 |
| 인천지점 | 비빔밥 | 800 |
| 강남지점 | 잡채밥 | 250 |
- ①
SELECT 제품명, 판매량 FROM 푸드 ORDER BY 판매량 ASC; - ②
SELECT 제품명, 판매량 FROM 푸드 ORDER BY 판매량 DESC; - ③
SELECT 제품명, 판매량 FROM 푸드 WHERE 지점명='강남지점' ORDER BY 판매량 ASC; - ④
SELECT 제품명, 판매량 FROM 푸드 WHERE 지점명='강남지점' ORDER BY 판매량 DESC;
정답 및 해설 보기
정답 ④
요구사항을 구문으로 옮기면 ① 강남지점만 거르고(WHERE 지점명='강남지점') ② 많은 것부터 정렬(ORDER BY 판매량 DESC)해야 한다. 둘을 모두 만족하는 것은 ④다.
- ①·② 는
WHERE가 없어 전체 지점이 출력되므로 요구를 충족하지 못한다. - ③ 은
ASC(오름차순)라 "많은 것부터"와 반대다.
실제로 ④를 실행하면 강남지점 4건이 미역국 550 → 비빔밥 500 → 잡채밥 250 → 도시락 200 순으로 출력된다.
SELECT 절 작성 순서:
| 순서 | 절 | 역할 |
|---|---|---|
| 1 | SELECT | 조회할 컬럼 |
| 2 | FROM | 조회할 테이블 |
| 3 | WHERE | 행 조건 |
| 4 | GROUP BY | 그룹화 |
| 5 | HAVING | 그룹 조건 |
| 6 | ORDER BY | 정렬 |
문 045. 데이터베이스의 인덱스와 관련한 설명으로 틀린 것은?
- ① 문헌의 색인, 사전과 같이 데이터를 쉽고 빠르게 찾을 수 있도록 만든 데이터 구조이다.
- ② 테이블에 붙여진 색인으로 데이터 검색 시 처리속도 향상에 도움이 된다.
- ③ 인덱스의 추가, 삭제 명령어는 각각 ADD, DELETE이다.
- ④ 대부분의 데이터베이스에서 테이블을 삭제하면 인덱스도 같이 삭제된다.
정답 및 해설 보기
정답 ③
인덱스 객체의 생성·삭제 명령어는 CREATE INDEX 와 DROP INDEX 다. ③은 ADD/DELETE라 했으므로 틀렸다(ADD/DROP은 ALTER TABLE 로 컬럼을 조작할 때 쓰는 키워드).
- ①·②·④ 인덱스의 개념·검색 속도 향상·테이블 삭제 시 동반 삭제로 옳다.
⚠️ 함정 — 인덱스는 검색(SELECT)은 빨라지지만, INSERT/UPDATE/DELETE 시 인덱스도 갱신해야 해 변경 작업은 느려지고 저장 공간도 추가로 든다.
문 046. 물리적 데이터베이스 구조의 기본 데이터 단위인 저장 레코드의 양식을 설계할 때 고려 사항이 아닌 것은?
- ① 데이터 타입
- ② 데이터 값의 분포
- ③ 트랜잭션 모델링
- ④ 접근 빈도
정답 및 해설 보기
정답 ③
저장 레코드 양식 설계는 물리적 설계 단계로, 데이터 타입·값의 분포·접근 빈도 등을 고려한다. ③ 트랜잭션 모델링은 개념적 설계 단계의 활동이므로 물리적 저장 양식 설계의 고려 사항이 아니다.
| 설계 단계 | 주요 활동 |
|---|---|
| 개념적 | 요구분석·ERD·트랜잭션 모델링 |
| 논리적 | 테이블 스키마·정규화·트랜잭션 인터페이스 설계 |
| 물리적 | 저장 레코드 양식·인덱스 구조·접근 경로 |
문 047. SQL의 기능에 따른 분류 중에서 REVOKE문과 같이 데이터의 사용 권한을 관리하는데 사용하는 언어는?
- ① DDL(Data Definition Language)
- ② DML(Data Manipulation Language)
- ③ DCL(Data Control Language)
- ④ DUL(Data User Language)
정답 및 해설 보기
정답 ③
권한 회수(REVOKE)·부여(GRANT)는 데이터 제어어인 DCL(Data Control Language) 에 속한다. ① DDL은 구조 정의, ② DML은 데이터 조작, ④ DUL은 존재하지 않는 분류다.
| 구분 | 역할 | 대표 명령어 |
|---|---|---|
| DDL | 구조 정의 | CREATE·ALTER·DROP·TRUNCATE |
| DML | 데이터 조작 | SELECT·INSERT·UPDATE·DELETE |
| DCL | 권한·트랜잭션 제어 | GRANT·REVOKE·COMMIT·ROLLBACK |
문 048. 데이터 사전에 대한 설명으로 틀린 것은?
- ① 시스템 카탈로그 또는 시스템 데이터베이스라고도 한다.
- ② 데이터 사전 역시 데이터베이스의 일종이므로 일반 사용자가 생성, 유지 및 수정 할 수 있다.
- ③ 데이터베이스에 대한 데이터인 메타데이터(Metadata)를 저장하고 있다.
- ④ 데이터 사전에 있는 데이터에 실제로 접근하는 데 필요한 위치 정보는 데이터 디렉토리(Data Directory)라는 곳에서 관리한다.
정답 및 해설 보기
정답 ②
데이터 사전(시스템 카탈로그)은 메타데이터를 저장하는 시스템 DB로, DBMS가 스스로 생성·유지한다. 일반 사용자는 조회만 가능하고 직접 수정할 수 없다. ②는 일반 사용자가 생성·유지·수정할 수 있다고 했으므로 틀렸다.
- ①·③·④ 시스템 카탈로그·메타데이터·데이터 디렉토리로 옳다.
💡 보충 — 데이터 디렉토리는 데이터 사전 내 데이터에 접근하는 위치 정보를 관리하는 곳이다.
문 049. 데이터베이스에서 릴레이션에 대한 설명으로 틀린 것은?
- ① 모든 튜플은 서로 다른 값을 가지고 있다.
- ② 하나의 릴레이션에서 튜플은 특정한 순서를 가진다.
- ③ 각 속성은 릴레이션 내에서 유일한 이름을 가진다.
- ④ 모든 속성 값은 원자값(atomic value)을 가진다.
정답 및 해설 보기
정답 ②
릴레이션의 튜플(행)은 순서가 없다(무순서성). ②는 "특정한 순서를 가진다"라 했으므로 틀렸다. SELECT 시 특정 순서로 보이는 것은 DBMS의 편의일 뿐 릴레이션의 본질이 아니다.
- ① 튜플의 유일성, ③ 속성명의 유일성, ④ 속성값의 원자성으로 옳다.
| 관계 모델 | 파일 시스템 | 설명 |
|---|---|---|
| 릴레이션 | 파일 | 테이블 |
| 튜플 | 레코드 | 행(Row) |
| 속성 | 필드 | 열(Column) |
| 차수(Degree) | - | 속성의 수 |
| 카디널리티 | - | 튜플의 수 |
문 050. 데이터베이스에서의 뷰(View)에 대한 설명으로 틀린 것은?
- ① 뷰는 다른 뷰를 기반으로 새로운 뷰를 만들 수 있다.
- ② 뷰는 일종의 가상 테이블이며, update에는 제약이 따른다.
- ③ 뷰는 기본 테이블을 만드는 것처럼 create view를 사용하여 만들 수 있다.
- ④ 뷰는 논리적으로 존재하는 기본 테이블과 다르게 물리적으로만 존재하며 카탈로그에 저장된다.
정답 및 해설 보기
정답 ④
뷰는 SELECT 문만 저장해두고 조회 시 실행하는 가상 테이블로, 논리적으로만 존재하고 물리적 데이터 저장 공간을 갖지 않는다. ④는 "물리적으로만 존재"라 했으므로 가상 테이블 개념과 반대라 틀렸다.
- ①·②·③ 뷰 기반 뷰 생성·갱신 제약·
CREATE VIEW사용으로 옳다.
💡 보충 — 뷰의 장점: 논리적 데이터 독립성, 데이터 접근 제어(보안), 복잡한 쿼리 단순화.
문 051. 트랜잭션의 상태 중 트랜잭션의 마지막 연산이 실행된 직후의 상태로, 모든 연산의 처리는 끝났지만 트랜잭션이 수행한 최종 결과를 데이터베이스에 반영하지 않은 상태는?
- ① Active
- ② Partially Committed
- ③ Committed
- ④ Aborted
정답 및 해설 보기
정답 ②
모든 연산은 끝났으나 결과를 DB에 영구 반영(COMMIT)하기 직전의 상태는 부분 완료(Partially Committed) 다.
- ① Active: 트랜잭션 실행 중
- ③ Committed: 결과를 DB에 영구 반영한 완전 성공
- ④ Aborted: 비정상 종료되어 Rollback이 수행된 완전 실패
상태 흐름: Active → Partially Committed → (COMMIT) Committed / (장애) Failed → (ROLLBACK) Aborted.
문 052. SQL의 명령을 사용 용도에 따라 DDL, DML, DCL로 구분할 경우, 그 성격이 나머지 셋과 다른 것은?
- ① SELECT
- ② UPDATE
- ③ INSERT
- ④ GRANT
정답 및 해설 보기
정답 ④
① SELECT·② UPDATE·③ INSERT는 모두 데이터를 다루는 DML이고, ④ GRANT는 권한을 제어하는 DCL이다. 따라서 성격이 다른 하나는 GRANT다.
문 053. 키의 종류 중 유일성과 최소성을 만족하는 속성 또는 속성들의 집합은?
- ① Atomic key
- ② Super key
- ③ Candidate key
- ④ Test key
정답 및 해설 보기
정답 ③
유일성 + 최소성을 모두 만족하는 키는 후보키(Candidate key) 다.
- ② 슈퍼키: 유일성은 만족하나 불필요한 속성이 포함될 수 있어 최소성은 보장 못 함
- 기본키: 후보키 중 대표로 선정한 하나
- 대체키: 기본키로 선택되지 못한 나머지 후보키
🔑 암기 — 슈퍼키 ⊃ 후보키 ⊃ 기본키. 후보키 = 유일성 + 최소성.
문 054. 데이터베이스에서 개념적 설계 단계에 대한 설명으로 틀린 것은?
- ① 산출물로 E-R Diagram을 만들 수 있다.
- ② DBMS에 독립적인 개념스키마를 설계한다.
- ③ 트랜잭션 인터페이스를 설계 및 작성한다.
- ④ 논리적 설계 단계의 앞 단계에서 수행된다.
정답 및 해설 보기
정답 ③
개념적 설계는 E-R 다이어그램·개념 스키마(DBMS 독립)를 산출하며 논리적 설계의 앞 단계다. ③ 트랜잭션 인터페이스 설계는 논리적 설계 단계의 활동이므로 개념적 설계 설명으로는 틀렸다.
- ①·②·④ E-R Diagram·DBMS 독립 개념 스키마·논리적 설계 앞 단계로 옳다.
문 055. 테이블의 기본키(Primary Key)로 지정된 속성에 관한 설명으로 가장 거리가 먼 것은?
- ① NOT NULL로 널 값을 가지지 않는다.
- ② 릴레이션에서 튜플을 구별할 수 있다.
- ③ 외래키로 참조될 수 있다.
- ④ 검색할 때 반드시 필요하다.
정답 및 해설 보기
정답 ④
기본키는 NULL 불가·중복 불가(개체 무결성)로 튜플을 식별하며, 다른 테이블의 외래키로 참조될 수 있다. ④ "검색할 때 반드시 필요"는 틀렸다 — 일반 컬럼으로도 얼마든지 검색할 수 있다.
| 구분 | 기본키(PK) | 외래키(FK) |
|---|---|---|
| 역할 | 튜플 유일 식별 | 다른 테이블 PK 참조(관계) |
| 제약 | NULL 불가·중복 불가 | 참조 PK에 존재하는 값만 |
| 개수 | 테이블당 하나 | 여러 개 가능 |
문 056. 데이터 모델의 구성 요소 중 데이터 구조에 따라 개념 세계나 컴퓨터 세계에서 실제로 표현된 값들을 처리하는 작업을 의미하는 것은?
- ① Relation
- ② Data Structure
- ③ Constraint
- ④ Operation
정답 및 해설 보기
정답 ④
표현된 값들을 처리(검색·삽입·수정·삭제)하는 작업은 연산(Operation) 이다.
| 요소 | 역할 |
|---|---|
| 구조(Structure) | 데이터의 논리적 뼈대 |
| 연산(Operation) | 데이터를 다루는 방법 |
| 제약조건(Constraint) | 무결성을 위한 규칙 |
🔑 암기 — 데이터 모델 3요소 = 구조·연산·제약조건.
문 057. 다음 [조건]에 부합하는 SQL문을 작성하고자 할 때, [SQL문]의 빈칸에 들어갈 내용으로 옳은 것은? (단, '팀코드' 및 '이름'은 속성이며, '직원'은 테이블이다.)
[조건] 이름이 '정도일'인 팀원이 소속된 팀코드를 이용하여 해당 팀에 소속된 팀원들의 이름을 출력하는 SQL문 작성
SELECT 이름
FROM 직원
WHERE 팀코드 = ( );
- ①
WHERE 이름='정도일' - ②
SELECT 팀코드 FROM 이름 WHERE 직원='정도일' - ③
WHERE 직원='정도일' - ④
SELECT 팀코드 FROM 직원 WHERE 이름='정도일'
정답 및 해설 보기
정답 ④
먼저 '정도일'의 팀코드를 구하는 서브쿼리 SELECT 팀코드 FROM 직원 WHERE 이름='정도일' 를 빈칸에 넣고, 그 팀코드와 같은 직원의 이름을 조회한다. 따라서 빈칸은 ④다.
- ②는
FROM 이름(테이블이 아님)·WHERE 직원(속성이 아님)으로 잘못된 구조다.
실제로 ④를 넣어 실행하면 정도일과 같은 팀코드에 속한 팀원 전원의 이름이 반환된다.
문 058. 무결성 제약조건 중 개체 무결성 제약조건에 대한 설명으로 옳은 것은?
- ① 릴레이션 내의 튜플들이 각 속성의 도메인에 정해진 값만을 가져야 한다.
- ② 기본키는 NULL 값을 가져서는 안되며 릴레이션 내에 오직 하나의 값만 존재해야 한다.
- ③ 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야 한다.
- ④ 자식 릴레이션의 값이 변경될 때 부모 릴레이션의 제약을 받는다.
정답 및 해설 보기
정답 ②
개체 무결성은 기본키에 대한 제약으로, 기본키는 NULL을 가질 수 없고 중복될 수 없다. ②가 이를 정확히 설명한다.
- ① 도메인 무결성, ③·④ 참조 무결성(외래키)에 대한 설명이다.
| 무결성 | 대상 | 규칙 |
|---|---|---|
| 개체 무결성 | 기본키 | NULL 불가·중복 불가 |
| 참조 무결성 | 외래키 | 참조 PK에 존재하는 값만 |
| 도메인 무결성 | 모든 속성 | 정해진 타입·범위만 |
문 059. 관계 데이터 모델에서 릴레이션(Relation)에 포함되어 있는 튜플(Tuple)의 수를 무엇이라고 하는가?
- ① Degree
- ② Cardinality
- ③ Attribute
- ④ Cartesian product
정답 및 해설 보기
정답 ②
튜플(행)의 수는 카디널리티(Cardinality) 다. 속성(열)의 수는 차수(Degree)다.
🔑 암기 — 카디널리티 = 행(튜플)의 수 / 차수(Degree) = 열(속성)의 수.
문 060. 사용자 'PARK'에게 테이블을 생성할 수 있는 권한을 부여하기 위한 SQL문의 구성으로 빈칸에 적합한 내용은?
GRANT ( ) PARK;
- ① CREATE TABLE TO
- ② CREATE TO
- ③ CREATE FROM
- ④ CREATE TABLE FROM
정답 및 해설 보기
정답 ①
시스템 권한을 부여하는 구문은 GRANT [권한] TO [사용자]; 이다. 발문이 GRANT ( ) PARK; 이므로 빈칸에 CREATE TABLE TO 를 넣어야 GRANT CREATE TABLE TO PARK; 가 완성된다.
- ② CREATE TO·③ CREATE FROM·④ CREATE TABLE FROM은 권한명이 불완전하거나
TO가 아닌FROM을 써서 틀렸다(권한 부여는TO, 회수 REVOKE는FROM).
💡 보충 — 테이블 생성 같은 시스템 권한은 특정 객체에 종속되지 않으므로 ON [객체] 절 없이 GRANT 권한 TO 사용자; 형태로 부여한다.
Part Ⅳ 프로그래밍 언어 활용 (문 061~080)
문 061. C언어에서 문자열 처리 함수의 서식과 그 기능의 연결로 틀린 것은?
- ①
strlen(s)- s의 길이를 구한다. - ②
strcpy(s1, s2)- s2를 s1으로 복사한다. - ③
strcmp(s1, s2)- s1과 s2를 연결한다. - ④
strrev(s)- s를 거꾸로 변환한다.
정답 및 해설 보기
정답 ③
strcmp 의 cmp 는 compare(비교) 의 약자로, 두 문자열을 비교해 같으면 0, 사전순으로 s1이 크면 양수, 작으면 음수를 반환한다. ③은 "연결"이라 했으므로 틀렸다. 문자열 연결(concatenate)은 strcat(cat) 이다.
- ① strlen(length)·② strcpy(copy)·④ strrev(reverse)는 옳다.
| 함수 | 기능 |
|---|---|
| strlen | 길이 계산 |
| strcpy | 복사 |
| strcat | 연결 |
| strcmp | 비교 |
문 062. 다음 C언어 프로그램이 실행되었을 때, 실행 결과는?
#include <stdio.h>
int main(int argc, char *argv[]) {
int a=5, b=3, c=12;
int t1, t2, t3;
t1 = a && b;
t2 = a || b;
t3 = !c;
printf("%d", t1+t2+t3);
return 0;
}
- ① 0
- ② 2
- ③ 5
- ④ 14
정답 및 해설 보기
정답 ②
&&·||·! 는 모두 논리 연산자다. C에서는 0이 아닌 값을 참(1), 0을 거짓으로 다룬다.
t1 = a && b→ 5(참) && 3(참) = 참 = 1t2 = a || b→ 5(참) || 3(참) = 참 = 1t3 = !c→ !12(참) = 거짓 = 0
t1 + t2 + t3 = 1 + 1 + 0 = 2 이므로 출력은 2다.
| 구분 | 비트 연산자 | 논리 연산자 |
|---|---|---|
| AND | & |
&& |
| OR | | |
|| |
| NOT | ~ |
! |
⚠️ 함정 — &&·||·! 의 결과는 항상 1(참) 또는 0(거짓)이다.
문 063. 다음 C언어 프로그램이 실행되었을 때, 실행 결과는?
#include <stdio.h>
struct st {
int a;
int c[10];
};
int main(int argc, char *argv[]) {
int i=0;
struct st ob1;
struct st ob2;
ob1.a=0;
ob2.a=0;
for(i=0; i<10; i++) {
ob1.c[i]=i;
ob2.c[i]=ob1.c[i]+i;
}
for(i=0; i<10; i=i+2) {
ob1.a=ob1.a+ob1.c[i];
ob2.a=ob2.a+ob2.c[i];
}
printf("%d", ob1.a+ob2.a);
return 0;
}
- ① 30
- ② 60
- ③ 80
- ④ 120
정답 및 해설 보기
정답 ②
첫 번째 반복문에서 ob1.c = [0,1,2,…,9], ob2.c[i] = ob1.c[i] + i = 2i = [0,2,4,…,18] 가 된다.
두 번째 반복문은 i 가 2씩 증가하므로 짝수 인덱스(0·2·4·6·8)만 더한다.
ob1.a = 0 + 2 + 4 + 6 + 8 = 20ob2.a = 0 + 4 + 8 + 12 + 16 = 40
ob1.a + ob2.a = 20 + 40 = 60 이므로 출력은 60이다.
문 064. IP 프로토콜에서 사용하는 필드와 해당 필드에 대한 설명으로 틀린 것은?
- ① Header Length는 IP 프로토콜의 헤더 길이를 32비트 워드 단위로 표시한다.
- ② Packet Length는 IP 헤더를 제외한 패킷 전체의 길이를 나타내며 최대 크기는 2³²-1비트이다.
- ③ Time To Live는 송신 호스트가 패킷을 전송하기 전 네트워크에서 생존할 수 있는 시간을 지정한 것이다.
- ④ Version Number는 IP 프로토콜의 버전번호를 나타낸다.
정답 및 해설 보기
정답 ②
Packet Length(Total Length) 필드는 IP 헤더를 포함한 패킷 전체 길이를 바이트 단위로 나타내며, 16비트 필드라 최대 2¹⁶-1(65,535) 바이트다. ②는 "헤더를 제외"·"2³²-1 비트"라 했으므로 포함/제외와 단위가 모두 틀렸다.
- ①·③·④ Header Length·TTL·Version Number 설명으로 옳다.
| 필드 | 크기 | 역할 |
|---|---|---|
| Version | 4 bit | IP 버전(IPv4=4) |
| Header Length | 4 bit | 헤더 길이(32비트 워드) |
| Total Length | 16 bit | 헤더+데이터 전체 길이(바이트) |
| TTL | 8 bit | 패킷 생존 시간(홉) |
문 065. 다음 Python 프로그램의 실행 결과가 [실행 결과]와 같을 때, 빈칸에 적합한 것은?
x = 20
if x == 10:
print('10')
( ) x == 20:
print('20')
else:
print('other')
[실행 결과]
20
- ① either
- ② elif
- ③ else if
- ④ else
정답 및 해설 보기
정답 ②
Python에서 여러 조건을 순차 검사하는 키워드는 elif(else if의 축약)다. x = 20 이므로 if x == 10 은 거짓이고, elif x == 20 이 참이 되어 '20'이 출력된다. 따라서 빈칸은 elif다.
⚠️ 함정 — C/Java는 else if, Python은 elif. 블록 구분도 중괄호가 아닌 들여쓰기다.
문 066. RIP 라우팅 프로토콜에 대한 설명으로 틀린 것은?
- ① 경로 선택 메트릭은 홉 카운트(Hop Count)이다.
- ② 라우팅 프로토콜을 IGP와 EGP로 분류했을 때 EGP에 해당한다.
- ③ 최단 경로 탐색에 Bellman-Ford 알고리즘을 사용한다.
- ④ 각 라우터는 이웃 라우터들로부터 수신한 정보를 이용하여 라우팅 표를 갱신한다.
정답 및 해설 보기
정답 ②
RIP은 하나의 자치 시스템(AS) 내부에서 쓰이는 대표적인 IGP다. ②는 EGP라 했으므로 틀렸다(EGP의 대표는 BGP).
- ①·③·④ 홉 카운트 메트릭·Bellman-Ford·이웃 정보 기반 갱신은 RIP의 특징으로 옳다.
| 분류 | 종류 | 대표 |
|---|---|---|
| 적용 범위 | IGP(내부) / EGP(외부) | RIP·OSPF / BGP |
| 알고리즘 | 거리 벡터 / 링크 상태 | RIP / OSPF |
문 067. 다음에서 설명하는 프로세스 스케줄링은?
최소 작업 우선(SJF) 기법의 약점을 보완한 비선점 스케줄링 기법으로 다음과 같은 식을 이용해 우선순위를 판별한다.
우선순위 = (대기한 시간 + 서비스를 받을 시간) / 서비스를 받을 시간
- ① FIFO 스케줄링
- ② RR 스케줄링
- ③ HRN 스케줄링
- ④ MQ 스케줄링
정답 및 해설 보기
정답 ③
제시된 공식은 HRN(Highest Response Ratio Next) 의 우선순위 계산식이다. SJF는 실행 시간이 짧은 작업을 먼저 처리해 효율적이지만 긴 작업이 계속 밀리는 기아 현상이 생긴다. HRN은 대기 시간을 분자에 더해, 오래 기다린 작업의 우선순위를 높여 이를 보완한다.
| 알고리즘 | 기준 |
|---|---|
| FCFS(FIFO) | 도착 순서 |
| SJF | 실행 시간(기아 발생 가능) |
| HRN | (대기+실행)/실행 |
문 068. UNIX 운영체제에 관한 특징으로 틀린 것은?
- ① 하나 이상의 작업에 대하여 백그라운드에서 수행이 가능하다.
- ② Multi-User는 지원하지만 Multi-Tasking은 지원하지 않는다.
- ③ 트리 구조의 파일 시스템을 갖는다.
- ④ 이식성이 높으며 장치 간의 호환성이 높다.
정답 및 해설 보기
정답 ②
UNIX는 Multi-User와 Multi-Tasking을 모두 지원한다. ②는 멀티태스킹을 지원하지 않는다고 했으므로 틀렸다.
- ①·③·④ 백그라운드 수행·트리 구조 파일 시스템·높은 이식성은 옳다.
문 069. UDP 프로토콜의 특징이 아닌 것은?
- ① 비연결형 서비스를 제공한다.
- ② 단순한 헤더 구조로 오버헤드가 적다.
- ③ 주로 주소를 지정하고, 경로를 설정하는 기능을 한다.
- ④ TCP와 같이 트랜스포트 계층에 존재한다.
정답 및 해설 보기
정답 ③
주소 지정·경로 설정은 네트워크 계층의 IP 가 담당하는 기능이다. ③은 UDP의 특징이 아니다. UDP는 전송 계층에서 비연결형으로 데이터를 빠르게 실어 나를 뿐 경로를 만들지 않는다.
- ①·②·④ 비연결형·단순 헤더·전송 계층 프로토콜은 UDP의 특징으로 옳다.
| 구분 | TCP | UDP |
|---|---|---|
| 연결 | 연결형 | 비연결형 |
| 신뢰성 | 높음 | 낮음 |
| 속도 | 느림 | 빠름 |
| 헤더 | 큼(20B~) | 작음(8B) |
문 070. Python 데이터 타입 중 시퀀스(Sequence) 데이터 타입에 해당하며 다양한 데이터 타입들을 주어진 순서에 따라 저장할 수 있으나 저장된 내용을 변경할 수 없는 것은?
- ① 복소수(complex) 타입
- ② 리스트(list) 타입
- ③ 사전(dict) 타입
- ④ 튜플(tuple) 타입
정답 및 해설 보기
정답 ④
순서가 있는 시퀀스이면서 변경 불가능(Immutable) 한 것은 튜플(tuple) 이다. 리스트는 시퀀스이지만 변경 가능(Mutable)하고, 사전은 키-값 매핑이다.
| 구분 | 리스트 | 튜플 |
|---|---|---|
| 문법 | [ ] |
( ) |
| 변경 | 가능(Mutable) | 불가(Immutable) |
문 071. 다음 Java 프로그램이 실행되었을 때, 실행결과는?
public class Rarr {
static int[] marr() {
int temp[] = new int[4];
for(int i=0; i<temp.length; i++)
temp[i] = i;
return temp;
}
public static void main(String[] args) {
int iarr[];
iarr = marr();
for(int i=0; i<iarr.length; i++)
System.out.print(iarr[i] + " ");
}
}
- ① 1 2 3 4
- ② 0 1 2 3
- ③ 1 2 3
- ④ 0 1 2
정답 및 해설 보기
정답 ②
marr() 은 크기 4의 배열에 temp[i] = i 로 0·1·2·3을 채워 반환한다. iarr 이 이를 받아 처음부터 끝까지 출력하므로 결과는 0 1 2 3 이다.
문 072. 다음 Java 프로그램이 실행되었을 때의 결과는?
public class ovr {
public static void main(String[] args) {
int a=1, b=2, c=3, d=4;
int mx, mn;
mx = a < b ? b : a;
if(mx==1) {
mn = a > mx ? b : a;
}
else {
mn = b < mx ? d : c;
}
System.out.println(mn);
}
}
- ① 1
- ② 2
- ③ 3
- ④ 4
정답 및 해설 보기
정답 ③
mx = a < b ? b : a→1 < 2참이므로mx = b = 2if(mx==1)→2 == 1거짓이므로else블록 실행mn = b < mx ? d : c→2 < 2거짓이므로mn = c = 3
따라서 출력은 3이다.
💡 보충 — 삼항 연산자 (조건) ? 참일 때 값 : 거짓일 때 값.
문 073. 다음 중 Myers가 구분한 응집도(Cohesion)의 정도에서 가장 낮은 응집도를 갖는 단계는?
- ① 순차적 응집도(Sequential Cohesion)
- ② 기능적 응집도(Functional Cohesion)
- ③ 시간적 응집도(Temporal Cohesion)
- ④ 우연적 응집도(Coincidental Cohesion)
정답 및 해설 보기
정답 ④
응집도는 모듈 내부 요소들이 얼마나 밀접한지를 나타내며, 가장 낮은(나쁜) 단계는 서로 관련 없는 기능이 우연히 모인 우연적 응집도다.
응집도(강 → 약): 기능적 → 순차적 → 통신적 → 절차적 → 시간적 → 논리적 → 우연적.
🔑 암기 — 응집도 7단계 = 우논시절통순기(약 → 강 역순으로 읽으면 우연·논리·시간·절차·통신·순차·기능).
문 074. 다음 C언어 프로그램이 실행되었을 때, 실행 결과는?
#include <stdio.h>
int main(int argc, char *argv[]) {
int n1=1, n2=2, n3=3;
int r1, r2, r3;
r1 = (n2<=2) || (n3>3);
r2 = !n3;
r3 = (n1>1) && (n2<3);
printf("%d", r3-r2+r1);
return 0;
}
- ① 0
- ② 1
- ③ 2
- ④ 3
정답 및 해설 보기
정답 ②
r1 = (2<=2) || (3>3)→ 참 || 거짓 = 1r2 = !3→ !참 = 0r3 = (1>1) && (2<3)→ 거짓 && 참 = 0
r3 - r2 + r1 = 0 - 0 + 1 = 1 이므로 출력은 1이다.
문 075. IP 프로토콜의 주요 특징에 해당하지 않는 것은?
- ① 체크섬(Checksum) 기능으로 데이터 체크섬(Data Checksum)만 제공한다.
- ② 패킷을 분할, 병합하는 기능을 수행하기도 한다.
- ③ 비연결형 서비스를 제공한다.
- ④ Best Effort 원칙에 따른 전송 기능을 제공한다.
정답 및 해설 보기
정답 ①
IP의 체크섬은 헤더에 대한 오류만 검사한다(헤더 체크섬). 데이터(Payload) 오류 검사는 상위 계층(TCP/UDP)의 몫이다. ①은 "데이터 체크섬만 제공"이라 반대로 설명했으므로 틀렸다.
- ② 분할·병합(Fragmentation), ③ 비연결형, ④ Best Effort는 IP의 특징으로 옳다.
문 076. 4개의 페이지를 수용할 수 있는 주기억장치가 있으며, 초기에는 모두 비어 있다고 가정한다. 다음의 순서로 페이지 참조가 발생할 때, LRU 페이지 교체 알고리즘을 사용할 경우 몇 번의 페이지 결함이 발생하는가?
페이지 참조 순서: 1, 2, 3, 1, 2, 4, 1, 2, 5
- ① 5회
- ② 6회
- ③ 7회
- ④ 8회
정답 및 해설 보기
정답 ①
LRU는 가장 오래 사용되지 않은 페이지를 교체한다. 프레임 4개로 추적하면 다음과 같다.
| 참조 | 프레임 상태 | 결함 |
|---|---|---|
| 1 | 1 | O |
| 2 | 1 2 | O |
| 3 | 1 2 3 | O |
| 1 | 1 2 3 | hit |
| 2 | 1 2 3 | hit |
| 4 | 1 2 3 4 | O |
| 1 | 1 2 3 4 | hit |
| 2 | 1 2 3 4 | hit |
| 5 | (LRU 3 교체) 1 2 4 5 | O |
총 페이지 결함은 5회다(5 참조 시 가장 오래 안 쓰인 3이 교체됨).
문 077. 사용자 수준에서 지원되는 스레드(thread)가 커널에서 지원되는 스레드에 비해 가지는 장점으로 옳은 것은?
- ① 한 프로세스가 운영체제를 호출할 때 전체 프로세스가 대기할 필요가 없으므로 시스템 성능을 높일 수 있다.
- ② 동시에 여러 스레드가 커널에 접근할 수 있으므로 여러 스레드가 시스템 호출을 동시에 사용할 수 있다.
- ③ 각 스레드를 개별적으로 관리할 수 있으므로 스레드의 독립적인 스케줄링이 가능하다.
- ④ 커널 모드로의 전환 없이 스레드 교환이 가능하므로 오버헤드가 줄어든다.
정답 및 해설 보기
정답 ④
사용자 수준 스레드는 사용자 영역의 라이브러리가 스레드를 관리하므로 커널 모드 전환 없이 문맥 교환이 가능해 오버헤드가 적다. ④가 그 장점을 정확히 설명한다.
- ①·②·③ 은 오히려 커널 수준 스레드의 장점이다. 사용자 수준 스레드는 한 스레드가 시스템 호출로 블로킹되면 프로세스 전체가 멈추는 단점이 있다.
문 078. 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 참조하는 경우의 결합도는?
- ① 내용 결합도(Content Coupling)
- ② 제어 결합도(Control Coupling)
- ③ 공통 결합도(Common Coupling)
- ④ 스탬프 결합도(Stamp Coupling)
정답 및 해설 보기
정답 ①
다른 모듈의 내부 기능·자료를 직접 참조하는 것은 결합도가 가장 높은(나쁜) 내용 결합도(Content Coupling) 다.
결합도(낮음 → 높음): 자료 → 스탬프 → 제어 → 외부 → 공통 → 내용.
🔑 암기 — 결합도 6단계 = 내공외제스자(높음 → 낮음: 내용·공통·외부·제어·스탬프·자료).
문 079. a[0]의 주소값이 10일 경우 다음 C언어 프로그램이 실행되었을 때의 결과는? (단, int 형의 크기는 4Byte로 가정한다.)
#include <stdio.h>
int main(int argc, char *argv[]) {
int a[] = {14, 22, 30, 38};
printf("%u, ", &a[2]);
printf("%u", a);
return 0;
}
- ① 14, 10
- ② 14, 14
- ③ 18, 10
- ④ 18, 14
정답 및 해설 보기
정답 ③
배열은 메모리에 연속 저장되고 int는 4바이트이므로, a[0] 주소가 10이면 &a[2] = 10 + 2 × 4 = 18 이다. 또한 배열 이름 a 는 시작 주소(&a[0])와 같으므로 10이다. 따라서 출력은 18, 10 이다.
🔑 암기 — &a[i] = 시작주소 + i × 자료형 크기, 배열 이름 = 시작 주소.
문 080. 모듈화(Modularity)와 관련한 설명으로 틀린 것은?
- ① 시스템을 모듈로 분할하면 각각의 모듈을 별개로 만들고 수정할 수 있기 때문에 좋은 구조가 된다.
- ② 응집도는 모듈과 모듈 사이의 상호의존 또는 연관 정도를 의미한다.
- ③ 모듈 간의 결합도가 약해야 독립적인 모듈이 될 수 있다.
- ④ 모듈 내 구성 요소들 간의 응집도가 강해야 좋은 모듈 설계이다.
정답 및 해설 보기
정답 ②
②가 설명하는 "모듈과 모듈 사이의 상호의존 정도"는 결합도(Coupling) 의 정의다. 응집도(Cohesion) 는 모듈 내부 요소들의 밀접한 정도를 뜻하므로 ②는 틀렸다.
- ①·③·④ 모듈 분할의 장점·낮은 결합도·높은 응집도는 좋은 모듈화 원칙으로 옳다.
🔑 암기 — 좋은 모듈화 = 높은 응집도(내부 결속) + 낮은 결합도(외부 독립).
Part Ⅴ 정보시스템 구축관리 (문 081~100)
문 081. 소프트웨어 개발에서 정보보안 3요소에 해당하지 않는 설명은?
- ① 기밀성: 인가된 사용자에 대해서만 자원 접근이 가능하다.
- ② 무결성: 인가된 사용자에 대해서만 자원 수정이 가능하며 전송 중인 정보는 수정되지 않는다.
- ③ 가용성: 인가된 사용자는 가지고 있는 권한 범위 내에서 언제든 자원 접근이 가능하다.
- ④ 휘발성: 인가된 사용자가 수행한 데이터는 처리 완료 즉시 폐기 되어야 한다.
정답 및 해설 보기
정답 ④
정보보안 3요소는 기밀성(Confidentiality)·무결성(Integrity)·가용성(Availability), 즉 CIA 다. ④ 휘발성은 전원이 꺼지면 데이터가 사라지는 메모리 특성으로, 정보보안 3요소가 아니다.
- ① 기밀성, ② 무결성, ③ 가용성을 옳게 설명한다.
🔑 암기 — 정보보안 3요소 = CIA(기밀성·무결성·가용성).
문 082. 어떤 외부 컴퓨터가 접속되면 접속 인가 여부를 점검해서 인가된 경우에는 접속이 허용되고, 그 반대의 경우에는 거부할 수 있는 접근제어 유틸리티는?
- ① tcp wrapper
- ② trace checker
- ③ token finder
- ④ change detector
정답 및 해설 보기
정답 ①
TCP Wrapper 는 UNIX 계열에서 접속 클라이언트의 IP를 규칙 파일(/etc/hosts.allow·/etc/hosts.deny)과 대조해 접속을 허용/거부하는 호스트 기반 접근 제어 도구다. ②·③·④는 표준 보안 유틸리티 명칭이 아니다.
문 083. 기기를 키오스크에 갖다 대면 원하는 데이터를 바로 가져올 수 있는 기술로 10cm 이내 근접 거리에서 기가급 속도로 데이터 전송이 가능한 초고속 근접무선통신(NFC: Near Field Communication) 기술은?
- ① BcN(Broadband Convergence Network)
- ② Zing
- ③ Marine Navi
- ④ C-V2X(Cellular Vehicle To Everything)
정답 및 해설 보기
정답 ②
Zing 은 NFC의 느린 속도를 보완한 초고속 근접통신 기술로, 10cm 이내에서 기가급(수 Gbps) 속도로 대용량 데이터를 전송한다. "초고속·기가급"이 핵심 단서다.
- ① BcN: 통신·방송·인터넷이 융합된 차세대 통합 네트워크
- ③ Marine Navi: 선박 안전 솔루션
- ④ C-V2X: 차량과 사물 간 통신 기술
문 084. 취약점 관리를 위한 응용 프로그램의 보안 설정과 가장 거리가 먼 것은?
- ① 서버 관리실 출입 통제
- ② 실행 프로세스 권한 설정
- ③ 운영체제의 접근 제한
- ④ 운영체제의 정보 수집 제한
정답 및 해설 보기
정답 ①
②·③·④는 소프트웨어 설정으로 보안을 강화하는 기술적 보안이다. ① 서버 관리실 출입 통제는 시설·장비를 보호하는 물리적 보안이므로 "응용 프로그램의 보안 설정"과 가장 거리가 멀다.
💡 보충 — 보안은 물리적·기술적·관리적 보안으로 나뉜다.
문 085. 소프트웨어 개발 프레임워크와 관련한 설명으로 가장 적절하지 않은 것은?
- ① 반제품 상태의 제품을 토대로 도메인별로 필요한 서비스 컴포넌트를 사용하여 재사용성 확대와 성능을 보장받을 수 있게 하는 개발 소프트웨어이다.
- ② 라이브러리와는 달리 사용자 코드에서 프레임워크를 호출해서 사용하고, 그에 대한 제어도 사용자 코드가 가지는 방식이다.
- ③ 설계 관점에 개발 방식을 패턴화시키기 위한 노력의 결과물인 소프트웨어 디자인 패턴을 반제품 소프트웨어 상태로 집적화시킨 것으로 볼 수 있다.
- ④ 프레임워크의 동작 원리를 그 제어 흐름의 일반적인 프로그램 흐름과 반대로 동작한다고 해서 IoC(Inversion of Control)이라고 설명하기도 한다.
정답 및 해설 보기
정답 ②
프레임워크는 프레임워크가 사용자 코드를 호출하고 전체 제어 흐름을 주도한다(제어의 역전, IoC). ②는 사용자 코드가 프레임워크를 호출하고 제어도 사용자 코드가 가진다고 했는데, 이는 라이브러리에 대한 설명이므로 틀렸다.
| 구분 | 프레임워크 | 라이브러리 |
|---|---|---|
| 제어 흐름 | 프레임워크가 내 코드 호출(IoC) | 내 코드가 호출 |
| 비유 | 조립식 주택 | 공구함 |
문 086. 클라우드 기반 HSM(Cloud-based Hardware Security Module)에 대한 설명으로 틀린 것은?
- ① 클라우드(데이터센터) 기반 암호화 키 생성, 처리, 저장 등을 하는 보안 기기이다.
- ② 국내에서는 공인인증제의 폐지와 전자서명법 개정을 추진하면서 클라우드 HSM 용어가 자주 등장하였다.
- ③ 클라우드에 인증서를 저장하므로 기존 HSM 기기나 휴대폰에 인증서를 저장해 다닐 필요가 없다.
- ④ 하드웨어가 아닌 소프트웨어적으로만 구현되기 때문에 소프트웨어식 암호 기술에 내재된 보안 취약점을 해결할 수 없다는 것이 주요 단점이다.
정답 및 해설 보기
정답 ④
HSM은 이름 그대로 Hardware Security Module, 즉 암호화 키를 안전하게 다루는 하드웨어 기반 장비다. 클라우드 HSM도 그 근간은 하드웨어다. ④는 "소프트웨어적으로만 구현"이라 했으므로 HSM의 정체성을 부정하는 틀린 설명이다.
- ①·②·③ HSM의 정의·국내 등장 배경·인증서 휴대 불필요는 옳다.
문 087. 다음 내용이 설명하는 기술로 가장 적절한 것은?
- 다른 국을 향하는 호출이 중계에 의하지 않고 직접 접속되는 그물 모양의 네트워크이다.
- 통신량이 많은 비교적 소수의 국 사이에 구성될 경우 경제적이며 간편하지만, 다수의 국 사이에는 회선이 세분화 되어 비경제적일 수도 있다.
- 해당 형태의 무선 네트워크의 경우 대용량을 빠르고 안전하게 전달할 수 있어 행사장이나 군 등에서 많이 활용된다.
- ① Virtual Local Area Network
- ② Simple Station Network
- ③ Mesh Network
- ④ Modem Network
정답 및 해설 보기
정답 ③
모든 노드가 그물처럼 직접 연결되는 구조는 망형(Mesh) 네트워크다. 일부 회선 장애에도 대체 경로로 통신이 유지돼 안정성이 높지만, 노드가 늘면 회선 수가 n(n-1)/2로 급증해 비용이 커진다.
| 토폴로지 | 특징 |
|---|---|
| 버스형 | 저렴하나 버스 장애 시 전체 마비 |
| 링형 | 충돌 없으나 추가·삭제 어려움 |
| 성형 | 유지보수 쉬우나 중앙 장비 장애에 취약 |
| 망형 | 매우 안정적이나 비용 큼 |
문 088. 물리적 위협으로 인한 문제에 해당하지 않는 것은?
- ① 화재, 홍수 등 천재지변으로 인한 위협
- ② 하드웨어 파손, 고장으로 인한 장애
- ③ 방화, 테러로 인한 하드웨어와 기록장치를 물리적으로 파괴하는 행위
- ④ 방화벽 설정의 잘못된 조작으로 인한 네트워크, 서버 보안 위협
정답 및 해설 보기
정답 ④
①(자연재해)·②(장비 장애)·③(물리적 파괴)은 모두 물리적 위협이다. ④ 방화벽 설정 오조작은 소프트웨어 설정 실수로 인한 기술적/논리적 위협이므로 물리적 위협이 아니다.
문 089. 악성코드의 유형 중 다른 컴퓨터의 취약점을 이용하여 스스로 전파하거나 메일로 전파되며 스스로를 증식하는 것은?
- ① Worm
- ② Rogue Ware
- ③ Adware
- ④ Reflection Attack
정답 및 해설 보기
정답 ①
숙주 파일 없이 독자적으로 존재하며 네트워크 취약점으로 스스로 전파·증식하는 악성코드는 웜(Worm) 이다.
- ② Rogue Ware(가짜 백신)·③ Adware(광고)·④ Reflection Attack(반사 공격)은 자기 증식형 악성코드가 아니다.
| 구분 | 자기 증식 | 특징 |
|---|---|---|
| 바이러스 | 불가(숙주 필요) | 정상 파일에 기생 |
| 웜 | 가능 | 네트워크로 전파 |
| 트로이 목마 | 불가 | 정상 프로그램 위장 |
문 090. 다음 설명에 해당하는 공격기법은?
시스템 공격 기법 중 하나로 허용범위 이상의 ICMP 패킷을 전송하여 대상 시스템의 네트워크를 마비시킨다.
- ① Ping of Death
- ② Session Hijacking
- ③ Piggyback Attack
- ④ XSS
정답 및 해설 보기
정답 ①
허용 범위를 초과하는 큰 ICMP 패킷을 보내 대상을 마비시키는 공격은 Ping of Death 다.
- ② Session Hijacking: 정상 세션 가로채기
- ③ Piggyback Attack: 인가 사용자 접속에 편승
- ④ XSS: 웹에 악성 스크립트 삽입
문 091. 다음 설명에 해당하는 소프트웨어는?
- 개발해야 할 애플리케이션의 일부분이 이미 내장된 클래스 라이브러리로 구현이 되어 있다.
- 따라서, 그 기반이 되는 이미 존재하는 부분을 확장 및 이용하는 것으로 볼 수 있다.
- Java 기반의 대표적인 소프트웨어로는 스프링(Spring)이 있다.
- ① 전역 함수 라이브러리
- ② 소프트웨어 개발 프레임워크
- ③ 컨테이너 아키텍처
- ④ 어휘 분석기
정답 및 해설 보기
정답 ②
필수 기능이 미리 구현돼 있고 그 뼈대를 확장해 사용하며, Java의 대표가 스프링(Spring)인 소프트웨어는 소프트웨어 개발 프레임워크다(문 085와 같은 개념).
문 092. 소프트웨어 개발 방법론 중 애자일(Agile) 방법론의 특징과 가장 거리가 먼 것은?
- ① 각 단계의 결과가 완전히 확인된 후 다음 단계 진행
- ② 소프트웨어 개발에 참여하는 구성원들 간의 의사소통 중시
- ③ 환경 변화에 대한 즉시 대응
- ④ 프로젝트 상황에 따른 주기적 조정
정답 및 해설 보기
정답 ①
①은 한 단계가 완전히 끝나야 다음으로 넘어가는 폭포수 모델의 특징이다. 애자일은 반복·점진적 개발로 변화에 유연하게 대응하므로 ①과 거리가 멀다.
- ②(의사소통)·③(즉시 대응)·④(주기적 조정)은 애자일의 특징으로 옳다.
문 093. 대칭 암호 알고리즘과 비대칭 암호 알고리즘에 대한 설명으로 틀린 것은?
- ① 대칭 암호 알고리즘은 비교적 실행 속도가 빠르기 때문에 다양한 암호의 핵심 함수로 사용될 수 있다.
- ② 대칭 암호 알고리즘은 비밀키 전달을 위한 키 교환이 필요하지 않아 암호화 및 복호화의 속도가 빠르다.
- ③ 비대칭 암호 알고리즘은 자신만이 보관하는 비밀키를 이용하여 인증, 전자서명 등에 적용이 가능하다.
- ④ 대표적인 대칭키 암호 알고리즘으로는 AES, IDEA 등이 있다.
정답 및 해설 보기
정답 ②
대칭키는 암호화·복호화에 같은 키를 쓰므로, 송수신자가 비밀키를 안전하게 공유해야 하는 키 배송 문제가 가장 큰 단점이다. ②는 "키 교환이 필요하지 않다"라며 이를 반대로 설명해 틀렸다.
- ①(빠른 속도)·③(비대칭키 활용)·④(AES·IDEA)는 옳다.
| 구분 | 대칭키 | 비대칭키 |
|---|---|---|
| 키 | 1개(동일) | 2개(공개/개인) |
| 키 배송 | 문제 있음 | 없음 |
| 속도 | 빠름 | 느림 |
| 대표 | AES·DES·SEED | RSA·ECC |
문 094. 두 명의 개발자가 5개월에 걸쳐 10000 라인의 코드를 개발하였을 때, 월별(man-month) 생산성 측정을 위한 계산 방식으로 가장 적합한 것은?
- ① 10000/2
- ② 10000/(5×2)
- ③ 10000/5
- ④ (2×10000)/5
정답 및 해설 보기
정답 ②
생산성 = 전체 코드 라인 수 ÷ 총 투입 공수(Man-Month)이고, 총 공수 = 개발자 수 × 기간 = 2 × 5 = 10 MM이다. 따라서 10000 / (5 × 2) = 1000 LOC/MM 으로 계산하는 ②가 적합하다.
🔑 암기 — Man-Month = 인원 × 개월, 생산성 = LOC ÷ Man-Month.
문 095. 접근 통제 방법 중 조직 내에서 직무, 직책 등 개인의 역할에 따라 결정하여 부여하는 접근 정책은?
- ① RBAC
- ② DAC
- ③ MAC
- ④ QAC
정답 및 해설 보기
정답 ①
직무·직책 같은 역할(Role) 에 따라 권한을 부여하는 접근 통제는 RBAC(Role-Based Access Control) 다.
- ② DAC: 자원 소유자가 권한 관리
- ③ MAC: 시스템이 정한 보안 등급으로 통제
문 096. COCOMO(Constructive Cost Model) 모형의 특징이 아닌 것은?
- ① 프로젝트를 완성하는데 필요한 man-month로 산정 결과를 나타낼 수 있다.
- ② 보헴(Boehm)이 제안한 것으로 원시코드 라인 수에 의한 비용 산정 기법이다.
- ③ 비교적 작은 규모의 프로젝트 기록을 통계 분석하여 얻은 결과를 반영한 모델이며 중소 규모 소프트웨어 프로젝트 비용 추정에 적합하다.
- ④ 프로젝트 개발 유형에 따라 object, dynamic, function의 3가지 모드로 구분한다.
정답 및 해설 보기
정답 ④
COCOMO는 개발 유형을 조직형(Organic)·반분리형(Semi-detached)·내장형(Embedded) 3가지로 구분한다. ④는 object·dynamic·function이라 했으므로 틀렸다.
- ①(man-month 산정)·②(보헴·LOC 기반)·③(중소 규모 적합)은 옳다.
🔑 암기 — COCOMO 3모드 = 조직형 → 반분리형 → 내장형(규모·복잡도 순).
문 097. 각 사용자 인증의 유형에 대한 설명으로 가장 적절하지 않은 것은?
- ① 지식: 주체는 '그가 알고 있는 것'을 보여주며 예시로는 패스워드, PIN 등이 있다.
- ② 소유: 주체는 '그가 가지고 있는 것'을 보여주며 예시로는 토큰, 스마트카드 등이 있다.
- ③ 존재: 주체는 '그를 대체하는 것'을 보여주며 예시로는 패턴, QR 등이 있다.
- ④ 행위: 주체는 '그가 하는 것'을 보여주며 예시로는 서명, 움직임, 음성 등이 있다.
정답 및 해설 보기
정답 ③
'존재(생체) 기반' 인증은 지문·홍채·얼굴 등 신체 특징을 쓰는데, ③은 예시로 패턴(지식 기반)·QR(소유 기반) 을 들었고 "그를 대체하는 것"이라는 설명도 생체 인증과 맞지 않아 가장 부적절하다.
- ① 지식, ② 소유, ④ 행위 기반 설명은 적절하다.
💡 보충 — 인증 요소: 지식(아는 것)·소유(가진 것)·존재(생체)·행위.
문 098. 시스템의 사용자가 로그인하여 명령을 내리는 과정에 대한 시스템의 동작 중 다음 설명에 해당하는 것은?
- 자신의 신원(Identity)을 시스템에 증명하는 과정이다.
- 아이디와 패스워드를 입력하는 과정이 가장 일반적인 예시라고 볼 수 있다.
- ① Aging
- ② Accounting
- ③ Authorization
- ④ Authentication
정답 및 해설 보기
정답 ④
신원을 증명하는 과정은 인증(Authentication) 이다. ③ 인가(Authorization)는 인증된 사용자가 무엇을 할 수 있는지 권한을 결정하는 과정으로 구분된다.
🔑 암기 — 인증(Authentication) = "누구인가" / 인가(Authorization) = "무엇을 할 수 있나".
문 099. 다음에서 설명하는 IT 기술은?
- 네트워크를 제어부, 데이터 전달부로 분리하여 네트워크 관리자가 보다 효율적으로 네트워크를 제어, 관리할 수 있는 기술
- 기존의 라우터, 스위치 등과 같이 하드웨어에 의존하는 네트워크 체계에서 안정성, 속도, 보안 등을 소프트웨어로 제어, 관리하기 위해 개발됨
- 네트워크 장비의 펌웨어 업그레이드를 통해 사용자의 직접적인 데이터 전송 경로 관리가 가능하고, 기존 네트워크에는 영향을 주지 않으면서 특정 서비스의 전송 경로 수정을 통하여 인터넷상에서 발생하는 문제를 처리할 수 있음
- ① SDN(Software Defined Networking)
- ② NFS(Network File System)
- ③ Network Mapper
- ④ AOE Network
정답 및 해설 보기
정답 ①
네트워크의 제어부와 데이터 전달부를 분리해 소프트웨어로 중앙에서 제어·관리하는 기술은 SDN(Software Defined Networking) 이다.
- ② NFS: 네트워크 파일 공유 시스템
- ③ Network Mapper(nmap): 네트워크 탐색·보안 점검 유틸리티
- ④ AOE Network: 작업 수행 최단시간을 구하는 간선 작업 네트워크
문 100. 프로젝트 일정 관리 시 사용하는 PERT 차트에 대한 설명에 해당하는 것은?
- ① 각 작업들이 언제 시작하고 언제 종료되는지에 대한 일정을 막대 도표를 이용하여 표시한다.
- ② 시간선(Time-line) 차트라고도 한다.
- ③ 수평 막대의 길이는 각 작업의 기간을 나타낸다.
- ④ 작업들 간의 상호 관련성, 결정경로, 경계시간, 자원할당 등을 제시한다.
정답 및 해설 보기
정답 ④
PERT는 작업을 노드로, 선후 관계를 화살표로 잇는 네트워크 다이어그램으로, 작업 간 상호 관련성과 주 공정(Critical Path)을 분석한다. ④가 이에 해당한다.
- ①·②·③(막대 도표·시간선·막대 길이=기간)은 모두 간트(Gantt) 차트에 대한 설명이다.
| 구분 | PERT | 간트 차트 |
|---|---|---|
| 형태 | 네트워크 다이어그램 | 막대 도표 |
| 초점 | 작업 의존 관계·주 공정 | 작업 기간·일정 |
이 회차 한 장 요약
| 과목 | 빈출·핵심 토픽 | 다시 볼 문항 |
|---|---|---|
| Ⅰ 소프트웨어 설계 | UML 분류·미들웨어(RPC 동기/MOM 비동기)·애자일 4대 가치·유스케이스 관계·GoF 분류·MVC | 002·004·015·020 |
| Ⅱ 소프트웨어 개발 | 통합테스트(스텁/드라이버)·화이트/블랙박스·검색·정렬·인스펙션 절차·스택/큐 | 021·032·033·037·039 |
| Ⅲ 데이터베이스 구축 | 정규화(두부이결다조)·ACID·SQL 분류(DDL/DML/DCL)·키(후보키)·무결성 3종·뷰·서브쿼리 | 041·051·053·057·060 |
| Ⅳ 프로그래밍 언어 활용 | C 논리/비트 연산·구조체 추적·Java 배열/삼항·Python elif·응집도/결합도·TCP/UDP·LRU | 062·063·076·078 |
| Ⅴ 정보시스템 구축관리 | 정보보안 CIA·프레임워크(IoC)·암호(대칭/비대칭)·man-month·RBAC·COCOMO·SDN | 085·093·094·096 |
🎯 빈출 — 매 회차 단골: 응집도/결합도(우논시절통순기·내공외제스자), TCP/UDP, 정규화, ACID, SQL 분류, 애자일, GoF.
⚠️ 함정 — 코드 추적(062·063·071·072·074), 계산(022·032·076·094), 보기 반대 진술(045 인덱스 ADD/DELETE·049 튜플 순서·093 대칭키 키 교환).
🔑 핵심 두문자 — 정규화 두부이결다조 · 응집도 우논시절통순기 · 결합도 내공외제스자 · 보안 3요소 CIA · 트랜잭션 ACID.