문제 1
GoF(Gang of Four) 디자인 패턴을 생성, 구조, 행동 패턴의 세 그룹으로 분류할 때, 구조 패턴이 아닌 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 3번자, 수험생 여러분! 소프트웨어 설계 과목 기출 문제 중 출제 비중이 최고 존엄에 빛나는 GoF(Gang of Four) 디자인 패턴의 삼대 대분류, '생성(Creational), 구조(Structural), 행동(Behavioral) 패턴의 명확한 분류 식별력' 문제입니다! GoF 디자인 패턴 23가지는 소프트웨어 공학에서 가장 훌륭한 재사용 아키텍처 노하우를 집약한 표준 도안집입니다. 시험장 문 열고 들어갈 때 무조건 외워 가야 하는 23개 전 패턴의 일목요연 핵심 분류 지도를 여러분 가슴속에 세워 드리겠습니다.
💡 1타 강사의 GoF 디자인 패턴 23종 총정리 바이블 표
기출 문제에서는 특정 패턴 이름을 던진 뒤 "이것은 어느 그룹에 속하는가?" 혹은 "다음 중 구조 패턴이 아닌 것은?"처럼 바구니 분리 수거형으로 집요하게 물어봅니다.
| 대분류 (개수) | 분류 핵심 정의 및 정체성 | GoF 23대 디자인 패턴 종류 일람 | 수험생 전용 암기 필살기 암호 |
|---|---|---|---|
| 생성 패턴 <br>(Creational) <br>[5개] | 객체의 인스턴스 생성 과정을 추상화하고 제어하여, 시스템 변화에 영향을 받지 않도록 구성하는 유연한 방식입니다. | * Builder [정답 ③ - 구조가 아님!]<br>* Prototype<br>* Singleton<br>* Factory Method<br>* Abstract Factory | "추생 빌싱 프로 팩팩" <br>*(추하게 태어난(생성) 빌싱(빌딩의 싱글) 프로가 팩토리를 두 개 차렸다!)* |
| 구조 패턴 <br>(Structural) <br>[7개] | 클래스나 객체들을 더 큰 구조로 결합하고 확장하여 정밀하게 조직화하는 구조 설계도입니다. | * Adapter [보기 ①]<br>* Bridge [보기 ②]<br>* Proxy [보기 ④]<br>* Composite<br>* Decorator<br>* Facade<br>* Flyweight | "구조 아브피 데코 컴프 플라" <br>*(구조조정 아브(아랍)의 피(Proxy)가 데코레이션 컴프(컴퓨터)에 플라이(파리)처럼 날아다닌다!)* |
| 행동 패턴 <br>(Behavioral) <br>[11개] | 클래스나 객체들이 상호 간에 역할 분담과 알고리즘 통신을 주고받는 메시지 프로토콜 패턴입니다. | * Template Method, Interpreter<br>* Observer, State, Strategy, Visitor<br>* Command, Chain of Responsibility<br>* Mediator, Memento, Iterator | 생성과 구조에 속하지 않는 나머지 11개 패턴 전체 |
- 따라서 ③번 Builder 패턴은 무언가를 지어 올리고 조립한다는 뜻의 인스턴스 조립형 '생성(Creational) 패턴'이므로, 클래스 결합 조율 목적의 구조 패턴에 안치된 ③번은 잘못 구성된 것이며 이 문제의 명확한 정답입니다.
🔍 구조 패턴 삼형제 핵심 요점 가이드
- ①번 Adapter (어댑터): 인터페이스 호환성이 맞지 않는 두 클래스 사이를 돼지코 플러그처럼 이어 붙여 쓸 수 있게 조정해 줍니다.
- ②번 Bridge (브릿지): 기능의 추상화 계층과 실제 구현 계층을 독립적인 교각 구조로 완전히 떼어놓아 각각 독자 발전할 수 있게 분리합니다.
- ④번 Proxy (프록시): 대리인(Proxy) 객체를 전위에 세워 대용량 원본 객체의 메모리 로드를 지연시키거나 인가 접근 제어를 가벼운 세션으로 미리 통제 대행합니다.
"생성 패턴 5개('빌싱프로팩팩')만 암기 리스트에 단단히 수납해 두면, 구조 패턴 문제를 풀 때 지뢰 제거하듯 손쉽게 제거하고 정답 점수판으로 직행할 수 있습니다! 꼭 주머니에 보관해 두세요!"
문제 2
그래픽 표기법을 이용하여 소프트웨어 구성 요소를 모델링하는 럼바우 분석 기법에 포함되지 않는 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번수험생 여러분! 소프트웨어 설계 과목의 객체지향 분석 기법 단원에서 지분율 1위를 자랑하는 럼바우(Rumbaugh) OMT(Object Modeling Technique) 분석 기법의 3대 모델링 분류 및 세부 명칭 판별 문제입니다. 럼바우 분석은 시스템의 복잡한 관점을 상호 결합된 3개의 시각으로 투영해 나갑니다.
럼바우(Rumbaugh) OMT 3대 모델링 기법 상세 정리
graph LR
A["럼바우 OMT 모델링"] --> B["1. 객체 모델링 (Object)"]
A --> C["2. 동적 모델링 (Dynamic)"]
A --> D["3. 기능 모델링 (Functional)"]
B --> B1["정적 구조 표현 / 객체 다이어그램"]
C --> C1["제어 흐름, 상태 전이 / 상태 다이어그램"]
D --> D1["데이터 변환 과정 / 자료 흐름도 DFD"]1. 객체 모델링 (Object Modeling) - '정적 관점'
- 내용: 시스템에서 요구되는 객체를 찾아내어 객체 간의 관계를 규명하고 객체 다이어그램(Object Diagram)으로 도식화합니다.
- 비중: 3대 모델링 중 가장 먼저 수행되며, 가장 중요하게 간주됩니다.
2. 동적 모델링 (Dynamic Modeling) - '시간 및 제어 관점'
- 내용: 시간의 흐름에 따라 변하는 객체 간의 제어 흐름, 상호 작용, 상태 변이를 상태 다이어그램(State Diagram)으로 시각화합니다.
3. 기능 모델링 (Functional Modeling) - '계산 및 데이터 흐름 관점'
- 내용: 다수의 입력 데이터가 어떤 연산 과정을 거쳐 출력값으로 귀결되는지 데이터 처리 흐름을 자료 흐름도(DFD - Data Flow Diagram)를 통해 기능 중심으로 고찰합니다.
보기 상세 분석
- 1번 객체 모델링: 럼바우 OMT의 1단계 정적 구조 분석 영역에 온전히 해당합니다. (참)
- 2번 기능 모델링: 럼바우 OMT의 3단계 자료 흐름 가공 영역에 온전히 해당합니다. (참)
- 3번 동적 모델링: 럼바우 OMT의 2단계 제어 및 전이 처리 영역에 온전히 해당합니다. (참)
- 4번 분석 모델링: 럼바우 분석(OMT)은 그 자체로 '분석' 방법론을 총칭하는 포괄형 개념명일 뿐, 럼바우 3대 구성 모델(객체, 동적, 기능) 내부에 종속 배치되는 독립적인 모델링 분과의 공식 명칭이 전혀 아닙니다. 따라서 정합적인 제외 대상이자 정답입니다.
문제 3
애자일 방법론에 해당하지 않는 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번수험생 여러분! 소프트웨어 설계 과목의 요구사항 분석 및 방법론 단원에서 핵심으로 다루어지는 애자일(Agile) 개발 패러다임 문제입니다. 폭포수(Waterfall) 모델로 대변되는 정형적이고 계획 중심적인 전통 방법론과, 신속한 가치 제공 및 지속적 피드백을 지향하는 애자일 방법론의 분류 구성을 파악하는 것이 관건입니다.
애자일(Agile) 방법론의 주요 유형 및 가치
- 핵심 철학: 공정과 도구보다는 개인과 상호작용을, 광범위한 문서화보다는 실제 작동하는 소프트웨어를, 계약 협상보다는 고객과의 협력을, 계획을 따르기보다는 변화에 대응하는 것을 우선 가치로 삼습니다.
- 대표적인 애자일 모델:
1. XP (eXtreme Programming): 의사소통, 단순성, 피드백, 용기, 존중을 핵심 가치로 삼고 용기 있게 짝 프로그래밍(Pair Programming)과 리팩터링 등을 실천합니다.
2. 스크럼 (Scrum): 매일 짧은 시간의 데일리 스크럼 회의와 스프린트(Sprint)라는 짧은 개발 주기를 반복하며 고기능성 점진적 소프트웨어를 릴리즈합니다.
3. 칸반 (Kanban): 작업 흐름을 시각화하고 진행 중인 업무(WIP)를 제한하여 병목 현상을 통제하는 기법입니다.
4. FDD (Feature-Driven Development, 기능 중심 개발): 실질적인 기능 단위의 짧은 개발 및 릴리즈를 지향합니다.
5. 린 (Lean): 낭비적인 요소를 철저히 제거하고 효율성을 극대화하는 기법입니다.
보기 상세 분석
- 1번 기능 중심 개발 (FDD): 기능 설계와 기능 구현을 짧은 반복 주기로 수행하는 대표적인 애자일 개발 모형입니다.
- 2번 개발 및 검증 (V-모델 등): 분석-설계-구현-테스트 단계를 정형적으로 대응시켜 순차적으로 진행하는 전통적인 폭포수 계열 V-모델의 기본 구상이거나 일련의 구조적 개발 프로세스를 일컬으므로, 애자일 방법론 분류의 이름으로 지목될 수 없습니다. 따라서 적합하지 않은 오답입니다.
- 3번 익스트림 프로그래밍 (XP): 피드백과 신속한 기능 출시를 주도하는 가장 대중적인 애자일 프레임워크입니다.
- 4번 칸반 (Kanban): 도요타 생산방식에서 유래해 가치 흐름과 작업 시각화를 도모하는 유명 애자일 도구입니다.
문제 4
다음 내용이 설명하는 객체지향 설계 원칙은? • 클라이언트는 자신이 사용하지 않는 메소드와 의존관계 를 맺으면 안 된다. • 클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안 된다.
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번수험생 여러분! 소프트웨어 설계 과목의 객체지향 설계 단원에서 매 시험 출시 지표가 100%에 근접하는 객체지향 설계 5대 원칙인 SOLID 중 인터페이스 분리 원칙 (ISP - Interface Segregation Principle) 규명 문제입니다. 결합도를 떨어뜨리고 유연성을 높이기 위해 클래스가 오직 필요한 계약에만 의존하게 만드는 원칙적 명세를 묻고 있습니다.
객체지향 설계 5대 원칙 (SOLID) 완전 정복
- S: 단일 책임 원칙 (Single Responsibility Principle - SRP): 하나의 클래스는 단 하나의 변경 이유(책임)만 소유해야 합니다.
- O: 개방 폐쇄 원칙 (Open-Closed Principle - OCP): 확장에는 활짝 열려 있어야(Open) 하고, 기존 코드 수정에는 굳게 닫혀 있어야(Closed) 합니다.
- L: 리스코프 치환 원칙 (Liskov Substitution Principle - LSP): 하위(자식) 타입 객체는 언제나 상위(부모) 타입 객체로 상호 교체되어도 프로그램의 정상 동작이 완벽히 유지되어야 합니다.
- I: 인터페이스 분리 원칙 (Interface Segregation Principle - ISP): 자신이 전혀 사용하지 않는 구체적인 메서드가 들어 있는 인터페이스에 속박되어 원치 않는 빌드/영향을 받지 않도록, 인터페이스를 특정 역할에만 부합하도록 정교하고 작게 쪼개어(Segregating) 설계해야 합니다.
- D: 의존 역전 원칙 (Dependency Inversion Principle - DIP): 구체화된 세부 클래스(Low-Level)가 아닌, 변화가 적고 안정적인 추상적 개념(High-Level - 인터페이스 또는 추상 클래스)에 의존 관계를 가동해야 합니다.
보기 상세 분석
- 1번 인터페이스 분리 원칙: '클라이언트는 자신이 사용하지 않는 메소드와 불필요한 의존관계를 절대 맺지 않아야 한다'는 명제와 100% 통하는 인터페이스 분리 원칙(ISP)의 고유 정의이자 명백한 정답입니다.
- 2번 단일 책임 원칙: 클래스가 단 한 가지 책임(기능)만 맡도록 설계하여 코드 변경 시 부작용을 원천 차단하는 원칙입니다. (오답)
- 3번 개방 폐쇄의 원칙: 추상화(Interface) 및 상속을 활용해 시스템의 기능을 매끄럽게 넓히면서 기존 핵심 소스코드는 손대지 못하게 밀봉하는 원칙입니다. (오답)
- 4번 리스코프 교체의 원칙: 부모 객체를 가리키는 포인터에 자식 파생 클래스 인스턴스를 갈아 끼워 넣어도 무결하게 호환되어 가동되어야 함을 뜻합니다. (오답)
문제 5
결합도(Coupling) 단계를 약한 순서에서 강한 순서로 가장 옳게 표시한 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번자, 수험생 여러분! 프로그래밍 언어 활용 과목 모듈 독립성 및 소프트웨어 설계 아키텍처 품질 파트에서 필기와 실기 약술형을 통틀어 100% 빈출 보장 0순위 핵심 지식, '결합도(Coupling) 6대 단계별 세부 강도 위계 정렬' 문제입니다! 모듈 간의 결합도는 약할수록(독립적일수록) 고품질 소프트웨어이며, 강할수록(의존적일수록) 변경 파괴가 확산되는 저품질 모듈이 됩니다. 1타 강사와 완벽하게 마스터해 봅시다.
소프트웨어 결합도(Coupling) 강도 단계 비교 체계도
[결합도 약함 (Good, 우수 품질)]
│
▼ 1. 자료 결합도 (Data Coupling) : 순수 데이터 인수값만 매개변수로 단순 교환
▼ 2. 스탬프 결합도 (Stamp Coupling) : 배열이나 구조체 등의 레코드 포맷을 통째 공유
▼ 3. 제어 결합도 (Control Coupling) : 모듈 실행 방식 지시용 제어 플래그(Flag) 전달
▼ 4. 외부 결합도 (External Coupling) : 외부로 선언된 타 모듈 데이터 및 포맷 참조
▼ 5. 공통 결합도 (Common Coupling) : 전역 변수(Global Variable) 영역을 공동 관리
▼ 6. 내용 결합도 (Content Coupling) : 타 모듈 내부의 로컬 코드 및 세부 자원에 직접 진입
│
[결합도 강함 (Bad, 변경 파생 취약)]- 수험용 암기 마스터키:
자-스-제-외-공-내 - 자료 (Data)
- 스탬프 (Stamp)
- 제어 (Control)
- 외부 (External)
- 공통 (Common)
- 내용 (Content)
각 선지별 배열 순서 검증
- 보기 4번:
Data (자료) → Stamp (스탬프) → Control (제어) → Common (공통) → Content (내용) - 이 순서는 결합도의 강도가 가장 약하고 우수한 수준(Data)에서 시작하여, 가장 강하고 위험한 수준(Content)으로 완벽히 점진 증강되는 규칙적 흐름을 띄고 있습니다.
- 따라서 보기 4번이 유일하게 정합된 뼈대를 보여주고 있습니다.
문제 6
모듈화를 통해 분리된 시스템의 각 기능들로, 서브루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업 단위 등과 같은 의미로 사용되는 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번수험생 여러분! 소프트웨어 설계 과목의 아키텍처 및 모듈 설계 단원에서 모듈화의 기본 토대이자 핵심 인프라 기둥인 '모듈(Module)'의 개념적 사양 규명 문제입니다. 대규모 프로그램을 기능별로 조각내어 관리 편의성을 극대화하는 소프트웨어 아키텍처의 핵심을 정확히 대조하여 이해하셔야 합니다.
모듈(Module)과 모듈화(Modularity) 핵심 개념
- 정의: 소프트웨어를 각 기능별로 쪼개어 독립적으로 개발, 테스트, 컴파일이 가능하도록 한 최소 제어 기능 단위입니다.
- 동의어 및 쓰임새: 소프트웨어 내의 단위 프로그램, 서브루틴(Subroutine), 서브시스템(Sub-system), 특정 독립 태스크 작업 단위 등과 실질적인 궤를 같이합니다.
#### 모듈 설계의 중요 규칙 (결합도와 응집도)
- 독립성 극대화: 모듈이 스스로 가치 있는 독립 실행 실체가 되려면 다른 모듈과의 영향도를 나타내는 결합도(Coupling)는 낮추고(Loose), 모듈 내부 내부 원소들의 집중도를 일컫는 응집도(Cohesion)는 높여야(Strong) 이상적인 설계가 완성됩니다.
보기 상세 분석
- 1번 Module (모듈): 지문의 서브루틴, 서브시스템, 단위 작업 및 독립적 구성 요소 설명에 부합하는 핵심 용어이자 완벽한 정답입니다.
- 2번 Component (컴포넌트): 소프트웨어 시스템 내에서 독립적인 업무 및 물리적 배포 단위가 될 수 있는 실행 객체(바이너리 형태 등)로, 모듈보다 더 넓고 실체적인 범위를 갖는 경우가 많아 지문의 서브루틴 명세와 일대일로 귀착되기에는 거리가 멉니다. (오답)
- 3번 Things (사물): UML(Unified Modeling Language) 모델링 기법의 기본 요소로 관계와 다이어그램의 중심에 서는 정적/동적 객체 사물을 의미합니다. (오답)
- 4번 Prototype (프로토타입): 시스템의 초기 실행 가능 모형을 만들어 피드백을 수용하는 개발 모델 기법입니다. (오답)
문제 7
다음 중 SOLID 원칙이라고 불리는 객체지향 설계 원칙에 속하지 않는 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번자, 수험생 여러분! 소프트웨어 설계 과목 객체지향 설계 단원에서 거의 매 회차 출제율 100%를 보증하는 필기 객관식 단골 손님이자, 실기 약어 및 각 약칭의 명칭과 원리를 묻는 서술 단골 1순위, '객체지향 설계의 SOLID 5대 수칙 명칭 식별 및 원격 대조' 문제입니다! 스파게티 코드를 완벽히 방어하고, 유연성과 유지보수성이 고도로 보장되는 SOLID 원칙을 1타 강사와 통쾌하게 정리해 봅시다.
객체지향 설계의 5대 SOLID 철칙
[ SOLID 객체지향 명품 설계 5대 수칙 ]
┌─────────────────────────────────────────────────────────────┐
│ ★ S : SRP (Single Responsibility Principle, 단일 책임 원칙) │
│ - 한 클래스는 오직 하나의 액션/책무(이유)만을 가져야 함! │
├─────────────────────────────────────────────────────────────┤
│ ★ O : OCP (Open-Closed Principle, 개방-폐쇄 원칙) │
│ - 확장에는 열려 있고(Open), 변경에는 닫혀 있어야(Closed) 함!│
├─────────────────────────────────────────────────────────────┤
│ ★ L : LSP (Liskov Substitution Principle, 리스코프 치환 원칙)│ ➔ 보기 14번
│ - 하위 클래스는 언제나 부모 클래스를 완전히 대체할 수 있어야 함!│
├─────────────────────────────────────────────────────────────┤
│ ★ I : ISP (Interface Segregation Principle, 인터페이스 분리)│ ➔ 보기 12번
│ - 클라이언트는 사용하지 않는 인터페이스 메서드에 종속되면 안 됨!│
├─────────────────────────────────────────────────────────────┤
│ ★ D : DIP (Dependency Inversion Principle, 의존 역전 원칙) │ ➔ 보기 13번
│ - 구체적인 클래스에 의존하지 말고, 오직 '추상화(인터페이스)'에 의존!│
└─────────────────────────────────────────────────────────────┘1. SOLID 5대 핵심 가이드 [보기 12, 13, 14번 / 실제 1, 2, 3번]
- S - Single Responsibility Principle (단일 책임 원칙):
- 어떤 클래스나 모듈을 변경해야 하는 이유는 오직 단 하나뿐이어야 한다는 원칙입니다. 한 기능의 변화가 다른 연관 없는 기능들을 동시 파괴하는 연쇄오염을 차단합니다.
- O - Open-Closed Principle (개방-폐쇄 원칙):
- 기존 코드를 무리하게 정정 및 고치지 않으면서도(변경 닫힘), 추상화와 상속을 활용해 새로운 기능을 얼마든지 원활하게 붙이고 보완할 수 있어야 한다는(확장 열림) 가장 중심적인 객체지향 철학입니다.
- L - Liskov Substitution Principle (리스코프 치환 원칙) [보기 14번]:
- 부모 클래스가 들어갈 자리에는 자식 상속 클래스가 완전 무결하게 덮어쓰여 교체 대치되더라도 프로그램은 아무런 탈 없이 정밀 기능 유지가 이행되어야 합니다.
- I - Interface Segregation Principle (인터페이스 분리 원칙) [보기 12번]:
- 덩치가 큰 다목적 인터페이스 하나보다는, 세부 쓰임새에 맞춰 아주 잘게 조각낸 독립 특화 인터페이스 여러 개를 구성하여 쓸데없는 빈 껍데기 상속 인터페이스 구현을 회피하도록 이끕니다.
- D - Dependency Inversion Principle (의존 역전 원칙) [보기 13번]:
- 상위의 똑똑한 비즈니스 모듈이 하위의 상세 물리 구현 모듈을 임포트해서 쓰지 말고, 둘 다 중간에 설계해 둔 '인터페이스(추상화 레이어)'를 바라보고 개발해야 변동성에 대비가 용이해집니다.
#### 2. 전혀 엉뚱한 오답 15번 (SSO)의 실체 [정답 4번]
- SSO (Single Sign-On / 단일 로그온): 사용자가 딱 한 번만 인증 로그인을 이행하면, 연동된 사내/그룹 내의 다양한 웹 앱 및 백엔드 모든 독립 시스템을 추가 비밀번호 입력 없이 편리하게 자동 프리패스 관제 통과하도록 해 주는 통합 인증 솔루션 기술명입니다. 객체지향 소프트웨어 설계 원칙(SOLID)과는 아무런 맥락도 관계도 없습니다.
문제 8
객체지향 분석 방법론 중 Jacobson 방법에 해당하는 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번수험생 여러분! 소프트웨어 설계 과목의 요구사항 확인 및 객체지향 분석 방법론 단원에서 핵심 출제되는 객체지향 개발 방법론 종류 및 특징 대조 문제입니다. 럼바우, 부치, 야콥손 등 역사적인 거장들의 핵심 접근 키워드를 일대일로 외우고 있어야 고득점 쟁취가 쉬워집니다.
객체지향 분석 방법론 대표 학파 비교
1. Jacobson (야콥손) 방법론 - OOSE (Object-Oriented Software Engineering)
- 핵심 특징: 유스케이스(Use-Case)를 개발 프로세스의 전면에 내세워 시스템의 요구사항을 분석하고, 이를 설계와 테스트 단계까지 유스케이스 기반으로 일관되게 이끌고 가는 사용자 중심 분석 방법론입니다.
2. Rumbaugh (럼바우) 방법론 - OMT (Object Modeling Technique)
- 핵심 특징: 분석 활동을 객체 모델링(Object) $\rightarrow$ 동적 모델링(Dynamic) $\rightarrow$ 기능 모델링(Functional)의 3단계 구조로 명확히 나누어 정형 수행하는 학계 표준이자 가장 보편적인 방법론입니다.
- 객체 모델링: 정보 모델링이라고도 하며, 객체 다이어그램(ERD 확장형)으로 정적 개체 구조를 그림.
- 동적 모델링: 상태 다이어그램(State Diagram)을 사용하여 객체 제어 흐름과 동적 변화를 묘사.
- 기능 모델링: 자료 흐름도(DFD, Data Flow Diagram)를 통해 프로세스 간의 데이터 변환을 다룸.
3. Booch (부치) 방법론
- 핵심 특징: 매크로(Macro, 거시적) 분석과 마이크로(Micro, 미시적) 분석 프로세스를 동시에 유기적으로 번갈아 적용하여 시스템 설계 세부 사양을 묘사하는 도형식 방법론입니다.
4. Coad-Yourdon (코드-요든) 방법론
- 핵심 특징: E-R 다이어그램 구조와 객체 상태의 연계에 기반하여 객체 지향 분석 프로세스를 정형화한 기법입니다.
5. Wirfs-Brock (워프스-브록) 방법론
- 핵심 특징: 객체 간의 관계 규정 보다는 객체의 책임(Responsibility)과 계약 관계(Contract) 분석에 극단적으로 치중하는 카드식(CRC 카드 등) 분석법입니다.
보기 상세 분석
- 1번 E-R 다이어그램을 사용한 데이터 모델링: 주로 Shlaer-Mellor 분석법이나 전통 관계형 분석 모델에 어울립니다.
- 2번 객체, 동적, 기능 모델로 나누어 수행: 학계 표준인 럼바우(Rumbaugh) 기법의 중추적인 수순입니다.
- 3번 미시적/거시적 개발 프로세스 병행: 부치(Booch) 학파의 고유한 분석 패턴입니다.
- 4번 Use-Case를 강조하여 사용: 이바 야콥손(Jacobson)이 OOSE를 창시하며 최초로 창안해 낸 유스케이스 모델의 핵심 가치로서 완벽한 정답입니다.
문제 9
익스트림 프로그래밍에 대한 설명으로 틀린 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번수험생 여러분! 소프트웨어 설계 과목의 개발 방법론 및 요구사항 단원에서 고빈출되는 익스트림 프로그래밍(XP, eXtreme Programming) 핵심 개념 문제입니다. XP의 가치, 원칙, 그리고 실천 방법(Practices)들을 완벽하게 구분하여 숙지해야 합니다.
익스트림 프로그래밍(XP)의 본질적 개념
- 정의: 수시로 변하는 요구사항에 유연하게 대응하기 위해, 개발 문서 작성을 지양하고 실제 동작 가능한 소스 코드와 짧은 개발 주기를 고도로 강조하는 대표적인 애자일(Agile) 개발 방법론입니다.
- 핵심 가치 5가지:
1. 의사소통(Communication): 팀원, 고객 간의 격의 없는 피드백과 투명한 소통
2. 단순성(Simplicity): 요구사항에 부합하는 가장 단순하고 직관적인 설계
3. 피드백(Feedback): 지속적인 테스트와 리뷰를 통한 결함의 즉각 교정
4. 용기(Courage): 기존 코드를 언제든 갈아엎고 재설계(Refactoring)할 수 있는 결단력
5. 존중(Respect): 개발팀 구성원들의 상호 기여에 대한 인정과 배려
- 주요 실천 사항(Practices):
- 짝 프로그래밍(Pair Programming), 공동 코드 소유(Collective Ownership), 테스트 주도 개발(TDD), 지속적인 통합(CI), 소규모 릴리즈(Small Releases), 리팩터링(Refactoring) 등.
보기 상세 분석
- 1번 대표적인 구조적 방법론 중 하나이다: XP는 전통적인 폭포수/구조적 방법론의 한계와 관료주의를 타파하기 위해 탄생한 대표적인 애자일 방법론이므로 구조적 방법론이라는 설명은 정반대의 잘못된 기술입니다.
- 2번 소규모 개발 조직에 적절한 방법: 요구사항 변경이 빈번하고 인원이 상대적으로 적은 기민한 개발 조직에 최적화된 방법론입니다.
- 3번 경험을 최대한 끌어 올리는 것: 상식적인 원리와 현장 개발자의 실질적 개발 경험을 극대화하여 실천합니다.
- 4번 소스 코드에 중점: 복잡하고 방대한 정형 문서 산출보다는 실제 돌아가는 코드 위주로 기민하게 움직입니다.
문제 10
소프트웨어 설계에서 각 모듈의 세분화된 역할이나 모듈들 간의 인터페이스와 같은 코드를 작성하는 수준의 세부적인 구현 방안을 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제를 의미하는 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번수험생 여러분! 소프트웨어 설계 과목의 디자인 패턴 단원에서 가장 기본적이고 핵심적인 디자인 패턴의 정의를 직접적으로 묻는 기출문제입니다. 소프트웨어 설계 및 구현 수준의 재사용 패턴이 무엇을 가리키는지 정확하게 용어 정리를 해 두는 것이 고득점의 밑바탕입니다.
디자인 패턴(Design Patterns)의 표준 정의
- 정의: 소프트웨어 설계에서 각 모듈의 세분화된 역할이나 모듈들 간의 인터페이스, 통신 등 코드를 작성하는 수준의 미시적인 구현 방안을 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 설계 템플릿을 의미합니다.
- 기원: 건축가 크리스토퍼 알렉산더의 건축 패턴 이론에서 유래하였으며, 에릭 감마(Erich Gamma)를 비롯한 GoF(Gang of Four)가 객체지향 소프트웨어 설계 분야에 체계적으로 도입하여 23가지 패턴을 정립하였습니다.
- 효과: 반복되는 설계상의 실수를 미연에 방지하고, 구조적으로 유연하고 확장성이 뛰어난 객체지향 아키텍처를 완성해 줍니다.
보기 상세 분석
- 1번 모듈 분해: 큰 시스템을 작은 관리 단위인 모듈로 구조적 분할하는 과정이나 원리를 일컫는 일반적 개념입니다.
- 2번 클래스 도출: 객체지향 분석 및 설계 단계에서 명사나 역할을 기준으로 도메인 속성과 행위를 가진 클래스를 발견해 내는 과정입니다.
- 3번 연관 관계: UML(Unified Modeling Language) 클래스 다이어그램 등에서 두 클래스가 서로 일방적 혹은 쌍방적으로 알고 참조하고 있는 정적 구조 관계를 선으로 표시하는 개념입니다.
- 4번 디자인 패턴: 발문에서 정확히 지칭하는 '모듈들의 구체적인 역할 및 인터페이스 조율 수준에서 참조할 수 있는 전형적인 해결 예제'에 완벽하게 대응되는 전문 용어입니다.
문제 11
바람직한 소프트웨어 설계 지침이 아닌 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번자, 수험생 여러분! 소프트웨어 설계 과목 시스템 및 모듈 설계 단원에서 거의 매 회차 출제되며 개념 이해의 깊이를 고르는 정통 오답 유도 단골 테마, '바람직한 소프트웨어 설계 4대 가이드라인 검증' 문제입니다! 대다수의 수험생들이 '작은 모듈이 무조건 선'이라고 오해하지만, 1타 강사와 함께 소프트웨어 공학적 손익분기점(Trade-off)을 전격 고찰해 봅시다.
소프트웨어 설계의 주요 원칙 및 적정 모듈 크기 가이드
```text
[ 모듈 분할 크기와 총 개발 비용의 상관성 ]
비용(Cost) ▲
│ / (모듈 간 인터페이스 비용)
│ / ★ 이 인터페이스 과부하 때문에
│ * / 무작위로 작게 쪼개면 손해!
│ \ /
│ \ /
│ \ / ➔ [ 적정 크기 지점 : 총 개발 비용 최적 ]
│ \_/
│ *
│ / \
│ / \ (모듈 자체의 순수 개발 및 디버깅 비용)
└──────────────────────────────────────────────➔
모듈의 개수 (수량)
```
#### 1. 바람직한 모듈 설계 주요 수칙 [보기 11, 12, 13번]
- 결합도와 응집도 (보기 11번 / 실제 1번): 모듈 간에 데이터 의존성은 가장 느슨하고 미약하게 설계하고(결합도 최소화), 모듈 내부는 단 한 가지 전용 태스크에만 전념하도록 타이트하게 응축해야 합니다(응집도 최대화).
- 복잡도와 일관성 (보기 12번 / 실제 2번): 코드의 중복을 배제하여 부작용(Side Effect)을 예방하고, 전역적이고 예측 가능한 인터페이스 일관성을 확보합니다.
- 단일 진입/단일 진출 (보기 13번 / 실제 3번): 스파게티 형태의 다중 제어 분기를 배제하고, 모듈 작동을 위해 들어오는 문(Entry Point)과 연산을 마치고 빠져나가는 문(Exit Point)이 단 1개씩 존재해야 구조 분석이 명쾌해집니다.
#### 2. 오류 지문 격파 [정답 4번 - 옳지 않은 것]
- 틀린 선지: “모듈의 크기를 가능한 작게 구성하여 병행성 수준을 높여야 한다.” ➔ 전형적인 하이퍼 허위 선지입니다.
- 공학적 진실:
- 모듈을 너무 잘게 쪼개어 수량을 극도로 늘려놓으면, 모듈 간에 데이터를 주고받는 인터페이스 호출 및 매개변수 통신 오버헤드가 기하급수적으로 폭증하여 시스템의 전체 가독성과 연산 속도가 도리어 곤두박질치고 전체 비용이 더 치솟게 됩니다.
- 따라서 모듈의 크기는 가능한 무조건 작게 구성하는 것이 절대적 정답이 아니며, 응집도와 결합도 기준을 바탕으로 '최적의 적정 균형 크기'를 사전에 예측하여 타협·조정하는 설계 지침이 참입니다. 그러므로 잘못 유도하고 있는 선택지 4번이 옳지 않은 정답입니다.
문제 12
디자인 패턴 사용의 장단점에 대한 설명으로 거리가 먼 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번수험생 여러분! 소프트웨어 설계 과목의 디자인 패턴 단원에서 빈출되는 디자인 패턴의 적용 목적과 장단점을 묻는 기초 이론 문제입니다. 디자인 패턴을 설계에 도입했을 때 얻어지는 실익과 기회비용을 올바르게 대조하는 것이 출제의 핵심 포인트입니다.
디자인 패턴(Design Patterns)의 본질적 이해
- 개념: 소프트웨어 설계 과정에서 공통적으로 발생하는 문제들에 대해 선배 개발자들이 검증해 둔 전형적이고 우수한 객체지향적 해결 책이자 아키텍처 템플릿입니다.
- 적용의 주요 장점:
1. 구조 파악 용이: 표준화된 디자인 패턴 명칭과 규칙을 공유함으로써 개발자 간의 의사소통이 원활해지고, 복잡한 소프트웨어의 구조를 직관적으로 이해할 수 있습니다.
2. 재사용 시간 단축: 이미 검증된 고품질의 설계를 재활용하므로 모듈 재사용을 위한 설계 및 코딩 작업 시간이 비약적으로 단축됩니다.
3. 유지보수 생산성 극대화: 느슨한 결합(Loose Coupling)과 캡슐화를 유도하므로 요구사항이 바뀌더라도 특정 클래스만 수정하여 전체 시스템의 변경을 최소화할 수 있습니다.
- 적용의 단점 (기회비용):
- 초기 투자 비용 증가: 개발 조직이 디자인 패턴을 깊게 이해하고 올바른 패턴을 선정하여 초기에 정밀 설계하는 과정에서 학습 비용 및 초기 개발 시간과 설계 노력이 더 많이 필요하게 됩니다. 즉, 초기 비용은 절약되는 것이 아니라 오히려 증가하며, 장기적인 유지보수 주기 전체에 걸쳐 비용을 회수하는 구조입니다.
보기 상세 분석
- 1번 소프트웨어 구조 파악이 용이하다: 패턴화된 네이밍 규칙 덕분에 다른 개발자도 구조를 쉽게 분석할 수 있습니다.
- 2번 초기 투자 비용 및 개발 시간이 절약된다: 디자인 패턴 도입 시, 적합한 패턴 발굴, 객체 모델링, 정밀 추상화 설계 단계가 추가되므로 초기 개발 투입 공수와 시간은 증가하는 편이 일반적입니다. 따라서 초기 비용과 시간이 절약된다는 서술은 명백한 오류입니다.
- 3번 재사용을 위한 개발 시간이 단축된다: 기작성된 유연한 모듈을 안전하게 재사용하므로 개발 속도가 올라갑니다.
- 4번 객체지향 설계 및 구현의 생산성을 높이는데 적합하다: 디자인 패턴의 궁극적인 존재 가치이자 최고의 장점입니다.
문제 13
UML 모델에서 사용하는 구조적 다이어그램에 속하지 않은 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번수험생 여러분! 소프트웨어 설계 과목의 화면 설계 및 UML 다이어그램 단원에서 매우 높은 빈도로 출제되는 단골 문제입니다. UML(Unified Modeling Language) 다이어그램의 두 가지 대분류인 구조적 다이어그램(Structural Diagram)과 행위적 다이어그램(Behavioral Diagram)의 종류를 완벽하게 구별하여 암기하고 있어야 합니다.
UML 다이어그램의 이원적 분류
1. 구조적 다이어그램 (Structural Diagram) - 정적(Static) 구조
- 클래스 다이어그램 (Class Diagram): 시스템의 정적 구조를 정의하는 가장 핵심 다이어그램입니다.
- 객체 다이어그램 (Object Diagram): 특정 시점에 존재하는 객체 인스턴스들과 그들 간의 관계를 인스턴스 수준에서 보여줍니다.
- 컴포넌트 다이어그램 (Component Diagram): 물리적 컴포넌트(파일, 라이브러리 등) 간의 조직과 의존 관계를 표현합니다.
- 배치 다이어그램 (Deployment Diagram): 시스템을 구성하는 물리적 노드(장비, 하드웨어)와 소프트웨어 컴포넌트의 물리적 분포를 묘사합니다.
- 복합 구조 다이어그램 (Composite Structure Diagram): 클래스나 컴포넌트의 내부 구조를 표현합니다.
- 패키지 다이어그램 (Package Diagram): 모델 요소들을 패키지 단위로 그룹화하여 구성 구조를 나타냅니다.
2. 행위 다이어그램 (Behavioral Diagram) - 동적(Dynamic) 행위
- 유스케이스 다이어그램 (Use Case Diagram): 사용자의 요구사항과 시스템 간의 상호작용을 정의합니다.
- 순차 다이어그램 (Sequence Diagram): 객체 간 주고받는 메시지의 시간적 흐름을 시각화합니다.
- 커뮤니케이션 다이어그램 (Communication Diagram): 메시지뿐만 아니라 객체들 간의 연관 관계 구조 자체에도 초점을 둡니다.
- 상태 다이어그램 (State Diagram): 하나의 객체가 이벤트에 따라 어떻게 자신의 상태를 변화시켜 나가는지를 보여주는 동적 행동 표현 도구입니다.
- 활동 다이어그램 (Activity Diagram): 시스템의 전체적인 처리 흐름이나 비즈니스 로직을 제어 흐름 선으로 묘사합니다.
보기 상세 분석
- 1번 State Diagram: 상태 다이어그램은 객체의 상태 전이를 표현하는 대표적인 행위 다이어그램(Behavioral Diagram)에 해당합니다. 따라서 구조적 다이어그램에 속하지 않는 올바른 정답입니다.
- 2번 Object Diagram: 특정 시점의 물리적 인스턴스를 그리는 정적 구조형 다이어그램입니다.
- 3번 Component Diagram: 소프트웨어 물리 아키텍처의 의존도를 묘사하는 정적 구조형 다이어그램입니다.
- 4번 Class Diagram: 객체지향 정적 설계의 바이블이 되는 구조형 다이어그램입니다.
문제 14
UML 확장 모델에서 스테레오 타입 객체를 표현할 때 사용하는 기호로 맞는 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번자, 수험생 여러분! 소프트웨어 설계 과목의 UML 다이어그램 대단원에서 단답 주관식 및 필기 고정 출제 최우수 테마, 'UML 확장 기법 스테레오 타입(Stereotype)의 전산학적 의미와 길메(Guillemets, << >>) 기호 활용' 문제입니다! UML은 정형화된 모델링 표준 규칙을 지니고 있으나, 실무 개발팀의 요구나 상세 프로그래밍 조건(인터페이스, 컴포넌트, 상속 관계 등)을 모두 유연하게 소화하기에는 기본 기호 체계가 살짝 부족합니다. 이를 우아하게 확장하는 해결사가 바로 스테레오 타입입니다. 1타 강사가 제안하는 핵심 일람표로 한눈에 장악해 봅시다.
UML 스테레오 타입(Stereotype) 시각화 다이어그램 표현 예시
┌───────────────────────────────────┐
│ << interface >> │ ➔ 스테레오 타입 기호 << >> 기입!
│ OrderRepository │
├───────────────────────────────────┤
│ + save(order: Order): void │
│ + findById(id: String): Order │
└───────────────────────────────────┘주요 스테레오 타입(Stereotype) 수험용 전수 대조
| 기호 형태 | 영문 표준 약어 명칭 | 해당 객체의 전산학적 확장 역할 |
|---|---|---|
<< interface >> | Interface | 오직 메서드 원형 선언부만 가지고 있으며 구현체는 배제된 가이드 인터페이스. |
<< boundary >> | Boundary | 시스템 내부 비즈니스 로직과 외부 사용자 사이의 상호작용 인터페이스 화면(UI). |
<< control >> | Control | 실제 복잡다단한 시스템 비즈니스 가동 흐름을 주관하고 연산하는 컨트롤러 모듈. |
<< entity >> | Entity | DB 테이블과 직접 동기화되어 영구 보존 데이터를 실어 나르는 정형 데이터 객체. |
<< include >> | Include | 유스케이스 관계에서 특정 선행 업무 실행 시 '무조건 필수적으로 같이 실행'되는 포함 관계. |
<< extend >> | Extend | 특정 부가 상황 발생 시에만 '조건부로 추가 확장 실행'되는 선택적 확장 관계. |
- 1번의 당선 사유: UML 표준 스펙상 스테레오 타입을 표현할 때 가두는 유일한 약속 기호는 프랑스식 겹화살표 모양인
<< >>(Guillemets, 1번)입니다. 둥근 괄호(( ))나 중괄호{{ }}등은 UML 공식 컴포넌트 확장 스펙과 일절 관계없는 장식 기호들에 불과합니다.
문제 15
UML 확장 모델에서 스테레오 타입 객체를 표현할 때 사용하는 기호로 맞는 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번자, 수험생 여러분! 소프트웨어 설계 과목의 UML 다이어그램 대단원에서 단답 주관식 및 필기 고정 출제 최우수 테마, 'UML 확장 기법 스테레오 타입(Stereotype)의 전산학적 의미와 길메(Guillemets, << >>) 기호 활용' 문제입니다! UML은 정형화된 모델링 표준 규칙을 지니고 있으나, 실무 개발팀의 요구나 상세 프로그래밍 조건(인터페이스, 컴포넌트, 상속 관계 등)을 모두 유연하게 소화하기에는 기본 기호 체계가 살짝 부족합니다. 이를 우아하게 확장하는 해결사가 바로 스테레오 타입입니다. 1타 강사가 제안하는 핵심 일람표로 한눈에 장악해 봅시다.
UML 스테레오 타입(Stereotype) 시각화 다이어그램 표현 예시
┌───────────────────────────────────┐
│ << interface >> │ ➔ 스테레오 타입 기호 << >> 기입!
│ OrderRepository │
├───────────────────────────────────┤
│ + save(order: Order): void │
│ + findById(id: String): Order │
└───────────────────────────────────┘주요 스테레오 타입(Stereotype) 수험용 전수 대조
| 기호 형태 | 영문 표준 약어 명칭 | 해당 객체의 전산학적 확장 역할 |
|---|---|---|
<< interface >> | Interface | 오직 메서드 원형 선언부만 가지고 있으며 구현체는 배제된 가이드 인터페이스. |
<< boundary >> | Boundary | 시스템 내부 비즈니스 로직과 외부 사용자 사이의 상호작용 인터페이스 화면(UI). |
<< control >> | Control | 실제 복잡다단한 시스템 비즈니스 가동 흐름을 주관하고 연산하는 컨트롤러 모듈. |
<< entity >> | Entity | DB 테이블과 직접 동기화되어 영구 보존 데이터를 실어 나르는 정형 데이터 객체. |
<< include >> | Include | 유스케이스 관계에서 특정 선행 업무 실행 시 '무조건 필수적으로 같이 실행'되는 포함 관계. |
<< extend >> | Extend | 특정 부가 상황 발생 시에만 '조건부로 추가 확장 실행'되는 선택적 확장 관계. |
- 1번의 당선 사유: UML 표준 스펙상 스테레오 타입을 표현할 때 가두는 유일한 약속 기호는 프랑스식 겹화살표 모양인
<< >>(Guillemets, 1번)입니다. 둥근 괄호(( ))나 중괄호{{ }}등은 UML 공식 컴포넌트 확장 스펙과 일절 관계없는 장식 기호들에 불과합니다.
문제 16
프로토타이핑 모형(Prototyping Model)에 대한 설명으로 옳지 않은 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번수험생 여러분! 소프트웨어 설계 과목의 소프트웨어 생명주기(SDLC) 공학 단원에서 기출 1순위 후보인 프로토타이핑 모형(Prototyping Model)의 본질과 장단점 분석 판별 문제입니다. 폭포수 모델의 최대 한계인 '요구 분석의 정체성'을 극복하기 위해 설계된 이 역동적 모형의 속성을 올바르게 캐치해 두셔야 합니다.
프로토타이핑 모형 (Prototyping Model) 해설
- 개념: 사용자의 불명확한 요구사항을 규명하기 위해 개발 초기 단계에 실제 작동 가능한 가벼운 견본품(Prototype / 시제품)을 신속하게 제작하여 사용자와 소통하고, 그 피드백을 수용하여 점진적으로 시스템을 가공 수정해 나가는 개발 공정 모형입니다.
- 최고의 이점:
- 발주자(사용자)가 개발 초기 단계에서 눈으로 작동 모델을 직접 확인해 피드백을 줄 수 있으므로, 상호 간 오해나 오독을 즉각 해결합니다.
- 사용자의 요구사항 변덕이나 새로운 요구조건의 동적 수용 및 기획 반영이 극히 용이합니다. (요구사항 수용의 최고의 장점)
- 개발자와 발주자 간의 공동 소통을 위한 완벽한 참조 도식(공동의 참조 모델)을 제공합니다.
- 한계점:
- 단기간에 시제품을 급히 깎아 내느라, 임시변통식 코드를 남용하여 소프트웨어의 내부 무결성(안정성, 아키텍처) 구조가 파괴될 위협이 큽니다.
- 시제품 제작 비용이 과하게 소모되거나, 반복되는 피드백 요구조건 조율로 인해 전체 개발 일정이 무한 루프 지연될 소지가 짙습니다.
보기 상세 분석
- 1번 최종 일부 모형 사전 확인: 프로토타이핑이 제공하는 원초적인 시야 확보 장점입니다. (참)
- 2번 새로운 요구사항의 반영은 불가능: 사용자의 요구 변경을 상시 환영하고 언제든 받아들이기 위해 태어난 최첨단 유연 설계 공법이므로, 요구사항의 동적 반영이 '불가능'하다는 서술은 정반대로 왜곡된 명백한 오류 명제이자 정답입니다.
- 3번 공동의 참조 모델 제공: 발주자와 엔지니어가 동일한 시제품 구동 상태를 보며 소통의 오해를 영으로 수렴시키므로 참입니다. (참)
- 4번 구현 단계의 골격 활용: 프로토타입의 종류 중 진화형 프로토타입(Evolutionary Prototype) 등은 버려지지 않고 향후 구현 클래스의 단단한 기둥(Skeleton)으로 재사용됩니다. (참)
문제 17
LOC 기법에 의하여 예측된 총 라인수가 36000라인, 개발에 참여할 프로그래머가 6명, 프로그래머들의 평균 생산성이 월간 300라인일 때 개발에 소요되는 기간을 계산한 결과로 가장 옳은 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번수험생 여러분! 소프트웨어 설계 과목의 소프트웨어 프로젝트 관리 및 원가 산정 단원에서 계산 실무 문제로 단골 제출되는 LOC(Lines of Code) 예측 기법의 개발 기간 산출 계산 문제입니다. 공식 대입 절차를 실수 없이 밟아가는 단계별 풀이 지침을 체계적으로 숙지해야 고득점을 품을 수 있습니다.
LOC 기법 기반 소프트웨어 공정 계산 완전 해부
graph TD
A["예측 총 코드 라인 수 (36,000 LOC)"] --> B["1단계: M/M (Man-Month) 노력 산정"]
B1["프로그래머 1인당 월평균 생산성 (300 LOC)"] --> B
B --> C["M/M 결과: 120 Man-Month"]
C --> D["2단계: 개발 소요 기간 (Duration) 산출"]
D1["투입 프로그래머 인원 수 (6명)"] --> D
D --> E["소요 기간 결과: 20개월"]#### 1단계: 노력(Effort, Man-Month) 산출 공식
- 정의: 한 사람이 개발 프로젝트를 전담할 때 몇 개월이 걸리는지를 뜻하는 가상의 노동 투입량 단위입니다.
- 공식:
$$\text{노력(Man-Month)} = \frac{\text{총 예측 LOC (라인 수)}}{\text{1인당 월평균 생산성 (LOC/월)}}$$
- 대입:
$$\text{노력} = \frac{36,000 \text{ 라인}}{300 \text{ 라인/월}} = 120 \text{ Man-Month (M/M)}$$
#### 2단계: 개발 소요 기간(Duration) 산출 공식
- 정의: 실제 다수의 프로그래머를 동시에 투입하여 동시 병렬 작업으로 프로젝트를 완료할 때 걸리는 순수 개발 기간입니다.
- 공식:
$$\text{개발 소요 기간(Month)} = \frac{\text{총 노력(Man-Month)}}{\text{참여 프로그래머 인원수}}$$
- 대입:
$$\text{개발 소요 기간} = \frac{120 \text{ Man-Month}}{6 \text{ 명}} = 20 \text{ 개월}$$
보기 상세 분석
- 1번 5개월 / 2번 10개월 / 3번 15개월: 공식의 분모/분자 단계를 임의 계산하거나 역산했을 때 유도되는 전형적인 수치 함정 오답입니다.
- 4번 20개월: 위의 2단계 공식을 수식 정석대로 이행하여 산출해 낸 정확한 연산 결과이자 정답입니다.
문제 18
UI의 설계 지침으로 틀린 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 3번수험생 여러분! 소프트웨어 설계 과목의 화면 설계 및 UI 원칙 단원에서 기출 빈도가 95% 이상인 UI 설계 지침 및 기본 설계 가이드라인 판별 문제입니다. 상식 선에서도 접근이 가능하지만, 정보처리기사 표준 가이드북 상에 명기된 설계 4대 명제와 설계 지침 항목을 외우고 있으면 실수 없이 원킬로 맞힐 수 있습니다.
사용자 인터페이스 (UI) 설계 4대 핵심 원칙
1. 직관성 (Intuitiveness)
- 누구나 특별한 사전 지식이 없어도 시스템의 동작과 기능을 한눈에 직관적으로 이해하고 쉽게 사용할 수 있도록 보장해야 합니다.
2. 유효성 (Efficiency / Effectiveness)
- 사용자의 목적을 빠르고 아주 능률적이고 효율적으로 성취할 수 있도록 필요한 기능과 지름길을 충분히 제공해야 합니다.
3. 학습성 (Learnability)
- 조작 방법과 아이콘 배치 등의 일관성이 뛰어나서 초보 사용자도 짧은 시간 내에 쉽게 사용법을 숙지할 수 있어야 합니다.
4. 유연성 (Flexibility)
- 사용자의 요구사항이나 작동 실수를 최대한 수용하고 오류 처리를 매끄럽게 도와주는 다각적인 입력 대응력을 확보해야 합니다.
치명적 오류 처리 설계의 UI 표준 규격
- 투명하고 명확한 안내: 프로그램 내부에서 치명적인 하드웨어 장치 파손, 네트워크 유실, 입력 유효성 검사 실패 등의 치명적 오류가 터졌을 때, 시스템은 사용자가 현명하게 원인을 파악하고 회복 조치(예: 재입력, 리부팅 등)를 취할 수 있도록 명확하고 인지하기 쉬운 다이얼로그나 에러 코드 안내를 신속히 노출해야 합니다.
- 오류 상황을 사용자에게 숨기거나 인지할 수 없도록 누락(은폐)시키는 행위는 데이터 유실 및 서비스 전면 중단 같은 최악의 2차 피해를 유발하는 최악의 인터페이스 불량 행위입니다.
보기 상세 분석
- 1번 이해하기 편하고 쉽게 사용할 수 있는 환경을 제공: 직관성과 학습성에 충실한 설계 수칙입니다. (참)
- 2번 주요 기능을 메인 화면에 노출하여 조작이 쉽도록 설계: 사용 편의성과 즉시성을 대폭 높이는 우수한 실천 규칙입니다. (참)
- 3번 치명적인 오류에 대한 부정적인 사항은 사용자가 인지할 수 없도록 한다: 사용자가 반드시 인지하고 우회 조치를 할 수 있도록 직관적이고 친절한 경고 알림(Error Notification)을 정직하게 띄워주어야 하므로, 은폐 설계는 완전한 오답이자 이번 문제의 정답입니다.
- 4번 다양한 연령, 성별, 직무 계층을 수용: 범용적 사용성과 다채로운 타겟 접근성(Accessibility) 확보 지침에 해당합니다. (참)
문제 19
사용자 인터페이스의 설계 지침에 대한 설명으로 옳지 않은 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번수험생 여러분! 소프트웨어 설계 과목의 사용자 인터페이스(UI) 설계 단원에서 단골 기출되는 UI 설계 4대 기본 지침(혹은 기본 원칙) 문제입니다. 직관성, 유효성, 학습성, 유연성의 4대 속성을 완벽히 이해하고 대입해야 쉽게 정답을 맞출 수 있습니다.
사용자 인터페이스(UI) 설계 4대 원칙
1. 직관성 (Intuitiveness)
- 누구나 특별한 교육이나 설명서 없이도 인터페이스의 작동 방식과 기능을 한눈에 직관적으로 이해하고 즉시 사용할 수 있어야 합니다.
- 작동시킬 기능만 보고도 사용자가 실행 결과를 미리 쉽게 예측할 수 있도록 설계(Predictability)해야 합니다.
2. 유효성 (Efficiency)
- 사용자의 목적을 쉽고 정확하게 달성할 수 있도록 유용하고 효과적인 정보 레이아웃과 조작 방식을 제공해야 합니다.
3. 학습성 (Learnability)
- 초보자라도 짧은 시간 내에 모든 사용 규칙을 배우고 익혀서 숙련될 수 있도록 단순하고 일관성 있는 작동 규칙을 보장해야 합니다.
4. 유연성 (Flexibility)
- 사용자의 실수나 예외 상황을 최대한 포용하고(실수 방지 및 복구 기능 제공), 상호작용의 일관성을 잃지 않도록 세심하게 조절해야 합니다.
보기 상세 분석
- 1번 조작 방법을 가능한 다양화하여 많은 기능이 들어갈 수 있도록 구성: 조작 방법이 불필요하게 다양하고 화려하면 오히려 사용자는 엄청난 인지적 혼란을 겪게 되며, 시스템의 전체적인 조작성과 학습성이 심각하게 저하됩니다. 복잡성을 배제하고 조작 방식을 일관되고 단순하게 설계하는 것이 UI 가이드의 기본 철학입니다. 따라서 1번 설명은 UI 설계 지침과 거리가 한참 먼 잘못된 기술입니다.
- 2번 버튼이나 조작 방법 등을 일관성 있게 제공: 일관성은 UI 설계에서 사용자가 조작법을 빠르게 신뢰하고 터득하도록 돕는 가장 강력한 도구입니다.
- 3번 작동시킬 기능만 보고도 결과를 예측할 수 있게 설계: UI 예측성(Predictability)에 관한 올바른 지침입니다.
- 4번 사용자가 편리하게 사용할 수 있는 환경 제공: UI 설계의 핵심 근원 목적인 사용 편의성과 직관성을 지적한 문장입니다.
문제 20
객체지향 소프트웨어 설계 시 디자인 패턴을 구성하는 요소로서 가장 거리가 먼 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 3번자, 수험생 여러분! 소프트웨어 설계 과목 소프트웨어 설계 및 디자인 패턴 단원에서 반복되는 객체지향 설계 결함을 해결하기 위해 명세 규격을 정돈한, '디자인 패턴(Design Pattern) 명세서의 본질적 구성 요소' 문제입니다! 1타 강사와 절대 헷갈리지 않는 디자인 패턴의 필수 명세 뼈대들을 완벽 학습해 봅시다.
디자인 패턴 명세서의 정규 구성 4대 요소
디자인 패턴이란 실무에서 유사하게 직면하는 고유한 소프트웨어 아키텍처 설계 문제를 해결하는 정형화된 공학적 솔루션 양식입니다. 이를 문서화하는 정규 기술 요소는 다음과 같습니다.
1. 패턴 이름 (Pattern Name):
- 한두 단어로 설계 취지와 해법의 의미를 명확히 전달하는 이름을 정의합니다. (예: 싱글톤, 팩토리 메서드, 옵저버 등).
2. 문제 및 배경 (Problem):
- 어떤 특수한 상황, 제약사항, 아키텍처적 배경 하에서 이 패턴을 꺼내 사용해야 유효한지 해결 상황을 명시합니다. (보기 13번)
3. 해법 (Solution):
- 문제를 해결하기 위해 동원되는 객체지향 구성 요소(클래스, 인터페이스)들의 유기적 관계, 역할 분담, 그리고 실제 구현 아이디어를 보조하는 재사용 가능한 샘플 코드를 동봉합니다. (보기 15번)
4. 결과 / 효과 (Consequence):
- 이 패턴을 구조에 주입했을 때 얻게 되는 이점, 잠재적 부작용, 그리고 성능적 상충 관계(Trade-off)를 서술합니다.
- 보조 명세: 이외에도 실제 적용된 사례(Known Uses) (보기 12번), 연관된 타 패턴 관계(Related Patterns) 등이 추가될 수 있습니다.
#### 1. 공학적 시각에서의 정답 판별 [정답 3번]
- 거리 유격이 먼 지문 (보기 14번 / 실제 3번): “개발자의 성명”
- 공학적 판결:
- 디자인 패턴을 창시한 저자명(예: GoF 에리히 감마 외 3인)이나 해당 패턴을 코드에 활용해 개발한 '특정 개발자의 성명'은 디자인 패턴 자체의 사전 설계 명세 명세서 뼈대를 구성하는 독립 구성 요소가 전혀 아닙니다.
- 따라서 가장 거리가 먼 정답은 선택지 3번 개발자의 성명이 확정됩니다.
문제 21
정렬된 N개의 데이터를 처리하는 데 O(Nlog N)의 시간이 소요되는 정렬 알고리즘은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번자, 수험생 여러분! 자료구조 및 프로그래밍 활용 과목에서 시험 문제 출제 1순위이자 변별력 조절용 최고봉 타깃, '주요 정렬 알고리즘별 시간 복잡도(Time Complexity) 비교 매트릭스' 문제입니다! 이 파트는 각 정렬 기법의 구조적 매커니즘과 그에 따른 최선, 평균, 최악의 시간 효율성을 머릿속에 도표로 완벽하게 담고 있어야 기형 기출을 만나도 빗겨나갈 수 있습니다. 1타 강사와 초호화 도표로 무장해 봅시다.
💡 주요 핵심 정렬 알고리즘 시간 복잡도 올인원 표
이 표 하나만 통째로 찍어서 머리에 이식해 놓으면 정렬 시간 문제는 백전백승입니다:
| 정렬 알고리즘 | 최선 (Best) | 평균 (Average) | 최악 (Worst) | 특징 / 기적의 수식 |
|---|---|---|---|---|
| 합병 정렬 (Merge Sort) [정답] | $\mathbf{O(N\log N)}$ | $\mathbf{O(N\log N)}$ | $\mathbf{O(N\log N)}$ | 분할 정복 방식, 데이터 상태 불문 항상 일정 |
| 힙 정렬 (Heap Sort) | $O(N\log N)$ | $O(N\log N)$ | $O(N\log N)$ | 힙(완전이진트리) 구조 이용, 최악도 성능 보장 |
| 퀵 정렬 (Quick Sort) | $O(N\log N)$ | $O(N\log N)$ | $O(N^2)$ | 피벗(Pivot) 기준 분할, 평균 속도가 가장 광속 |
| 삽입 정렬 (Insertion Sort) | $O(N)$ | $O(N^2)$ | $O(N^2)$ | 이미 정렬 완료 상태에선 $O(N)$ 최강 성능 |
| 버블 정렬 (Bubble Sort) | $O(N^2)$ | $O(N^2)$ | $O(N^2)$ | 인접 원소 맞대결 교환, 구현 최저 난이도 |
| 선택 정렬 (Selection Sort) | $O(N^2)$ | $O(N^2)$ | $O(N^2)$ | 최소값을 찾아 맨 앞으로 복사, 항상 동일 수식 |
🔍 정답 최종 규명 및 논리 사유
- 합병 정렬 (Merge Sort) ➔ ①번 정답:
- 로직: 분할 정복(Divide and Conquer) 철학에 입각하여 배열을 절반씩 끝까지 쪼갠 뒤, 두 개씩 순차 비교 결합하며 정렬합니다.
- 성능: 배열을 매번 수학적으로 정밀하게 이등분하여 들어가므로, '이미 정렬된 N개의 데이터를 처리할 때'에도, 거꾸로 역정렬되어 있을 때에도, 무작위 엉망 상태일 때에도 단 한 치의 타협 없이 늘 일관된 $O(N\log N)$ 시간을 보장하는 기계적인 견고함을 자랑합니다!
- 나머지 오답 후보군 (②, ③, ④번):
- 버블 정렬과 선택 정렬은 언제나 $O(N^2)$의 연산 부하가 고정되어 유발됩니다.
- 삽입 정렬은 이미 '정렬된 N개 데이터'라는 최선의 시나리오 상황을 만나면 연산을 대폭 단축하여 $O(N)$이라는 초광속 성능을 뽑아내므로, 질문 지문에서 명시한 $O(N\log N)$ 연산과는 성격이 일치하지 않습니다!
"언제나 흔들림 없이 한결같은 편안함을 주는 O(N log N) 정렬 삼형제는 '합·퀵·힙'(합병, 퀵, 힙 정렬)이다! 그중 무조건 O(N log N)을 강제 보장하는 녀석은 합병 정렬!"로 명확히 암기합시다!
문제 22
블랙박스 테스트 기법으로 거리가 먼 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번자, 수험생 여러분! 소프트웨어 개발 과목 애플리케이션 테스트 파트에서 실기와 필기 전 범위를 통틀어 단 한 번도 누락된 적 없는 무조건 출제 0순위, '화이트박스 테스트(White-box)와 블랙박스 테스트(Black-box)의 기술 범주 비교 분석' 문제입니다! 소스 코드 뼈대를 들여다보고 구석구석 논리 구조를 추적하는 테스트인가, 외부에서 값만 넣고 기능적 규격을 체크하는 테스트인가의 대조를 완벽하게 해체해 봅시다.
소프트웨어 테스트 양대 기법 비교 총괄표
| 테스트 대분류 | 테스팅 핵심 기전 및 의도 | 시험 출제 전수 키워드 및 종류 (암기 치트키) |
|---|---|---|
| 화이트박스 <br>(White-Box) | 모듈 내부 소스 코드 논리 경로, 구조, 조건 분기문을 투명하게 분석하여 정해진 경로를 정밀 검증. | 기제델루커<br>- 기초 경로 검사 [정답 1번]<br>- 제어 흐름 검사<br>- 데이터 흐름 검사<br>- 루프 검사<br>- 커버리지 테스트 (구문, 분기, 조건 등) |
| 블랙박스 <br>(Black-Box) | 소스 코드를 보지 않고 오직 요구사항 명세서의 기능적 인터페이스 규격을 기반으로 한 입출력 값 확인. | 동경인오비상<br>- 동등 분할 (동치 클래스 분해)<br>- 경계값 분석 (한계치 분석)<br>- 인과 관계 그래프 (원인-결과 그래프)<br>- 오류 예측 (감각적 디버깅)<br>- 비교 검사 (동일 입력 타 프로그램 대조)<br>- 상태 전이 테스트 |
1번 기초 경로 검사(화이트박스)의 전산학적 정체
- 정의: 맥케이브(McCabe)의 순환 복잡도 공식을 적용하여 제어 흐름 그래프에서 모든 독립적인 실행 경로를 유도해 낸 후, 이를 빠짐없이 100% 검증하는 화이트박스 기법입니다.
- 나머지 보기 분석: 보기 2번(동치 클래스), 3번(경계값), 4번(원인 결과 그래프)은 소프트웨어 외부의 값 설계 범위 및 조건 매트릭스를 기반으로 하여 코드를 들여다보지 않고 테스트를 수행하는 완벽한 블랙박스 군으로 묶입니다.
문제 23
다음 Postfix 연산식에 대한 연산결과로 옳은 것은? 3 4 * 5 6 * +
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번자, 수험생 여러분! 소프트웨어 개발 과목 자료구조 및 알고리즘 단원에서 스택(Stack)의 물리적 선입후출(LIFO) 특성을 응용하는 최고 빈출 수치 계산형, '후위 표기법(Postfix) 수식의 스택 시뮬레이션 추적' 문제입니다! 1타 강사와 절대 오답이 나오지 않는 단계별 스택 다이어그램을 그려 추적해 봅시다.
후위 표기법(Postfix) 수식 계산 메커니즘
- 스택 규칙:
1. 왼쪽에서 오른쪽으로 수식을 스캔합니다.
2. 피연산자(숫자)를 만나면 스택에 무조건 Push합니다.
3. 연산자(+, -, *, / 등)를 만나면 스택에서 최상위 피연산자 2개를 Pop합니다.
- 주의: 먼저 Pop된 피연산자가 우측 항(오른쪽), 나중에 Pop된 피연산자가 좌측 항(왼쪽)이 되어 연산합니다.
4. 계산된 결과 수치를 스택에 다시 Push합니다.
5. 수식 끝까지 완료한 후 스택에 남은 최종 탑 데이터가 정답이 됩니다.
수식 3 4 * 5 6 * + 단계별 스택 연산 정밀 추적
[ 단계 ] [ 스캔 토큰 ] [ 스택 (Stack) 내부 상황 ] [ 연산 및 설명 ]
─────────────────────────────────────────────────────────────────────────────
Step 1 '3' [ 3 ] 피연산자 '3' Push
Step 2 '4' [ 3, 4 ] 피연산자 '4' Push
Step 3 '*' [ 12 ] 연산자 '*' 발견 ➔ 3 * 4 = 12 Push
Step 4 '5' [ 12, 5 ] 피연산자 '5' Push
Step 5 '6' [ 12, 5, 6 ] 피연산자 '6' Push
Step 6 '*' [ 12, 30 ] 연산자 '*' 발견 ➔ 5 * 6 = 30 Push
Step 7 '+' [ 42 ] 연산자 '+' 발견 ➔ 12 + 30 = 42 Push
─────────────────────────────────────────────────────────────────────────────#### 1. 공학적 추적 성과 검토 [정답 42]
- 최종 수식 연산의 마침표에서 스택에 홀로 보존되어 있는 최종 값은 42 (선택지 2번)입니다.
- 따라서 정답은 완벽하게 2번으로 조율됩니다.
문제 24
스택에서 순서가 A, B, C, D로 정해진 입력 자료를, push → push → pop → push → pop → push → pop → pop으로 연산 했을 때 출력은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번자, 수험생 여러분! 소프트웨어 개발 과목 자료구조 단원에서 매년 반드시 한 문제 이상 출제되며, 점수를 퍼주기 위해 출제되나 시험장의 압박감 속에서 사소한 실수로 틀리기 쉬운, '스택(Stack)의 후입선출(LIFO) 시뮬레이션 연산 추적' 문제입니다! 스택 상태의 시시각각 변화를 1타 강사와 차분하고 정교하게 추적해 봅시다.
### 스택(Stack)의 핵심 가동 이론
- 성질: LIFO(Last-In, First-Out; 후입선출) ➔ 가장 나중에 들어간 녀석이 가장 먼저 탈출하는 한쪽이 막힌 원통 형태의 메모리 버퍼 구조입니다.
- 입력 대기열: A ➔ B ➔ C ➔ D 순서로 대기 중입니다.
```text
[ 스택 push / pop 시계열 정밀 트레이싱 ]
[단계] [수행 명령] [스택 내부 메모리 현황] [화면 출력 스트림 값]
────────────────────────────────────────────────────────────────────
초기 - (밑바닥) [ ] (상단) (출력 없음)
Step 1 push (A 진입) (밑바닥) [ A ] (상단) (출력 없음)
Step 2 push (B 진입) (밑바닥) [ A, B ] (상단) (출력 없음)
Step 3 pop (B 탈출!) (밑바닥) [ A ] (상단) ➔ 출력 결과: [ B ]
Step 4 push (C 진입) (밑바닥) [ A, C ] (상단) ➔ 출력 결과: [ B ]
Step 5 pop (C 탈출!) (밑바닥) [ A ] (상단) ➔ 출력 결과: [ B, C ]
Step 6 push (D 진입) (밑바닥) [ A, D ] (상단) ➔ 출력 결과: [ B, C ]
Step 7 pop (D 탈출!) (밑바닥) [ A ] (상단) ➔ 출력 결과: [ B, C, D ]
Step 8 pop (A 탈출!) (밑바닥) [ ] (상단) ➔ 출력 결과: [ B, C, D, A ]
```
#### 1. 단계별 연동 파악 및 출력 수집 [정답 2번]
- Step 1 (push): A를 집어넣어 스택은 [A]가 됩니다.
- Step 2 (push): B를 집어넣어 스택은 [A, B]가 됩니다.
- Step 3 (pop): 맨 위의 B를 꺼냅니다. (출력 누적: B) 스택은 [A]가 됩니다.
- Step 4 (push): C를 집어넣어 스택은 [A, C]가 됩니다.
- Step 5 (pop): 맨 위의 C를 꺼냅니다. (출력 누적: B, C) 스택은 [A]가 됩니다.
- Step 6 (push): D를 집어넣어 스택은 [A, D]가 됩니다.
- Step 7 (pop): 맨 위의 D를 꺼냅니다. (출력 누적: B, C, D) 스택은 [A]가 됩니다.
- Step 8 (pop): 맨 위의 마지막 생존 데이터 A를 꺼냅니다. (최종 출력 누적: B, C, D, A) 스택은 [] 빈 상태가 됩니다.
- 이 결과를 모아보면
B, C, D, A형태를 가리키는 선택지 2번이 오차 없는 절대 정답입니다.
문제 25
제어 흐름 그래프가 다음과 같을 때 McCabe의 cyclomatic 수는 얼마인가?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번자, 수험생 여러분! 소프트웨어 개발 과목 화이트박스 테스트 단원에서 실기 단답형 단어/수치 기입형 및 필기 단골 최다 빈출 문제, '맥케이브(McCabe) 순환 복잡도(Cyclomatic Complexity)의 계산 방법론 완벽 정복' 문제입니다! 제어 흐름 그래프(Control Flow Graph)가 주어졌을 때, 1타 강사가 알려주는 초스피드 3대 계산 치트키 공식을 적용하면 어떤 고난도 복잡도 연산도 10초 만에 완수할 수 있습니다.
맥케이브 순환 복잡도 3대 계산 치트키 공식
[치트키 1: 간선과 노드 공식] ➔ V(G) = E (간선 수) - N (노드 수) + 2
[치트키 2: 면적 영역 공식] ➔ V(G) = 폐구간(닫힌 면적 영역)의 수 + 1
[치트키 3: 분기/조건 노드 공식]➔ V(G) = 분기 노드(Decision Node)의 수 + 110개 노드, 12개 간선을 가진 표준 그래프 예해 (정답 복잡도: 4)
문제 시험에서 대표적으로 출제되는 순환 복잡도 '4'의 제어 흐름 그래프를 가상으로 시각화하여 3개 공식을 전격 매칭 대조해 봅시다.
① (진입 노드)
│
▼
② (의사결정/분기 노드 1)
/ \
▼ ▼
③ ④
\ /
▼ ▼
⑤ (의사결정/분기 노드 2)
/ \
▼ ▼
⑥ ⑦
\ /
▼ ▼
⑧ (의사결정/분기 노드 3)
/ \
▼ ▼
⑨ ⑩ (종료 노드)- 분석 데이터:
- 정점/노드 수 (N) = 10개 (①~⑩)
- 간선/화살표 수 (E) = 12개
#### 1) 1번 공식 대입 (N=10, E=12):
$$
V(G) = E - N + 2 = 12 - 10 + 2 = 4
$$
#### 2) 2번 공식 대입 (닫힌 영역 분석):
* 그래프의 화살표로 인해 둘러싸인 내부 영역(폐구간)은 총 3개 영역이 형성됩니다.
$$
V(G) = \text{폐구간 수} + 1 = 3 + 1 = 4
$$
#### 3) 3번 공식 대입 (분기 조건 노드 분석):
* 나가는 화살표가 2개 이상인 분기(의사결정) 노드는 ②, ⑤, ⑧ 총 3개입니다.
$$
V(G) = \text{분기 노드 수} + 1 = 3 + 1 = 4
$$
- 어떤 공식을 채택하여 전개하든 완벽한 동일치인 4(보기 2번)가 안전하게 도출되므로, 시험장에서는 가장 정밀도가 높고 직관적인 '분기 노드 개수 + 1' 또는 '영역 수 + 1'을 적용해 신속하게 답안을 골라내는 것을 강력 권장합니다.
문제 26
다음 중 최악의 경우 검색 효율이 가장 나쁜 트리 구조는?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번자, 수험생 여러분! 소프트웨어 개발 과목에서 비선형 자료구조인 트리(Tree) 알고리즘의 핵심 중의 핵심, '검색 트리 자료구조들의 최악 시간복잡도 비교 분석' 문제입니다! 이 기출은 데이터 검색 효율성을 높이기 위해 개발된 여러 트리 중, '자가 균형(Self-Balancing)' 기능 유무에 따른 최악의 성능 차이를 꿰뚫어 보고 있는지 묻고 있습니다. 1타 강사의 일목요연한 손글씨 비교 노트로 완전히 정리해 드리겠습니다.
💡 주요 트리 검색 알고리즘별 최악(Worst Case) 성능 전격 비교
| 트리 알고리즘 종류 | 평균 검색 성능 (Average) | 최악 검색 성능 (Worst) | 최악 상황 발생 조건 및 특징 |
|---|---|---|---|
| 이진 탐색 트리 (BST) <br>[정답 ①] | $O(\log_2 N)$ | $O(N)$ | 오름차순이나 내림차순으로 이미 정렬된 데이터가 순차적으로 입력될 때, 트리가 한쪽 방향으로만 길게 늘어나는 사향(Skewed) 트리가 되어 연결 리스트(선형 탐색)와 다름없이 퇴화합니다. |
| AVL 트리 <br>[오답 ②] | $O(\log_2 N)$ | $O(\log_2 N)$ | 노드가 삽입/삭제될 때마다 좌우 부트리의 높이 차가 1 이하가 되도록 LL, RR, LR, RL 회전 연산을 수행하여 균형을 완벽히 잡습니다. |
| 2-3 트리 <br>[오답 ③] | $O(\log_2 N)$ | $O(\log_2 N)$ | 노드가 2개(2-노드) 또는 3개(3-노드)의 자식을 가질 수 있는 완벽 높이 균형 탐색 트리로 최악의 상황도 차단합니다. |
| 레드-블랙 트리 (RBT) <br>[오답 ④] | $O(\log_2 N)$ | $O(\log_2 N)$ | 노드에 Red/Black 색상을 입히고 5가지 절대 규칙을 지켜 균형을 유지합니다. 실제 Java의 TreeMap, C++의 std::map 등의 내부 엔진으로 널리 사용됩니다. |
💡 시각적 이해: 사향 트리 vs 균형 트리
예를 들어 1, 2, 3이 순서대로 들어왔을 때 두 트리의 형태는 아래와 같이 극적으로 달라집니다.
[ 사향 이진 탐색 트리 (BST) ] ➔ O(N) [ 자가 균형 이진 탐색 트리 (AVL 등) ] ➔ O(log N)
(1) (2)
\ / \
(2) (1) (3)
(3)- 이진 탐색 트리(BST)는 스스로 균형을 잡는 능력이 없기 때문에 위와 같이 일렬 종대로 데이터가 쌓이면 검색 성능이 극악으로 치닫게 됩니다.
- 반면 AVL 트리, 2-3 트리, 레드-블랙 트리 등은 균형 조건이 무너질 때 스스로 회전하거나 노드를 분할하여 완벽에 가까운 높이 균형을 상시 유지하므로 최악의 상황에서도 안정적인 $O(\log_2 N)$ 속도를 보장합니다.
"자가 균형 엔진(자가 회전 기능)이 없는 순수 '이진 탐색 트리'는 이미 정렬된 데이터가 들어오면 한쪽으로 늘어진 빗자루 모양(사향 트리)이 되어버려 검색 속도가 O(N)으로 수직 하락합니다! '최악의 경우 검색 효율 최약체는 이진 탐색 트리!' 공식을 눈에 담아 가세요!"
문제 27
코드의 간결성을 유지하기 위해 사용되는 지침으로 틀린 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번자, 수험생 여러분! 소프트웨어 개발 과목에서 클린 코드(Clean Code) 개발론 및 스타일 가이드라인 설계, '코드 가독성 및 간결성 확보 지침' 문제입니다! 실무 코딩에서도 주니어 개발자들이 실수하기 가장 좋은 이 부분은 공학 시험에서도 빠짐없이 등장하는 단골 손님입니다. 1타 강사 스타일 가이드라인 매트릭스로 명쾌하게 정리해 드리겠습니다.
💡 클린 코딩 스타일 가이드라인 완벽 분석 (Do's & Don'ts)
가독성 높은 좋은 코드를 가꾸기 위한 세부 레이아웃 정렬 표준 규칙은 다음과 같습니다.
| 구분 가이드 | 권장 모범 사례 (Do's) | 절대 피해야 할 비권장 코드 (Don'ts) |
|---|---|---|
| 줄 배치 표준 <br>[정답 관련] | 한 줄에는 오직 하나의 실행 문장(Statement)만 단독 코딩합니다. | 한 줄에 여러 문장을 세미콜론(;) 등으로 다중 작성하여 코드 밀집도를 극대화하는 행위 |
| 여백 및 들여쓰기 <br>[②번 지문] | 제어 블록에 따라 일정한 수준의 들여쓰기(Indentation)와 연산자 괄호를 붙여 논리 구조를 가시화합니다. | 들여쓰기 없이 모든 코드를 왼쪽 벽면에 바짝 붙여 중첩 깊이 파악을 어렵게 만드는 행위 |
| 공백 활용 <br>[①번 지문] | 실행문 그룹과 우측 주석(//) 사이에 적정한 공백(Space)을 주어 코드와 한글 설명을 명확하게 분리합니다. | 실행문 바로 옆에 공백 없이 주석을 밀어 붙여 가독성을 훼손하는 행위 |
| 빈 줄 배치 <br>[③번 지문] | 변수 선언부 영역과 실제 알고리즘이 가동되는 구현부 세그먼트 사이에 빈 줄을 끼워 경계를 분리합니다. | 빈 줄 하나 없이 처음부터 끝까지 빽빽하게 이어 붙여 코드 흐름 전환 인식을 방해하는 행위 |
🔍 정답 최종 규명 및 오답 소거법
- ④번 정답 분석 (틀린 설명 ➔ 정답):
- 설명: "한 줄에 최대한 많은 문장을 코딩한다"는 행위는 코드 가독성을 극악으로 떨어뜨리는 악질 배드 프랙티스(Bad Practice)입니다.
- 이 방식으로 코딩하면 코드가 심각하게 조밀해져 한눈에 이해하기 어렵고, 프로그램 실행 오류 발생 시 정확히 몇 번째 실행 명령어에서 예외가 호출되었는지 디버깅 툴로 식별하기 어렵습니다. 따라서 올바른 코딩 지침이 아닌 것은 ④번입니다.
- 나머지 참 지문 해독:
- ① 공백 사용 주석 분리 (True): 코드와 주석을 시각적으로 나누어 가독성을 확보하는 핵심 공학 지침입니다.
- ② 괄호 및 들여쓰기 적용 (True): 연산자 우선순위의 오류를 방지하고 제어 흐름의 상하 위계를 한눈에 식별할 수 있게 도와줍니다.
- ③ 빈 줄을 통한 선언/구현 구분 (True): 프로그램 논리 단위의 시작과 끝을 감지하는 이정표 역할을 합니다.
"더 적은 줄을 차지하기 위해 실행문을 한 줄에 우겨 넣는 것은 소스 코드를 읽는 타 개발자에 대한 범죄 행위입니다! '1줄 = 1명령어'라는 기본 코딩 가독성 헌법을 마음에 새기고 이 문제를 확실하게 정리해 두세요!"
문제 28
클린 코드 작성원칙에 대한 설명으로 틀린 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번자, 수험생 여러분! 소프트웨어 개발 및 형상 관리 단원에서 유지보수 비용을 수십 배 이상 낮춰주는 선진 엔지니어링 철학, '클린 코드(Clean Code)의 5대 핵심 설계 원칙' 문제입니다! 이 단원은 좋은 코드를 만드는 실무 상식이 지문으로 풀려나오므로, 1타 강사와 완벽한 가이드라인으로 정리해 봅시다.
--으
### 💡 클린 코드 (Clean Code) 란?
* 정의: 단순 가독성을 넘어 코드를 처음 보는 동료 프로그래머도 '추가 설명 없이 직관적으로 완벽히 읽고, 디버깅하고, 쉽게 수정할 수 있는 수준 높은 가독성 및 견고성을 확보한 코드'를 의미합니다.
💡 클린 코드 설계의 5대 헌법
1. 가독성 (Readability) [③번]
* 뜻: 코드 작성자뿐 아니라 누구든지 쉽게 소스 코드를 읽을 수 있도록 변수명, 클래스명, 메서드명을 표준 명명 규칙(CamelCase 등)에 입각하여 한글 해설서 수준으로 직관적으로 설계합니다.
2. 단순성 (Simplicity) [④번]
* 뜻: 한 번에 한 가지 태스크만 수행하는 소형 함수 구조를 유지하고, 과도한 중첩 조건문이나 불필요한 제어 기교를 제거하여 가장 간결하고 심플하게 소스 코드를 기술합니다.
3. 의존성 배제 (Dependency Minimization) [②번 / 오답 정답]
* 뜻: 한 군데 코드를 고쳤을 때 다른 모듈이나 다른 소스코드 파일들이 동시다발적으로 폭파하는 연쇄 사이드 이펙트를 원천 차단해야 합니다. 즉, '한 코드가 다른 모듈에 미치는 영향(영향도 및 결합도)은 무조건 제로(0)에 수렴하도록 최소화(Minimize)'하여 단독 모듈 독립성을 수호하는 것이 가장 핵심 원칙입니다!
4. 중복성 최소화 (Duplication Minimization) [①번]
* 뜻: 동일하거나 유사한 코드 단락이 프로젝트 내에 중복 기재되지 않도록 상속, 다형성, 컴포넌트화를 적극 동원하여 소스 코드의 중복을 배제합니다. (DRY - Don't Repeat Yourself 원칙)
5. 추상화 (Abstraction)
* 뜻: 하위 세부 구현 사항을 상위 계층 인터페이스나 추상 클래스로 감추어 복잡한 시스템 골격을 이해하기 쉽도록 구조화합니다.
### 🔍 정답 확인 및 선지 소거 (②번)
* ② 코드가 다른 모듈에 미치는 영향을 최대화하도록 작성한다 (틀림 - 정답):
다른 모듈에 영향을 최대화하면, 한 곳을 살짝 건드리기만 해도 전체 시스템이 마비되는 이른바 '스파게티 코드 스릴러'가 벌어지게 됩니다! 무조건 영향을 최소화하도록 설계해야 클린 코드라고 부를 수 있습니다.
문제 29
분할 정복(Divide and Conquer)에 기반한 알고리즘으로 피봇(pivot) 을 사용하며 최악의 경우 n(n-1)/2회의 비교를 수행해야 하는 정렬 (Sort)은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번자, 수험생 여러분! 소프트웨어 개발 과목 자료구조 및 알고리즘 단원에서 가장 뛰어난 정렬 성능으로 고난도 비교 분석 수리 문항으로 단독 빈출되는, '피봇 기준 분할 정복 정렬, 퀵 정렬(Quick Sort)' 문제입니다! 1타 강사와 절대 외워지는 퀵 정렬의 작동 기조와 오답 선지들의 알고리즘 특성을 분쇄해 봅시다.
퀵 정렬 (Quick Sort)의 매커니즘과 복잡도
- 정의 [정답 4번]: 찰스 앤터니 리처드 호어가 고안한 고성능 정렬 방법으로, 하나의 기준 키값인
피봇 (Pivot)을 임의 지정한 후, 피봇보다 작은 요소 군과 큰 요소 군으로 리스트를 두 영역으로 쪼개어 각각 재귀 호출하는분할 정복 (Divide and Conquer)기반 기법입니다. - 속도적 의의:
- 평균 시간 복잡도:
O(n log₂ n)으로, 모든 정렬 알고리즘 중 실무 비중과 실 작동 처리 속도가 단연 으뜸입니다. - 최악 시간 복잡도:
O(n²). (이미 리스트가 완벽하게 정렬 혹은 역정렬 상태여서 피봇이 최소/최대값으로 지속 불균형 편향 낙점될 때 발생). - 최악 비교 횟수: 이 최악의 상황에서 탐색 노드 분열 비교 횟수가 수식상 정확하게
n(n-1)/2 회에 도달합니다.
```text
[ 퀵 정렬 분할 정복 실행 과정 예시 ]
[ 5(Pivot), 3, 8, 1, 9, 2, 7 ]
│
▼ [Pivot 5 기준 분할 시행]
[ 3, 1, 2 ] ◀ 5 ▶ [ 8, 9, 7 ]
[5보다 작은 그룹] [5보다 큰 그룹]
│ │
▼ [왼쪽 재귀 정렬] ▼ [오른쪽 재귀 정렬]
[ 1, 2, 3 ] [ 7, 8, 9 ]
```
### 나머지 정렬 기법 요약 [O(n²) 복잡도 고정군]
1. 선택 정렬 (Selection Sort) [선택지 1번]:
- 루프마다 배열 내의 최솟값을 검색한 뒤 맨 앞의 자리 레코드와 1대1 교환해 나가는 전형적 비교 정렬입니다. (시간 복잡도 최선/평균/최악 무조건 $O(n^2)$).
2. 버블 정렬 (Bubble Sort) [선택지 2번]:
- 인접한 두 원소를 1대1 상호 비교하며 큰 값을 계속 뒤로 밀어 보내는 정렬입니다. (시간 복잡도 평균/최악 $O(n^2)$).
3. 삽입 정렬 (Insertion Sort) [선택지 3번]:
- 2번째 원소부터 앞선 기정렬 영역의 적절한 위치를 탐색하여 비집고 꽂아 넣는 정렬입니다. (평균/최악 $O(n^2)$, 최선의 정렬 완료 상태는 $O(n)$).
#### 1. 문제 조건 분석 및 최종 확정 [정답 4번]
- 지문 명세 단서: “분할 정복 기반... 피봇(pivot)을 사용... 최악 비교 n(n-1)/2회 수행...”
- 공학적 판결:
- '피봇 활용', '분할 정복'이라는 핵심 기술 수식과 '최악의 비교 회수 수식'을 명확히 관통하는 대상 알고리즘은 오직 Quick Sort (선택지 4번)이 유일합니다.
- 따라서 올바른 정답은 4번입니다.
문제 30
화이트박스 검사 기법에 해당하는 것으로만 짝지어진 것은? ㉠ 데이터 흐름 검사 ㉡ 루프 검사 ㉢ 동등 분할 검사 ㉣ 경계값 분석 ㉤ 원인 결과 그래프 기법 ㉥ 오류예측 기법
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번자, 수험생 여러분! 소프트웨어 개발 과목 애플리케이션 테스트 단원에서 매 과목 출제율 100% 보장 및 실기 주관식 오답률 최상위에 수렴하는 양대 기조, '화이트박스 테스트(White-Box Test) vs 블랙박스 테스트(Black-Box Test) 분류 분별' 문제입니다! 코드 내부의 논리를 파헤칠 것인가, 인풋 대비 아웃풋 결과만 점검할 것인가의 이분법을 1타 강사와 통쾌하게 공략합시다.
화이트박스 vs 블랙박스 테스트 완벽 상호 대조표
| 구분 | 화이트박스 테스트 (White-Box Test) [내부 투명] | 블랙박스 테스트 (Black-Box Test) [내부 깜깜] |
|---|---|---|
| 정의 | - 개발자 관점에서 소스 코드의 모든 제어문, 루프, 논리적 제어 흐름 구조를 분석해 검증 | - 유저/인수 테스트 관점에서 명세서를 바탕으로 기능의 입력값 대비 출력값을 검사 |
| 분류 기법 | - 기초 경로 검사 (Base Path Testing)<br>- 제어 구조 검사:<br> * 조건 검사 (Condition Testing)<br> * 데이터 흐름 검사 (Data Flow / ㉠)<br> * 루프 검사 (Loop Testing / ㉡) | - 동등 분할 검사 (Equivalence Partitioning / ㉢)<br>- 경계값 분석 (Boundary Value / ㉣)<br>- 원인-결과 그래프 기법 (Cause-Effect / ㉤)<br>- 오류 예측 기법 (Error Guessing / ㉥)<br>- 비교 검사 (Comparison) |
#### 1. 화이트박스 테스트 기법 (정답 매칭)
- ㉠ 데이터 흐름 검사 (Data Flow Testing):
- 소스 코드에 들어 있는 변수들의 정의(Definition)와 사용(Use) 위치에 초점을 맞추어 논리적인 비일치나 오작동을 추적 검증하는 화이트박스 기법입니다.
- ㉡ 루프 검사 (Loop Testing):
- 반복 구조(while, for 문 등)에 중점을 두어 단순 루프, 중첩 루프, 연결 루프 등이 경계값과 작동 주기 내에서 무한 루프에 안 빠지는지 소스 레벨에서 구조 체크하는 화이트박스 기법입니다.
- 따라서 ㉠, ㉡으로 짝지어진 보기 1번이 올바른 화이트박스 기법의 완벽 세트입니다.
#### 2. 블랙박스 테스트 기법 (오답 소거)
- ㉢ 동등 분할 검사, ㉣ 경계값 분석, ㉤ 원인 결과 그래프 기법, ㉥ 오류예측 기법:
- 이들은 모두 내부 코드를 전혀 알지 못하는 상태에서 명세서 분석을 바탕으로 인풋/아웃풋의 조건만 검사하는 독보적인 블랙박스 테스트 기법군입니다.
문제 31
버블 정렬을 이용하여 다음 자료를 오름차순으로 정렬할 경우 PASS 1의 결과는? 9, 6, 7, 3, 5
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번자, 수험생 여러분! 소프트웨어 개발 과목 알고리즘 대단원에서 매회 실기 코딩 주관식 및 필기 계산형 1순위로 호출되는 불후의 명작, '버블 정렬(Bubble Sort)의 정렬 메커니즘과 PASS 1 단계별 인덱스 스왑 시뮬레이션' 문제입니다! 버블 정렬은 물속에 들어 있는 가벼운 물거품이 수면 위로 뽀글뽀글 거품을 뿜어 올리며 부상하는 모양에서 따왔습니다. 1타 강사와 함께 초기 배열 9, 6, 7, 3, 5를 오름차순(작은 값 ➔ 큰 값)으로 가공하는 전체 과정을 전형 추적해 봅시다.
버블 정렬 PASS 1 정밀 모듈 추적표 (초기 상태: [9, 6, 7, 3, 5])
┌── 1단계: index 0 vs index 1 비교 ──────────────────────────────┐
│ [9] 와 [6] 비교 ➔ 9 > 6 이므로 두 수의 자리를 바꿉니다 (Swap) │
│ 결과 배열: [6, 9, 7, 3, 5] │
└──────────────────────────────┬─────────────────────────────────┘
▼
┌── 2단계: index 1 vs index 2 비교 ──────────────────────────────┐
│ [9] 와 [7] 비교 ➔ 9 > 7 이므로 두 수의 자리를 바꿉니다 (Swap) │
│ 결과 배열: [6, 7, 9, 3, 5] │
└──────────────────────────────┬─────────────────────────────────┘
▼
┌── 3단계: index 2 vs index 3 비교 ──────────────────────────────┐
│ [9] 와 [3] 비교 ➔ 9 > 3 이므로 두 수의 자리를 바꿉니다 (Swap) │
│ 결과 배열: [6, 7, 3, 9, 5] │
└──────────────────────────────┬─────────────────────────────────┘
▼
┌── 4단계: index 3 vs index 4 비교 ──────────────────────────────┐
│ [9] 와 [5] 비교 ➔ 9 > 5 이므로 두 수의 자리를 바꿉니다 (Swap) │
│ 결과 배열: [6, 7, 3, 5, 9] │
└────────────────────────────────────────────────────────────────┘- PASS 1 완료 후 최종 상태:
6, 7, 3, 5, 9 - 버블 정렬의 철칙: PASS 1라운드가 전부 종료되고 나면, 전체 배열에서 가장 거대한 값인
9가 맨 우측 인덱스(가장 뒤쪽)에 완전 고정되어 다음 패스 대상에서 제외됩니다. 수면 위로 거품이 완전히 떠오른 형태와 동일하죠!
버블 정렬 PASS 단계별 전체 시뮬레이션 대조
| 정렬 라운드 차수 | 가동 직후 가공 배열 데이터 | 비고 및 고정 위치 영역 |
|---|---|---|
| 초기 데이터 | [9, 6, 7, 3, 5] | 미정렬 원본 상태 |
| PASS 1 <br>[정답 4번] | [6, 7, 3, 5, 9] | 9 가 마지막 자리로 최종 고정 완료 |
| PASS 2 | [6, 3, 5, 7, 9] | 7, 9 가 뒷자리에 연쇄 고정 완료 |
| PASS 3 | [3, 5, 6, 7, 9] | 6, 7, 9 가 뒷자리에 연쇄 고정 완료 |
| PASS 4 | [3, 5, 6, 7, 9] | 모든 정렬 프로세스 완벽 종료 |
- 따라서 PASS 1의 정확한 중간 결과물은
6, 7, 3, 5, 9이므로 4번이 확실한 단독 정답입니다.
문제 32
퀵 정렬에 관한 설명으로 옳은 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 3번자, 수험생 여러분! 소프트웨어 개발 과목에서 거의 무조건 1문제가 출제되는 절대강자, '정렬(Sorting) 알고리즘의 특징' 문제입니다! 이 문제는 선지 4개에 각각 서로 다른 정렬 알고리즘의 핵심 정의가 아주 깔끔하게 정리되어 있어 보물 같은 문제입니다. 1타 강사가 한 눈에 구별할 수 있도록 칼같이 분석해 드릴게요!
문제에서 물어보는 퀵 정렬(Quick Sort)은 기준값(Pivot)을 중심으로 전체 파일을 2개의 부분 파일로 분할(Divide)하고 정복(Conquer)하며 정렬을 수행하는 고속 정렬 기법입니다. 따라서 '하나의 파일을 부분적으로 나누어 가면서 정렬한다'라고 설명한 ③번이 정확한 퀵 정렬의 특징이자 정답입니다!
나머지 오답 선지들은 어떤 정렬을 뜻하는지 단어만 매칭해 두면 시험장 시험지에서 즉시 정답을 건질 수 있습니다:
- ① 기수 정렬 (Radix Sort - 버킷 분배): 키 값을 분석하여 같은 값끼리 버킷(Bucket)에 분배했다가 합치는 방식을 반복합니다. (비교 연산을 하지 않는 독특한 정렬입니다!)
- ② 버블 정렬 (Bubble Sort - 인접한 두 키 비교): 인접한 두 레코드의 키 값을 비교하여 크기에 따라 위치를 서로 교환하는 가장 직관적이고 단순한 정렬입니다.
- ③ 퀵 정렬 (Quick Sort - 분할 정렬) [정답]: 피벗(Pivot)을 사용하고, 파일을 부분적으로 나눠가며 분할정복(Divide and Conquer) 방식으로 정렬합니다. (평균 시간복잡도 $O(N \log N)$으로 매우 빠릅니다!)
- ④ 쉘 정렬 (Shell Sort - 매개변수 h만큼 떨어진 곳 비교): 임의의 레코드 키와 매개변수(h) 간격만큼 떨어진 레코드를 비교 교환하고, 간격을 줄여가며 최종적으로 삽입 정렬을 적용하는 기법입니다.
정렬 정의 매칭 문제는 핵심 키워드 한두 개(예: '부분적으로 나눔 = 퀵', '인접한 비교 = 버블', 'h만큼 떨어짐 = 쉘', '버킷 분배 = 기수')로 3초 만에 풀 수 있으니 세트로 머릿속에 기억해 둡시다!
문제 33
EAI(Enterprise Application Integration)의 구축 유형으로 옳지 않은 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번EAI(Enterprise Application Integration)는 기업 내 서로 다른 애플리케이션 간의 데이터와 프로세스를 통합하는 기술입니다. 주요 구축 유형은 다음과 같습니다.\n1. Point-to-Point: 애플리케이션 간에 1:1로 직접 연결하는 방식입니다.\n2. Hub & Spoke: 중앙의 허브(Hub)를 중심으로 각 애플리케이션이 연결되는 중앙 집중형 방식입니다.\n3. Message Bus: 공통된 메시지 규격을 가진 버스(Bus)를 통해 서비스 간에 데이터를 주고받는 방식입니다.\n4. Tree는 계층적 구조를 의미하며, 일반적으로 EAI의 주요 통합 아키텍처 유형으로 분류되지 않습니다.
문제 34
다음 트리의 차수(degree)는?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번자, 수험생 여러분! 소프트웨어 개발 과목 자료구조 단원에서 매년 필기와 실기 가리지 않고 단골 출제되는 자료구조 트리의 핵심 속성 계산, '트리의 차수(Tree Degree) 정의 및 각 노드별 분기 계산 규칙 완벽 정복' 문제입니다! 복잡하게 꼬인 노드들을 1타 강사와 완벽한 가시적 레이아웃으로 정리해 봅시다.
트리의 자료구조 용어 완벽 가이드
- 노드의 차수 (Degree of Node): 특정 노드가 보유하고 있는 자식 노드(Child Node)의 개수입니다.
- 트리의 차수 (Degree of Tree): 트리 내에 속한 모든 노드들의 차수 값 중에서 가장 큰 최댓값(Maximum)입니다.
- 단말 노드 (Terminal Node / Leaf Node): 자식이 전혀 없는(차수가 0인) 잎사귀 노드들입니다.
```text
[ 문제의 트리 구조 시각화 ]
[ A ] ➔ 자식: B, C (차수: 2)
/ \
자식: D, E, F (차수: 3) ➔ [ B ] [ C ] ➔ 자식: G (차수: 1)
/ | \ |
[D] [E] [F] [G]
▲ ▲ ▲ ▲ (단말 노드들, 자식: 0, 차수: 0)
```
#### 1. 각 개별 노드 자식 분기점 계산 대조
- 노드 A: 자식 노드로 B, C를 거느리고 있으므로 차수는 2입니다.
- 노드 B: 밑으로 D, E, F 총 3개의 분기 자식을 직접 이끌고 가므로 차수는 3입니다.
- 노드 C: 자식으로 오직 G 하나만을 두고 있으므로 차수는 1입니다.
- 노드 D, E, F, G: 자식이 더 이상 존재하지 않으므로 차수는 0 (Leaf Nodes)입니다.
#### 2. 트리의 차수(Degree) 도출 [정답 2번]
- 정의에 의거하여 트리 안의 개별 노드 차수 값(2, 3, 1, 0) 중 가장 크기가 큰 최댓값(Max)을 선정합니다.
- 최댓값은 바로 노드 B의 차수인 3이 됩니다.
- 따라서 주어진 트리의 전체 차수(Tree Degree)는 3 (보기 2번)이 확정적입니다.
문제 35
소프트웨어 테스트와 관련한 설명으로 틀린 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번자, 수험생 여러분! 소프트웨어 테스트 기법 중 프로그램의 내부 구조를 투명하게 들여다보는 '화이트박스 테스트(White-box Test)'의 가장 대표적인 이론인 '기본 경로 테스팅(Basis Path Testing)' 문제입니다! 이 문제는 화이트박스 테스트와 블랙박스 테스트의 구체적인 핵심 개념과 특히 '기본 경로(Basis Path)'의 정확한 속성을 이해하고 있어야만 정답을 골라낼 수 있습니다. 일타 강의로 완벽히 흡수해 봅시다.
💡 화이트박스 vs 블랙박스 테스트 핵심 대비 표
시험에 무조건 출제되는 두 대립적 테스트 기법을 명확하게 마스터해 놓으세요!
| 구분 | 화이트박스 테스트 (White-box Test) [정답 관련] | 블랙박스 테스트 (Black-box Test) |
|---|---|---|
| 개념 | 프로그램의 내부 소스 코드 구조와 로직을 직접 검사 | 외부 기능 명세를 기반으로 기능의 정상 동작 여부만 검사 |
| 테스트 대상 | 소스 코드 제어 흐름, 분기, 루프, 데이터 흐름 등 | 요구사항 만족 여부, 인터페이스, 성능, 경계값 등 |
| 대표 기법 | 구문 검증, 분기(결정) 검증, 조건 검증, 기본 경로 테스팅 | 동등 분할, 경계값 분석, 원인-효과 그래프, 오류 예측 등 |
| 수행 주기 | 주로 개발자 관점 (단위 테스트 등) | 주로 사용자/테스터 관점 (시스템/인수 테스트 등) |
🔍 정답 최종 규명 및 출제 오류 매커니즘 분석
- ④번 오답 및 출제 변형 규명 (기본 경로는 싸이클을 허용하지 않는 경로를 말한다. ➔ 정답):
- 출제 왜곡 매커니즘: 출제위원은 화이트박스 테스트의 구조적 탐색 개념을 흔들기 위해, 프로그램 소스 코드 구조상 매우 자연스럽고 흔하게 나타나는 '루프(반복문)' 즉 '사이클(Cycle)'이 기본 경로(Basis Path)에서 절대 허용되지 않는다는 잘못된 제약을 슬쩍 얹어 오답 진술을 만들었습니다!
- 설명: 화이트박스 테스트의 기본 경로(Basis Path)는 흐름 그래프(Flow Graph)의 시작 노드에서 종료 노드까지의 독립적인 경로들의 집합(기저 집합)을 이룹니다. 이 경로들 중에는 반복 구조(루프)로 인해 당연히 사이클(Cycle)을 허용하고 포함하는 경로가 존재할 수 있습니다. 사이클을 허용하지 않는다면 소스 코드 내의 반복문 검증 자체를 누락하게 되므로, 이는 기본 경로의 정의에 완벽히 위배됩니다.
- 나머지 옳은 선택지 분석:
- ①번: 화이트박스 테스트는 설계된 모듈 내부의 논리적인 제어 구조, 문장, 분기 등을 누락 없이 체계적으로 하나하나 점검할 수 있는 화이트박스 고유의 강점을 명확히 기술했습니다.
- ②번: 블랙박스 테스트는 소프트웨어의 내부 로직이나 코드 구조는 완전히 무시하고 오직 입력에 따른 예상 출력값만을 비교하는 기법입니다.
- ③번: 테스트 케이스(Test Case)의 정석적인 기본 3요소는 '시험 조건(Test Condition)', '입력용 테스트 데이터(Test Data)', '예상 결과(Expected Result)'입니다. 여기에 추가적으로 테스트 절차나 환경 정보 등이 담기게 됩니다.
"기본 경로(Basis Path) 테스팅은 실제 코드의 제어 흐름을 검증하는 기법이므로 루프(Cycle)는 당연히 허용되고 포함된다! '사이클 불허'라는 낚시 문구를 통쾌하게 골라내자!"라고 정리해 둡시다!
문제 36
다음 중 최악의 경우 검색 효율이 가장 나쁜 트리 구조는?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번자, 수험생 여러분! 소프트웨어 개발 과목에서 비선형 자료구조인 트리(Tree) 알고리즘의 핵심 중의 핵심, '검색 트리 자료구조들의 최악 시간복잡도 비교 분석' 문제입니다! 이 기출은 데이터 검색 효율성을 높이기 위해 개발된 여러 트리 중, '자가 균형(Self-Balancing)' 기능 유무에 따른 최악의 성능 차이를 꿰뚫어 보고 있는지 묻고 있습니다. 1타 강사의 일목요연한 손글씨 비교 노트로 완전히 정리해 드리겠습니다.
💡 주요 트리 검색 알고리즘별 최악(Worst Case) 성능 전격 비교
| 트리 알고리즘 종류 | 평균 검색 성능 (Average) | 최악 검색 성능 (Worst) | 최악 상황 발생 조건 및 특징 |
|---|---|---|---|
| 이진 탐색 트리 (BST) <br>[정답 ①] | $O(\log_2 N)$ | $O(N)$ | 오름차순이나 내림차순으로 이미 정렬된 데이터가 순차적으로 입력될 때, 트리가 한쪽 방향으로만 길게 늘어나는 사향(Skewed) 트리가 되어 연결 리스트(선형 탐색)와 다름없이 퇴화합니다. |
| AVL 트리 <br>[오답 ②] | $O(\log_2 N)$ | $O(\log_2 N)$ | 노드가 삽입/삭제될 때마다 좌우 부트리의 높이 차가 1 이하가 되도록 LL, RR, LR, RL 회전 연산을 수행하여 균형을 완벽히 잡습니다. |
| 2-3 트리 <br>[오답 ③] | $O(\log_2 N)$ | $O(\log_2 N)$ | 노드가 2개(2-노드) 또는 3개(3-노드)의 자식을 가질 수 있는 완벽 높이 균형 탐색 트리로 최악의 상황도 차단합니다. |
| 레드-블랙 트리 (RBT) <br>[오답 ④] | $O(\log_2 N)$ | $O(\log_2 N)$ | 노드에 Red/Black 색상을 입히고 5가지 절대 규칙을 지켜 균형을 유지합니다. 실제 Java의 TreeMap, C++의 std::map 등의 내부 엔진으로 널리 사용됩니다. |
💡 시각적 이해: 사향 트리 vs 균형 트리
예를 들어 1, 2, 3이 순서대로 들어왔을 때 두 트리의 형태는 아래와 같이 극적으로 달라집니다.
[ 사향 이진 탐색 트리 (BST) ] ➔ O(N) [ 자가 균형 이진 탐색 트리 (AVL 등) ] ➔ O(log N)
(1) (2)
\ / \
(2) (1) (3)
(3)- 이진 탐색 트리(BST)는 스스로 균형을 잡는 능력이 없기 때문에 위와 같이 일렬 종대로 데이터가 쌓이면 검색 성능이 극악으로 치닫게 됩니다.
- 반면 AVL 트리, 2-3 트리, 레드-블랙 트리 등은 균형 조건이 무너질 때 스스로 회전하거나 노드를 분할하여 완벽에 가까운 높이 균형을 상시 유지하므로 최악의 상황에서도 안정적인 $O(\log_2 N)$ 속도를 보장합니다.
"자가 균형 엔진(자가 회전 기능)이 없는 순수 '이진 탐색 트리'는 이미 정렬된 데이터가 들어오면 한쪽으로 늘어진 빗자루 모양(사향 트리)이 되어버려 검색 속도가 O(N)으로 수직 하락합니다! '최악의 경우 검색 효율 최약체는 이진 탐색 트리!' 공식을 눈에 담아 가세요!"
문제 37
순서가 있는 리스트에서 데이터의 삽입(Push), 삭제(Pop)가 한 쪽 끝에서 일어나며 LIFO(Last_In-First-Out)의 특징을 가지는 자료 구조는?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 3번자, 수험생 여러분! 소프트웨어 개발 과목 기본 자료구조 단원에서 컴퓨터 공학뿐 아니라 실무 소프트웨어 개발 알고리즘 전 영역의 주춧돌인 1초 보증 상식, '스택(Stack) 구조의 동작 메커니즘과 LIFO 후입선출 특성 및 연산 식별' 문제입니다! 스택은 함수 호출 흐름(Call Stack), 되돌리기(Undo) 등의 시스템적 뼈대를 이룹니다. 1타 강사와 입체적으로 격파해 봅시다.
스택(Stack) vs 큐(Queue) 핵심 인터랙션 시각화 비교
#### 1. 스택 (Stack) [정답 3번]
* 메커니즘: 상단이 뚫려 있는 프링글스 통 모양입니다. 한쪽 입구(Top)로만 입력과 출력이 동시에 이루어집니다.
* LIFO (Last-In First-Out, 후입선출): 가장 마지막에 쑤셔 넣은 데이터가 꺼낼 때는 맨 먼저 튀어나옵니다.
* 주요 연산: Push (데이터 집어넣기), Pop (맨 위 데이터 꺼내기), Peek (꺼내지 않고 위에서 흘끗 보기).
스택 (Stack) ➔ [ LIFO ] 큐 (Queue) ➔ [ FIFO ]
┌───────────────────┐ ┌─────────────────────────────────┐
Pop ◀ [ 데이터 C ] ◀ Push Out ◀ [ 데이터 A ][ 데이터 B ][ 데이터 C ] ◀ In
│ [ 데이터 B ] │ └─────────────────────────────────┘
│ [ 데이터 A ] │ * 앞(Front)에서 삭제, 뒤(Rear)에서 삽입
└───────────────────┘ * 선입선출 (First-In First-Out)
* 한쪽 끝(Top)에서만 입출력#### 2. 큐 (Queue) [보기 15번 / 실제 4번]
* 메커니즘: 양방향이 뚫린 대형 파이프 모양입니다. 뒤쪽(Rear)으로만 데이터가 들어오고, 앞쪽(Front)으로만 데이터가 탈출합니다.
* FIFO (First-In First-Out, 선입선출): 맛집 대기 줄처럼 가장 먼저 온 손님이 가장 먼저 나갑니다.
* 주요 연산: EnQueue (입력), DeQueue (출력).
나머지 비선형 자료구조
- Tree (트리, 보기 12번 / 실제 1번): 부모-자식 간의 계층적 구조를 표현하는 대표적 2차원 비선형 자료구조입니다.
- Graph (그래프, 보기 13번 / 실제 2번): 노드(Vertex)와 간선(Edge)의 관계망으로 복잡한 토폴로지를 묘사하는 무방향/유방향 비선형 자료구조입니다.
문제 38
프로젝트에 내재된 위험 요소를 인식하고 그 영향을 분석하여 이를 관리하는 활동으로서, 프로젝트를 성공시키기 위하여 위험 요소를 사전에 예측, 대비하는 모든 기술과 활동을 포함하는 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번자, 수험생 여러분! 정보시스템 구축 관리 및 소프트웨어 공학 프로젝트 관리 파트에서 최근 국가 직무 능력 표준(NCS) 실무 가이드라인에서 극단적으로 강조하는 기출 단골 용어, '프로젝트 위험 분석 및 관리(Risk Analysis / Management)의 정의 식별' 문제입니다! 대형 시스템 통합(SI) 프로젝트의 70%가 실패하는 원인을 진단하고 선제적 백업 플랜(Contingency Plan)을 수립하는 것은 프로 엔지니어의 상징입니다. 1타 강사와 완벽하게 해독해 봅시다.
프로젝트 위험 분석(Risk Analysis / Management)의 3단계 활동
1단계. [위험 식별 (Identification)]
➔ 무엇이 우리 프로젝트를 지연시키고 중단시킬 수 있는가? (기술 부족, 도메인 변경 등)
▼
2단계. [위험 평가 및 분석 (Analysis & Assessment)]
➔ 해당 위험이 터질 확률(Probability)과 터졌을 때의 손실 파급력(Impact)을 수치화
▼
3단계. [위험 제어 및 대비 (Control & Mitigation)]
➔ 회피(Avoid), 완화(Mitigate), 수용(Accept), 전가(Transfer) 등의 전략 백업 플랜 작동각 보기 지문 용어 및 성격 정합성 비교표
| 보기 영어 용어 명칭 | 한글 개념 정식 명칭 | 핵심 임무 및 고유 식별 단서 |
|---|---|---|
| Critical Path Method (CPM) | 임계 경로법 | 각 작업 단계별 선후 관계 네트워크 노드를 구성하고, 프로젝트를 끝낼 수 있는 '가장 최장의 전체 소요 시간 경로(임계 경로)'를 계산하여 통제하는 기법. |
| Risk Analysis (RA) <br>[정답 2번] | 위험 분석 | 내재된 유무형 위험 요소를 인지·예측하고 그 영향도를 사전에 예산/기술적 백업 시나리오로 대비하는 통합적 통제 활동. |
| Work Breakdown Structure (WBS) | 작업 분할 구도 | 개발 프로젝트 전체를 원활한 관리가 가능하도록 하위의 구체적인 소작업 단위(Work Package)들로 트리형 구조 분할하여 가시화한 일정 도표. |
| Waterfall Model | 폭포수 모형 | 분석, 설계, 개발, 구현, 시험, 유지보수가 폭포수처럼 다음 단계로 순차 하향 전이되는 전통적 소프트웨어 수명 주기 모델. |
최종 진단
- 문제 본문의 설명 구절인
“프로젝트에 내재된 위험 요소를 인식하고 그 영향을 분석하여 이를 관리하는 활동”,“사전에 예측, 대비하는 기술”은 명백히 위험에 대응하는Risk Analysis(보기 2번)을 가리키고 있습니다.
문제 39
외계인 코드(Alien Code)에 대한 설명으로 옳은 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번자, 수험생 여러분! 소프트웨어 개발 과목 애플리케이션 테스트 및 소프트웨어 품질 단원에서 레거시 유지보수 생산성을 극악으로 격하시키는 기술 부채의 전형적 멸칭으로 자주 등장하는, '설명서와 원작자가 유실된 미스터리 코드, 외계인 코드(Alien Code)' 문제입니다! 1타 강사와 완벽하게 코드 오염 단어들을 대립 정리해 봅시다.
기출 핵심 비위생적 코드 및 악성 소스 유형 분석
1. 외계인 코드 (Alien Code) [정답 2번]:
- 정의: 아주 아주 오래전(수십 년 전) 개발되었으나 원작 설계자가 퇴사 또는 유실되었고, 시스템 구조를 분석할 유지보수 명세서나 설계 문서, API 다이어그램이 전무하여 코드 해독이 전면 불가능한 레거시 코드를 조롱하는 전문 용어입니다.
- 특성: 분석이 안 되므로 작은 마이너 패치 하나만 행해도 전체 시스템이 연쇄 오작동할 위험(Regression)이 크며, 어쩔 수 없이 역공학(Reverse Engineering)을 돌려 명세서를 재구성해야 하는 엄청난 공학 비용을 동반합니다.
2. 스파게티 코드 (Spaghetti Code) [선택지 1번 관련]:
- 정의: 복잡한 제어 흐름(goto 문, 난잡한 중첩 루프, 전역 변수 무차별 오용 등)으로 인해 실타래나 스파게티 면처럼 앞뒤 맥락이 지독하게 꼬인 이해하기 어려운 난잡한 코드를 뜻합니다. (문서는 존재하더라도 로직 자체가 파괴된 형태입니다.)
3. 데드 코드 (Dead Code):
- 정의: 작성은 되어 있으나 시스템 실행 흐름 중 절대로 도달하거나 가동될 일이 없이 메모리 공간만 낭비하는 무의미한 죽은 코드입니다.
#### 1. 지문 조건 해독 및 정답 확정 [정답 2번]
- 지문 질문: “외계인 코드(Alien Code)에 대한 설명으로 옳은 것은?”
- 공학적 판결:
- '아주 오래되었고', '참고문서나 개발자가 없어 유지보수가 지극히 난해한 코드'는 학술상 100% 외계인 코드(Alien Code, 선택지 2번)의 공식 정의 규격과 정합합니다.
- 프로그램 로직이 꼬여 복잡한 것은 스파게티 코드에 해당합니다.
- 따라서 올바른 정답은 선택지 2번입니다.
문제 40
EAI(Enterprise Application Integration)의 구축유형에 대한 설명으로 틀린 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번자, 수험생 여러분! 소프트웨어 개발 과목 애플리케이션 통합 단원에서 실무 아키텍처 연계의 뼈대를 묻는 빈출 영역이자 필기/실기 불문 출제 비중 초특급인, 'EAI(Enterprise Application Integration) 4대 구축 위상(Topology) 유형 비교' 문제입니다! 각각의 연동 도식을 1타 강사와 통쾌하게 공략해 봅시다.
EAI (Enterprise Application Integration) 4대 토폴로지
1. Point-to-Point (보기 11번 / 실제 1번):
- 별도의 미들웨어 없이 1:1로 직접 애플리케이션들을 맞연결합니다.
- 구현은 단순하나 통합할 대상이 늘어날수록 연결선이 기하급수적으로 폭발하여 유지보수가 불가능해집니다.
2. Hub & Spoke (보기 12번 / 실제 2번):
- 단일 접점 역할을 수행하는 중앙 허브(Hub)를 두고, 각 애플리케이션은 바퀴살(Spoke)처럼 연결하는 성형(Star) 구조입니다.
- 데이터 전송 관리가 집중화되나, 중앙 허브가 뻗으면 전체 연계망이 마비되는 단일 장애점(SPOF; Single Point of Failure) 한계가 있습니다.
3. Message Bus / ESB (보기 13번 / 실제 3번):
- 애플리케이션 사이에 공유 버스 노선(미들웨어)을 배치하여 확장성과 대용량 데이터 전송을 지극히 유연하게 설계한 버스형 아키텍처입니다.
4. Hybrid (보기 14번 / 실제 4번):
- 개별 서브 그룹 내부에서는 집중 제어가 쉬운 Hub & Spoke 방식을 가져가고, 이 그룹들 상호 간을 연결할 때는 뛰어난 유연성을 갖춘 Message Bus 방식을 적용해 대규모 분산 환경을 효율화한 혼합 절충 방식입니다.
#### 2. 오류 서술 추출 및 정답 판단 [정답 4번]
- 틀린 선지 (보기 14번 / 실제 4번): “Hybrid는 Point-to-Point와 Hub&Spoke의 혼합 방식이다.”
- 공학적 팩트:
- 앞서 정의했듯이, 하이브리드(Hybrid) 유형은 연결선 관리가 최악인 Point-to-Point를 혼합에 결코 기용하지 않습니다.
- 오직 Hub & Spoke(허브 앤 스포크)와 Message Bus(메시지 버스) 방식을 조합하는 것이 규격입니다.
- 따라서 Point-to-Point와의 혼합으로 왜곡하여 서술한 선택지 4번이 완전한 거짓이자 정답입니다.
문제 41
릴레이션 R1에 속한 애튜리뷰트의 조합인 외래키를 변경하려면 이를 참조하고 있는 릴레이션 R2의 기본키도 변경해야 하는데 이를 무엇이라 하는가?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번자, 수험생 여러분! 데이터베이스 핵심 중의 핵심이자 필기와 실기를 불문하고 서술형 단답형 단골 기출 키워드인 '참조 무결성 제약 조건(Referential Integrity Constraint)' 문제입니다! 데이터베이스의 데이터가 깨지지 않고 일관성을 가지게 만드는 원리를 완벽 정리해 드릴 테니 눈여겨봐 두세요!
데이터베이스 무결성(Integrity)이란 저장된 데이터 값의 정확성과 신뢰성을 확보하는 정밀 장치입니다. 그중에서도 가장 중요하게 다뤄지는 2대 무결성은 반드시 암기해 두어야 합니다:
💡 시험에 꼭 나오는 2대 핵심 무결성 공식
1. 참조 무결성 (Referential Integrity) [정답]
* 공식: '기본키와 외래키의 상호 참조 관계 규율'
* 설명: 릴레이션 R1에 속한 외래키(Foreign Key)는 참조하고 있는 릴레이션 R2의 기본키(Primary Key) 값과 반드시 일치해야 하거나, 아예 존재하지 않는다는 뜻의 NULL 값이어야 합니다.
* 문제 대치: 따라서 부모 테이블인 R2의 기본키를 바꾸거나 지울 때 자식 테이블인 R1의 외래키도 함께 바꾸는 옵션(CASCADE, RESTRICT 등)을 지정해 무결성을 지키는데, 이 메커니즘을 참조 무결성이라 칭합니다.
2. 개체 무결성 (Entity Integrity)
* 공식: '기본키(Primary Key)는 절대 NULL이 될 수 없고 중복될 수 없음'
* 설명: 한 테이블의 행들을 유일하게 식별할 키 값(기본키)은 빈 값(NULL)을 허용하지 않고, 유일한 고유값이어야 함을 명시합니다.
나머지 선지들도 점검해 봅시다:
* 고유 무결성 (Unique Integrity): 특정 속성값들이 서로 다른 고유값을 가져야 함을 명시하는 조건입니다.
* 널 제약성 (Null Constraint): 특정 속성에 빈 값(Null)이 올 수 있는지 여부를 규정하는 단순 선언입니다.
데이터베이스 기본 키워드로 매번 활약하는 '외래키가 기본키를 참조하며 일어나는 무결성 관계' = '참조 무결성' 공식은 절대로 놓쳐선 안 됩니다!
문제 42
DELETE 명령에 대한 설명으로 틀린 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번자, 수험생 여러분! 데이터베이스 구축 과목에서 정말 오랫동안 변치 않고 면접 단골이자 기출 킬러로 군림하는 고전 테마, '데이터 삭제 SQL 명령어 DELETE, TRUNCATE, DROP의 파괴력 범위 및 특징 대조' 문제입니다! 이 문제는 조건 없이 모든 데이터를 비우는 DELETE 동작이 뼈대 구조 정보까지 전산실 디렉토리에서 소멸시키는 DROP TABLE과 동급인가라는 결정적인 맹점을 묻고 있습니다. 1타 강사의 일목요연하고 압도적인 3대 삭제 명령 비교 분석표로 완벽 분쇄해 드리겠습니다.
💡 SQL 데이터 삭제 명령 3대장 전격 대조 분석표 (②번이 오답인 이유)
데이터베이스 테이블 속 요소를 지울 때는 파괴 범위, 언어 제어 성격(DML/DDL), 롤백(Rollback) 세이브포인트 가능 유무를 무조건 기각 검사해야 합니다.
| 비교 핵심 기준 지표 | DELETE (데이터 조작어 - DML) <br>[본문 출제 명령어] | TRUNCATE (데이터 정의어 - DDL) | DROP TABLE (데이터 정의어 - DDL) |
|---|---|---|---|
| 삭제 물리 범위 | 테이블의 행(Row)만 선택 삭제.<br>(빈껍데기 스키마 구조는 온전 보존) | 테이블의 모든 행 고속 초기화.<br>(빈껍데기 스키마 구조는 온전 보존) | 테이블 스키마 구조와 데이터를 <br>메모리/디스크에서 완전히 철거(말소). |
| SQL 분류 범주 | DML (Data Manipulation) <br>[보기 ④ 참] | DDL (Data Definition) | DDL (Data Definition) |
| WHERE 조건절 | 지원 가능 [보기 ①, ⑤ 참]<br>(원하는 행만 골라서 도려냄) | 지원 불가<br>(무조건 전체 테이블 초기화) | 지원 불가<br>(무조건 전체 소멸) |
| 트랜잭션 로그 및 롤백 | 행단위 로그를 찍으므로 느리지만,<br>Rollback 복구가 완벽 가능합니다. | 시스템 부하 방지를 위해 로그를 최소화하므로, Rollback 복구 불가. | 스키마 사전(Catalog)을 날려버려 로그가 없으므로, Rollback 복구 완전 불가. |
- ②번의 명확한 오류 반박: WHERE 조건 없이
DELETE FROM 사원;을 날리면 사원 데이터는 싹 비워지지만, 사원 테이블 구조(사원ID, 사원명, 급여 등 컬럼 스펙)는 데이터베이스 카탈로그에 멀쩡하게 백업 생존해 있습니다. 반면DROP TABLE 사원;은 구조 자체를 허물어 버려 다시 사원 조회를 치면 "테이블이 존재하지 않습니다" 에러를 유발합니다. 따라서 두 명령의 효과가 동일하다는 진술은 새빨간 거짓말입니다.
"DELETE는 방 안의 '가구들(데이터 행)'만 마당으로 끄집어내 비우는 가구 정리이고, DROP은 해머로 '건물 자체(테이블 뼈대)'를 철거해 나대지로 환원시키는 무서운 작업입니다! 가구를 다 버린다고 건물이 무너지진 않듯이, DELETE를 조건 없이 쓴다고 DROP과 같아지진 않습니다!"
문제 43
SQL의 명령을 사용 용도에 따라 DDL, DML, DCL로 구분할 경우, 그 성격이 나머지 셋과 다른 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번수험생 여러분! 데이터베이스 구축 과목의 관계 데이터베이스 언어(SQL) 분류 단원에서 기출 빈도가 하늘을 찌르는 SQL 명령어의 3대 범주 분류 문제입니다. 단순 무식하게 단어를 외우지 말고, 각 역할군이 테이블 개체를 건드리는지, 테이블 속 튜플을 건드리는지, 아니면 통제 권한을 건드리는지를 명쾌하게 파악하셔야 합니다.
SQL 명령어의 3대 용도별 범주 정리
1. DDL (Data Definition Language - 데이터 정의어)
- 역할: 스키마, 도메인, 테이블, 뷰, 인덱스 등 데이터베이스 개체 구조 자체를 생성, 변경, 삭제합니다.
- 대응 명령어: CREATE (생성), ALTER (구조 정의 변경), DROP (완전 파괴 삭제), TRUNCATE (데이터 구조만 남기고 전량 초고속 비우기).
2. DML (Data Manipulation Language - 데이터 조작어)
- 역할: 테이블 내부에 실제로 존재하는 인스턴스 튜플(데이터 레코드)들을 검색, 삽입, 갱신, 삭제합니다.
- 대응 명령어: SELECT (조회), INSERT (삽입), UPDATE (수정), DELETE (튜플 선별 삭제).
3. DCL (Data Control Language - 데이터 제어어)
- 역할: 데이터 보안 권한 부여, 무결성 유지, 병행 제어, 트랜잭션 회복 및 반영 처리를 제어합니다.
- 대응 명령어: GRANT (권한 허가 부여), REVOKE (권한 박탈 회수), COMMIT (완료 트랜잭션 물리적 반영), ROLLBACK (오류 시 작업 전체 회복 취소).
보기 상세 분석
- 1번 SELECT: 테이블 내의 튜플 데이터를 검색해 조회하므로 DML(데이터 조작어)입니다.
- 2번 UPDATE: 테이블의 특정 컬럼 데이터를 실시간으로 수정하므로 DML(데이터 조작어)입니다.
- 3번 INSERT: 테이블에 새로운 데이터 행을 삽입하므로 DML(데이터 조작어)입니다.
- 4번 GRANT: 데이터베이스 객체에 접근 권한을 유저에게 부여하여 통제 보안을 관장하므로 DCL(데이터 제어어)에 속합니다.
- 따라서 SELECT, UPDATE, INSERT의 3인방은 데이터 자체를 주무르는 DML 패밀리이고, GRANT만 홀로 관리 권한을 조율하는 DCL이므로 성격이 완전히 다릅니다.
문제 44
DML에 해당하는 것으로만 나열된 것은? ㉠ SELECT ㉡ UPDATE ㉢ INSERT ㉣ GRANT
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번자, 수험생 여러분! 데이터베이스 구축 과목 SQL 활용 단원에서 실기와 필기 주관식 서술형 통틀어 고빈출 탑티어 절대 보증작, 'SQL 명령어의 3대 계통 분류(DDL vs DML vs DCL) 완전 정복' 문제입니다! SQL은 데이터베이스를 조작하고 정의하는 공인 관계 질의 언어입니다. 명령어별 가용 계통과 4대 문법 체계를 1타 강사가 일망타진해 정립해 주겠습니다.
SQL 명령어 3대 메인 카테고리 완전 해부도
| SQL 분류 영역 | 영문 및 국문 정형 이름 | 대표 수험 키워드 명령어 모음 (치트키 암기법) | 데이터베이스 물리적 작동 범위 |
|---|---|---|---|
| DDL | Data Definition Language <br>(데이터 정의어) | CADT (캐드트)<br>- CREATE (테이블/뷰 생성)<br>- ALTER (테이블 구조 변경)<br>- DROP (물리적 삭제)<br>- TRUNCATE (초고속 테이블 초기화) | 스키마 구조 자체를 빌딩하고 변경 또는 해체하는 뼈대 가공어 |
| DML | Data Manipulation Language <br>(데이터 조작어) | 세인업델 (정답 1번)<br>- SELECT (조회/검색) ➔ ㉠<br>- INSERT (데이터 삽입) ➔ ㉢<br>- UPDATE (데이터 수정) ➔ ㉡<br>- DELETE (데이터 행 삭제) | 사용자가 테이블 내부 튜플 실체 데이터와 활발히 소통하는 도구 |
| DCL | Data Control Language <br>(데이터 제어어) | 그리코롤 (그릴코롤)<br>- GRANT (권한 부여) ➔ ㉣<br>- REVOKE (권한 회수)<br>- COMMIT (영구 반영/TCL)<br>- ROLLBACK (이전 회귀/TCL) | 데이터의 보안성, 무결성 제어 및 병행 제어, 트랜잭션 수호어 |
보기 조건 박스 정합성 분석
- ㉠ SELECT: 데이터 조작어(DML)에 속함 (O)
- ㉡ UPDATE: 데이터 조작어(DML)에 속함 (O)
- ㉢ INSERT: 데이터 조작어(DML)에 속함 (O)
- ㉣ GRANT: DBA가 사용자에게 객체 접근 권한을 선사하는 데이터 제어어(DCL)에 속함 (X)
- 따라서 ㉠, ㉡, ㉢만 DML에 완벽히 매칭되어 성립하므로, 1번이 확실한 단독 정답입니다.
문제 45
다음 설명의 ( ) 안에 들어갈 내용으로 적합한 것은? 후보키는 릴레이션에 있는 모든 튜플에 대해 유일성과 ( )을 모두 만족시켜야 한다.
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번수험생 여러분! 데이터베이스 구축 과목의 관계형 데이터 모델 및 키(Key) 제약조건 단원에서 최상위 출제 빈도를 사수하고 있는 후보키(Candidate Key)의 필수 성립 조건 판별 문제입니다. 모든 키 분류의 원천이 되는 후보키가 보증해야 할 2대 축인 유일성과 최소성의 물리적 정의를 칼같이 정립해 두셔야 합니다.
관계형 데이터베이스 키(Key) 속성 완벽 해부
graph TD
A["관계 데이터 모델 키 (Key) 특징"] --> B["1. 유일성 (Uniqueness)"]
A --> C["2. 최소성 (Minimality)"]
B --> B1["하나의 릴레이션 내 모든 튜플은 키값으로 유일하게 고유 식별 가능"]
C --> C1["키를 구성하는 속성들 중 꼭 필요한 원소만 포함 (불필요 군더더기 배제)"]#### 후보키 (Candidate Key) 만족 규칙
1. 유일성 (Uniqueness): 하나의 릴레이션 내에서 서로 다른 두 개의 튜플(행)이 동일한 키값을 공유할 수 없습니다. 즉, 키값만으로 테이블 내 임의의 한 행을 오차 없이 타겟팅(식별)할 수 있어야 합니다.
2. 최소성 (Minimality): 튜플을 고유하게 식별하는 데 꼭 필요한 속성(Attribute)들로만 키를 간소화하여 구축해야 합니다. 즉, 키에서 임의의 한 속성을 탈락시키면 유일성 식별 기능이 즉시 소멸해 버리는 최소 한도의 구성이어야 합니다.
#### 다른 키들과의 조건 대조
- 슈퍼키 (Super Key): 유일성은 만족하지만, 최소성은 만족하지 못하는 키입니다. (예: 학번 + 주민번호 + 이름 의 조합은 고유 식별은 되지만 '이름' 등 군더더기가 껴있어 최소성에 어긋납니다.)
- 기본키 (Primary Key): 후보키 중에서 특별히 지정되어 테이블의 튜플 대표 신분증 역할을 하는 키입니다. (유일성, 최소성 모두 만족, NULL 허용 안 됨)
- 대체키 (Alternate Key): 후보키 중 기본키로 낙점받지 못하고 남겨진 나머지 예비 키들입니다.
보기 상세 분석
- 1번 중복성: 튜플 구별을 방해하는 해악적 원소로 키 설계 원리와 상충됩니다. (오답)
- 2번 최소성: 후보키 정의 명제인 '유일성과 (최소성)을 모두 만족해야 한다'에 정확하게 들어맞는 표준 용어이자 완벽한 정답입니다.
- 3번 참조성: 외래키가 피참조 테이블의 기본키를 가리킬 때 작동하는 참조 무결성 관련 구절입니다. (오답)
- 4번 동일성: 튜플 간의 일치 여부와 관련된 일반 수사어구로 데이터 모델링 키 명세가 아닙니다. (오답)
문제 46
player 테이블에는 player_name, team_id, height 컬럼이 존재한다. 아래 SQL문에서 문법적 오류가 있는 부분은?
(1) SELECT player_name, height (2) FROM player (3) WHERE team_id = ‘korea’ (4) AND height BETWEEN 170 OR 180;선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번수험생 여러분! 데이터베이스 구축 과목의 SQL 응용 및 DML 질의 작성 단원에서 문법 정오 판단형으로 매우 빈번하게 출제되는 BETWEEN 연산자의 문법 규칙 감별 문제입니다. 조건절 내 범위 필터 연산자의 표준 결합 키워드가 무엇인지를 직관적으로 알고 있어야 단 3초 만에 문제를 해치울 수 있습니다.
SQL 범위 검색 연산자 BETWEEN 분석
- 정의: 지정한 하한값과 상한값 사이에 존재하는 레코드를 한꺼번에 검색하는 조건절 키워드입니다.
- 표준 구문 서식:
```sql
열이름 BETWEEN 하한값 AND 상한값
```
- 논리 연산자(AND/OR)와의 치환 매핑:
- height BETWEEN 170 AND 180 구문은 내부적으로 height >= 170 AND height <= 180 이라는 논리 곱(AND) 조건식으로 자동 매핑되어 해석됩니다.
- 따라서 BETWEEN 절 내부의 경계를 나눌 때는 반드시 AND 연결 수식어를 기용해야 하며, 임의로 OR을 쓰는 것은 무조건 컴파일/구문 오류를 초래합니다.
각 코드 라인 심층 감정
- (1) SELECT player_name, height: 조회 대상 필드명들을 정상적으로 지정한 열 목록입니다. (정상)
- (2) FROM player: 원본 대상 테이블명을 올바르게 명시하였습니다. (정상)
- (3) WHERE team_id = ‘korea’: 문자열 값 조건 비교식을 부합되게 기입하였습니다. (정상)
- (4) AND height BETWEEN 170 OR 180;: 범위 연산자로 BETWEEN을 사용했으나, 중간 연결 연산자에
AND대신OR을 기용하여 SQL 엔진이 인식하지 못하는 치명적인 구문 문법 오류를 범했으므로 잘못된 부분이자 정답입니다.
문제 47
트랜잭션의 주요 특성 중 하나로, 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없음을 의미하는 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 3번자, 수험생 여러분! 데이터베이스 구축 과목에서 트랜잭션(Transaction) 설계 이론의 근간이자 필기/실기 약술형 1순위 단골 족보, '트랜잭션의 4대 핵심 특성 (ACID 성질)' 문제입니다! 트랜잭션이란 데이터베이스의 상태를 변경시키는 일련의 논리적 작업 단위입니다. 완벽한 트랜잭션을 담보하기 위한 4대 황금 특성인 ACID를 1타 강사 암기노트로 한 방에 요약 정리해 드리겠습니다.
💡 트랜잭션의 4대 황금 법칙: ACID 속성 완전 비교
| ACID 영문 속성명 | 국문 명칭 | 주요 공학적 규칙 및 상태 | 직관적인 실무 비유 노트 |
|---|---|---|---|
| Atomicity | 원자성 | 트랜잭션 내의 연산들은 전부 성공(Commit)하여 반영되거나, 아니면 하나도 반영되지 않고 취소(Rollback)되어야 합니다 (All or Nothing). | 송금 중 전산 마비 시 내 돈이 허공으로 사라지지 않고 이전 계좌 잔고로 100% 복원되는 성질 |
| Consistency | 일관성 | 트랜잭션 실행이 완결된 후의 데이터베이스는 무결성 제약조건, 비즈니스 룰을 항상 모순 없이 일관되게 유지해야 합니다. | 마이너스 통장 약정이 없는 계좌 잔고는 어떤 송금 연산 뒤에도 절대 0원 미만이 될 수 없는 규칙 일치 |
| Isolation <br>[정답 ③] | 고립성 / 격리성 | 둘 이상의 트랜잭션이 동시에 가동될 때, 임의의 트랜잭션 중간 연산 데이터에 다른 트랜잭션이 끼어들거나 값을 가로챌 수 없습니다. | 동시에 예매 버튼을 누를 때 각 트랜잭션 사이에 불투명한 장벽을 쳐서 서로 간섭하지 못하게 격리하는 것 |
| Durability | 영속성 / 지속성 | 성공적으로 끝난(Commit) 트랜잭션의 결과는 시스템에 치명적인 하드웨어 장애가 터져도 영구히 기록 보존되어야 합니다. | 이체 성공 버튼을 누르자마자 전산실이 정전되어도 내 예금 잔액이 유실되지 않고 안전하게 보존되는 백업 능력 |
🔍 정답 판정 및 보기 분석
- ③ Isolation (고립성/격리성/독립성 - 정답):
- 문제에서 "어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없음"이라고 선언하고 있습니다. 이는 동시에 실행되는 여러 작업들이 서로 간섭하여 데이터 정합성을 해치는 상태를 철저히 예방하는 Isolation의 정확한 정의입니다. DB 엔진은 이를 위해 로킹(Locking)이나 MVCC 등의 고도의 병행 제어를 수행합니다.
- ① Log (오답):
- 트랜잭션의 성질이 아니며, 데이터베이스에 발생한 변경 이력을 순차적으로 기록하는 시스템 파일(회복 기법의 핵심 기초 자원)입니다.
- ② Consistency (일관성 - 오답):
- 데이터베이스 시스템이 고정된 규칙을 계속 지키는 일관된 상태를 의미합니다.
- ④ Durability (영속성 - 오답):
- 완료된 데이터는 하드디스크 등에 반영되어 영구히 소멸하지 않고 살아남는 특성입니다.
"ACID 4형제는 실기 약술형 단답형 단골 족보입니다! '다 안 되면 다 취소해라!' ➔ 원자성(Atomicity)! '이랬다저랬다 모순되면 안 된다!' ➔ 일관성(Consistency)! '너 일하는 데 옆에서 참견 못 하게 커튼 쳐라!' ➔ 격리성(Isolation)! '한번 끝난 건 영원히 기억하자!' ➔ 영속성(Durability)! 이 명쾌한 뇌새김 비유 키워드를 꼭 숙지해 가세요!"
문제 48
관계형 데이터베이스에서 다음 설명에 해당하는 키(Key)는?
- 한 릴레이션 내의 속성들의 집합으로 구성된 키로서, 릴레이션을 구성하는 모든 튜플에 대한 유일성은 만족시키지만 최소성은 만족시키지 못한다.
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 3번자, 수험생 여러분! 데이터베이스 구축 과목에서 데이터 모델링 및 키(Key) 설계 사상의 핵심 근본이자 실기 서술형/단답형 단골 기출 0순위 족보, '관계형 데이터베이스 키(Key)의 종류와 유일성/최소성 판단 원칙' 문제입니다! 데이터베이스의 행(튜플)을 서로 충돌 없이 깨끗하게 찾아내고 가려내기 위해 도입된 다양한 키들의 '수학적 정의 조건'을 1타 강사의 일사천리 도표로 완전 해부해 드리겠습니다.
💡 관계형 데이터베이스 주요 키(Key) 핵심 특성 전격 비교
키를 구별하는 불변의 잣대는 '유일성 (모든 튜플을 고유하게 식별하는가)'과 '최소성 (식별에 꼭 필요한 속성만 남긴 군더더기 없는 상태인가)'입니다.
| 키 종류 (Key Type) | 유일성 (Uniqueness) | 최소성 (Minimality) | 정의 및 구체적 설계 사례 |
|---|---|---|---|
| 슈퍼키 (Super Key) <br>[정답 ③] | 만족 (O) | 불만족 (X) | 튜플을 유일하게 식별할 수는 있으나, 불필요한 속성들이 함께 묶여 군더더기가 낀 상태의 집합 키입니다.<br>예: 학번만으로도 고유 구별이 되는데 굳이 (학번, 성명) 혹은 (학번, 취미) 처럼 묶은 키 |
| 후보키 (Candidate Key) <br>[오답 ①] | 만족 (O) | 만족 (O) | 튜플을 유일하게 식별하면서, 어느 한 속성이라도 빠지면 유일성이 상실되는 최소한의 조합으로 다듬어진 키입니다.<br>예: 학생 테이블의 (학번), 혹은 (주민등록번호) |
| 기본키 (Primary Key) | 만족 (O) | 만족 (O) | 여러 개의 후보키들 중에서 설계자가 테이블의 공식 식별자로 삼기 위해 대표로 선정한 단 하나의 키입니다. (NULL 절대 금지) |
| 대체키 (Alternate Key) <br>[오답 ②] | 만족 (O) | 만족 (O) | 후보키들 중 대표 키인 기본키를 제외하고 남은 아까운 나머지 후보키들입니다.<br>예: 학번이 기본키가 되면 (주민등록번호)는 대체키가 됩니다. |
| 외래키 (Foreign Key) <br>[오답 ④] | - | - | 다른 테이블의 기본키(PK)를 그대로 물려받아 연결 고리로 참조하는 외부 참조 키입니다. |
🔍 기출 지문 정밀 해독 및 정답 확정
- 정답 ③ 슈퍼키:
- 문제에서 "유일성은 만족시키지만 최소성은 만족시키지 못한다"라고 정확하게 명시하고 있습니다.
- 쉽게 말해, 학생을 찾을 때 주민번호 하나만 있어도 완전히 구별(유일성, 최소성 만족 ➔ 후보키)할 수 있는데, 뒤에 이름이나 주소를 덧붙여
(주민번호, 성명, 주소)로 키를 잡으면 찾을 수는 있어도 군더더기(최소성 위반)가 생깁니다. 이와 같은 형태의 조밀하지 못한 넓은 범주의 키를 우리는슈퍼키라고 부릅니다.
"시험 문제를 푸는 1초 컷 마법 공식! '유일성 O, 최소성 O' ➔ 후보키(기본키, 대체키)! '유일성 O, 최소성 X' ➔ 오직 슈퍼키(Super Key)뿐입니다! 이 두 단어의 OX 조합 매칭을 머릿속에 정확히 각인해 두고 단숨에 정답을 고르세요!"
문제 49
데이터베이스 설계 시 물리적 설계 단계에서 수행하는 사항이 아닌 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번자, 수험생 여러분! 데이터베이스 구축 과목 데이터베이스 설계(Database Design) 단계에서 필기 시험지에 무조건 100% 매번 영접하게 되는 영원무궁한 기출 지식, '데이터베이스 개발 설계 3단계 흐름(개념적 ➔ 논리적 ➔ 물리적 설계)의 각 단계별 산출물과 수행 작업 구별' 문제입니다! 각 설계 단계가 어떤 목표에 의존하는지 1타 강사와 확실하게 머릿속에 도식화해 봅시다.
데이터베이스 설계 3단계 프로세스 구조도
[ 1단계. 개념적 설계 (Conceptual Design) ]
- 목표: 현실 세계를 추상화하여 개념 구조로 변환
- 활동: 독립적인 E-R 다이어그램(ERD) 작성, 트랜잭션 모델링
▼
[ 2단계. 논리적 설계 (Logical Design) ] ◀─────────────────────── 보기 4번 (오답이자 정답)
- 목표: 개념 구조를 컴퓨터가 알아먹는 DBMS 논리 테이블 구조로 사상(Mapping)
- 활동: 테이블 생성, **목표 DBMS에 종속적인 논리적 스키마 설계**, 정규화(Normalization)
▼
[ 3단계. 물리적 설계 (Physical Design) ] ◀─────────────────────── 보기 11, 12, 13번
- 목표: 저장 매체와 성능 관점의 하드웨어 실무 최적화 설계
- 활동: 저장 레코드 양식 설계, 블록 크기, 접근 경로(인덱스) 설계, 성능 분산(Clustering)#### 1) 논리적 설계 (Logical Design) 단계의 성격 [정답 4번]
* E-R 다이어그램을 관계형 테이블 스키마 구조로 맵 변환합니다.
* 특정 관계형 DBMS(MySQL, Oracle, PostgreSQL 등)의 특징을 감안하여 구조적 스키마를 정합 설계합니다.
* 테이블 내부 속성들의 모순을 예방하기 위해 정규화(Normalization) 과정을 집약해서 수행합니다.
#### 2) 물리적 설계 (Physical Design) 단계의 성격 [보기 11, 12, 13번]
* 저장 레코드 양식 설계 [보기 11번 / 실제 1번]: 디스크 트랙과 실린더에 배치될 내부 레코드 데이터 구조 및 저장 용량 한계를 산출합니다.
* 레코드 집중 분석 및 설계 (Clustering) [보기 12번 / 실제 2번]: 데이터 조회 효율을 끌어올리기 위해 유사 레코드들을 물리적으로 인접 저장하는 집적 기술을 반영합니다.
* 접근 경로 설계 (Access Path / Index) [보기 13번 / 실제 3번]: 쿼리 탐색 가속을 보증하기 위해 적절한 인덱스(B-Tree 등) 구성을 입안하고 분산 구조를 검토합니다.
문제 50
다른 릴레이션의 기본키를 참조하는 키를 의미하는 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 3번자, 수험생 여러분! 데이터베이스 구축 과목 관계 데이터베이스 모델 및 언어 단원에서 릴레이션 간의 수평 결합 및 참조 무결성 규격을 선언하는 데이터베이스 핵심 자산, '참조 무결성의 버팀목, 외래키(Foreign Key)' 문제입니다! 1타 강사와 완벽하게 키(Key)의 다각적 정의와 오답 선지들을 파헤쳐 봅시다.
기출 필수 관계형 데이터베이스 키 (Key) 분류
```text
[ 관계 데이터베이스 키 계층 도식 ]
슈퍼키 (Super Key)
[유일성은 만족하나,
최소성은 만족하지 않음]
│
▼
후보키 (Candidate Key)
[유일성과 최소성을
모두 완벽히 만족]
│
┌────────────────┴────────────────┐
▼ ▼
기본키 (Primary Key) 대체키 (Alternate Key)
[대표로 낙점된 주식별자] [기본키에서 탈락한 나머지]
* 외래키 (Foreign Key) : 다른 릴레이션의 기본키(Primary Key)를 조인 참조하는 가교 속성.
```
1. 외래키 (Foreign Key) [정답 3번]:
- 개념: 관계를 맺고 있는 두 릴레이션(부모 테이블과 자식 테이블) 사이에서, 자식 테이블의 특정 속성군이 부모 테이블의 기본키(Primary Key)를 고스란히 참조하도록 성립된 키입니다.
- 특징: 외래키 속성이 지니는 값은 부모 테이블 기본키 영역에 존재하는 값과 정확히 매치되거나, 혹은 NULL이어야 합니다. 이는 참조 무결성 제약조건 (Referential Integrity Constraint)을 원천적으로 구현 및 방어하는 핵심 열쇠입니다.
2. 슈퍼키 (Super Key) [선택지 2번]:
- 개념: 릴레이션 내의 모든 튜플을 고유하게 식별할 수 있는 속성 또는 속성들의 조합입니다. 유일성(Uniqueness)은 통과하지만, 더 이상 쪼갤 수 없는 최소성(Minimality)은 무시하는 광범위한 키입니다.
3. 후보키 (Candidate Key) [선택지 4번]:
- 개념: 튜플을 유일하게 식별하기 위해 필수 불가결한 속성들로만 다듬어진 키입니다. 유일성과 최소성을 한 번에 동시 만족하는 기본키의 예비 후보군입니다.
#### 1. 문제 요구 명세 매칭 및 확정 [정답 3번]
- 지문 명세 단서: “다른 릴레이션의 기본키를 참조하는 키를 의미하는 것은?”
- 공학적 판결:
- '타 릴레이션의 기본키를 1대1 혹은 1대다로 가리켜 상속 연동'시키는 유일한 정체는 전산학에서 오직 외래키 (Foreign Key, 선택지 3번)뿐입니다.
- 따라서 올바른 정답은 3번으로 고정됩니다.
문제 51
릴레이션에 R1에 속한 애튜리뷰트의 조합인 외래키를 변경하려면 이를 참조하고 있는 R2의 릴레이션의 기본키도 변경해야 하는데 이를 무엇이라고 하는가?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번자, 수험생 여러분! 데이터베이스 구축 과목 관계 데이터베이스 모델 단원에서 매년 필기와 실기 데이터베이스 조작 제약조건 문맥으로 출제 비중이 엄청나게 높은, '관계 데이터베이스의 3대 핵심 무결성 제약조건과 참조 무결성(Referential Integrity)의 연동 규칙' 문제입니다! 데이터 무결성(Integrity)의 본질을 1타 강사와 확실히 짚어 봅시다.
관계 데이터베이스의 필수 무결성 3대 원칙
1. 개체 무결성 (Entity Integrity):
- 릴레이션의 기본키(Primary Key)를 구성하는 어떤 속성도 Null 값이나 중복 값을 가질 수 없다는 철칙입니다.
2. 참조 무결성 (Referential Integrity) [정답 4번]:
- 외래키(Foreign Key) 값은 참조하는 다른 릴레이션의 기본키 값과 완벽하게 일치하거나 완전히 Null 값이어야 한다는 제약조건입니다.
- 이에 따라 부모 릴레이션의 기본키를 수정/삭제할 때, 참조하고 있는 자식 릴레이션의 외래키도 일관성 있게 변경 처리(Cascade, Restrict, Set Null 등)를 정의해 주어야 합니다.
3. 도메인 무결성 (Domain Integrity):
- 주어진 속성의 값은 반드시 정의된 도메인 영역 내에 지정된 속성값(데이터 타입, 기본값, 제약범위 등)을 완벽히 만족해야 한다는 조건입니다.
#### 1. 문제 지문 해석 및 정답 추적 [정답 4번]
- 지문 단서: “릴레이션 R1에 속한 애트리뷰트 조합인 외래키를 변경하려면 이를 참조하고 있는 R2의 기본키도 변경해야 한다”
- 공학적 팩트:
- 이 설명은 기본키(PK)와 외래키(FK) 사이의 데이터 참조 무결성 정합성 검증 메커니즘을 구체적으로 가리킵니다.
- 외래키로 선언된 데이터는 부모 테이블의 기본키와 독립되어 변조될 수 없고, 상호 참조적인 연쇄 갱신(Cascade)과 같은 무결성 정책 하에서 다루어져야만 안전합니다.
- 따라서 이러한 참조 일관성을 총칭하는 학술명은 참조 무결성 (선택지 4번)이 압도적이며 오차 없는 정답입니다.
문제 52
DML에 해당하는 것으로만 나열된 것은? ㉠ SELECT ㉡ UPDATE ㉢ INSERT ㉣ GRANT
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번자, 수험생 여러분! 데이터베이스 구축 과목 SQL 활용 단원에서 실기와 필기 주관식 서술형 통틀어 고빈출 탑티어 절대 보증작, 'SQL 명령어의 3대 계통 분류(DDL vs DML vs DCL) 완전 정복' 문제입니다! SQL은 데이터베이스를 조작하고 정의하는 공인 관계 질의 언어입니다. 명령어별 가용 계통과 4대 문법 체계를 1타 강사가 일망타진해 정립해 주겠습니다.
SQL 명령어 3대 메인 카테고리 완전 해부도
| SQL 분류 영역 | 영문 및 국문 정형 이름 | 대표 수험 키워드 명령어 모음 (치트키 암기법) | 데이터베이스 물리적 작동 범위 |
|---|---|---|---|
| DDL | Data Definition Language <br>(데이터 정의어) | CADT (캐드트)<br>- CREATE (테이블/뷰 생성)<br>- ALTER (테이블 구조 변경)<br>- DROP (물리적 삭제)<br>- TRUNCATE (초고속 테이블 초기화) | 스키마 구조 자체를 빌딩하고 변경 또는 해체하는 뼈대 가공어 |
| DML | Data Manipulation Language <br>(데이터 조작어) | 세인업델 (정답 1번)<br>- SELECT (조회/검색) ➔ ㉠<br>- INSERT (데이터 삽입) ➔ ㉢<br>- UPDATE (데이터 수정) ➔ ㉡<br>- DELETE (데이터 행 삭제) | 사용자가 테이블 내부 튜플 실체 데이터와 활발히 소통하는 도구 |
| DCL | Data Control Language <br>(데이터 제어어) | 그리코롤 (그릴코롤)<br>- GRANT (권한 부여) ➔ ㉣<br>- REVOKE (권한 회수)<br>- COMMIT (영구 반영/TCL)<br>- ROLLBACK (이전 회귀/TCL) | 데이터의 보안성, 무결성 제어 및 병행 제어, 트랜잭션 수호어 |
보기 조건 박스 정합성 분석
- ㉠ SELECT: 데이터 조작어(DML)에 속함 (O)
- ㉡ UPDATE: 데이터 조작어(DML)에 속함 (O)
- ㉢ INSERT: 데이터 조작어(DML)에 속함 (O)
- ㉣ GRANT: DBA가 사용자에게 객체 접근 권한을 선사하는 데이터 제어어(DCL)에 속함 (X)
- 따라서 ㉠, ㉡, ㉢만 DML에 완벽히 매칭되어 성립하므로, 1번이 확실한 단독 정답입니다.
문제 53
E-R 모델의 표현 방법으로 옳지 않은 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 3번자, 수험생 여러분! 데이터베이스 구축 과목 데이터 모델링 및 스키마 설계 단원에서 거의 모든 실무 데이터베이스 명세 분석서와 기출 시험지 1번 면을 정식 장식하는 필수 암기 지식, '피터 첸(Peter Chen)의 E-R 모델 기호적 도형 표기법 구별' 문제입니다! E-R 모델은 개념적 설계 단계의 정수를 담는 뼈대 지도입니다. 1타 강사와 도형 매핑 관계를 신속히 완벽히 정리해 봅시다.
E-R (개념적 개체-관계) 다이어그램 공식 도형 매핑
[ 사각형 (Rectangle) ] ➔ 개체 타입 (Entity Type) ➔ 물리적 행(Row)/테이블 성격
│
[ 마름모 (Diamond) ] ➔ 관계 타입 (Relationship) ➔ 개체 간 관계성 (1:1, 1:N, N:M)
│
[ 타 원 (Ellipse) ] ➔ 속성 (Attribute) ➔ 테이블 내 컬럼(열) 요소
│ (기본키일 경우 타원 내부 텍스트에 '밑줄(Underline)' 추가)
[ 선 (Line) ] ➔ 연결 (Link) ➔ 각 도형들의 유기적 논리 연결망#### 1. 개체 타입 (Entity Type) [보기 12번 / 실제 1번]
* 도형: 사각형
* 의미: 데이터베이스가 지속적으로 추적하고 기록해야 할 실체 관측 대상(예: 학생, 과목, 교수, 주문 등)을 가리킵니다.
#### 2. 관계 타입 (Relationship Type) [보기 13번 / 실제 2번]
* 도형: 마름모
* 의미: 두 개체 집합 간에 맺어지는 비즈니스적 계약 관계(예: '학생'이 '과목'을 [수강]한다, '교수'가 '학생'을 [지도]한다)를 정의합니다.
#### 3. 속성 (Attribute) [보기 14번 / 실제 3번 - 정답]
* 도형: 타원 *(오각형은 완전히 잘못 짜인 더미 선지입니다!)*
* 의미: 개체가 가지는 구체적인 세부 속성 정보 항목(예: 학생 개체의 학번, 이름, 학과 등)을 기재합니다.
#### 4. 연결 (Link) [보기 15번 / 실제 4번]
* 도형: 선 (실선)
* 의미: 개체 사각형과 관계 마름모, 그리고 속성 타원들을 촘촘히 묶어서 관계 맵을 최종 시각화합니다.
문제 54
로킹 단위(Locking Granularity)에 대한 설명으로 옳은 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번자, 수험생 여러분! 데이터베이스 구축 과목에서 다중 트랜잭션 환경의 동시성 제어 및 일관성 보장 핵심 기법, '로킹 단위(Locking Granularity)의 크기에 따른 역비례 법칙과 임계 조건' 문제입니다! 병행 제어는 데이터베이스 트랜잭션들이 서로 자원을 침범하지 않고 안전하게 동시 실행될 수 있도록 잠금(Lock)을 관리하는 기술입니다. 1타 강사의 일사천리 잠금 단위 비교표로 확실히 각인해 드리겠습니다.
💡 로킹 단위(Locking Granularity) 대/소 비교 분석 매트릭스
로킹 단위란 '한 번에 잠금(Lock)을 설정할 수 있는 대상 데이터의 크기'를 의미합니다.
| 비교 지표 | 로킹 단위가 큰 경우 (Large) <br> (예: 데이터베이스, 테이블 단위) | 로킹 단위가 작은 경우 (Small) <br> (예: 레코드/행, 필드/속성 단위) |
|---|---|---|
| 로크(Lock)의 수 | 적어집니다. (테이블당 1개만 관리) | 많아집니다. (레코드당 수만 개 잠금 제어) |
| 제어 오버헤드 | 낮아집니다. (단순 잠금 상태 유지) | 높아집니다. (수많은 개별 로크 락 관리 오버헤드 폭발) |
| 병행 제어 기법 | 매우 단순해집니다. [②번 반박] | 상당히 복잡해집니다. |
| 병행성 수준 <br>[정답 ①] | 낮아집니다 (병행 실행 저하). <br>한 명이 테이블 전체를 잠그고 쓰기 때문에, 다른 트랜잭션들은 마냥 기다려야 합니다. | 높아집니다 (병행 실행 극대화). <br>동일 테이블 내 다른 행들을 다수의 사용자가 동시에 수정하고 읽을 수 있습니다. |
🔍 각 보기 분석 및 오류 소거법
- ①번 정답 해독 (옳은 설명):
- 로킹 단위가 크면(예: 테이블 전체 잠금), 동일한 테이블의 다른 영역을 읽거나 쓰고자 하는 다른 트랜잭션들이 작업에 진입하지 못하고 줄을 서서 대기해야 합니다. 따라서 병행성(동시 실행 가능한 능력) 수준은 급격히 저하(낮아짐)됩니다. 완벽히 옳은 지문입니다.
- ②번 오답 소거 (로킹 단위가 크면 병행 제어가 복잡해진다? ➔ False):
- 로킹 단위가 클수록 관리할 로크의 개수가 대폭 줄어들기 때문에, 병행 제어 메커니즘과 상태 관리는 오히려 매우 단순하고 쉬워집니다.
- ③번 오답 소거 (로킹 단위가 작으면 로크의 수가 적어진다? ➔ False):
- 로킹 단위가 모래알처럼 작아질수록(예: 개별 셀, 레코드), 테이블 전체를 커버하기 위해 데이터베이스 엔진이 발급하고 추적해야 하는 로크(Lock)의 총량은 기하급수적으로 많아집니다.
- ④번 오답 소거 (레코드와 필드는 로킹 단위가 될 수 없다? ➔ False):
- 관계형 데이터베이스의 로킹 단위는
데이터베이스 ➔ 테이블 ➔ 디스크 파일/블록 ➔ 페이지 ➔ 레코드(튜플) ➔ 필드(속성)에 이르기까지 어떠한 레벨로도 쪼개어 정교하게 잡을 수 있습니다. 따라서 레코드나 필드도 훌륭한 로킹 단위 대상이 됩니다.
"잠그는 면적이 넓을수록(단위가 클수록) 열쇠 개수는 줄어들어 열쇠 주머니는 가볍고 단순해지지만(Lock 수 감소, 오버헤드 감소), 한 번에 한 사람만 들어갈 수 있으므로 정체가 극심해집니다(병행성 수준 낮아짐)! 이 시각적 연상 공식을 완전히 암기해 두세요!"
문제 55
병행제어 기법의 종류가 아닌 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번자, 수험생 여러분! 데이터베이스 구축 과목에서 트랜잭션 관리 및 일관성 보장과 관련해 무조건 매 기출에 얼굴을 비추는 단골 문제, '병행제어(Concurrency Control) 기법의 종류' 문제입니다! 이 파트는 동시성 제어를 위한 데이터베이스의 정교한 매커니즘과 운영체제(OS)의 스케줄링 개념을 교묘하게 뒤섞어서 출제합니다. 이번 1타 요약 강의를 통해 병행제어 기법들을 명쾌하게 정리하고 가겠습니다.
💡 데이터베이스 병행제어(Concurrency Control) 기법 핵심 정리
다수의 트랜잭션들이 데이터베이스를 동시에 공유하여 조회 및 변경할 때, 일관성을 무너뜨리지 않도록 보호막을 씌우는 대표 기법 4가지를 반드시 외우세요!
| 병행제어 기법 | 핵심 원리 및 작동 매커니즘 | 수험 키워드 |
|---|---|---|
| 1. 로킹 (Locking) 기법 [정답 관련] | 트랜잭션이 데이터 항목을 사용하기 전에 '자물쇠(Lock)'를 채워 독점권을 획득하는 방식 | 상호 배제(Mutual Exclusion), 공유 락(Shared Lock), 전용 락(Exclusive Lock), 2단계 로킹 규약(2PL) |
| 2. 타임 스탬프 (Timestamp Ordering) [정답 관련] | 트랜잭션이 시작하기 전에 고유한 시간표(Timestamp)를 부여하여 순서대로 실행 | 시스템이 부여하는 시간표, 직렬성(Serializability) 보장, 교착상태(Deadlock) 방지 |
| 3. 다중 버전 (MVCC) [정답 관련] | 데이터 항목에 대해 여러 개의 버전을 유지하여, 읽기 연산은 락 없이 바로 처리하고 쓰기만 버전 관리 | 독립된 스냅샷 제공, 읽기/쓰기 충돌 완화, Undo 세그먼트 활용 |
| 4. 낙관적 검증 (Validation) 기법 | 트랜잭션 수행 중에는 아무런 제어를 하지 않다가, 종료 시점에 일관성 침해 여부를 일괄 검증하여 반영 | 트랜잭션 충돌 가능성이 낮을 때 효과적, 판독->검증->기록(Write) 단계 |
🔍 정답 최종 규명 및 출제 오류 매커니즘 분석
- ②번 오답 및 출제 변형 규명 (시분할 기법 ➔ 정답):
- 출제 왜곡 매커니즘: 출제위원은 데이터베이스가 공유 자원을 동시에 관리하는 '동시성(Concurrency)' 개념과 혼동하도록, 운영체제(OS)의 오래된 CPU 멀티태스킹 스케줄링 기술인 '시분할(Time Sharing) 시스템'을 슬쩍 오답 후보로 배치했습니다!
- 설명: 시분할 기법(Time Sharing)은 컴퓨터 CPU 자원을 아주 짧은 시간 단위(Time Slice)로 쪼개어 복수의 프로세스들이 CPU를 번갈아 할당받게 함으로써, 각 사용자에게 독립된 전용 컴퓨터를 쓰는 것과 같은 가상적인 인터랙티브 환경을 선사하는 운영체제(OS) 고유의 프로세서 스케줄링 기법입니다. 데이터베이스 트랜잭션의 일관성을 제어하는 병행제어와는 원천적으로 상관이 전혀 없습니다.
- 나머지 옳은 선택지 분석:
- ①번: 데이터에 락을 걸어 직렬화를 강제하는 최고 기본이자 널리 쓰이는 동시성 기법입니다.
- ③번: 트랜잭션 타임스탬프 순서대로 데이터에 액세스하게 만드는 비폐쇄형(Optimistic) 병행제어 기법입니다.
- ④번: 최근 현대 DBMS(Oracle, PostgreSQL 등)의 내부 엔진 성능 향상을 위한 중추를 담당하는 다중 버전 동시성 제어(MVCC) 기법입니다.
"자물쇠를 잠그는 '로킹', 시간표대로 줄 세우는 '타임 스탬프', 스냅샷 여러 장 뜨는 '다중 버전', 일단 믿고 나중에 체크하는 '낙관적 검증'이 데이터 사전 속 4대 천왕이다! CPU를 시간으로 쪼개서 분배하는 '시분할'은 OS 소관이다!"라고 명확히 영역을 분류해 암기합시다!
문제 56
로킹(Locking) 기법에 대한 설명으로 틀린 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번자, 수험생 여러분! 데이터베이스 구축 과목 트랜잭션 및 병행 제어 단원에서 필기 기출 출제율 극상이며 실기 약 서술형으로 장단점 비교 쓰기로 매번 괴롭히는 단골 빈출 원탑 주제, '로킹(Locking) 단위의 크고 작음에 따른 역관계 메커니즘 해석' 문제입니다! 헷갈리기 딱 좋은 이 오묘한 병행 제어 비례 관계를 1타 강사와 완벽 정리해 봅시다.
로킹 단위(Locking Granularity) 크기에 따른 특성 대조 구조
```text
[ 로킹 단위 크기에 따른 트레이드 오프 ]
- 로킹 단위가 매우 큼 (예: 데이터베이스, 테이블 통째로 잠금)
- 필요한 자물쇠 수 (Lock 수) : 매우 적음
- 관리 오버헤드 (Lock 관리 부담) : 현저히 감소 (제어가 심플함)
- 병행성 수준 (동시 사용자 접근 범위) : 급격히 감소! (데이터베이스가 거의 마비)
* 로킹 단위가 매우 작음 (예: 레코드, 필드, 속성 단위 잠금)
- 필요한 자물쇠 수 (Lock 수) : 엄청나게 많아짐
- 관리 오버헤드 (Lock 관리 부담) : 극적으로 증가 (제어가 극히 복잡해짐)
- 병행성 수준 (동시 사용자 접근 범위) : 대폭 증가! (서로 다른 필드를 유연하게 동시 수정)
```
#### 1. 로킹(Locking) 기법 및 단위에 대한 핵심 규명
- 로킹 기법: 트랜잭션들이 동일한 데이터에 동시 접근할 때 데이터 일관성과 상호 배제를 지키기 위해, 데이터를 읽거나 쓰기 전에 잠금(Lock)을 걸어 소유권을 독점하는 기법입니다.
- 로킹 단위: 한 번에 잠금 처리할 수 있는 객체의 크기를 말하며, 데이터베이스, 테이블, 레코드, 필드 등 다양한 단위로 설정할 수 있습니다.
#### 2. 모순 설명 적출 및 소거 [보기 12번 / 실제 2번]
- 틀린 설명: “로킹 단위가 작아지면 병행성 수준이 낮아진다.”
- 정정 설명: 로킹 단위가 조밀하고 작아질수록(예: 회원 한 명의 레코드만 잠금), 다른 사용자들이 나머지 레코드에 동시 접근할 수 있으므로 병행성(Concurrency) 수준 및 자원 공유 정도는 대폭 높아집니다.
- 타 보기 분석:
- 보기 11번: 로킹의 대상이 되는 객체의 물리적 크기를 로킹 단위라고 정의하므로 참입니다.
- 보기 13번: 데이터베이스 자체가 로킹 단위가 될 수 있으며, 이 경우 데이터베이스 전체가 단 한 명에 의해 독점되어 동시 사용이 차단됩니다.
- 보기 14번: 로킹 단위가 커지면 필요한 총 락(Lock)의 수가 현격히 적어지므로, 자물쇠를 지키고 체크하는 리소스인 로킹 오버헤드가 크게 감소하여 제어가 심플해집니다.
문제 57
DELETE 명령에 대한 설명으로 틀린 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번자, 수험생 여러분! 데이터베이스 구축 과목에서 정말 오랫동안 변치 않고 면접 단골이자 기출 킬러로 군림하는 고전 테마, '데이터 삭제 SQL 명령어 DELETE, TRUNCATE, DROP의 파괴력 범위 및 특징 대조' 문제입니다! 이 문제는 조건 없이 모든 데이터를 비우는 DELETE 동작이 뼈대 구조 정보까지 전산실 디렉토리에서 소멸시키는 DROP TABLE과 동급인가라는 결정적인 맹점을 묻고 있습니다. 1타 강사의 일목요연하고 압도적인 3대 삭제 명령 비교 분석표로 완벽 분쇄해 드리겠습니다.
💡 SQL 데이터 삭제 명령 3대장 전격 대조 분석표 (②번이 오답인 이유)
데이터베이스 테이블 속 요소를 지울 때는 파괴 범위, 언어 제어 성격(DML/DDL), 롤백(Rollback) 세이브포인트 가능 유무를 무조건 기각 검사해야 합니다.
| 비교 핵심 기준 지표 | DELETE (데이터 조작어 - DML) <br>[본문 출제 명령어] | TRUNCATE (데이터 정의어 - DDL) | DROP TABLE (데이터 정의어 - DDL) |
|---|---|---|---|
| 삭제 물리 범위 | 테이블의 행(Row)만 선택 삭제.<br>(빈껍데기 스키마 구조는 온전 보존) | 테이블의 모든 행 고속 초기화.<br>(빈껍데기 스키마 구조는 온전 보존) | 테이블 스키마 구조와 데이터를 <br>메모리/디스크에서 완전히 철거(말소). |
| SQL 분류 범주 | DML (Data Manipulation) <br>[보기 ④ 참] | DDL (Data Definition) | DDL (Data Definition) |
| WHERE 조건절 | 지원 가능 [보기 ①, ⑤ 참]<br>(원하는 행만 골라서 도려냄) | 지원 불가<br>(무조건 전체 테이블 초기화) | 지원 불가<br>(무조건 전체 소멸) |
| 트랜잭션 로그 및 롤백 | 행단위 로그를 찍으므로 느리지만,<br>Rollback 복구가 완벽 가능합니다. | 시스템 부하 방지를 위해 로그를 최소화하므로, Rollback 복구 불가. | 스키마 사전(Catalog)을 날려버려 로그가 없으므로, Rollback 복구 완전 불가. |
- ②번의 명확한 오류 반박: WHERE 조건 없이
DELETE FROM 사원;을 날리면 사원 데이터는 싹 비워지지만, 사원 테이블 구조(사원ID, 사원명, 급여 등 컬럼 스펙)는 데이터베이스 카탈로그에 멀쩡하게 백업 생존해 있습니다. 반면DROP TABLE 사원;은 구조 자체를 허물어 버려 다시 사원 조회를 치면 "테이블이 존재하지 않습니다" 에러를 유발합니다. 따라서 두 명령의 효과가 동일하다는 진술은 새빨간 거짓말입니다.
"DELETE는 방 안의 '가구들(데이터 행)'만 마당으로 끄집어내 비우는 가구 정리이고, DROP은 해머로 '건물 자체(테이블 뼈대)'를 철거해 나대지로 환원시키는 무서운 작업입니다! 가구를 다 버린다고 건물이 무너지진 않듯이, DELETE를 조건 없이 쓴다고 DROP과 같아지진 않습니다!"
문제 58
정규화의 필요성으로 거리가 먼 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번수험생 여러분! 데이터베이스 구축 과목의 관계 데이터베이스 설계 및 정규화 단원에서 반드시 출제되는 데이터 정규화(Normalization)의 개념과 목표에 관한 기본 판별 문제입니다. 정규화의 본질과 이를 통해 무엇을 방지하고자 하는지를 이해하면 가볍게 맞힐 수 있습니다.
데이터 정규화(Normalization)의 정의와 필요성
- 정의: 관계형 데이터베이스 설계에서 중복을 최소화하도록 데이터를 구조화하고, 테이블 간의 종속성을 정돈하여 보다 단순하고 명확한 논리 구조로 테이블을 분해해 나가는 프로세스입니다.
- 핵심 목표:
- 중복 데이터의 배제/최소화: 동일 데이터가 여러 군데 산재해 있는 현상을 없앰으로써 저장 장치의 효율적인 운영과 논리 일관성을 확보합니다.
- 이상 현상(Anomaly) 방지: 테이블 분할 및 종속 관계 규정을 통해 삽입 이상, 삭제 이상, 갱신(수정) 이상 현상을 근본적으로 해결합니다.
- 데이터 구조의 일관성 및 안정성 최대화: 스키마가 안정적으로 오래 지속되도록 지원합니다.
- 테이블 불일치 위험 최소화: 조인(Join) 등의 연산을 안전하게 도모할 수 있도록 릴레이션 간 종속성을 단순화합니다.
이상 현상(Anomaly)의 3가지 유형
1. 삽입 이상 (Insertion Anomaly)
- 데이터를 저장할 때 원하지 않는 불필요한 정보까지 함께 억지로 삽입해야 하거나, 특정 값이 없으면 전체 레코드 삽입이 불가능해지는 현상입니다.
2. 삭제 이상 (Deletion Anomaly)
- 어떤 특정 튜플을 삭제할 때, 그 튜플에 종속된 아까운 연쇄 정보까지 강제로 같이 영구 유실되는 현상입니다.
3. 갱신 이상 (Update Anomaly)
- 튜플 중 일부 값을 수정할 때 데이터 중복으로 인해 일부분만 수정되어 정보의 불일치(모순)가 야기되는 현상입니다.
보기 상세 분석
- 1번 데이터 구조의 안정성 최대화: 정규화의 일관성 지향점에 정확히 부합합니다. (참)
- 2번 중복 데이터의 활성화: 정규화는 중복 데이터를 억제, 차단, 배제하는 것이 존재 이유입니다. '중복 데이터를 활성화/활발화' 시키는 것은 비정규화(역정규화, Denormalization) 과정의 타협점이나 비정상적인 스키마 상태를 뜻하므로 완벽한 오답이자 정답입니다.
- 3번 이상 현상의 최소화: 삽입/삭제/갱신 시의 불완전한 상태(이상 현상)를 없애기 위한 것이 정규화의 일차 목표입니다. (참)
- 4번 테이블 불일치 위험의 최소화: 구조적 일치성을 유도하여 모순성을 제거하므로 알맞은 진술입니다. (참)
문제 59
개체-관계 모델(E-R)의 그래픽 표현으로 옳지 않은 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번수험생 여러분! 데이터베이스 구축 과목의 데이터 모델링 및 설계 단원에서 상위 빈출되는 개체-관계(E-R) 다이어그램 매핑 심볼 판별 문제입니다. 피터 첸의 정통 표기 심볼 규격을 완벽히 장악해 둘 필요가 있습니다.
Peter Chen 기법의 E-R 다이어그램 대표 그래픽 심볼 정리
| 그래픽 심볼 | 대응하는 개념적 데이터 모델 구성 요소 |
|---|---|
| 사각형 (Rectangle) | 개체 타입 (Entity Type) - 업무상 추적 보관하려는 구체적 대상 |
| 타원 (Ellipse) / 원형 | 속성 (Attribute) - 개체가 가지고 있는 고유한 논리적 성질이나 정보 항목 |
| 마름모 (Diamond) | 관계 타입 (Relationship Type) - 개체 타입 간의 상호 작용 및 사상 구조 |
| 선 / 링크 (Line) | 연결 - 개체 타입과 속성, 혹은 개체와 관계 타입을 직접 묶어줌 |
| 이중 사각형 (Double Rectangle) | 약한 개체 타입 (Weak Entity Type) - 식별 관계에 의해 부모 개체에 의존하는 개체 |
| 이중 타원 (Double Ellipse) | 다중값 속성 (Multivalued Attribute) - 한 개체 내에서 여러 개의 값을 가질 수 있는 속성 |
| 밑줄 타원 (Underline Ellipse) | 기본키 속성 (Key Attribute) - 개체 인스턴스를 고유하게 식별할 수 있는 핵심 키 |
보기 상세 분석
- 1번 개체 타입 - 사각형: 개체를 나타내는 가장 기본적인 표준 표기 도형이 맞습니다. (참)
- 2번 속성 - 원형: 일부 교재 및 출제 기준에서 타원(Ellipse)을 원형 또는 원으로 간이 지칭하며 속성을 나타낸다고 서술하므로 타당합니다. (참)
- 3번 관계 타입 – 마름모: 두 릴레이션이나 엔티티 간의 관련성을 상징하는 공인 마크입니다. (참)
- 4번 연결 - 삼각형: 관계형 모델링이나 피터 첸의 E-R 표기 규격 상에서 삼각형은 '연결' 혹은 '관계 관계' 용도로 쓰이지 않으며, 연결은 무조건 실선(Line)을 통해 이어 줍니다. 삼각형 표기는 완전한 무규격 오류이므로 명백한 정답입니다.
문제 60
병행제어 기법 중 로킹에 대한 설명으로 옳지 않은 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번자, 수험생 여러분! 데이터베이스 구축 과목 트랜잭션 및 병행제어 단원에서 무조건 한 문제씩 꼬박꼬박 지문 판별 및 주관식 단답 문제로 기습 출제되는 대단히 핵심적인 이론, '로킹 단위(Locking Granularity)의 크기에 따른 오버헤드와 공유도(병행수행도)의 반비례 관계성' 문제입니다! 1타 강사와 함께 로킹 오버헤드의 정밀한 공식을 다듬어 봅시다.
로킹(Locking) 단위의 핵심 작동 메커니즘
- 로킹 단위: 한 번에 잠금(Lock)을 걸어 독점권을 행사하는 데이터 객체의 크기를 말합니다. DB 전체, 파일, 테이블, 페이지, 레코드, 필드 등이 대상이 됩니다 [보기 11번, 12번 / 실제 1번, 2번].
- 로킹 단위의 크기와 영향도 대칭표 (중요!):
```text
[ 로킹 단위 크기에 따른 트레이드오프 ]
┌───────────────────────────────────┬───────────────────────────────────┐
│ ★ 로킹 단위가 클 때 (예: DB 전체) │ ★ 로킹 단위가 작을 때 (예: 레코드)│
├───────────────────────────────────┼───────────────────────────────────┤
│ 1. 로크 수(Lock Count) 가 매우 적음│ 1. 로크 수(Lock Count) 가 엄청 많음│
│ 2. 잠금 오버헤드(Overhead) 가 감소 │ 2. 잠금 오버헤드(Overhead) 가 증가 │
│ 3. 제어(병행제어)가 매우 단순해짐 │ 3. 제어(병행제어)가 대단히 정밀해짐│
│ 4. 병행성 / 공유도 가 대폭 '감소' │ 4. 병행성 / 공유도 가 대폭 '증가' │
└───────────────────────────────────┴───────────────────────────────────┘
```
#### 1. 공학적 모순 진술 적발 및 정답 추적 [정답 4번]
- 틀린 선지 (보기 14번 / 실제 4번): “로킹의 단위가 커지면 데이터베이스 공유도가 증가한다.”
- 공학적 팩트:
- 로킹 단위가 '커져서' 데이터베이스 전체를 자물쇠로 통째 잠가버리면, 한 명의 사용자가 트랜잭션을 돌리는 동안 다른 모든 사용자들은 아주 작은 다른 테이블이나 레코드를 조회/수정하려 해도 대기 상태에 걸립니다.
- 따라서 여러 트랜잭션이 한꺼번에 실행될 수 있는 기회가 원천 차단되므로 데이터베이스의 공유도(병행수행도 / Concurrency)는 수직 낙하(감소)하게 됩니다.
- 공유도를 높이기 위해서는 로킹 단위를 잘게 쪼개어(레코드 수준으로 작게 만들어) 필요한 부분만 타겟팅 잠금해야 합니다 [보기 13번 / 실제 3번].
- 그러므로 '로킹 단위가 커지면 공유도가 증가한다'고 터무니없게 진술한 선택지 4번이 가장 잘못된 진술이며 정답입니다.
문제 61
다음 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);
}
}선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 3번자, 수험생 여러분! 프로그래밍 언어 활용 과목 자바(Java) 기초 실무 손코딩 단원에서 매년 코딩 시험의 허리를 담당하며 연산자 우선순위와 분기 조건 제어의 빈틈을 파고드는 초극강 빈출 단골 디버깅 문제, 'JAVA 복합 삼항 연산자와 if-else 제어문 추적 분석' 문제입니다! 소스코드 라인 바이 라인으로 변수 상태를 1타 강사와 완벽하게 디버깅해 봅시다.
JAVA 코드 줄별 정밀 컴파일 추적 (Trace Simulation)
#### 1. 변수 초기화 절
```java
int a = 1, b = 2, c = 3, d = 4;
int mx, mn;
```
- 준비된 정수 변수들의 값: a = 1, b = 2, c = 3, d = 4
#### 2. 첫 번째 삼항 연산자 가동 절
```java
mx = a < b ? b : a;
```
- 조건식 분석: a < b ➔ 1 < 2는 명백히 참(True)입니다.
- 동작: 조건식이 참(True)이므로 콜론(:)의 좌항에 위치한 피연산자인 b의 값이 선택되어 대입됩니다.
- 결과: mx = b ➔ mx = 2 가 됩니다.
#### 3. if-else 제어 분기 및 내부 삼항 연산자 구동 절
```java
if (mx == 1) {
mn = a > mx ? b : a;
} else {
mn = b < mx ? d : c;
}
```
- 조건 판단: mx == 1 ➔ 2 == 1은 거짓(False)입니다.
- 분기 이동: 참(True) 블록인 if 내부를 과감히 건너뛰고, 거짓(False) 블록인 else 내부 세션으로 진입합니다.
#### 4. else 블록 내부의 삼항 연산자 해결 절
```java
mn = b < mx ? d : c;
```
- 조건식 분석: b < mx ➔ 2 < 2는 거짓(False)입니다. (같을 뿐 작지는 않음)
- 동작: 조건식이 거짓(False)이므로 콜론(:)의 우항에 위치한 피연산자인 c의 값이 최종 선택되어 대입됩니다.
- 결과: mn = c ➔ mn = 3 이 대입 완료됩니다.
#### 5. 표준 출력 절
```java
System.out.println(mn);
```
- 변수 mn에 탑재된 최종 데이터 값인 3을 화면 콘솔에 개행 출력하고 프로그램을 정상 종료합니다.
문제 62
프로세스와 관련한 설명으로 틀린 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번자, 수험생 여러분! 프로그래밍 언어 활용 과목 내 운영체제(OS) 프로세스 관리론 부동의 출제율 1위 최고 단골 기출, '프로세스(Process) vs 스레드(Thread)의 정의 및 메모리 구조 차이' 문제입니다! 이 문제는 프로세스의 핵심 요소(디스패치, PCB, 문맥 교환)를 종합적으로 점검하면서, 스레드와의 명확한 개념 선을 긋고 있는지 날카롭게 찌르고 있습니다. 1타 강사의 일목요연한 상태 전이도와 속성 비교표로 완전 공략해 드리겠습니다.
💡 프로세스 상태 전이도 (Process State Transition Diagram)
프로세스는 CPU 스케줄러에 의해 지휘받으며 끊임없이 아래와 같이 상태를 옮겨 다니다.
[ 보류 (Admitted) ]
│
▼
┌────────────────────┐
│ 준비 (Ready) │ ◄──────────┐ (타임 아웃 / 할당 시간 만료)
└────────────────────┘ │
│ │
│ (★디스패치, Dispatch★)│
▼ │
┌────────────────────┐ │
│ 실행 (Running) │ ──────────┘
└────────────────────┘
│
│ (I/O 요청 / 대기 이벤트 발생 : 대기, Blocked)
▼
┌────────────────────┐
│ 대기 (Blocked) │ ➔➔➔ (I/O 완료 및 깨어남) ➔➔➔ [준비] 상태로 복귀
└────────────────────┘- 디스패치 (Dispatch) [①번 보기 정답]: 준비 상태에서 CPU를 할당받아(배당) 실제 연산을 수행하는 실행 상태로 넘어가는 아주 영예로운 이벤트입니다.
- 문맥 교환 (Context Switching) [③번 보기 정답]: CPU를 쓰는 프로세스를 교체할 때, 기존 레지스터 정보(Context)를 안전하게 백업(PCB)하고 새 프로세스의 Context를 CPU 레지스터에 복원해 올리는 작업입니다.
- PCB (Process Control Block) [②번 보기 정답]: OS가 프로세스를 통제하기 위해 갖고 다니는 주민등록표 같은 블록으로, PID(식별자), 프로세스 상태, PC(프로그램 카운터) 등이 포함됩니다.
💡 핵심 승부처: 프로세스(Process) vs 스레드(Thread) 끝장 비교
| 비교 지표 | 프로세스 (Process) | 스레드 (Thread) |
|---|---|---|
| 정의 | OS로부터 메모리 공간을 독점 할당받는 '자원 할당의 기본 단위' | 프로세스 내에서 동작하는 'CPU 실행/흐름의 기본 단위' |
| 관계성 | 스레드를 품고 있는 상위 개념 (공장) | 프로세스 내부에 소속된 하위 실행 흐름 (일꾼) |
| 공유 영역 | 다른 프로세스의 메모리를 훔쳐볼 수 없음 (독립 격리) | 부모 프로세스의 Code, Data, Heap 및 시스템 자원 공유 |
| 독점 영역 | 본인의 주소 공간 전체 (Code/Data/Heap/Stack) | 전용 실행 흐름을 위해 오직 Stack과 레지스터만 독점 소유 |
- ④번 보기의 치명적 오류 해부:
- 순서 전도: "프로세스는 스레드 내에서 실행되는 흐름의 단위" ➔ 틀렸습니다! '스레드가 프로세스 내에서 실행되는 흐름의 단위'가 맞습니다.
- 스택 소유 여부: "스레드와 달리 주소 공간에 실행 스택(Stack)이 없다" ➔ 틀렸습니다! 프로세스는 스택(Stack), 힙(Heap), 데이터(Data), 코드(Code) 영역을 전부 빠짐없이 주소 공간에 가지고 있습니다.
- 따라서 거짓을 진술한 ④번이 정답이 됩니다.
"스레드(Thread)는 영어로 '실 한 가닥(흐름)'입니다. 그 실가닥들이 모여서 움직이는 하나의 독립된 프로그램 주머니가 '프로세스'인 것입니다. 스레드는 부모 프로세스의 힙과 데이터를 다 같이 나누어 쓰기 때문에 가볍지만, 전용 메모리 주머니인 '스택(Stack)'만큼은 자신만의 흐름 보존을 위해 하나씩 따로 꿰차고 다닌다는 특징까지 꼭 함께 담아 가세요!"
문제 63
다음의 페이지 참조 열(Page reference)에 대해 페이지 교체 기법으 로 선입선출 알고리즘을 사용할 경우 페이지 부재(Page Fault) 횟수 는? (단, 할당된 페이지 프레임 수는 3 이고, 처음에는 모든 프레임이 비어 있다.) <페이지 참조열> 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번자, 수험생 여러분! 프로그래밍 언어 활용 과목 운영체제 및 가상기억장치 관리 단원에서 필기와 실기 양쪽 시험에서 정적 비중이 엄청나며, 계산 실수 하나로 합격 당락이 갈리는 초특급 고난도 단골 계산 정형, '선입선출(FIFO) 페이지 교체 알고리즘 및 페이지 부재(Page Fault) 횟수 산출' 문제입니다! 수많은 기출 페이지열 중에서도 19개짜리 초장기 참조열로 출제되어 고도의 집중력이 필요합니다. 1타 강사와 완벽하게 한 땀 한 땀 추적해 봅시다.
### 가상 메모리 관리 주요 기본 개념 정립
- 페이지 부재 (Page Fault): 프로세스가 필요로 하는 페이지가 현재 물리 메모리(Frame)에 로드되어 있지 않아, 보조기억장치로부터 읽어와야 하는 상태를 의미합니다. (부재가 발생하면 디스크 I/O 발생)
- 페이지 적중 (Hit): 찾고자 하는 페이지가 이미 물리 메모리 프레임 안에 로드되어 있는 평화로운 상태입니다.
- FIFO 아키텍처 규칙: 프레임이 가득 차 있는 상태에서 새로운 페이지 부재가 나면, 물리 메모리에 '가장 먼저 진입한(가장 오래 머무른)' 페이지를 가장 먼저 축출하고 새 페이지를 얹습니다.
FIFO 페이지 교체 시뮬레이션 완벽 타임라인 (프레임 3개)
- 참조 순서:
7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0 - 초기 상태: 빈 프레임 세 칸
[- , - , -]
=========================================================================================
참조열 | 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0
=========================================================================================
프레임1 | 7 7 7 2 2 2 2 4 4 4 0 0 0 0 0 0 0 7 7
프레임2 | - 0 0 0 0 3 3 3 2 2 2 2 2 1 1 1 1 1 0
프레임3 | - - 1 1 1 1 0 0 0 3 3 3 3 3 2 2 2 2 2
=========================================================================================
판정 | F F F F H F F F F F F H H F F H H F F
=========================================================================================
※ F : Page Fault (부재), H : Page Hit (적중)#### 상세 디버깅 전개 (19개 Step)
1. 참조 7: 최초 적재 (빈 곳에 넣음). 프레임 [7, -, -] ➔ Page Fault (1)
2. 참조 0: 최초 적재. 프레임 [7, 0, -] ➔ Page Fault (2)
3. 참조 1: 최초 적재. 프레임 [7, 0, 1] ➔ Page Fault (3)
4. 참조 2: 만석 상태에서 부재 발생. 가장 먼저 탑승했던 7 축출. 프레임 [2, 0, 1] ➔ Page Fault (4)
5. 참조 0: 이미 프레임 2번에 0 존재 ➔ Page Hit (적중)
6. 참조 3: 부재 발생. 현재 프레임 멤버 중 가장 먼저 온 0 축출. 프레임 [2, 3, 1] ➔ Page Fault (5)
7. 참조 0: 부재 발생. 남은 멤버 중 가장 먼저 온 1 축출. 프레임 [2, 3, 0] ➔ Page Fault (6)
8. 참조 4: 부재 발생. 남은 멤버 중 제일 오래된 2 축출. 프레임 [4, 3, 0] ➔ Page Fault (7)
9. 참조 2: 부재 발생. 남은 멤버 중 제일 오래된 3 축출. 프레임 [4, 2, 0] ➔ Page Fault (8)
10. 참조 3: 부재 발생. 남은 멤버 중 제일 오래된 0 축출. 프레임 [4, 2, 3] ➔ Page Fault (9)
11. 참조 0: 부재 발생. 이 시점에서 프레임 내 생존자 중 가장 고참은 4 (Step 8 유입). 4 축출. 프레임 [0, 2, 3] ➔ Page Fault (10)
12. 참조 3: 이미 프레임 3번에 3 존재 ➔ Page Hit (적중)
13. 참조 2: 이미 프레임 2번에 2 존재 ➔ Page Hit (적중)
14. 참조 1: 부재 발생. 현재 멤버 [0(Step 11 유입), 2(Step 9 유입), 3(Step 10 유입)] 중 가장 고참인 2를 밀어내고 1 적재. 프레임 [0, 1, 3] ➔ Page Fault (11)
15. 참조 2: 부재 발생. 현재 멤버 [0(Step 11), 1(Step 14), 3(Step 10)] 중 최고참인 3을 밀어내고 2 적재. 프레임 [0, 1, 2] ➔ Page Fault (12)
16. 참조 0: 이미 프레임 1번에 0 존재 ➔ Page Hit (적중)
17. 참조 1: 이미 프레임 2번에 1 존재 ➔ Page Hit (적중)
18. 참조 7: 부재 발생. 현재 멤버 [0(Step 11), 1(Step 14), 2(Step 15)] 중 가장 오랜 고참인 0을 축출하고 7 진입. 프레임 [7, 1, 2] ➔ Page Fault (13)
19. 참조 0: 부재 발생. 현재 멤버 [7(Step 18), 1(Step 14), 2(Step 15)] 중 제일 나이 많은 1을 걷어내고 0 안착. 프레임 [7, 0, 2] ➔ Page Fault (14)
#### 3. 결론
- 총 페이지 부재(Page Fault)의 횟수는 누적 14회 (보기 12번 / 실제 2번)가 됩니다.
문제 64
시간 구역성(Temporal Locality)과 거리가 먼 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 3번자, 수험생 여러분! 프로그래밍 언어 활용 과목의 가상기억장치(Virtual Memory) 및 캐시 매핑 단원에서 단어 매칭 기출 빈도 최상위 0순위 핵심 개념, '참조 구역성(Locality of Reference)의 시간적(Temporal) vs 공간적(Spatial) 특징 구분' 문제입니다! 국부성(Locality, 국소성) 이론은 캐시 메모리 적중률(Cache Hit Ratio)을 비약적으로 높이기 위해 운영체제와 CPU 하드웨어가 믿고 의지하는 핵심 패러다임입니다. 1타 강사와 통쾌하게 구별해 봅시다.
참조 구역성(Locality)의 2대 축 비교 분석표
| 구역성 유형 | 핵심 개념 및 수험 식별 단서 | 실물 소프트웨어 예시 패턴 |
|---|---|---|
| 시간 구역성 <br>(Temporal Locality) | 한 번 접근한 메모리 위치(데이터/명령어)는 가까운 미래에 몇 번이고 집중적으로 재방문·재사용하는 경향을 보입니다. | - 루프(for, while 반복문) [보기 1번]<br>- 서브루틴(Subroutine/함수 호출) [보기 2번]<br>- 스택(Stack, LIFO 구조의 Top) [보기 4번]<br>- 공통 누적 합산 변수(sum, cnt 등) |
| 공간 구역성 <br>(Spatial Locality) <br>[정답 3번] | 한 번 접근한 메모리 주소와 물리적으로 인접해 있는 인근의 메모리 블록을 연달아 접근하는 경향을 보입니다. | - 배열 순회(Array Traversal) [보기 3번]<br>- 순차적 명령어 코드 실행<br>- 연관 변수들의 근거리 일괄 선언 부근 |
각 선지별 구역성 분류 대조 검증
- 보기 1번 (루프), 보기 2번 (서브루틴), 보기 4번 (스택): 한 번 사용된 명령어 블록이나 메모리 위치를 반복적으로 되돌아와서 계속 실행하므로, 시간의 흐름에 따른 집중도를 뜻하는 시간 구역성(Temporal Locality)의 완벽한 표본들입니다.
- 보기 3번 (배열 순회): 배열은 메모리 주소 공간 상에 연속된 물리 메모리로 밀착 배치됩니다. 인덱스 0번을 참조하면 곧이어 1번, 2번 등 바로 옆 주소 공간을 차례대로 탐사하므로 이는 전형적인 공간 구역성(Spatial Locality)의 대표 사례입니다. 따라서 시간 구역성과는 거리가 멉니다.
문제 65
다음 중 IP 버전에 대한 설명 중 틀린 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번자, 수험생 여러분! 프로그래밍 언어 활용 과목 네트워크 기초 단원에서 IPv4 주소의 한계 고갈 문제를 타개하고 차세대 전산 인프라를 정립하는 중추 과목, 'IPv4 vs IPv6 구조 및 전송 특성 정합성 검증' 문제입니다! 1타 강사와 절대 헷갈리지 않게 IPv4와 IPv6 핵심 사양 대비표를 정리해 봅시다.
IPv4 vs IPv6 핵심 프로토콜 사양 대비표
| 구분 핵심 항목 | IPv4 주소 체계 | IPv6 주소 체계 [정답 포인트] |
|---|---|---|
| 주소 길이 | 32 비트 (8비트씩 4옥텟) (보기 12번) | 128 비트 (16비트씩 8세그먼트) |
| 표기 형식 | 10진수 표기 (예: 192.168.0.1) | 16진수 표기 (예: 2001:0db8::ff00:0042) |
| 구분 기호 | 점 (.) (Dot) | 콜론 (:) (Colon) (보기 13번) |
| 기본 클래스 | A, B, C, D, E 총 5단계 (보기 14번) | 클래스 개념 삭제 (대신 유니/멀티/애니캐스트 적용) |
| 보안성(IPSec) | 별도 탑재 (선택적 프로토콜 연동) | 기본 기본(내장) 탑재 (보안성 최고조) |
| 전송 속도 | 헤더 내 가변 길이 필드/체크섬으로 지연 있음 | 고정 헤더 크기 및 체크섬 생략으로 라우팅 속도 급증 |
### 틀린 서술 필터링 [정답 4번]
- 틀린 설명 (보기 15번 / 실제 4번): “IPv6는 IPv4에 비해 자료 전송 속도가 느리다.”
- 공학적 판결:
- IPv6는 IPv4 헤더에 존재하는 각종 오버헤드 필드(가변 옵션 필드, 단편화 필드 등)를 고정 크기 헤더로 통합 간소화하고, 오류 제어를 상위 레이어에 인계하여 패킷 라우팅 및 전송 속도를 대폭 비상 향상시켰습니다.
- 따라서 '전송 속도가 느리다'는 설명은 전혀 사실에 위배되는 부적절한 설명이므로 정답은 4번입니다.
문제 66
빈 기억공간의 크기가 20K, 16K, 8K, 40K일 때 기억장치 배치 전략으로 “Worst Fit”을 사용하여 17K의 프로그램을 적재할 경우 내부 단편화의 크기는?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번수험생 여러분! 프로그래밍 언어 활용 과목의 운영체제 메모리 관리 단원에서 매 시험 출제되는 단일 분할 할당 기법의 배치 전략(First Fit, Best Fit, Worst Fit) 시뮬레이션 문제입니다. 각 전략의 할당 기준과 내부 단편화 계산 방식을 완벽하게 마스터해야 합니다.
주기억장치 배치 전략 3대 기법 비교
graph TD
A["메모리 배치 전략"] --> B["최초 적합 (First Fit): 적재 가능한 빈 공간 중 첫 번째로 만나는 공간에 할당"]
A --> C["최적 적합 (Best Fit): 적재 가능한 빈 공간 중 단편화가 가장 적은 (크기가 가장 비슷한) 공간에 할당"]
A --> D["최악 적합 (Worst Fit): 가용 공간 중 크기가 가장 큰 공간에 할당"]| 배치 전략 | 영문 표기 | 할당 선택 기준 | 특징 및 장단점 요약 |
|---|---|---|---|
| 최초 적합 | First Fit | 입력된 프로그램이 들어갈 수 있는 크기의 빈 공간 중 첫 번째로 발견되는 공간에 할당 | 탐색 시간이 가장 빠름 |
| 최적 적합 | Best Fit | 프로그램이 들어갈 수 있는 빈 공간 중 가장 크기가 작은(비슷한) 공간에 할당 | 내부 단편화 공간을 최소화함 |
| 최악 적합 | Worst Fit | 프로그램이 들어갈 수 있는 빈 공간 중 가장 크기가 큰 공간에 할당 | 큰 가용 공간을 확보하기 어려워짐 |
문제 상황 시뮬레이션 및 내부 단편화 계산
- 현재 빈 기억공간 상태:
[20K],[16K],[8K],[40K] - 적재 대상 프로그램 크기:
17K - 적용 배치 전략: Worst Fit (최악 적합)
graph LR
A["프로그램: 17K"] -->|Worst Fit: 가장 큰 빈 공간 선택| B["40K 가용 파티션"]
B --> C["사용 공간: 17K"]
B --> D["잔여 공간 (내부 단편화): 40K - 17K = 23K"]- 빈 공간 중 가장 큰 파티션은
40K입니다. (참고:16K와8K는 프로그램 크기17K보다 작아 할당 불가) 40K공간에17K프로그램을 할당합니다.- 내부 단편화(Internal Fragmentation) 크기 = 할당 파티션 크기 - 프로그램 크기 = $40\text{K} - 17\text{K} = \mathbf{23\text{K}}$입니다.
보기 상세 분석
- 1번 3K:
20K공간에 할당했을 때(First Fit 또는 Best Fit) 발생하는 내부 단편화입니다. (오답) - 2번 23K: Worst Fit 전략에 따라
40K공간에 적재 시 발생하는 내부 단편화를 정확하게 계산한 정답입니다. - 3번 44K: 계산 오류입니다.
- 4번 67K: 전체 가용 공간 총합에서 17K를 뺀 오류입니다.
문제 67
IPv4와 IPv6 간의 주소 전환에 사용되는 기술이 아닌 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번수험생 여러분! 프로그래밍 언어 활용 과목의 네트워크 계층 및 IP 프로토콜 단원에서 단골 출제되는 IPv4와 IPv6 간의 주소 전환(Transition) 메커니즘 식별 문제입니다. 고갈되어 가는 32비트 IPv4 주소 체계와 차세대 128비트 IPv6 주소 체계가 공존하는 과도기적 상황에서 두 망을 매끄럽게 호환 연결해 주는 3대 전환 기술을 명확히 숙지하고 계셔야 합니다.
IPv4 / IPv6 주소 전환 기술 3대 핵심 체계
graph TD
A["IPv4 - IPv6 전환 (Transition) 기술"] --> B["1. 듀얼 스택 (Dual Stack)"]
A --> C["2. 터널링 (Tunneling)"]
A --> D["3. 헤더 변환 (Header Translation)"]| 전환 기술 명칭 | 동작 메커니즘 및 아키텍처 특성 |
|---|---|
| 1. 듀얼 스택<br>(Dual Stack) | - 단일 호스트 시스템 내부에 IPv4 프로토콜 스택과 IPv6 프로토콜 스택을 동시에 모두 탑재하여 운용합니다.<br>- 목적지 호스트의 IP 주소 버전에 따라 알아서 알맞은 스택을 선택해 통신을 개시합니다. |
| 2. 터널링<br>(Tunneling) | - 두 개의 분리된 IPv6 네트워크가 중간에 거대한 IPv4 네트워크망을 거쳐 지나가야 할 때 기용합니다.<br>- IPv6 패킷을 IPv4 패킷으로 캡슐화(Encapsulation)하여 IPv4 터널망을 통과시킨 뒤 목적지에서 디캡슐레이션합니다. |
| 3. 헤더 변환<br>(Header Translation) | - IP 계층에서 IPv4 패킷 헤더와 IPv6 패킷 헤더를 서로의 형식에 맞게 상호 변환(NAT-PT, SIIT 등)해 주는 기법입니다. |
보기 상세 분석
- 1번 듀얼 스택: 두 스택을 공존시켜 호환성을 보장하는 대표 전환 기술입니다. (참)
- 2번 터널링: 캡슐화 기법을 통해 이종 망을 통과시키는 핵심 전환 기술입니다. (참)
- 3번 헤더 변환: IP 헤더 자체의 필드 구조를 번역해 주는 전환 기술입니다. (참)
- 4번 라우팅: 네트워크 계층에서 수신된 패킷의 목적지 주소를 읽고 라우팅 테이블을 참조하여 다음 노드로 전달하는 일반적인 패킷 포워딩 기능일 뿐, IPv4와 IPv6 간의 버전 전환 전용 기술에 해당하지 않는 명백한 정답입니다.
문제 68
OSI 7계층 중 프로토콜 데이터 단위(PDU)가 메시지(Message)가 아닌 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번수험생 여러분! 프로그래밍 언어 활용 과목의 네트워크 기초 및 프로토콜 체계 단원에서 정말 쉴 새 없이 기출되는 OSI 7계층의 프로토콜 데이터 단위(PDU - Protocol Data Unit) 분류 문제입니다. 계층별 표준적인 데이터 단위를 매핑하여 1초 만에 풀 수 있도록 완전 격파해야 합니다.
OSI 7계층 프로토콜 데이터 단위 (PDU) 체계
- PDU (Protocol Data Unit): 동일 네트워크 계층 프로토콜 간에 서로 송수신하는 가상의 논리적 기본 정보 캡슐화 단위를 지칭합니다.
| 계층 번호 | 계층 명칭 (Layer Name) | 프로토콜 데이터 단위 (PDU) | 핵심 프로토콜 및 장비 |
|---|---|---|---|
| 7계층 | 응용 계층 (Application) | 메시지 (Message) / 데이터 (Data) | HTTP, FTP, SMTP, DNS |
| 6계층 | 표현 계층 (Presentation) | 메시지 (Message) / 데이터 (Data) | JPEG, MPEG, SSL, 암호화 |
| 5계층 | 세션 계층 (Session) | 메시지 (Message) / 데이터 (Data) | NetBIOS, SSH, 동기화 제어 |
| 4계층 | 전송 계층 (Transport) | 세그먼트 (Segment) / 데이터그램 | TCP(Segment), UDP(Datagram) |
| 3계층 | 네트워크 계층 (Network) | 패킷 (Packet) | IP, ICMP, 라우터 |
| 2계층 | 데이터 링크 계층 (Data Link) | 프레임 (Frame) | MAC 주소, 이더넷, 스위치 |
| 1계층 | 물리 계층 (Physical) | 비트 (Bit) | 케이블, 리피터, 허브 |
보기 상세 분석
- 1번 전송 계층: 전송 계층의 정형화된 데이터 전송 규격은 세그먼트(Segment) 또는 비연결형 프로토콜인 UDP 한정 데이터그램(Datagram)이라 지칭하며, 메시지(Message)라 부르지 않습니다. 따라서 완벽히 틀린 설명이자 이 문제의 정답입니다.
- 2번 세션 계층: 상위 계층군으로서 PDU를 공통적으로 메시지(Message) 또는 데이터(Data)로 처리합니다. (참)
- 3번 표현 계층: 응용 프로그램과의 중간 조율자로서 통신 메시지 규격을 담아 메시지/데이터로 정의합니다. (참)
- 4번 응용 계층: 사용자가 최종 송수신하고자 하는 상위 어플리케이션 원천 메시지 본체를 의미하므로 당연히 맞습니다. (참)
문제 69
IP 주소체계와 관련한 설명으로 틀린 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번수험생 여러분! 프로그래밍 언어 활용 과목의 네트워크 기초 및 IP 프로토콜 단원에서 단골 기출되는 IPv4와 IPv6의 기능적 차이 및 구조 비교 문제입니다. IPv6의 기술적 도약 요소를 항목별로 세심하게 구분하여 숙지해야 정답률을 올릴 수 있습니다.
IPv4 vs IPv6 심층 기술 비교
- 주소 길이:
- IPv4: 32비트 (8비트씩 4대역, 10진수 표기)
- IPv6: 128비트 (16비트씩 8대역, 16진수 표기)
- IPv6 기본 헤더 크기:
- IPv4 헤더는 가변 길이(옵션 필드 포함)를 가졌으나, IPv6는 라우터에서의 패킷 처리 오버헤드를 극소화하기 위해 40바이트 (40 octet)의 완전 고정 길이 헤더를 채택하였습니다.
- 따라서 헤더 길이 필드가 아예 제거되었습니다.
- 주소 설정 편의성:
- IPv6 플러그 앤 플레이: 별도의 DHCP 서버가 없어도 단말이 스스로 IP 주소를 자동으로 설정(Stateless Auto Configuration)하여 즉시 네트워크에 달라붙을 수 있는 강력한 무설정 연결 기능을 지원합니다.
- 전송 분류:
- IPv4: 유니캐스트(Unicast), 멀티캐스트(Multicast), 브로드캐스트(Broadcast)
- IPv6: 유니캐스트(Unicast), 멀티캐스트(Multicast), 애니캐스트(Anycast) (브로드캐스트는 대역 소모가 극심하여 완전히 배제하고 멀티캐스트로 대체)
보기 상세 분석
- 1번 IPv6의 패킷 헤더는 32 octet의 고정된 길이를 가진다: IPv6의 기본 헤더 크기는 32옥텟이 아니라 40옥텟 (40바이트)으로 완벽히 고정되어 있습니다. 따라서 32 octet이라는 설명이 명백히 잘못된 오류이자 기출의 단골 함정 정답입니다.
- 2번 IPv6는 주소 자동설정(Auto Configuration) 기능을 지원한다: 이용자 편의성을 극대화한 IPv6의 자동 플러그 앤 플레이 동작을 올바르게 설명하고 있습니다.
- 3번 IPv4는 호스트 주소를 자동으로 설정하며 유니캐스트를 지원한다: IPv4에서는 DHCP 프로토콜을 사용한 동적 호스트 주소 자동 배포 메커니즘을 널리 활용하며 일대일 전송 체계(Unicast)를 근간으로 동작합니다.
- 4번 IPv4는 클래스별로 네트워크와 호스트 주소의 길이가 다르다: 클래스풀(Classful) 방식에 의거하여 A, B, C, D, E 클래스별로 서브넷 마스크 경계 및 네트워크 식별 길이가 모두 상이합니다.
문제 70
다음 C언어 프로그램이 실행되었을 때의 결과로 옳은 것은?
```c
#include <stdio.h>int main(void) {
int n = 4;
int* pt = NULL;
pt = &n;
printf("%d", &n + *pt - *&pt + n);
return 0;
}
```선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 3번자, 수험생 여러분! 프로그래밍 언어 활용 과목의 C언어 포인터 단원에서 수험생들을 가장 멘붕에 빠뜨렸던 고난도 킬러 기출이자 역연산 상쇄 원리, '포인터 연산자 주소 상쇄 연산과 수식 분석' 문제입니다! 언뜻 보면 주소값(&n)에 숫자를 더하고 빼는 기괴한 연산처럼 보여 겁먹기 쉽지만, 실제로는 수학의 문자 소거 법칙과 똑같이 주소값 자체가 완전히 제거되는 환상의 마술을 품고 있습니다. 1타 강사의 특제 연산 해부 공식으로 10초 만에 푸는 비법을 알려드리겠습니다.
💡 C언어 포인터의 2대 절대 수식 공식
1. 주소 연산자 & (Address-of):
* 변수가 위치한 실제 메모리 주소값(예: 0x1000)을 가져옵니다.
2. 역참조 연산자 * (Dereference/Indirection):
* 가리키는 주소 공간으로 직접 들어가 그 안에 저장된 실제 상자 알맹이(값)를 끄집어냅니다.
3. 상쇄 소거 법칙 (Cancellation Property):
* *과 &은 서로 반대 작용을 하므로 연이어 붙으면 서로를 무력화하고 사라집니다.
* 예: *&n ➔ n과 동일.
* 예: *&pt ➔ pt와 동일.
💡 1타 강사 전용: 수식 치환 대수식 디버깅
프로그램 내부의 상황을 아주 직관적인 주소 대입법으로 가동해 보겠습니다.
* 변수 n의 값: 4
* 변수 n이 위치한 임의의 메모리 가상 주소: Addr (즉, &n = Addr)
* 포인터 변수 pt의 값: &n을 대입받았으므로 Addr를 가지고 있습니다. (즉, pt = Addr)
이 상태에서 출력할 핵심 수식인 &n + *pt - *&pt + n을 구성하는 4가지 한판 승부 요소를 문자/숫자로 하나씩 완벽하게 매핑 치환해 보겠습니다.
&n➔ 변수n의 주소이므로Addr*pt➔pt가 가리키는 곳(Addr주소인 n)의 값 수치이므로4*&pt➔ 상쇄 법칙에 의해*와&가 소거되어pt자체와 같습니다.pt변수 안의 값은&n이므로 결국Addrn➔ 변수n안에 담긴 정수값 그대로4
이제 이 요소들을 한 식에 모아놓고 초등 수학 덧셈 뺄셈으로 정리해 볼까요?
$$\text{수식} = (\&n) + (*pt) - (*\&pt) + n$$
$$\text{수식} = \text{Addr} + 4 - \text{Addr} + 4$$
여기서 신기하게도 주소 데이터인 Addr와 -Addr가 완전 상쇄(0)되어 우주 저편으로 소거됩니다!
$$\text{수식} = 4 + 4 = 8$$
따라서 주소의 구체적인 메모리 크기에 전혀 구애받지 않고 오직 깔끔한 정수 합산인 8만 결과물로 영롱하게 도출됩니다! 보기 목록에서 숫자 8을 가진 것은 ③번입니다.
"&n과 *&pt(즉, pt=&n)가 식 속에서 서로 더하고 빼지는 구조를 만나 완벽히 무효화(0)되는 구조를 꿰뚫어 볼 수 있는가 묻는 명품 기출입니다. 포인터 수식이 복잡해 보일 때는 쫄지 말고 임의의 주소값 문자 'Addr'을 써서 수식에 대입해 보세요. 모든 안개가 순식간에 걷히게 됩니다!"
문제 71
OSI 7계층 모델에서 전송에 필요한 장치 간의 실제 접속과 절단 등 기계적, 전기적, 기능적, 절차적 특성을 정의한 계층은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번자, 수험생 여러분! 프로그래밍 언어 활용 과목 네트워크 OSI 7계층 참조 모델 파트에서 매 회차 단답형 서술 및 필기 0순위 무조건 출제 핵심 지식, '물리 계층(Physical Layer)의 4대 표준 규격(기계적, 전기적, 기능적, 절차적) 특성 분석' 문제입니다! 정보통신 기술 표준에서 물리적인 케이블, 커넥터, 송수신 장치 하드웨어를 어떻게 구동해야 충돌 없이 순수 신호를 전달할 수 있는지, 1타 강사와 통쾌하고 확실하게 공략해 봅시다.
OSI 물리 계층(Physical Layer)의 4대 주요 정의 규격
┌─────────────────────────────────────────────────────────────┐
│ 물리 계층 (Physical Layer) 4대 설계 명세 │
└──────────────────────────────┬──────────────────────────────┘
│
┌─────────────────────────┼─────────────────────────┐
▼ ▼ ▼
[기계적 규격] [전기적 규격] [기능적 / 절차적 규격]
- 커넥터 핀 수 - 전압 높낮이 레벨 - 각 핀의 전속 역할 규정
- 접속 플러그의 형태 - 신호 전송 속도 제한 - 송수신 타이밍 제어 순서OSI 7계층 주요 기능 및 식별 특징 요약표
| OSI 계층 이름 | 대표 기능 핵심 단서 | 관련 주요 하드웨어 / 프로토콜 |
|---|---|---|
| 물리 계층 (1 Layer) <br>[정답 1번] | 기계적, 전기적, 기능적, 절차적 특징을 정의하여 전송 매체를 통해 비트(Bit) 데이터를 직접 송수신합니다. | 리피터, 허브, 케이블, RJ-45, RS-232C |
| 데이터 링크 계층 (2 Layer) | 노드 대 노드 간 신뢰성 있는 프레임(Frame) 전송을 보장하며, 흐름 및 오류 제어를 담당합니다. | 브리지, L2 스위치, MAC 주소, HDLC, PPP |
| 네트워크 계층 (3 Layer) | 패킷(Packet)에 대한 최적의 경로(Routing)를 개설하고 IP 주소를 토대로 목적지 전달을 주도합니다. | 라우터, L3 스위치, IP, ICMP, ARP, OSPF |
| 전송 계층 (4 Layer) | 종단 대 종단(End-to-End) 간 에러 제어와 세그먼트(Segment) 단위 신뢰성 프로세스 통신을 완성합니다. | TCP, UDP, 포트 번호, 게이트웨이 |
보기 지문 최종 검토
- 문제 지문에서 제시한 '실제 접속과 절단 등 기계적, 전기적, 기능적, 절차적 특성을 정의한 계층'이라는 정의 구문은 국제표준기구(ISO)에서 명시한 물리 계층 (보기 1번)의 교과서적인 정의 문장을 100% 그대로 인용한 것입니다.
문제 72
UNIX에서 새로운 프로세스를 생성하는 명령어는?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 3번UNIX/Linux 운영체제에서 fork() 시스템 호출은 현재 실행 중인 프로세스(부모 프로세스)와 똑같은 복사본인 새로운 프로세스(자식 프로세스)를 생성합니다. exec는 프로세스의 내용을 교체할 때 사용하며, wait는 자식 프로세스가 종료될 때까지 기다릴 때, exit는 프로세스를 종료할 때 사용합니다.
문제 73
다음과 같은 세그먼트 테이블을 가지는 시스템에서 논리 주소(2, 176)에 대한 물리 주소는? 세그먼트번호 시작주소 길이(바이트) 0 670 248 1 1752 422 2 222 198 3 996 604
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번수험생 여러분! 프로그래밍 언어 활용 과목의 운영체제 메모리 관리 단원에서 무척 높은 빈도로 출제되는 세그먼테이션(Segmentation) 가상기억장치 주소 변환 문제입니다. 주소 맵핑 공식과 오버플로우 한계 검사 조건만 확실하게 알아두면 절대 틀릴 수 없는 효자 유형입니다.
세그먼테이션 기법의 개념 및 주소 변환 메커니즘
- 세그먼테이션 (Segmentation): 가상기억장치에 보관된 프로그램을 논리적 크기가 상이한 가변 크기의 단위인 세그먼트(Segment)로 나누어 관리하는 기법입니다.
- 논리 주소 표기법: (s, d)
- s: 세그먼트 번호 (Segment Number)
- d: 세그먼트 내 변위 (Offset / Displacement)
- 물리 주소(실제 주소) 변환 절차:
1. 논리 주소에서 세그먼트 번호 s를 읽고, 세그먼트 테이블(Segment Table)에서 해당 번호의 레코드를 매핑합니다.
2. 한계 검사(Trap Check): 변위 d가 해당 세그먼트의 길이(Limit / 바이트 크기)보다 작은지 비교합니다.
- 만약 d >= 길이 이면 주소 범위를 벗어난 오류(Trap / Segment Fault)가 발생하여 프로그램이 중단됩니다.
- 만약 d < 길이 이면 합법적인 주소이므로 다음 단계로 진행합니다.
3. 물리 주소 계산: 물리 주소 = 시작 주소(Base Address) + 변위(d)
문제 풀이 적용 트레이싱
- 주어진 논리 주소:
(2, 176) - 세그먼트 번호
s = 2 - 변위
d = 176
1. 세그먼트 테이블에서 세그먼트 2의 정보를 탐색:
- 시작 주소 (Base Address): 222
- 길이 (Limit): 198
2. 한계 검사 실행:
- 변위 d는 176이고, 세그먼트 2의 길이는 198입니다.
- 176 < 198 (조건 만족)이므로 정상 범위 내의 올바른 주소 접근입니다.
3. 물리 주소 계산:
- 물리 주소 = 세그먼트 2의 시작 주소 + 변위
- 물리 주소 = 222 + 176 = 398
따라서 세그먼테이션 가상 기억장치가 번역해 주는 최종 물리 주소는 398이 됩니다.
보기 상세 분석
- 1번 398: 주소 변환 공식을 정확히 짚어서 계산해 낸 올바른 정답입니다.
- 2번 400: 단순 덧셈 계산 오차나 다른 행의 세그먼트 정보를 눈대중으로 보아 유도된 오답입니다.
- 3번 1928: 세그먼트 1번 정보(
1752 + 176 = 1928)를 헷갈려서 잘못 대입했을 때 나오는 오답입니다. - 4번 1930: 세그먼트 1번 변환 시의 계산 오류 형태입니다.
문제 74
다음 C언어 프로그램의 결과로 옳은 것은?
#include <stdio.h> main( ) {
int a[10];
a[0] = 0;
a[1] = 1;
for(int i = 0; i < 8; i++) a[i + 2] = a[i + 1] + a[i];
printf("%d", a[9]);
}선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번자, 수험생 여러분! 프로그래밍 언어 활용 과목 C언어 응용 단원에서 필기 디버깅 추적으로 매년 출제되며, 실기 프로그래밍 주관식 결과 출력 및 빈칸 채우기로도 극도로 빈출되는 뼈대 알고리즘, '피보나치 수열(Fibonacci Sequence) 배열 누적 트레이싱' 문제입니다! 소스 코드의 루프 바운더리와 인덱스 매칭을 1타 강사와 함께 차분하게 추적해 봅시다.
피보나치 수열 (Fibonacci Sequence) 배열 트레이싱 시뮬레이션
- 피보나치 정의: 첫째 및 둘째 항이
0과1로 주어지고, 그 뒤의 모든 항은 바로 앞의 두 항의 합으로 정의되는 수열입니다. - 수식: $a[i + 2] = a[i + 1] + a[i]$
```text
[ C언어 피보나치 루프 실행 트레이싱 표 ]
- 초기 상태: a[0] = 0, a[1] = 1
┌───────┬───────────┬─────────────────────────────────┬───────────────────┐
│ i 값 │ i < 8 여부│ 대입 연산식 │ 배열 계산 결과 │
├───────┼───────────┼─────────────────────────────────┼───────────────────┤
│ i = 0 │ 참 (T) │ a[2] = a[1] + a[0] = 1 + 0 │ a[2] = 1 │
│ i = 1 │ 참 (T) │ a[3] = a[2] + a[1] = 1 + 1 │ a[3] = 2 │
│ i = 2 │ 참 (T) │ a[4] = a[3] + a[2] = 2 + 1 │ a[4] = 3 │
│ i = 3 │ 참 (T) │ a[5] = a[4] + a[3] = 3 + 2 │ a[5] = 5 │
│ i = 4 │ 참 (T) │ a[6] = a[5] + a[4] = 5 + 3 │ a[6] = 8 │
│ i = 5 │ 참 (T) │ a[7] = a[6] + a[5] = 8 + 5 │ a[7] = 13 │
│ i = 6 │ 참 (T) │ a[8] = a[7] + a[6] = 13 + 8 │ a[8] = 21 │
│ i = 7 │ 참 (T) │ a[9] = a[8] + a[7] = 21 + 13 │ a[9] = 34 ★정답│
│ i = 8 │ 거짓 (F)│ (루프 조건 i < 8 불만족으로 반복 탈출) │
└───────┴───────────┴─────────────────────────────────┴───────────────────┘
```
#### 1. 배열 인덱스 9번지 값 출력 [정답 4번]
- 루프를 다 돌고 나서 printf("%d", a[9]); 구문을 만납니다.
- 배열의 9번지 인덱스에 저장되어 있는 수치는 정확히 34입니다.
- 따라서 오름차순 피보나치 수열의 10번째 항 값인 34 (선택지 4번)가 정확한 정답입니다.
문제 75
C언어에서 두 개의 논리 값 중 하나라도 참이면 1을, 모두 거짓이면 0을 반환하는 연산자는?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번자, 수험생 여러분! 프로그래밍 언어 활용 과목의 C언어 기초 연산자 파트에서 실기 괄호 채우기 및 소스 코드 트레이싱에 숨 쉬듯 활용되는 핵심 상식, 'C언어의 기본 논리 연산자(&&, ||, !)의 기능 분류 및 진리표 분석' 문제입니다! 논리합(OR) 연산자는 실물 소프트웨어 필터링 및 조건 제어 루프에서 가장 중요한 기틀입니다. 1타 강사와 통쾌하게 공략해 봅시다.
C언어의 3대 핵심 논리 연산자 정리표
| 연산자 기호 | 연산자 명칭 | 논리 판정 및 작동 원리 규칙 | 실물 코드 연산 예시 | ||||||
|---|---|---|---|---|---|---|---|---|---|
| **` | `** <br>[정답 1번] | 논리합 (OR) | 두 논리 피연산자 중 '하나라도 참(True / 0이 아님)이면' 최종 결과로 1(참)을 반환하고, 오직 둘 다 거짓(0)일 때만 0을 반환합니다. | `(5 > 3) \ | \ | (2 > 10) ➔ 1 \ | \ | 0 ➔ 1` | |
&& | 논리곱 (AND) | 두 논리 피연산자가 '모두 참(True)이어야만' 1(참)을 반환하며, 어느 하나라도 거짓(0)이면 결과는 0입니다. | (5 > 3) && (2 > 10) ➔ 1 && 0 ➔ 0 | ||||||
! | 논리 부정 (NOT) | 단항 연산자로서, 현재 피연산자의 논리 상태를 반전시킵니다. (참은 거짓으로, 거짓은 참으로) | !(5 > 3) ➔ !(1) ➔ 0 |
각 보기 연산자별 정체 추적 및 오답 배제
- 보기 1번 (
||): 정답. C언어의 정식 논리합(Logical OR) 기호입니다. (키보드 엔터키 상단 원화 표시\부호를Shift키와 함께 두 번 눌러 타이핑합니다.) - 보기 2번 (
&&): 논리곱(AND) 기호이므로 탈락. - 보기 3번 (
): C언어에는 거듭제곱을 뜻하는연산자가 존재하지 않습니다. (Python에는 존재하나 C언어에서는 부적합하며 포인터 선언 시 연속 포인터형으로 사용됩니다.) - 보기 4번 (
!=): 두 대상이 '같지 않음'을 비교 판정하는 관계 연산자(Relational Operator)이므로 탈락.
문제 76
다음은 n각형을 화면에 그리는 프로그램을 Python으로 구현한 것이 다. 괄호(㉠~㉢)에 들어갈 알맞은 코드는? import turtle ( ㉠ ) shape(distance, n): t = turtle.Turtle( ) for i in range(n): t.( ㉡ ) t.( ㉢ ) shape(100, 5)
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번수험생 여러분! 프로그래밍 언어 활용 과목에서 파이썬 기초 문법 및 거북이(Turtle) 그래픽 모듈 활용을 다루는 코드 빈칸 추론 문제입니다. 파이썬의 함수 정의 키워드, 메서드 호출 양식, 그리고 정수 나눗셈 연산자의 고유 문법을 종합적으로 체크하고 있습니다.
파이썬(Python) 구문 및 Turtle 모듈 핵심 문법
import turtle
def shape(distance, n): # ㉠ 함수 정의 키워드 def
t = turtle.Turtle()
for i in range(n):
t.forward(distance) # ㉡ 지정된 거리(distance)만큼 거북이 전진
t.left(360 // n) # ㉢ 정n각형의 외각(360/n) 계산 후 좌측 회전
shape(100, 5)각 빈칸(㉠~㉢) 상세 문법 해설
1. ㉠ 함수 정의 키워드: 파이썬에서 함수를 생성할 때는 반드시 def 키워드로 시작해야 합니다. (class는 객체지향 클래스 선언용이므로 오답입니다.)
2. ㉡ 전진 이동 메서드: 거북이 객체 t를 매개변수 distance만큼 앞쪽으로 이동시키는 구문은 forward(distance) 입니다.
3. ㉢ 다각형 외각 회전 및 몫 연산자:
- 정n각형을 그리려면 한 변을 그린 뒤 외각인 $360^{\circ} / n$ 만큼 각도를 틀어야 합니다.
- 파이썬에서 나눗셈의 몫을 정수 형태로 깔끔하게 반환하는 연산자는 // 입니다. (참고로 /// 라는 슬래시 3개 기호는 파이썬에 존재하지 않는 문법 오류 기호입니다.)
- 따라서 left(360 // n) 이 정합합니다.
보기 상세 분석
- 1번 def, forward(distance), left(360//n): 위에서 증명한 3대 문법(def, forward, // 연산)이 한 치의 오차 없이 배치된 완벽한 정답입니다.
- 2번 left(360///n): 파이썬 문법에 없는
///기호를 기재하여 컴파일 에러를 일으킵니다. (오답) - 3번 / 4번 class 시작: 함수가 아닌 클래스 정의 키워드로 시작했으므로 문맥상 틀렸습니다. (오답)
문제 77
다음 중 HRN에 대한 설명으로 옳지 않은 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 3번수험생 여러분! 프로그래밍 언어 활용 과목의 운영체제 및 프로세스 스케줄링 단원에서 계산식과 개념을 묻는 최고 중요도 문항인 HRN (Highest Response-ratio Next) 스케줄링 기법 판별 문제입니다. SJF의 치명적 단점인 기아 현상(Starvation)을 에이징(Aging) 기법으로 극복한 HRN의 산출 수식 구조와 우선순위 판별 기준을 명확하게 꿰뚫고 있어야 합니다.
HRN (Highest Response-ratio Next) 스케줄링 핵심 분석
- 탄생 배경: SJF(Shortest Job First) 기법은 실행 시간이 짧은 프로세스만 편애하므로, 실행 시간이 긴 프로세스는 영원히 CPU를 할당받지 못하는 기아 현상(Starvation)이 발생합니다. 이를 보완하기 위해 대기 시간(Aging)을 계산식 분자에 결합하여 공평성을 수립한 비선점형 스케줄링 기법입니다.
- 우선순위 산출 공식:
$$\text{우선순위 가중치 (응답 비율)} = \frac{\text{대기 시간} + \text{서비스(실행) 시간}}{\text{서비스(실행) 시간}}$$
#### 우선순위 부여의 대원칙
- 기법의 영문 명칭인 Highest Response-ratio Next가 의미하듯, 위 공식으로 계산된 응답 비율 값이 '높을수록(Highest)' 최우선 순위로 발탁되어 CPU를 먼저 선점합니다.
- 대기 시간이 길어질수록 분자 값이 커지므로, 실행 시간이 긴 프로세스라 할지라도 오래 대기하면 우선순위가 높아져 기아 현상이 완벽히 방지됩니다.
보기 상세 분석
- 1번 대기 시간과 서비스 시간 이용: 공식의 핵심 변수로 두 시간을 조합하므로 참입니다. (참)
- 2번 대기 시간이 긴 프로세스 우대: 대기 시간이 분자 항목으로 가산되므로 오래 기다릴수록 우선순위가 치솟아 공정성이 유지됩니다. (참)
- 3번 값이 낮을수록 우선순위가 높다: HRN은 공식 산출 수치값이 '높을수록(Highest)' 우선순위가 높은 방식입니다. 수치가 낮을수록 우선순위가 높다고 반대로 서술했으므로 오류 기술이자 정답입니다.
- 4번 SJF 기법 보완: SJF의 무한 대기 결함을 에이징으로 타파하기 위해 개발되었으므로 정합합니다. (참)
문제 78
다음 Python 코드 출력문의 결과는? print(4, 1, 2, sep=',', end='') print(3, 5, sep='/')
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번수험생 여러분! 프로그래밍 언어 활용 과목의 파이썬 기초 문법 단원에서 거의 단골로 출제되는 print() 함수의 출력 제어 옵션(sep, end) 해석 문제입니다. 파이썬의 표준 출력 문법은 디폴트 상태와 수동 파라미터 제어 상태가 서로 어떻게 동작 규격이 바뀌는지를 꼼꼼히 정리해 둘 의무가 있습니다.
Python print() 옵션 상세 해설
파이썬의 print() 내장 함수는 여러 인자를 쉼표 ,로 구분하여 한꺼번에 전달받아 화면에 예쁘게 출력합니다. 이때 작동방식을 조율하는 2가지 전역 옵션이 존재합니다.
1. sep (Separator) 옵션
- 역할: 쉼표로 열거된 여러 출력 값들의 사이에 삽입할 구분 문자를 지정합니다.
- 기본값: 공백 한 칸 (' ')
- 수식: print(4, 1, 2, sep=',') 일 경우 값과 값 사이에 쉼표가 붙어 4,1,2 로 정렬 인쇄됩니다.
2. end (End character) 옵션
- 역할: 출력 데이터를 전부 찍어낸 뒤 가장 끝에 덧붙여 장식할 문자를 지정합니다.
- 기본값: 줄바꿈 기호 ('\n')
- 수식: print(..., end='') 일 경우 줄바꿈을 일절 수행하지 않고 빈 문자열 상태로 마감하므로, 다음에 실행되는 print()의 출력물이 이어서 한 줄로 우측에 연쇄 부착됩니다.
파이썬 프로그램 라인 트레이싱
```python
# 1번 라인
print(4, 1, 2, sep=',', end='')
```
- 구분값 sep를 쉼표 ,로 두었으므로 4,1,2 가 출력됩니다.
- 개행값 end를 빈 문자열 ''로 주었으므로 화면 커서는 줄을 바꾸지 않고 4,1,2 문자 바로 우측 끝자리에 찰싹 대기합니다.
```python
# 2번 라인
print(3, 5, sep='/')
```
- 앞선 출력 커서 뒤에 바로 이어서 출력이 개시됩니다.
- 출력 대상은 3과 5이며, 구분자 sep가 슬래시 /이므로 3/5 가 붙습니다.
- 즉, 1번 출력 끝자리에 붙어 4,1,2 + 3/5 = 4,1,23/5 가 최종 화면에 시각적으로 완성됩니다.
보기 상세 분석
- 1번 4,1,23/5: 첫 print의 줄바꿈 생략과 두 번째 print의 연쇄 연결, 그리고 각각의 구분자
sep가 적절히 발휘되어 조합된 올바른 연산 결과입니다. (정답) - 2번 4 1 23/5: 첫 번째 print의 구분자
sep=','를 망각하고 기본값 공백 처리로 처리했을 때 빠지는 함정 오답입니다. - 3번 4,1,2: 두 번째 print() 자체를 무시하고 생략해 버렸을 때 나오는 부조리한 선택지입니다.
- 4번 4 1 2 3/5 3 5: 파이썬의 연산 구조를 겉핥기로 추정하여 중복 표기되었을 때 유도되는 완전한 왜곡 오답입니다.
문제 79
다음 C 언어 프로그램이 실행되었을 때의 결과는?
#include <stdio.h> main() {
char* s = "Sinagong";
for(int i = 5; i > 0; i--) printf("%c", *(s + i));
}선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번자, 수험생 여러분! 프로그래밍 언어 활용 과목 프로그래밍 언어 기초 단원에서 C 언어 실기 유형에서 가장 난이도가 높게 체감되는 포인터 표기법과 루프 연산 결합, 'C 언어 문자열 주소 연산(*(s + i))과 역방향 루프 출력' 문제입니다! 1타 강사와 절대 틀리지 않는 포인터 접근 매커니즘을 낱낱이 파헤쳐 봅시다.
C 언어 문자열 포인터의 논리적 주소 매핑 구조
- 정의:
char* s = "Sinagong";선언 시, 포인터 변수s는 문자열의 맨 첫 번째 시작 문자인'S'의 메모리 주소를 가지게 됩니다. - 배열 포인터 변환성:
*(s + i)표기는 C 언어 스펙상 배열 인덱싱 표현인s[i]와 완벽하게 100% 동일한 작동을 수행합니다.
```text
[ 문자열 "Sinagong" 주소 및 오프셋 매핑 ]
+---------+---+---+---+---+---+---+---+----+
| 포인터 |s+0|s+1|s+2|s+3|s+4|s+5|s+6|s+7 | ...
+---------+---+---+---+---+---+---+---+----+
| 인덱스 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
+---------+---+---+---+---+---+---+---+----+
| 실제 값 | S | i | n | a | g | o | n | g |
+---------+---+---+---+---+---+---+---+----+
```
### 루프 전이 및 드라이런 추적
- 루프 제어: for (int i = 5; i > 0; i--)
- 초기 조건: i = 5
- 종료 한계: i > 0 인 동안만 돌아가며, 매 회차마다 i를 1씩 차감합니다.
```text
* 1회차 : i = 5 ➔ *(s + 5) ➔ 'o' 출력
* 2회차 : i = 4 ➔ *(s + 4) ➔ 'g' 출력
* 3회차 : i = 3 ➔ *(s + 3) ➔ 'a' 출력
* 4회차 : i = 2 ➔ *(s + 2) ➔ 'n' 출력
* 5회차 : i = 1 ➔ *(s + 1) ➔ 'i' 출력
* 6회차 : i = 0 ➔ i > 0 (0 > 0) 조건식이 거짓이 되어 루프 탈출!
```
#### 1. 최종 출력 스트림 완성 및 정답 식별 [정답 2번]
- 출력 결과: 회차별 글자들을 일렬로 이으면 "ogani"가 고스란히 정렬됩니다.
- 선지 대조: 2번 선택지인 "ogani"가 이와 한 글자도 틀리지 않고 정확히 일치하는 정답이 됩니다.
문제 80
파일 디스크립터(File Descriptor)에 대한 설명으로 틀린 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번수험생 여러분! 프로그래밍 언어 활용 과목의 운영체제 파일 시스템 관리 단원에서 전통적으로 다뤄지는 파일 디스크립터(File Descriptor / File Control Block) 개념 규정 문제입니다. 운영체제가 디스크 파일들을 어떻게 추적하고 RAM 상에 구조화하여 올리는지 메커니즘을 알아야 합니다.
파일 디스크립터 (File Descriptor) 및 FCB 이론
- 파일 디스크립터 (File Descriptor) / 파일 제어 블록 (File Control Block, FCB):
- 운영체제가 시스템 상의 수많은 파일들을 체계적으로 관리하고 신속하게 접근하기 위해, 각 파일별로 생성하여 저장해 두는 파일 메타 정보 구조체(테이블)입니다.
- 보관 정보 구성:
- 파일의 이름 및 파일 형식, 파일의 물리적 보조기억장치 시작 주소
- 파일의 논리적/물리적 구조, 파일 크기
- 파일 생성 날짜, 최종 수정 시간, 접근 제어 권한
- 파일의 상태 정보 (참조 횟수, 읽기/쓰기 포인터 등)
- 생명주기 및 저장 위치 메커니즘:
- 평상시: 파일 디스크립터는 영속 데이터이므로 보조기억장치 (하드디스크, SSD 등) 내 특정 시스템 블록(예: UNIX의 inode 등)에 안전하게 박혀 보존됩니다.
- 파일 오픈 (Open): 사용자가 특정 파일의 개방을 요청하는 순간, 시스템은 파일 관리를 고속화하기 위해 해당 파일의 디스크립터 정보를 디스크로부터 읽어와 주기억장치 (RAM / 메인 메모리)의 시스템 영역으로 상주(이동)시킵니다.
- 참조 제한성: 사용자는 보안 및 시스템 커널 보호 목적 때문에 파일 디스크립터 자료 구조를 직접 열어보거나 임의 조작할 수 없으며, 시스템 시스템 콜(System Call) API를 통한 간접 제어만 지원됩니다.
보기 상세 분석
- 1번 파일 관리를 위해 시스템이 필요로 하는 정보를 가지고 있다: 파일 크기, 생성 시간, 권한 등 운영체제가 파일 통제에 쓰는 모든 속성을 모아두고 있습니다. (참)
- 2번 파일 제어 블록(File Control Block)이라고도 한다: FCB는 파일 디스크립터를 의미하는 정식 다른 이름입니다. (참)
- 3번 사용자가 파일 디스크립터를 직접 참조할 수 없다: 커널 무결성 수호를 위해 직접 포인터 접근은 차단되어 있습니다. (참)
- 4번 주기억장치에 저장되어 있다가 파일이 개방(open)되면 보조기억장치로 이동된다: 메커니즘이 앞뒤가 거꾸로 서술되었습니다. 평소 디스크(보조기억장치)에 머물던 파일 제어 정보가 파일 오픈 시 검색 처리 성능을 위해 주기억장치(RAM)로 기어 올라오는(메모리 상주) 순서가 올바릅니다. 따라서 4번은 명백히 오답이며 이 문제의 정답입니다.
문제 81
COCOMO 모델의 프로젝트 유형으로 거리가 먼 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번자, 수험생 여러분! 정보시스템 구축 관리 과목 프로젝트 일정 및 비용 산정 단원에서 자격시험 필기는 기본이고 실기 단답식 단어로도 집요하리만큼 출제되는 전설적인 바이블 모델, '보엠(Boehm)의 COCOMO(Constructive Cost Model) 개발 유형 구분' 문제입니다! 대다수의 비용 예측 기법 중 인월(Man-Month) 계산식의 기초 토대가 되는 이 3대 등급 체계를 1타 강사와 통쾌하게 테이블 하나로 총정리해 봅시다.
보엠(Boehm)의 COCOMO 소프트웨어 개발 분류 3대 유형
| 개발 유형 (Project Type) | 규모 가이드 (Source Code Lines) | 주 대상 프로그램 성격 및 사례 |
|---|---|---|
| 1. Organic (유기형/조직형) | 5만 라인(50 KDLOC) 이하의 소규모 | - 일반 사무용 프로그램, 업무용 비즈니스 소프트웨어<br>- 개발 난이도가 비교적 쉽고 정형화된 시스템 |
| 2. Semi-detached (반결합형) | 30만 라인(300 KDLOC) 이하의 중규모 | - 트랜잭션 처리 시스템, 운영체제용 컴파일러, DBMS<br>- 유기형보다 복잡하며 기술력 수준이 요구되는 소프트웨어 |
| 3. Embedded (내장형/임베디드) | 30만 라인(300 KDLOC) 초과의 초대형 | - 군사 무기 미사일 유도 시스템, 원자력 발전소 제어 시스템, 실시간 비행 안전 제어<br>- 높은 트랜잭션 신뢰성과 실시간 처리가 요구되는 극한의 시스템 |
#### 1. COCOMO 비용 산정 모델의 유형 분별 [정답 4번]
- COCOMO(Constructive Cost Model)는 소프트웨어의 라인 수(LOC, Lines of Code)를 일차 척도로 삼아, 가중치 상수를 곱해 개발 노력을 산출합니다.
- 이때 프로젝트의 도메인 성격에 따라 보엠은 소프트웨어를 정확히 세 갈래(Organic, Semi-detached, Embedded)로만 이산 분류했습니다.
- 따라서 COCOMO의 개발 등급 유형군에 존재하지 않는 외톨이 단어는 Sequential (선택지 4번)이 정답이 됩니다. (Sequential은 단순 순차를 의미하는 범용 컴퓨터 공학 어휘입니다.)
문제 82
다음 내용이 설명하는 것은? • 네트워크상에 광채널 스위치의 이점인 고속 전송과 장 거리 연결 및 멀티 프로토콜 기능을 활용 • 각기 다른 운영체제를 가진 여러 기종들이 네트워크상 에서 동일 저장장치의 데이터를 공유하게 함으로써, 여 러 개의 저장장치나 백업 장비를 단일화시킨 시스템
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번수험생 여러분! 정보시스템 구축 관리 과목의 IT 인프라 구축 단원에서 매 회차 출제되는 스토리지 시스템 3대 방식(DAS, NAS, SAN) 식별 문제입니다. 각 방식의 연결 매체, 프로토콜, 구조적 장단점을 정확하게 구별할 수 있어야 합니다.
주요 스토리지 접속 방식 3대 기법 총정리
graph TD
A["스토리지 접속 시스템"] --> B["DAS: 서버와 저장장치를 전용 케이블 (SCSI 등)로 직접 연결"]
A --> C["NAS: 이더넷 (LAN) 네트워크를 통해 파일 단위로 스토리지 공유"]
A --> D["SAN: 전용 광채널 (Fibre Channel) 스위치로 고속 스토리지 전용 네트워크 구축"]| 스토리지 방식 | 영문 풀네임 | 핵심 연결 구조 및 주요 특징 |
|---|---|---|
| DAS | Direct Attached Storage | - 서버와 저장장치를 전용 케이블(SCSI, IDE 등)로 직접 연결하는 방식입니다.<br>- 설치가 쉽고 저렴하지만, 다른 서버와 스토리지 공유가 불가능하고 확장성이 떨어집니다. |
| NAS | Network Attached Storage | - 일반 네트워크(LAN, 이더넷)를 통해 스토리지를 연결하고 파일 단위로 공유합니다.<br>- NFS, CIFS/SMB 프로토콜을 사용하며 파일 공유가 용이하지만, 트래픽 증가 시 성능 병목이 발생할 수 있습니다. |
| SAN | Storage Area Network | - 광채널(Fibre Channel) 스위치를 이용해 서버와 스토리지를 연결하는 별도의 고속 전용 네트워크 시스템입니다.<br>- 이기종 운영체제 간 스토리지 공유가 가능하고 확장성 및 성능이 매우 우수하나, 구축 비용이 높습니다. |
보기 상세 분석
- 1번 SAN (Storage Area Network): 광채널 스위치, 이기종 운영체제 간 동일 저장장치 공유, 백업 장비 단일화 등 본문의 설명과 완벽하게 일치하는 정답입니다.
- 2번 MBR (Master Boot Record): 하드 디스크의 첫 번째 부트 섹터 영역을 의미합니다. (오답)
- 3번 NAC (Network Access Control): 내부 네트워크에 접속하는 단말기의 보안 상태를 점검하여 접속을 통제하는 네트워크 접근 제어 솔루션입니다. (오답)
- 4번 NIC (Network Interface Card): 컴퓨터를 네트워크에 연결하기 위한 하드웨어 장치(랜카드)입니다. (오답)
문제 83
다음 내용이 설명하는 스토리지 시스템은? ㆍ하드디스크와 같은 데이터 저장장치를 호스트버스 어댑 터에 직접 연결하는 방식 ㆍ저장장치와 호스트 기기 사이에 네트워크 디바이스가 있지 말아야 하고 직접 연결하는 방식으로 구성
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번자, 수험생 여러분! 정보시스템 구축 관리 과목 하드웨어 및 인프라 구축 단원에서 실기 단답 주관식 및 필기 기출의 3대 산맥으로 무조건 보장을 받는 기출, '기업용 대형 스토리지 아키텍처 3종 세트(DAS, NAS, SAN) 장단점 및 특성 식별' 문제입니다! 스토리지 결선 구조의 물리 맵을 1타 강사와 함께 일목요연하게 입체화해 봅시다.
스토리지 토폴로지 3대 분류 가이드
```text
[ 스토리지 결선 방식 비교 ]
┌─────────────────────────────────────────────────────────┐
│ ▣ 1. DAS (Direct Attached Storage) │ ➔ 정답 (보기 11번)
│ [호스트 서버] ══════════ (직결 케이블) ══════════ [HDD/SSD 큐브]
│ - 장점: 빠른 속도, 저렴한 구축 비용
│ - 단점: 타 서버와 자원 공유 불가, 확장 한계
├─────────────────────────────────────────────────────────┤
│ ▣ 2. NAS (Network Attached Storage) │ ➔ 보기 12번
│ [호스트 서버] ──── [스위치/IP 망] ──── [NAS 스토리지 (파일서버)]
│ - 특징: 이더넷(LAN)망을 통한 파일 레벨(NFS, SAMBA) 공유
├─────────────────────────────────────────────────────────┤
│ ▣ 3. SAN (Storage Area Network) │
│ [호스트 서버] ──── [FC 광 스위치 전용망] ──── [스토리지 풀]
│ - 특징: 전용 광채널 망을 사용한 초고속 블록 레벨 공유
└─────────────────────────────────────────────────────────┘
```
#### 1. DAS (Direct Attached Storage / 정답 1번)
- 개념: 별도의 네트워크 장치(스위치, 라우터 등)를 중간에 개입시키지 않고, 하드디스크나 SSD 같은 저장 장치를 호스트 컴퓨터 내부 버스 또는 전용 어댑터(Host Bus Adapter, HBA)에 케이블로 직접(Direct) 연결하는 형태입니다.
- 장점: 직결식 인터페이스 구조상 속도가 매우 쾌적하며, 설치 및 구성이 단순하여 도입 가격이 합리적입니다.
- 단점: 연결된 특정 컴퓨터(서버)에서만 스토리지를 독점 지배할 수 있으므로, 다른 컴퓨터와의 실시간 공유가 불가능하며 거리가 멀어지면 연결 한계에 도달해 확장성에 약점을 보입니다.
#### 2. NAS (Network Attached Storage / 보기 12번)
- 개념: 파일 서버 전용 스토리지로, 기존의 컴퓨터 네트워크(TCP/IP 이더넷 망) 인프라에 직접 매달아 파일 단위로 원격 접속하는 구조입니다.
- 프로토콜: NFS, CIFS/SAMBA 등을 주로 사용하며 이식성과 범용 공유 성능이 뛰어납니다.
#### 3. SAN (Storage Area Network)
- 개념: 서버와 저장 장치들 사이에 초고속 전용 광네트워크(Fiber Channel, FC) 채널을 독립 신설하여, 다수 서버가 블록 단위로 스토리지를 나누어 쓰게 하는 최상급 인프라 스토리지 네트워크 기법입니다.
문제 84
개인키 암호화 기법으로 옳지 않은 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번자, 수험생 여러분! 정보시스템 구축 관리 과목 정보보안 구축 단원에서 암호 키 설계 체계인 대칭키(Symmetric/개인키/비밀키)와 비대칭키(Asymmetric/공개키)의 성질과 속형을 분기하여 묻는, '대칭키 암호화 알고리즘 목록과 비대칭 대표 암호(RSA) 식별' 문제입니다! 1타 강사와 절대 오류 없는 대칭/비대칭 암호 사양도를 명확하게 정리해 봅시다.
양방향 암호화 기술의 2대 대동맥
```text
[ 대칭키 암호화 (Symmetric / 개인키) ] [ 비대칭키 암호화 (Asymmetric / 공개키) ]
- 암호화할 때와 복호화할 때 쓰는 '키가 동일'. - 암호화할 때(공개키)와 복호화할 때(개인키)
- 장점: 연산 속도가 극도로 빠름. '사용하는 키가 서로 다름'.
- 단점: 사용자 증가 시 키 분배 및 관리 복잡성 대폭 증가. - 장점: 키 분배가 수월하고, N명 통신 시 키 개수 절감.
- 예: DES, 3DES, AES, SEED, ARIA, Blowfish 등 - 단점: 수학적 지수 연산 기반이라 연산 속도가 상대적으로 느림.
- 예: RSA, ECC, Diffie-Hellman, ElGamal 등
```
#### 1. 개별 알고리즘 상세 명세
- DES (Data Encryption Standard) [선택지 1번]:
- 1970년대 미국 NBS에서 표준 제정한 64비트 블록 단위의 대칭키 암호 방식입니다. 현재는 키 길이가 56비트로 너무 짧아 전수조사 공격에 취약하여 실무에서는 단독으로 쓰이지 않습니다.
- ARIA [선택지 2번]:
- 대한민국의 국가정보원과 학계가 공동 개발한 국가 표준 대칭 블록 암호 알고리즘입니다. (학계 Academic, 연구소 Research, 국방 Agency의 머리글자 조합)
- SEED [선택지 3번]:
- 대한민국 한국인터넷진흥원(KISA)이 주도하여 개발한 최초의 국산 128비트 대칭 블록 암호 방식입니다.
- RSA (Rivest, Shamir, Adleman) [정답 4번]:
- 큰 정수의 소인수 분해(Prime Factorization)의 수학적 난해함에 기반을 둔, 세계 최초이자 가장 널리 쓰이는 비대칭키(공개키) 암호 알고리즘입니다.
#### 2. 문제 조건 대조 및 정답 확정 [정답 4번]
- 지문 조건: “개인키(대칭키) 암호화 기법으로 옳지 않은 것은?”
- 공학적 판독:
- DES, ARIA, SEED는 대칭키 패밀리에 온전히 정립되지만,
- RSA는 전형적인 공개키(비대칭키) 암호화의 원조이므로, 개인키 기법 범주에 입각할 수 없습니다.
- 따라서 올바른 정답은 선택지 4번입니다.
문제 85
해쉬(Hash) 기법에 대한 설명으로 틀린 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번자, 수험생 여러분! 정보시스템 구축 관리 과목에서 데이터의 위·변조를 원천 감지하여 보안 신뢰성을 가꾸는 초석이자 블록체인의 기반 기술, '단방향 해시(Hash) 함수의 핵심 성질 및 관련 알고리즘 특징' 문제입니다! 이 테마는 임의의 데이터를 던져 넣었을 때 고정된 해시 지문이 나오는 기법의 성격과 용도를 정확히 인지하는지 매의 눈으로 확인하는 훌륭한 출제 포인트입니다. 1타 핵심 요약장으로 정리해 드리겠습니다.
💡 일방향 해시(Hash) 함수의 4대 절대 성질
해시 기법의 핵심 사상과 원리는 다음 4개 항목으로 귀결되며, 하나라도 왜곡 기술되면 시험에서 바로 오답으로 골라내야 합니다.
1. 일방향성 (One-wayness) [④번 지문]:
* 입력 데이터 $x$를 가지고 해시값 $H(x)$를 구하는 것은 순식간이지만, 역으로 출력된 해시값 $H(x)$를 바탕으로 원래 입력값 $x$를 역산하는 것은 불가능합니다. (복호화 불가)
2. 고정된 길이 출력 (Fixed-length Output) [①번 지문]:
* 입력하는 원문 데이터의 크기가 단 1글자든, 100GB짜리 초고화질 대용량 비디오 파일이든 상관없이 항상 미리 지정된 고정된 길이의 해시값(지문)을 출력합니다. (예: SHA-256은 언제나 256비트 출력)
3. 충돌 저항성 (Collision Resistance):
* 서로 다른 두 개의 입력 데이터 $x_1$과 $x_2$를 해시 함수에 넣었을 때 동일한 해시 결과값 $H(x_1) = H(x_2)$이 나오는 상황을 '충돌'이라고 하며, 이를 찾아내기가 거의 불가능하도록 견고해야 합니다.
4. 눈사태 효과 (Avalanche Effect):
* 입력 데이터가 단 1비트만 미세하게 변경되어도, 완전히 다른 무작위 해시값이 도출되는 급격한 변형 메커니즘입니다.
🔍 정답 최종 규명 및 소거법 분석
- ②번 정답 분석 (틀린 설명 ➔ 정답):
- 설명: 공개키(비대칭키) 암호화 방식(예: RSA, ECC 등)에서 사용하는 키 쌍(공개키와 개인키)을 만드는 과정은 거대한 두 소수의 소인수분해 난해성이나 타원 곡선 이산 대수 등의 복잡한 고난도 정수론 수학 공식을 기반으로 자체적인 난수 엔진을 구동하여 쌍으로 매칭 생성합니다. 해시 함수를 통해 비대칭키 쌍을 추출하거나 유도하는 것이 결코 아닙니다!
- 해시 함수의 주요 용도: 파일 다운로드 무결성 검증, 비밀번호 단방향 암호화 저장, 전자서명 서명부(메시지 다이제스트 추출)에 활용됩니다. 따라서 ②번 기술은 완전히 틀린 오답 진술입니다.
- 나머지 참 보기 해독:
- ① 고정 길이 변환 (True): 해시 함수의 물리적 정체입니다.
- ③ HAVAL, SHA-1 등 대표 알고리즘 (True):
- SHA-1: 160비트 출력의 미국 표준 해시 (현재는 충돌 가능성으로 SHA-2 이상 사용 권장)
- MD5: 128비트 출력 해시 알고리즘 (현재 보안 취약)
- HAVAL: 메시지를 1024비트 단위로 쪼개어 가변 해시 길이(128, 160, 192, 224, 256비트)를 만드는 알고리즘
- HAS-160: 대한민국 국가 표준 해시 알고리즘
- ④ 해시는 일방향 함수 (True): 역산이 불가능한 단방향성을 가집니다.
"해시(Hash)는 원문을 단방향으로 으깨어 고정 길이의 특수 지문을 뽑는 기술! 들어가는 데이터가 조금만 바뀌어도 지문이 요동쳐서 오직 '무결성(Integrity) 확인'에 특효약입니다! 비대칭 키 쌍을 정수론으로 매칭해 내는 공개키 키 생성과는 족보가 다릅니다!"
문제 86
프로젝트에 내재된 위험 요소를 인식하고 그 영향을 분석하여 이를 관리하는 활동으로서, 프로젝트를 성공시키기 위하여 위험 요소를 사전에 예측, 대비하는 모든 기술과 활동을 포함하는 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번자, 수험생 여러분! 정보시스템 구축 관리 및 소프트웨어 공학 프로젝트 관리 파트에서 최근 국가 직무 능력 표준(NCS) 실무 가이드라인에서 극단적으로 강조하는 기출 단골 용어, '프로젝트 위험 분석 및 관리(Risk Analysis / Management)의 정의 식별' 문제입니다! 대형 시스템 통합(SI) 프로젝트의 70%가 실패하는 원인을 진단하고 선제적 백업 플랜(Contingency Plan)을 수립하는 것은 프로 엔지니어의 상징입니다. 1타 강사와 완벽하게 해독해 봅시다.
프로젝트 위험 분석(Risk Analysis / Management)의 3단계 활동
1단계. [위험 식별 (Identification)]
➔ 무엇이 우리 프로젝트를 지연시키고 중단시킬 수 있는가? (기술 부족, 도메인 변경 등)
▼
2단계. [위험 평가 및 분석 (Analysis & Assessment)]
➔ 해당 위험이 터질 확률(Probability)과 터졌을 때의 손실 파급력(Impact)을 수치화
▼
3단계. [위험 제어 및 대비 (Control & Mitigation)]
➔ 회피(Avoid), 완화(Mitigate), 수용(Accept), 전가(Transfer) 등의 전략 백업 플랜 작동각 보기 지문 용어 및 성격 정합성 비교표
| 보기 영어 용어 명칭 | 한글 개념 정식 명칭 | 핵심 임무 및 고유 식별 단서 |
|---|---|---|
| Critical Path Method (CPM) | 임계 경로법 | 각 작업 단계별 선후 관계 네트워크 노드를 구성하고, 프로젝트를 끝낼 수 있는 '가장 최장의 전체 소요 시간 경로(임계 경로)'를 계산하여 통제하는 기법. |
| Risk Analysis (RA) <br>[정답 2번] | 위험 분석 | 내재된 유무형 위험 요소를 인지·예측하고 그 영향도를 사전에 예산/기술적 백업 시나리오로 대비하는 통합적 통제 활동. |
| Work Breakdown Structure (WBS) | 작업 분할 구도 | 개발 프로젝트 전체를 원활한 관리가 가능하도록 하위의 구체적인 소작업 단위(Work Package)들로 트리형 구조 분할하여 가시화한 일정 도표. |
| Waterfall Model | 폭포수 모형 | 분석, 설계, 개발, 구현, 시험, 유지보수가 폭포수처럼 다음 단계로 순차 하향 전이되는 전통적 소프트웨어 수명 주기 모델. |
최종 진단
- 문제 본문의 설명 구절인
“프로젝트에 내재된 위험 요소를 인식하고 그 영향을 분석하여 이를 관리하는 활동”,“사전에 예측, 대비하는 기술”은 명백히 위험에 대응하는Risk Analysis(보기 2번)을 가리키고 있습니다.
문제 87
데이터의 송·수신 사실을 증명할 수 있도록 송·수신 증거를 제공해야 한다는 보안 요소는?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번수험생 여러분! 정보시스템 구축 관리 과목의 시스템 보안 구축 및 암호화 단원에서 단골 기출되는 보안 3요소(CIA) 및 기밀 유지 보안 속성 문제입니다. 정보 보안 기사 수준까지 이어지는 가장 기초적이고 묵직한 정의 문제이므로 정확하게 뜻을 비교 정리하셔야 합니다.
정보 보안 5대 속성 및 설명
1. 기밀성 (Confidentiality)
- 인가받지 않은 사용자(비인가자)가 정보 자산에 함부로 접근하여 내용을 훔쳐볼 수 없도록 철저히 비밀을 보장하는 속성입니다. (예: 대칭키/비대칭키 암호화)
2. 무결성 (Integrity)
- 허가되지 않은 사용자가 전송 도중의 데이터를 함부로 변조, 삽입, 파괴하지 못하도록 보장하고 원본의 정확성 및 완전성을 유지하는 속성입니다. (예: 디지털 서명, 해시 함수)
3. 가용성 (Availability)
- 인가받은 정당한 권한의 사용자가 시스템 서비스나 정보 자산을 원할 때 언제든 지체 없이 안정적으로 즉시 사용할 수 있도록 유지하는 특성입니다. (예: 백업 시스템, 이중화, 디도스 방어)
4. 인증 (Authentication)
- 통신 상대방이 사칭자가 아닌 정당하고 권한이 입증된 진짜 실체(사람, 기기, 프로세스)인지를 완벽히 대조하여 확인해 주는 행위입니다.
5. 부인 방지 (Non-Repudiation)
- 메시지의 송·수신 사실을 사후에 증명할 수 있도록 관련 송·수신 영수증 증거(서명 데이터, 타임스탬프)를 시스템이 영구 제공하여, 송신자나 수신자가 송·수신 행위 자체를 발뺌(부인)할 수 없도록 강제하는 강력한 보안 속성입니다. (예: 공인인증서 전자서명 구조)
보기 상세 분석
- 1번 기밀성: 인가자만 비밀 보장하여 열람하는 특성입니다.
- 2번 무결성: 인가 없이 변조되지 않는 원본 보존 능력입니다.
- 3번 가용성: 필요할 때 상시 가동되어 응답하는 가동률입니다.
- 4번 부인 방지: 송·수신 증거를 확실하게 상호 제공하여 나중에 딴소리하지 못하게 꽁꽁 묶는 질문 정의에 완전하게 합치하는 보안 정답입니다.
문제 88
다음 중 소프트웨어 비용 산정에 대한 설명으로 옳지 않은 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번수험생 여러분! 정보시스템 구축 관리 과목의 프로젝트 관리 및 비용 산정 단원에서 출제되는 핵심 개념 문제입니다. 비용 산정의 정의, 영향 요소, 그리고 비용 산정 기법의 정형적 분류 구조를 완벽하게 구별하고 계셔야 득점할 수 있습니다.
소프트웨어 비용 산정의 기본 개념
- 정의: 소프트웨어 개발에 소요되는 총비용(인건비, 자원비, 간접비 등)을 사전에 합리적으로 예측하여 예산을 할당하고 프로젝트 성공률을 극대화하기 위한 관리 기법입니다.
- 비용 결정 3대 요소:
1. 프로젝트 요소: 소프트웨어의 규모, 복잡도, 신뢰도 등
2. 자원 요소: 인적 자원, 하드웨어 자원, 소프트웨어 도구 등
3. 생산성 요소: 개발자의 능력, 분야 경험, 가상 머신 성능 등
비용 산정 기법의 표준 분류 구조
교재 및 국가직무능력표준(NCS) 지침상 비용 산정 기법은 아래와 같이 세 분류로 구성됩니다.
- 하향식(Top-Down) 산정 기법: 기존 유사 프로젝트 경험을 토대로 전문가들이 판단하거나 의견을 조정하는 방식 (전문가 감정 기법, 델파이 기법)
- 상향식(Bottom-Up) 산정 기법: 세부 작업(WBS) 단위로 잘게 나누어 산정하는 방식 (LOC 기법, 단계별 인월 기법)
- 수학적(공식적) 산정 모형: 경험적 공식을 적용한 자동화 도구 기반 방식 (COCOMO, Putnam, 기능점수(FP) 기법)
보기 상세 분석
- 1번: 비용 산정이 소프트웨어 개발에 필요한 총체적인 규모와 투입 인력을 바탕으로 예측하는 작업임을 올바르게 명시하였습니다.
- 2번: 비용 산정 기법의 표준 분류는 상향식, 하향식, 그리고 수학적(정량적) 모형입니다. '혼합식 기법'이라는 독자적이고 모호한 구분 방식은 소프트웨어 비용 산정 기법의 공식 분류 체계에 포함되지 않습니다. 따라서 이 설명이 옳지 않은 오답입니다.
- 3번: 비용을 필요 이상으로 지나치게 높게 산정할 경우 불필요한 예산 확보로 인한 예산 낭비는 물론, 과도한 인원 투입으로 인한 의사소통 효율성 저하(브룩스의 법칙) 및 생산성 저하를 유발할 수 있습니다.
- 4번: 프로젝트 요소, 자원 요소, 생산성 요소가 비용 결정의 주요 3대 요소임을 잘 기술하고 있습니다.
문제 89
대칭 암호 알고리즘과 비대칭 암호 알고리즘에 대한 설명으로 틀린 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번수험생 여러분! 정보시스템 구축 관리 과목의 시스템 보안 및 고전/현대 암호학 기술 단원에서 해마다 절대 거르지 않고 등장하는 대칭 암호(Symmetric Key) vs 비대칭 암호(Asymmetric Key) 대칭축 비교 문제입니다. 정보 보안 기사 실기에서도 비중이 어마무시한 핵심 파트입니다.
대칭 암호 vs 비대칭 암호 완전 대칭 분석
| 구분 | 대칭키 암호화 (Symmetric) | 비대칭키 암호화 (Asymmetric / 공개키) |
|---|---|---|
| 키의 관계 | 암호화키 = 복호화키 (동일함, 비밀키) | 암호화키 $\neq$ 복호화키 (공개키, 개인키 쌍) |
| 암복호화 속도 | 매우 빠름 (수십~수백 배 차이) | 상대적으로 느림 (복잡한 소인수분해 연산 필요) |
| 키 관리/분배 | 사용자가 늘수록 키 개수가 급증 ($N(N-1)/2$) | 사용자당 2개의 키만 필요 ($2N$) |
| 핵심 약점 | 송·수신자 간 비밀키의 안전한 사전 교환(전달) 문제 | 큰 연산 부담으로 인한 느린 처리 속도 |
| 알고리즘 종류 | DES, 3DES, AES, SEED, ARIA, IDEA | RSA, ECC, Diffie-Hellman, DSA |
| 주요 목적 | 대용량 평문 데이터의 기밀성 보장 | 소량 데이터 암호화(대칭키 전달용), 디지털 서명, 인증 |
보기 상세 분석
- 1번 대칭 암호 알고리즘은 비교적 실행 속도가 빠르기 때문에 다양한 암호의 핵심 함수로 사용된다: 연산 오버헤드가 적어 하드웨어 가속 및 고속 암호 루틴에 정석적으로 사용됩니다. (참)
- 2번 대칭 암호 알고리즘은 비밀키 전달을 위한 키 교환이 필요하지 않아 암호화 및 복호화의 속도가 빠르다: 대칭키 기법은 동일한 키를 송수신 양측이 다 가지고 있어야 통신이 되므로, 안전하게 비밀키를 사전에 전송/공유하기 위한 키 교환 과정이 뼈저리게 요구되며 이것이 대칭키의 최대 취약점입니다. 따라서 '키 교환이 필요하지 않아'라는 기술은 완전히 거짓된 가짜 문장입니다. (오답/정답)
- 3번 비대칭 암호 알고리즘은 자신만이 보관하는 비밀키(개인키)를 이용하여 인증, 전자서명 등에 적용이 가능하다: 개인키 서명 후 공개키로 검증하는 전형적인 인증 메커니즘입니다. (참)
- 4번 대표적인 대칭키 암호 알고리즘으로는 AES, IDEA 등이 있다: 대칭키의 국제 표준 라인업입니다. (참)
문제 90
다음 내용이 설명하는 데이터 스토리지 네트워킹 시스템은?
- 네트워크상에 광채널(Fibre Channel) 스위치의 이점인 고속 전송과 장거리 연결 및 멀티 프로토콜 기능을 활용한다.
- 각기 다른 운영체제를 가진 여러 기종들이 네트워크상에서 동일 저장장치의 데이터를 공유하게 함으로써, 여러 개의 저장장치나 백업 장비를 단일화시킨 전용 네트워크 시스템이다.
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번자, 수험생 여러분! 정보시스템 구축 관리 과목에서 실기 약술형 및 단답 기출 단골 리스트의 부동의 상위권을 독점하는 핵심 기술, '데이터 스토리지 네트워크 설계 기법 (DAS / NAS / SAN) 간의 명확한 차이' 문제입니다! 이 문제는 네트워크 저장 장치를 구성하는 세 가지 주류 아키텍처 중 광채널 스위치 전용망을 구축해 블록 단위의 초고속 공유를 이뤄내는 기술이 무엇인지 정확히 지적해낼 수 있는가 검정합니다. 1타 직관 아키텍처 매트릭스로 정리해 보겠습니다.
💡 스토리지 삼총사 (DAS vs NAS vs SAN) 초강력 비교 매트릭스
출제위원은 항상 스토리지 공유 프로토콜, 통신망 성격, 그리고 전송 블록 단위를 섞어 교란시킵니다!
| 비교 구분 | DAS (Direct Attached Storage) | NAS (Network Attached Storage) | SAN (Storage Area Network) [정답] |
|---|---|---|---|
| 물리적 연결 | 케이블(SATA/SCSI/SAS)로 서버에 직접 1:1 연결 | 기존 LAN(Ethernet) 일반 인터넷 공유 네트워크망 연결 | 전용 고속 광케이블망(Fibre Channel Switch) 구성 |
| 데이터 공유 단위 | 블록 (Block) 단위 액세스 | 파일 (File) 단위 액세스 | 블록 (Block) 단위 초고속 제어 |
| 핵심 전송 규약 | SCSI, ATA 등 | NFS, CIFS/SMB, HTTP 등 | FCP (Fibre Channel Protocol), iSCSI 등 |
| 장단점 요약 | 설치가 가장 단순하고 빠르나, 다수 서버 간의 공유 및 확장 불가 | 공유가 매우 쉽고 저렴하나, 대용량 트래픽 시 일반 인터넷망 병목 심화 | 극강의 속도, 다수 이기종 서버 완벽 공유 및 확장, 단 고가의 장비와 복잡한 관리 비용 |
🔍 정답 최종 규명 및 보기별 용어 정리
- ①번 정답 분석 (SAN ➔ 정답):
- 설명: 지문에서 언급된 "광채널 스위치(FC Switch)를 활용한 고속 전송, 장거리 연결", "서로 다른 운영체제(Windows, Linux 등 이기종) 서버들이 네트워크상에서 동일 저장 자산을 공유", "스토리지의 단일화 단일망 구성" 특징은 오로지
SAN (Storage Area Network)만의 고유 정의입니다. - SAN은 일반 이더넷망의 트래픽 간섭을 피하기 위해 오직 스토리지 교환만을 목적으로 하는 고가 광 전용망을 구축하므로 최고 존엄 수준의 전송 신뢰성과 속도를 자랑합니다.
- 나머지 매력적인 정보통신 오답 보기 해독:
- ② MBR (Master Boot Record): 컴퓨터 부팅 시 디스크 파티션 테이블과 부트 로더 코드가 저장되어 있는 첫 번째 섹터 영역으로 스토리지 망과 전혀 무관합니다.
- ③ NAC (Network Access Control): 네트워크 접근 제어 시스템입니다. 허가받지 않은 기기나 바이러스 백신이 안 깔린 단말기가 사내 와이파이/인터넷망에 임의로 연결하는 것을 통제 및 제어하는 물리 보안 시스템입니다.
- ④ NIC (Network Interface Card): 흔히 말하는 '랜카드(LAN Card)'입니다. 컴퓨터 내부 데이터를 네트워크 케이블 전송용 전기/광 신호로 조율해 주는 컴퓨터 하드웨어 부품입니다.
"서버와 디스크를 1:1로 묶는 독고다이는 'DAS'! 이더넷 선에 꽂아 값싼 파일 공유기로 일 시키는 것은 'NAS'! 수억 원대 비싼 광채널 스위치(FC) 전용망을 짜서 블록 단위로 신들린 속도를 뿜어내는 끝판왕은 'SAN'! 이 3구도를 영원히 품고 가세요!"
문제 91
DoS(Denial of Service) 공격과 관련한 내용으로 틀린 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 2번수험생 여러분! 정보시스템 구축 관리 과목의 시스템 보안 및 해킹 기법 단원에서 기출 빈도가 매우 높은 DoS(서비스 거부 공격) 유형 대조 문제입니다. 각각의 공격 명칭과 구체적인 패킷 전송 수법, 타겟 고갈 요소를 완벽히 분류해 둘 필요가 있습니다.
DoS(Denial of Service) 주요 해킹 공격 해설
1. Smurf (스머프) 공격
- 수법: 공격자가 출발지 IP 주소를 공격 대상자(피해자)의 IP 주소로 위조(IP Spoofing)한 후, 다이렉트 브로드캐스트(Directed Broadcast) 주소로 ICMP Echo Request 패킷을 보냅니다.
- 결과: 브로드캐스트 도메인 내의 수많은 활성 호스트들이 일제히 위조된 피해자 IP 주소로 수만 개의 ICMP Echo Reply 응답 패킷을 보내게 되어 피해자의 시스템과 네트워크 대역폭이 순식간에 과부하로 마비됩니다.
- 오답 포인트: 이 공격은 멀티캐스트(Multicast)가 아닌 브로드캐스트(Broadcast)를 매개로 작동하는 것이 결정적 특징입니다.
2. Ping of Death (죽음의 핑) 공격
- 수법: 규격(65,535바이트)을 훨씬 초과하는 거대한 ICMP 패킷을 의도적으로 전송합니다.
- 결과: IP 단편화(Fragmentation)에 의해 잘게 쪼개진 패킷 조각들이 수신 측에 전달되고, 피해 호스트는 이 조각들을 다시 재조합(Reassembly)하는 과정에서 오버플로우가 발생하여 시스템이 다운되거나 재부팅됩니다.
3. SYN Flooding (신 플러딩) 공격
- 수법: TCP 3-Way Handshake 절차의 허점을 노려, 가짜 IP 주소로 대상 서버에 연결 요청인 SYN 패킷만 연달아 전송합니다.
- 결과: 서버는 연결을 수락하는 SYN-ACK 패킷을 보내고 클라이언트의 최종 ACK 패킷을 기다리는 대기 상태(Half-Open)로 빠져듭니다. 서버의 접속 대기 큐(Backlog Queue)가 순식간에 꽉 차게 되어 정당한 일반 사용자의 신규 연결 접속 요청을 더 이상 받아들일 수 없게 만듭니다.
4. Land (랜드) 공격
- 수법: 패킷의 출발지 IP 주소와 목적지 IP 주소를 완벽히 동일한 피해자 IP 주소로 위조하여 패킷을 보냅니다.
- 결과: 피해자 시스템은 패킷을 받고 응답할 때 자기 자신에게 패킷을 계속해서 무한 루프 형태로 보내게 되어 시스템 내부 자원과 CPU가 고갈되는 심각한 장애가 발생합니다.
보기 상세 분석
- 1번 Ping of Death: 단편화된 거대 ICMP 패킷 재조합 오버플로우를 유도하는 공격이 맞습니다. (참)
- 2번 Smurf: 대량 응답을 유도하는 매개체는 멀티캐스트가 아닌 브로드캐스트(Broadcast)입니다. 따라서 2번은 기술적인 오류가 있는 오답이자 본 문제의 정답입니다.
- 3번 SYN Flooding: Half-Open 접속 대기 큐 고갈 공격에 대한 정확한 정의입니다. (참)
- 4번 Land: 출발지 IP와 목적지 IP를 동일하게 조작하여 자기 자신을 공격하게 만드는 수법이 맞습니다. (참)
문제 92
인증의 유형 중에서 패스워드를 사용하는 경우에 해당하는 인증 유형은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 3번수험생 여러분! 정보시스템 구축 관리 과목의 시스템 보안 및 접근 통제 단원에서 필수 상식으로 출제되는 사용자 인증(Authentication)의 4대 유형 식별 문제입니다. 지식, 소지, 생체, 위치 등 사용자를 식별하고 권한을 부여하는 각 인증 수단의 영문 정의와 대표 사례들을 완벽히 매핑해 두어야 합니다.
사용자 인증 (Authentication) 4대 요소 총정리
graph TD
A["사용자 인증 수단 분류"] --> B["1. 지식 기반 (Something You Know): 패스워드, PIN"]
A --> C["2. 소지 기반 (Something You Have): OTP, 스마트카드"]
A --> D["3. 생체 기반 (Something You Are): 지문, 홍채"]
A --> E["4. 위치 기반 (Somewhere You Are): GPS, 접속 IP"]| 인증 요소 명칭 | 핵심 정의 | 주요 활용 매체 및 예시 |
|---|---|---|
| 1. 지식 기반<br>(Something You Know) | - 오직 정당한 사용자 본인의 머릿속에 기억(지식)하고 있는 비공개 정보를 입력하여 인증합니다. | - 패스워드(Password), PIN 번호, 인증용 질문-답변, 스와이프 패턴 |
| 2. 소지 기반<br>(Something You Have) | - 사용자가 물리적으로 소유하고 있는 매체나 장치를 통해 소지 여부를 증명합니다. | - OTP 생성기, 보안 카드, 공인인증서, 스마트 카드, 하드웨어 토큰 |
| 3. 생체 기반<br>(Something You Are) | - 사용자 본인의 고유한 신체적 특성이나 행동적 특성을 판독하여 인증합니다. | - 지문 인식, 홍채 인식, 안면 인식, 정맥 인식, 음성 분석 |
| 4. 위치 기반<br>(Somewhere You Are) | - 사용자가 현재 위치한 물리적 또는 네트워크상의 공간 정보를 검증합니다. | - 접속 IP 주소 대역, GPS 위치 정보, 콜백(Call back) 확인 |
보기 상세 분석
- 1번 Something You Have (소지 기반): OTP나 스마트카드 등 물리적 소지품을 요구하는 방식입니다. (오답)
- 2번 Something You Are (생체 기반): 지문이나 안면 등 신체 정보를 요구하는 방식입니다. (오답)
- 3번 Something You Know (지식 기반): 본인이 인지하고 있는 '패스워드(Password)'를 기입하는 방식에 정확히 매칭되는 정답입니다.
- 4번 Somewhere You Are (위치 기반): 접속 IP나 GPS 좌표를 요구하는 방식입니다. (오답)
문제 93
취약점 관리를 위한 응용 프로그램의 보안 설정과 가장 거리가 먼 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번자, 수험생 여러분! 정보시스템 구축 관리 과목의 보안 관리 가이드라인 파트 단골 정형 출제, '시스템 보안 대분류 3요소(물리적, 기술적, 관리적 보안)의 명확한 경계선 구획' 문제입니다! 보안 구축 예산을 짜고 설정을 검토할 때는 하드웨어 및 전산실 주변을 가꾸는 공간 통제와 소프트웨어 코드 및 OS 설정 단락을 엄밀하게 단층 분할하여 대응해야 합니다. 1타 강사가 알려주는 초정밀 3대 보안 영역 구분 지침서로 오답 함정을 시원하게 발라 드리겠습니다.
💡 정보보안 아키텍처 3대 분류 영역 비교표
| 보안 영역 대분류 | 대표 전담 솔루션 및 보안 설정 활동 | 수험 판단 핵심 키워드 |
|---|---|---|
| 물리적 보안 <br>[정답 ①번] | 서버실 통제 구역 설정, 출입 카드 키 발급, 폐쇄회로(CCTV) 배치, 발전기 및 소방 방재실 가동 등 물리적인 건물 통제. | 콘크리트, 자물쇠, 출입제한, 불조심 |
| 기술적 보안 <br>(논리적/응용) | 소프트웨어 실행 권한 설정, OS 포트 접근 통제, 방화벽 규칙 활성화, 데이터 암호화 설정, 취약점 패치 등 전산 제어. | 소프트웨어 설정, 운영체제 통제, 패치 |
| 관리적 보안 | 보안 정책 매뉴얼 수립, 보안 서약서 징구, 전 사원 대상 정기 보안 정서 교육, 정기 보안 감사 이행 등 제도적 관리. | 문서, 서약서, 직원 교육, 감사 |
🔍 각 보기별 보안 메커니즘 낱낱이 해부
- ①번 서버 관리실 출입 통제 (물리적 보안) [오답이자 정답]:
- 이유: 이 조치는 철저하게 '사람의 발길'과 '몸'을 통제하는 콘크리트 및 자물쇠 기반의 오프라인 물리적 보안에 기속됩니다. 따라서 문제에서 물어보는 "응용 프로그램(소프트웨어)의 보안 설정"과는 성질상 은하수만큼 먼 나라 이야기이므로 독보적인 틀린 보기(정답)로 도출됩니다.
- ②번 실행 프로세스 권한 설정 (응용 프로그램 보안) [보기 참]:
- 어플리케이션을 구동할 때 최고관리자(Root) 권한이 아닌 일반 권한을 주어 시스템이 탈취당하는 것을 막는 명확한 논리 보안입니다.
- ③번 운영체제의 접근 제한 / ④번 운영체제의 정보 수집 제한 [보기 참]:
- 응용 프로그램이 상주하는 OS 영역에서 외부와의 쓸데없는 통신이나 메모리 덤프를 최소화하여 취약점 노출을 무력화하는 기술 보안입니다.
"서버 관리실에 지문인식기 달고 자물쇠 잠그는 것은 벽돌과 열쇠가 일하는 '물리적 보안'입니다! 컴퓨터 화면 속 운영체제 옵션을 만지거나 프로세스 권한을 세팅하는 것은 '응용 소프트웨어/기술 보안'입니다! 이 초등학생도 구분할 수준의 명쾌한 경계선을 반드시 머리에 탑재하고 시험장에 입성하세요!"
문제 94
어떤 외부 컴퓨터가 접속되면 접속 인가 여부를 점검해서 인가된 경우에는 접속이 허용되고, 그 반대의 경우에는 거부할 수 있는 접근제어 유틸리티는?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번수험생 여러분! 정보시스템 구축 관리 과목의 서버 인프라 및 네트워크 접근 통제 단원에서 출제되는 접근제어 유틸리티 TCP Wrapper 식별 문제입니다. 리눅스 서버 보안의 1차 방어선 역할을 수행하는 호스트 기반 접근 통제 도구의 명칭과 동작 방식을 명확히 알고 있어야 합니다.
호스트 기반 접근 통제 도구 TCP Wrapper 분석
graph LR
A["외부 접속 요청<br>(Telnet, SSH, FTP 등)"] --> B["inetd / xinetd 데몬"]
B --> C["tcpd (TCP Wrapper)"]
C -- "1. 허용 여부 점검" --> D["/etc/hosts.allow<br>/etc/hosts.deny"]
D -- "2. 인가 시 접속 허용" --> E["내부 서버 데몬 연결"]- 정의: 위체 베네마(Wietse Venema)가 개발한 호스트 기반의 네트워크 접근제어(Access Control) 및 로깅 유틸리티입니다.
- 동작 원리:
- 외부에서
inetd나xinetd슈퍼 데몬을 통해 관리되는 네트워크 서비스(Telnet, FTP, SSH 등) 접속 요청이 들어오면, 실제 서비스 데몬을 구동하기 전에tcpd데몬(TCP Wrapper)이 중간에서 접속 요청을 가로챕니다. - 시스템 관리자가 설정한 접근 제어 파일인
/etc/hosts.allow(허용 목록)와/etc/hosts.deny(거부 목록)의 규칙을 대조합니다. - 인가된 IP나 호스트망의 접속은 허용하고, 불법적인 접근은 차단함과 동시에 로그를 남깁니다.
보기 상세 분석
- 1번 tcp wrapper: 문제에서 제시한 외부 접속 컴퓨터의 인가 여부 점검, 허용 및 거부 통제라는 접근제어 기능에 완벽히 부합하는 정답입니다.
- 2번 trace checker / 3번 token finder / 4번 change detector: 보안 및 네트워크 모니터링 분야에서 사용되는 일반 명사 조합으로, 특정 운영체제 접근제어 유틸리티 고유 명칭이 아닙니다. (오답)
문제 95
다음 암호 알고리즘 중 성격이 다른 하나는?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번MD4, MD5, SHA-1은 모두 입력 데이터를 고정된 길이의 값으로 변환하는 '해시 함수(Hash Function)' 계열의 알고리즘입니다. 반면, AES(Advanced Encryption Standard)는 데이터를 암호화하고 복호화할 수 있는 '대칭키 암호화(Symmetric Key Encryption)' 알고리즘입니다.
문제 96
물리적인 사물과 컴퓨터에 동일하게 표현되는 가상의 모델로, 실제 물리적인 자산 대신 소프트웨어로 가상화함으로써 실제 자산의 특성에 대한 정확한 정보를 얻을 수 있고, 자산 최적화, 돌발사고 최소화, 생산성 증가 등 설계부터 제조, 서비스에 이르는 모든 과정의 효율성을 향상시킬 수 있는 모델은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 3번수험생 여러분! 정보시스템 구축 관리 과목의 IT 신기술 융합 플랫폼 단원에서 압도적으로 고공 빈출되는 디지털 트윈(Digital Twin)에 대한 용어 매핑 및 정의 판별 문제입니다. 사물인터넷(IoT), 가상현실, 인공지능 통제 등 4차 산업혁명의 기둥이 되는 필수 기술 어휘입니다.
IT 융합 및 신기술 플랫폼 개념 파헤치기
1. 디지털 트윈 (Digital Twin)
- 정의: 물리적인 사물과 컴퓨터(가상 환경)에 동일하게 표현되는 1:1 대응 쌍둥이 가상 모델입니다.
- 원리: 실제 현실 자산에 부착된 IoT 센서 등으로부터 실시간 물리 데이터를 피드백 받아 가상의 소프트웨어 트윈에 동기화합니다.
- 효과: 실제 고가의 발전소, 비행기, 공장 설비 등을 망가뜨리지 않고 가상 시뮬레이션만으로 자산 수명 최적화, 돌발 사고 예방, 개발 설계 효율성 향상을 다각도로 도모할 수 있습니다.
2. N-Screen (앤스크린)
- 정의: 하나의 멀티미디어 콘텐츠(영화, 음악 등)를 스마트폰, 태블릿, PC, 스마트 TV 등 다양한 디지털 단말 기기(N개의 Screen)에서 끊김 없이(Seamless) 이어서 시청할 수 있는 연동 서비스 환경입니다.
3. 가상화 (Virtualization)
- 정의: 단일의 물리적 하드웨어 자원을 논리적으로 분할하여 마치 여러 개의 독립된 컴퓨터 자원인 것처럼 소프트웨어적으로 분할 사용하거나, 반대로 여러 하드웨어를 하나로 합쳐 보이게 제어하는 정보 기술입니다.
보기 상세 분석
- 1번 최적화 / 2번 실행 시간: 특정 IT 시스템의 기동 성능이나 처리 규격 명칭일 뿐, 가상 모델링 대상의 용어 정의와 무관합니다.
- 3번 디지털 트윈: 실제 물리적 자산을 소프트웨어 가상 자산(Twin)으로 치환하여 정확한 정보를 모니터링하고 오작동 시뮬레이션을 돌린다는 본문의 설명에 정합적으로 완벽 일치하는 용어입니다. (정답)
- 4번 N-Screen: 다중 기기 간 멀티미디어 연동 송출 플랫폼 명칭이므로 가상 모사 시뮬레이션 정의와 완전 무관합니다.
문제 97
컴퓨터 사용자의 키보드 움직임을 탐지해 ID, 패스워드 등 개인의 중요한 정보를 몰래 빼가는 해킹 공격은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 1번자, 수험생 여러분! 정보시스템 구축 관리 과목 시스템 보안 구축 및 정보보안 기법 단원에서 정보보호 인프라 실무 기본서마다 핵심 중대 범죄 기법으로 다루는 빈출 원탑 공격 유형, '키보드 입력 정보 갈취 기법인 Key Logger(키로거)' 문제입니다! 단순 상식 선에서도 쉽게 맞추지만, 타 보안 위협 용어들과 함께 정확한 영문 학술 정의를 1타 강사와 함께 일거에 해부해 봅시다.
주요 정보보안 위협 행위(Hacking Attack) 명세
```text
[ 빈출 악성 파일 및 공격 기법 요약 ]
- Key Logger (키로거) [정답 1번] :
- 키보드 눌림 신호(Keystroke)를 가로채 전역 후크나 레지스트리에 상주해 외부로 빼돌림.
- 보안 패드, 가상 키보드(마우스 클릭형) 기술 도입의 계기!
* Worm (웜) :
- 다른 실행 파일을 감염시키지 않고, 독자적으로 유선/무선 네트워크망을 타고
스스로 복제(Self-Replication)하여 망 트래픽 폭증 및 시스템 자원을 차단하는 악성코드.
* Rollback (롤백) :
- 트랜잭션 오류 시 데이터베이스를 이전의 일관성 있고 깨끗한 상태로 복원하는 연산.
```
#### 1. Key Logger Attack의 동작 원리와 대비책 [정답 1번]
- 동작 원리: 하드웨어 키보드 연결 단자 사이에 초소형 USB 젠더를 몰래 끼워 넣거나, 소프트웨어적으로 키보드 디바이스 드라이버에 훅(Hook)을 걸어 사용자가 타이핑하는 모든 문자열을 텍스트 파일로 저장한 뒤 이메일 또는 지정된 외부 C&C 서버로 강제 송출합니다.
- 해결 방안: 금융 결제 사이트 등에서 비밀번호를 키보드로 치지 않고 화면에 무작위로 뜨는 마우스 가상 키보드를 클릭하게 만드는 설계가 대표적인 키로거 예방 수단입니다.
- 정답 판별: 문제에서 “사용자의 키보드 움직임을 탐지해 ID, 패스워드 등...”이라 명확히 주어졌으므로 완벽히 부합하는 정답은 Key Logger Attack (선택지 1번)입니다.
문제 98
시스템에 저장되는 패스워드들은 Hash 또는 암호화 알고리즘의 결과 값으로 저장된다. 이때 암호 공격을 막기 위해 똑같은 패스워드 들이 다른 암호 값으로 저장되도록 추가되는 값을 의미하는 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번자, 수험생 여러분! 정보시스템 구축 관리 과목의 개인정보보호 및 패스워드 암호화 알고리즘 단골 기출이자 단어 기재 실기 기출, '솔팅(Salting)과 일방향 해시 연산의 취약점 방어법' 문제입니다! 이 문제는 데이터베이스에 패스워드를 평문으로 저장할 수 없게 한 현행 보안 규정에 따라, 단순 일방향 해시(SHA-256 등) 처리 시 도출되는 고유 매핑 한계를 우회하는 현대 크립토그래피의 필수 안전장치를 묻고 있습니다. 1타 강사의 일목요연한 대조 분석표와 솔트 전개 메커니즘으로 원패스 합격을 선물해 드리겠습니다.
💡 패스워드 암호화 기법: 솔팅 (Salting)의 원리
단순 해시 알고리즘은 동일한 입력에 대해 항상 완전히 일치하는 똑같은 출력 해시값을 생산합니다. 해커는 이를 악용하여 미리 널리 쓰이는 비번 해시 값들을 거대한 장부(DB)로 제작해 두었는데, 이를 '레인보우 테이블(Rainbow Table)'이라 부릅니다. 이 테이블로 역추적하면 해시값만 보고도 순식간에 비밀번호 평문이 복원되는 심각한 재앙이 발생합니다.
- 솔팅(Salting) 작동법:
- 사용자가 비밀번호를 설정할 때, 시스템 내부적으로 유저마다 수십 바이트 크기의 무작위 문자열인 '솔트(Salt)'를 강제 생성합니다.
- 그리고 해시 연산을 돌릴 때 사용자의 순수 패스워드에 이 솔트 값을 이어붙여 비벼서 해싱 처리합니다.
[ 사용자 입력 비밀번호: '1234' ] ──┐
├──> [ '1234' + 'x9F7b2...' ] ➔ [ 해시 엔진 ] ➔ [ 해시값: '9A7e...' ]
[ 고유 무작위 솔트: 'x9F7b2...' ] ──┘- 효과: 두 명의 유저가 동일하게 비밀번호를
'1234'로 선언했더라도, 유저별로 배포된 무작위 솔트(Salt)가 완전히 다르기 때문에 데이터베이스 비밀번호 컬럼에 저장되는 암호 해시 결과값은 전혀 다르게 도출됩니다. 이에 따라 해커의 레인보우 테이블 사전 공격 시도는 100% 무력화됩니다.
💡 1타 강사의 개인정보 보안 연계 용어 4대장 대조 정리
| 기술 용어 명칭 | 핵심 매커니즘 및 역할 분류 | 수험생 핵심 체크 포인트 |
|---|---|---|
| 솔트 (Salt) <br>[정답 ④] | 비밀번호 해싱 전에 덧붙이는 고유한 임의의 난수 문자열입니다. | 동일 비밀번호 방지, 레인보우 테이블 무력화 |
| 해시 함수 <br>(Hash Function) | 임의 길의 데이터를 입력받아 언제나 고정된 길이의 독특한 지문 값으로 만들어 주는 일방향성 수학 연산 함수입니다. | SHA-256/512, MD5, 일방향 역함수 불가능 |
| 키 스트레칭 <br>(Key Stretching) | 해싱을 수천 번에서 수만 번 이상 반복 루프로 돌려 해커의 패스워드 대입 속도를 의도적으로 지연시키는 보완 대책입니다. | PBKDF2, bcrypt, Argon2의 핵심 원리 |
| 레인보우 테이블 | 해싱된 암호 해독 속도를 높이기 위해 패스워드 조합에 대응하는 해시값들을 사전에 산더미처럼 연산해 모아둔 데이터베이스 장부입니다. | 해시 해독용 사전 테이블, 공격 도구 |
🔍 오답 보기 속 무관한 IT 용어 분석
- ①번 Pass flag: 특정 상태 분기를 전환하는 임의의 변수명으로 보안 기법과는 관련이 없습니다.
- ②번 Bucket (버켓): 해싱 탐색 알고리즘에서 해시 주소 하나에 여러 레코드를 넣을 수 있도록 준비된 물리적인 저장 주소 공간의 묶음입니다. (충돌 시 슬롯 배분 구조)
- ③번 Opcode (오퍼레이션 코드): 컴퓨터 하드웨어 CPU가 해독하는 최하단 기계어 명령어 비트 중 연산의 명령 종류(ADD, SUB, MOV 등)를 담은 비트입니다.
"같은 계란 프라이라도 소금(Salt)을 뿌리면 완전히 다른 맛이 되듯, 똑같은 패스워드를 쳤더라도 고유 난수인 'Salt(소금)'를 중간에 버무려 해시를 굴려버리면 백 데이터베이스의 암호 결과가 전혀 판이하게 출력됩니다. 암호 공격 방어 단골 손님이니 1초 만에 Salt를 골라내어 합격의 기쁨을 맛보세요!"
문제 99
시스템의 사용자가 로그인하여 명령을 내리는 과정에 대한 시스템의 동작 중 다음 설명에 해당하는 것은? ㆍ자신의 신원(Identity)을 시스템에 증명하는 과정이다. ㆍ아이디와 패스워드를 입력하는 과정이 가장 일반적인 예 시라고 볼 수 있다.
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번자, 수험생 여러분! 정보시스템 구축 관리 과목 시스템 접근 통제 및 계정 보안 분야에서 필기 시험은 물론이고 실기 단답 기술형으로 매번 영문 약어로 출제되는 초특급 기출 0순위, '보안 접근 통제 AAA 솔루션 및 인증(Authentication) 개념 식별' 문제입니다! AAA는 사용자 접속 관리의 기틀로서 컴퓨터 과학 표준 용어입니다. 1타 강사와 통쾌하게 정리해 봅시다.
시스템 접근 제어의 중추: AAA 개념 구조 분석
현대 엔터프라이즈 보안 인프라는 다음 AAA 프레임워크 단계를 차례로 수행하여 유저를 무결하게 제어합니다.
[ 1단계. Authentication (인증) ] ◀────────────────────── 정답 4번 (Authentication)
- 개념: "너는 진짜 네가 주장하는 그 사람(신원)이 맞니?"
- 특징: 자신의 신원(Identity)을 시스템에 증명하고 입증하는 핵심 절차.
- 적용 예시: ID와 비밀번호 입력, 공인인증서 서명, 지문/홍채 인식, OAuth 인증(SMS PIN).
▼
[ 2단계. Authorization (인가 / 권한 부여) ] ◀────────── 보기 14번 (Authorization)
- 개념: "신원이 확인된 너에게 어떤 방(리소스)에 들어갈 권리를 줄까?"
- 특징: 특정 자원에 접근하고 명령을 실행할 권한(Rights/Privilege)을 개별 부여하는 절차.
- 적용 예시: 일반 회원에게는 읽기 권한을, 관리자(Root)에게는 쓰기/삭제 권한 부여.
▼
[ 3단계. Accounting (계정 관리 / 감사 기록) ] ◀──────── 보기 13번 (Accounting)
- 개념: "너는 접속해서 몇 시에 어느 파일에 무슨 명령을 내렸니?"
- 특징: 사용자의 자원 사용량을 과금 분석하고 행동 기록을 감사 로그(Audit Trail)로 추적 기록.
- 적용 예시: 리눅스 `/var/log/secure` 기록, 클라우드 사용 시간당 빌링 청구.보기 지문 분석 및 오답 소거
- Aging (보기 12번 / 실제 1번): 프로세스 스케줄링 기법 등에서 대기 시간이 길어진 프로세스의 우선순위를 점진적으로 상향시켜 아사(Starvation) 현상을 예방하는 '에이징 기법'을 의미하는 엉뚱한 용어입니다.
- Authentication (보기 15번 / 실제 4번): 문제 지문의 설명 문구인
“자신의 신원(Identity)을 시스템에 증명하는 과정”,“아이디와 패스워드를 입력하는 과정”은 단어 정의 그대로 인증(Authentication)에 완벽 부합합니다.
문제 100
소프트웨어 재공학의 주요 활동 중 기존 소프트웨어를 다른 운영체제 나 하드웨어 환경에서 사용할 수 있도록 변환하는 것은?
선택한 답안을 기준으로 전체 100문항을 채점합니다.
정답 및 해설
정답 4번자, 수험생 여러분! 정보시스템 구축 관리 과목 소프트웨어 재공학(Re-engineering) 및 유지보수 단원에서 필기 빈출 0순위 및 실기 주관식 영단어 단답 쓰기(Migration / Porting)로 아주 높게 기출 연계되는 중요 영역, '소프트웨어 재공학의 4대 핵심 활동 식별' 문제입니다! 소스 코드의 근본적인 복구, 변환을 이끄는 재공학 사이클을 1타 강사와 함께 완벽히 뽀개 봅시다.
소프트웨어 재공학 (Re-engineering)의 4대 주요 활동 정의
```text
[ 소프트웨어 재공학 핵심 활동 로드맵 ]
┌──────────────┐
│ 1. 분석 │ ➔ 기존 소프트웨어의 구조 명세를 평가하고 재공학 영역 선정
└──────┬───────┘
▼
┌──────────────┐
│ 2. 재구성 │ ➔ 소스코드를 정돈·개선하되 외적 기능/스펙은 원형 보존 (Restructuring)
└──────┬───────┘
▼
┌──────────────┐
│ 3. 역공학 │ ➔ 소스코드 분석을 통해 원형 명세서, 구조 관계도 추출 (Reverse Engineering)
└──────┬───────┘
▼
┌──────────────┐
│ 4. 이식 │ ➔ 대상 시스템을 이기종 하드웨어나 타 OS로 이주 전환 (Migration/Porting) ★정답
└──────────────┘
```
#### 1. 재공학 주요 활동 분석
- 분석 (Analysis - 보기 12번 / 실제 2번): 대상 소프트웨어의 가치와 생명 주기를 파악하여 재공학에 투자할 가치가 있는지 판별합니다.
- 재구성 (Restructuring - 보기 13번 / 실제 3번): 스파게티 코드를 제어 흐름이 깔끔한 구조적 코드로 변환하여 코드의 가독성을 전격 증대시키되, 동작 결과값(입출력)은 원형 그대로 똑같이 나오도록 코딩을 가다듬는 정비 활동입니다.
- 역공학 (Reverse Engineering - 보기 11번 / 실제 1번): 기 개발된 코드로부터 논리 설계 단계를 추정하고, UML 클래스 다이어그램이나 설계 명세서를 거꾸로 만들어내는 설계 복원 과정입니다.
- 이식 (Migration/Porting - 보기 14번 / 실제 4번): 문제에 적시된 것처럼 “기존 소프트웨어를 다른 운영체제나 하드웨어 환경에서 사용할 수 있도록 변환하는 활동”입니다. 이식 시에는 드라이버 레이어나 컴파일 옵션을 가공하는 등의 작업이 수반됩니다.
전체 채점 결과
과락 40점 이상, 평균 60점 이상일 때 합격입니다.