22년-2회차-정보처리기사-필기 시험지 PDF 다운로드
22년-2회차-정보처리기사-필기
순차 다이어그램(Sequence Diagram)은 객체 간 메시지 교환을 시간 흐름에 따라 표현하는 동적(행위) 다이어그램으로, 시스템의 정적 구조가 아니라 객체 간 동적 상호작용을 모델링한다.
수직 방향이 시간의 흐름을 나타내며 회귀 메시지·제어블록 등으로 구성되므로, '주로 시스템의 정적 측면을 모델링'한다는 설명이 틀리다.
MOM(Message-Oriented Middleware)은 메시지 큐를 매개로 송신측과 수신측을 비동기 방식으로 연결해 이기종 애플리케이션을 통합하는 미들웨어다.
응답을 즉시 받지 않아도 되는 처리에 적합하며, 즉각적인 응답이 필요한 온라인 업무에는 적합하지 않으므로 해당 설명이 틀리다.
익스트림 프로그래밍(XP)은 애자일 방법론의 하나로, 소규모 팀이 변경이 잦은 요구에 신속히 대응하도록 상식과 경험을 최대한 끌어올리는 실천 방법을 정의하며 문서보다 소스코드에 중점을 둔다.
구조적 방법론은 절차·기능 분해 중심의 전통적 개발 방법론이므로, XP를 구조적 방법론이라 한 설명이 틀리다.
유스케이스 다이어그램의 관계는 연관(Association)·확장(Extend)·포함(Include)·일반화(Generalization)로 구성된다.
'구체화(Realization)'는 클래스 다이어그램에서 인터페이스와 구현 클래스 사이의 관계를 나타내는 것으로, 유스케이스 구성 요소 간 관계에는 포함되지 않는다.
비기능적 요구사항은 시스템이 수행할 기능 자체가 아니라 성능·품질·제약 등을 규정하는 요구로, 처리량·반응 시간 같은 성능 요구가 대표적이다.
'모든 화면이 3초 이내에 사용자에게 보여야 한다'는 반응 시간에 대한 성능 요구이므로 비기능적 요구에 해당하며, '조회·인출·입금·송금 기능이 있어야 한다'는 시스템이 수행할 동작을 규정한 기능적 요구다.
정보공학 방법론에서 데이터베이스 설계에 사용하는 모델링 언어는 개체와 개체 간 관계를 표현하는 Entity-Relationship Diagram(E-R 다이어그램)이다.
패키지·상태전이·배치 다이어그램은 각각 구조 패키징, 객체 상태 변화, 물리적 배치를 표현하는 UML 다이어그램으로 데이터베이스 설계용 모델링 언어가 아니다.
미들웨어는 이기종 시스템 간 통신의 복잡한 내부 동작을 응용 프로그램과 사용자로부터 감추는 투명성(Transparency)을 제공해야 한다.
따라서 '사용자가 정보 교환 방법 등의 내부 동작을 쉽게 확인할 수 있어야 한다'는 미들웨어의 목적(내부 동작 은닉)과 반대되는 설명이므로 틀리다.
UI 설계 시 사용자가 치명적인 오류를 명확히 인지하고 대응할 수 있도록 오류 상황을 정확히 전달해야 하며, 부정적인 정보를 숨기는 것은 바람직한 설계 지침이 아니다.
따라서 '치명적인 오류에 대한 부정적인 사항은 사용자가 인지할 수 없도록 한다'는 설명이 틀리다.
메소드 오버로딩(Overloading)은 동일한 메소드명을 유지하면서 매개변수의 타입이나 개수를 다르게 하여 여러 메소드를 구분하는 기법이다.
'매개 변수 타입은 동일하지만 메소드명을 다르게 함으로써 구현·구분한다'는 설명은 오버로딩의 정의(메소드명 동일, 매개변수 다름)와 반대이므로 틀리다.
이미지에서 보이는 내용은 소프트웨어 개발 영역 결정 요소를 나타내는 도표로, 사용자와 시스템 간의 상호작용 방식을 중심으로 설명하고 있습니다. 소프트웨어 개발 영역을 결정하는 주요 요소는 기능, 성능, 제약 조건, 인터페이스 등이 있는데, 이 중 인터페이스(Interface)는 사용자가 시스템과 상호작용하는 방식, 즉 입출력 형태와 사용자 경험을 정의하는 요소로서 개발 영역의 범위와 특성을 직접적으로 결정합니다. 기능과 성능은 무엇을 만들고 얼마나 빠르게 할 것인지를 결정하고, 제약 조건은 개발의 한계를 나타내지만, 인터페이스는 개발 영역 자체의 경계와 사용자 접점을 명확히 정의하는 핵심 결정 요소입니다.
클래스는 공통 속성과 연산을 공유하는 객체들의 집합(틀)이며, 객체는 그 클래스로부터 생성된 개별 인스턴스이다.
따라서 "객체는 공통 속성을 공유하는 클래스들의 집합이다"라는 서술은 객체와 클래스의 관계를 뒤바꾼 것으로 틀린 설명이다.
객체가 상태·동작·식별자를 가지며, 자료구조와 함수를 지닌 독립적 존재이고, 상태가 속성값으로 정의된다는 나머지 설명은 모두 옳다.
캡슐화(Encapsulation)는 객체의 속성(데이터)과 그 속성에 대한 연산(메서드)을 하나의 클래스 안에 묶어 하나의 단위로 취급하는 객체지향 개념이다.
이를 통해 객체 내부 구현을 은닉하고 외부에는 필요한 인터페이스만 노출한다.
애자일 선언문은 "계획을 따르기보다 변화에 대응하기를" 더 가치 있게 여긴다고 명시한다.
보기 ①은 이를 반대로 서술하여 "변화 대응보다 자세한 계획 중심"이라 했으므로 틀린 설명이다.
개개인과의 소통, 고객과의 협력, 실행 가능한 소프트웨어를 중시한다는 나머지 서술은 애자일 가치와 일치한다.
컴포넌트(Component)는 명확한 역할을 가지고 독립적으로 존재하며 인터페이스를 통해서만 접근·재사용되는 시스템의 구성 단위를 의미한다.
모델·시트·셀은 이러한 재사용 단위 개념과 무관하다.
GoF 디자인 패턴에서 구조 패턴은 Adapter·Bridge·Composite·Decorator·Facade·Flyweight·Proxy 7종이다.
Builder는 객체 생성 과정을 단계적으로 분리하는 생성(Creational) 패턴에 속하므로 구조 패턴이 아니다.
피드백(Feedback)은 시스템의 현재 상태와 사용자 지시에 따른 처리 결과를 사용자에게 보여주어, 사용자가 진행 상황과 표시 내용을 해석할 수 있도록 돕는 UI 기본 개념이다.
NUI(Natural User Interface)는 멀티터치·동작 인식 등 사람의 자연스러운 움직임을 그대로 인식하여 정보를 주고받는 사용자 인터페이스 방식이다.
GUI는 그래픽 요소 기반, CLI는 명령어 입력 기반이라는 점에서 구분된다.
소프트웨어 모델링의 산출물(요구사항 모델, 분석/설계 모델 등)은 이후 단계의 모델링 작업에 입력이자 참조 기준으로 영향을 준다.
따라서 "모델링 결과물은 다른 모델링 작업에 영향을 줄 수 없다"는 서술은 틀리다.
DFD/DD 사용, UML 표기법 사용, 의사소통 향상 효과에 대한 나머지 설명은 모두 옳다.
유스케이스 다이어그램에서 시스템과 데이터를 주고받으며 연동되는 외부 시스템도 시스템 액터(2차 액터)로 파악할 수 있다.
따라서 "외부시스템은 액터로 파악해서는 안된다"는 서술이 틀린 설명이다.
유스케이스가 사용자 목표 달성을 위한 수행 내용을 기술한다는 점, 액터가 인식 못하는 내부 기능은 유스케이스로 잡지 않는다는 점은 옳은 설명이다.
MVC 구조에서 Controller가 View와 Model 사이를 중개하며 Model에 명령을 보내 상태를 변경시키고, 하나의 Model에는 여러 View가 연결될 수 있다.
보기 ②는 이를 뒤바꿔 "Model이 View와 Controller 사이의 전달자이며 View마다 Model이 하나씩 연결된다"고 서술했으므로 틀린 설명이다.
UI 계층의 응집도를 높이고 UI 간 결합도를 낮춘다는 점, View가 Model 데이터를 사용자에게 보여준다는 점, Controller가 Model 상태를 변경한다는 점은 모두 옳은 설명이다.
상향식 통합 테스트는 시스템 구조도의 최하위(가장 하단) 모듈부터 구현하여 상위 모듈로 올라가며 결합하는 방식으로, 최상위 모듈을 먼저 구현·테스트하는 것은 하향식 통합 테스트의 특징이다. 통합 테스트는 모듈 간 인터페이스와 결합을 검증하는 것이 맞고, 하향식은 넓이 우선(Breadth First) 또는 깊이 우선으로 모듈을 선택할 수 있으며 상위 동작을 빨리 확인하려면 하향식이 유리하다는 설명도 옳다.
레코드는 1부터 15까지 오름차순으로 정렬된 15개 원소이며, 이진 검색은 (low+high)/2로 중간값을 정한다. 1차 비교: low=1, high=15 → mid=8, 14>8이므로 low=9로 이동. 2차 비교: low=9, high=15 → mid=12, 14>12이므로 low=13으로 이동. 3차 비교: low=13, high=15 → mid=14, 14와 일치하여 탐색 종료되므로 총 3회 비교한다.
워크스루는 개발자(작성자)가 주도해 단순한 테스트 케이스로 산출물을 수작업 검토하는 비공식적 검토인 반면, 인스펙션은 훈련된 중재자가 진행하고 체크리스트·역할 분담·결함 기록 절차를 갖춘 공식적 검토라 두 기법은 동일한 의미가 아니다. 즉 진행 주체와 형식성·절차 규정이 다르므로 인스펙션과 동일한 의미를 가진다는 설명이 틀렸다. 사용사례·설계 다이어그램·원시코드·테스트 케이스에 적용된다는 점과 복잡한 알고리즘·반복·병행 처리 로직을 이해하는 데 유용하다는 점은 워크스루의 옳은 설명이다.
형상관리(Configuration Management)는 소프트웨어 개발 과정에서 발생하는 산출물의 변경사항을 체계적으로 추적·통제하기 위한 일련의 활동으로, 버전관리·변경관리·형상식별·형상감사 등을 포함한다. 복호화·저작권·크랙은 변경사항 관리와 무관한 개념이므로 해당하지 않는다.
테스트 케이스는 테스트의 목표와 방법을 먼저 결정한 후에, 그 목표를 달성할 수 있도록 입력값·실행조건·예상결과를 구체적으로 설계해 작성하는 것이 순서상 옳다. 테스트 케이스는 요구사항 준수 여부를 확인하기 위한 입력·조건·예상결과의 집합이며, 통과·실패 판정 기준을 테스트 오라클이라 부르고, 결함이 있어도 우연히 정상 결과가 나올 수 있으므로 결함을 실제로 드러낼 수 있는 케이스를 찾는 것이 중요하다는 설명은 모두 옳다.
JAVA에서 private 접근제어자는 해당 클래스 내부에서만 접근을 허용하는 '비공개(정보 은닉)'를 의미하므로 '공개'라는 설명은 틀리다. 객체는 자료구조와 함수를 함께 가진 독립적 존재이고, 상속은 클래스 간 체계화된 구조 파악을 쉽게 하며, 하나의 클래스에서 생성된 개개의 객체를 인스턴스라 부른다는 설명은 모두 옳다.
DRM은 암호화·접근 제어 등 전자적 보안 기술을 통해 콘텐츠의 불법 유통과 복제를 방지하는 것을 목적으로 하므로, 전자적 보안을 고려하지 않아 방지가 불가능하다는 설명은 사실과 반대이다. DRM이 하드웨어 제조업자·저작권자·출판업자가 사용하는 접근 제어 기술이고, 사용 권한 관리·과금·유통을 관리하며, 클리어링 하우스가 라이센스 발급과 권한 부여를 담당한다는 설명은 모두 옳다.
위험 모니터링(Risk Monitoring)은 식별된 위험 요소의 징후를 프로젝트 진행 중 지속적으로 감시·인지하여 위험 발생 여부를 조기에 파악하는 활동이다. 위험을 이해하는 것은 위험 식별·분석 단계에 해당하고, 위험을 피하거나 발생 후 조치하는 것은 위험 관리(대응) 활동이지 모니터링 자체는 아니다.
RCS(Revision Control System)는 여러 개발자가 동시에 같은 소스를 수정하는 것을 방지(잠금 기반 동시수정 제어)하고, 브랜치로 나뉘어 개발된 결과를 병합하거나 변경 이력을 추적할 수 있는 소프트웨어 버전 관리 도구이다. RTS(원격 전송 서비스)·RPC(원격 프로시저 호출)·RVS는 버전 관리와 무관한 개념이다.
화이트박스 테스트는 프로그램 내부의 코드 구조와 로직을 기반으로 테스트 케이스를 설계하는 기법이므로, 프로그램 구조를 고려하지 않고 요구·명세만으로 케이스를 결정한다는 설명은 블랙박스 테스트에 해당하며 화이트박스 테스트와는 반대된다. 논리흐름도를 활용하고, 실제 실행을 통해 오류를 찾는 동적 테스트이며, 검증기준(Test Coverage)을 정해 테스트 데이터를 선택한다는 설명은 모두 옳다.
선형 검색(순차 검색)은 정렬 여부와 무관하게 첫 원소부터 차례로 비교하며 찾는 방식이므로 검색 전에 데이터가 반드시 정렬되어 있을 필요가 없다(정렬이 전제되어야 하는 것은 이진 검색이다). 나머지 설명 — 알고리즘은 명령어의 순서 나열, 검색은 키값을 찾는 절차, 정렬은 키값 순으로 열거하는 절차 — 은 모두 옳다.
버블 정렬은 인접한 두 값을 비교해 앞이 더 크면 교환하는 과정을 배열 끝까지 반복하는 것이 1회전(PASS)이다. 원자료 9, 6, 7, 3, 5에서 (9,6)→교환, (9,7)→교환, (9,3)→교환, (9,5)→교환이 순서대로 일어나 6, 9, 7, 3, 5 → 6, 7, 9, 3, 5 → 6, 7, 3, 9, 5 → 6, 7, 3, 5, 9 로 진행되므로 PASS 1의 결과는 6, 7, 3, 5, 9 이다.
인스펙션(Inspection) 절차는 계획(Planning) → 사전 교육(Overview) → 준비(Preparation) → 인스펙션 회의(Inspection Meeting) → 수정(Rework) → 후속조치(Follow-up) 순으로 진행된다. 이 순서에 따르면 (나)는 준비(㉠)에, (다)는 인스펙션 회의(㉢)에 해당하므로 두 대응이 모두 올바른 조합이 정답이다.
리팩토링(Refactoring)은 소프트웨어의 겉으로 드러나는 기능(동작)은 그대로 유지한 채 내부 코드 구조만 개선하여 가독성을 높이고 유지보수 비용을 줄이는 작업을 뜻한다.
필요한 데이터를 인자로 전달받고 테스트 완료 후 결과값을 반환하는, 테스트 대상 모듈을 호출하는 상위 모듈 역할의 가상 모듈은 테스트 드라이버(Driver)이며, 테스트 스텁(Stub)은 반대로 테스트 대상 모듈이 호출하는 하위 모듈을 대신해 값을 반환하는 역할을 한다. 따라서 드라이버의 기능을 스텁이라고 설명한 것이 틀린 내용이다.
IDE의 Compile 기능은 사람이 작성한 고급언어 프로그램을 컴퓨터가 실행할 수 있는 저급언어(기계어) 프로그램으로 변환하는 기능이므로, "저급언어 프로그램을 고급언어 프로그램으로 변환한다"는 설명은 변환 방향이 반대로 되어 틀렸다.
후위 순회(Postorder)는 왼쪽 서브트리 → 오른쪽 서브트리 → 루트 순으로 방문한다. b의 서브트리(자식 d)는 d, b 순으로, c의 서브트리는 e의 자식 g, h를 먼저 방문한 g, h, e에 이어 f, c 순으로 방문되므로 g, h, e, f, c가 되고, 마지막에 루트 a를 방문해 전체 결과는 d → b → g → h → e → f → c → a 이다.
JSON(JavaScript Object Notation)은 속성-값 쌍으로 이루어진 데이터 오브젝트를 표현하는 경량의 개방형 표준 텍스트 포맷으로, 인터페이스 구현 시 시스템 간 데이터 교환 형식으로 널리 사용된다.
한쪽 끝(top)에서만 삽입(Push)과 삭제(Pop)가 일어나 나중에 넣은 데이터가 먼저 나오는 LIFO(Last-In-First-Out) 구조는 스택(Stack)이다.
CppUnit·JUnit·HttpUnit은 각각 C++, Java, HTTP 기반 애플리케이션을 위한 실제 존재하는 단위 테스트(xUnit 계열) 프레임워크이지만, IgpUnit은 실존하지 않는 명칭이다.
BCNF(Boyce-Codd 정규형)는 릴레이션 내의 모든 결정자(determinant)가 후보키인 정규형으로 정의된다.
이는 제3정규형에서 허용되던, 후보키가 아닌 결정자에 의한 함수적 종속까지 제거한 강화된 정규형이다.
따라서 '모든 결정자가 후보키'라는 조건을 만족하는 정규형은 BCNF이다.
트랜잭션의 원자성(Atomicity)은 트랜잭션에 포함된 연산들이 데이터베이스에 모두 반영되거나 전혀 반영되지 않아야 한다는 성질이다(all-or-nothing).
트랜잭션 수행 도중 오류가 발생하면 그때까지의 연산을 취소(rollback)하여 실행 전 상태로 되돌린다.
일관성(Consistency)은 실행 전후 데이터 무결성 유지, 격리성(Isolation)은 동시 실행 트랜잭션 간 독립성, 지속성(Durability)은 커밋 결과의 영구 반영을 의미하므로 원자성과 구분된다.
분산 데이터베이스는 물리적으로 여러 곳에 분산되어 있어도 사용자에게는 하나의 논리적 데이터베이스처럼 보이도록 하는 분산 투명성(Distribution Transparency)을 제공해야 한다.
사용자가 데이터의 물리적 분산 위치를 의식하지 않고 사용할 수 있게 하는 것이 목적이므로, 분산 투명성을 배제해야 한다는 설명이 틀리다.
판매량이 많은 제품부터 출력하려면 판매량 기준 내림차순(DESC) 정렬이 필요하고, 강남지점만 조회하려면 WHERE 지점명 = '강남지점' 조건이 필요하다.
따라서 SELECT 제품명, 판매량 FROM 푸드 WHERE 지점명 = '강남지점' ORDER BY 판매량 DESC; 가 요구사항에 맞는 SQL이다.
인덱스의 추가·삭제는 각각 CREATE INDEX문과 DROP INDEX문으로 수행하며, ADD·DELETE라는 명령어는 사용되지 않는다.
인덱스는 테이블에 종속된 객체이므로 대부분의 DBMS에서 원본 테이블을 삭제하면 인덱스도 함께 삭제된다.
저장 레코드 양식 설계 시에는 데이터 타입, 데이터 값의 분포, 접근 빈도 등 물리적 저장 특성을 고려한다.
트랜잭션 모델링은 업무 처리 흐름을 정의하는 논리적·개념적 설계 단계의 활동으로 저장 레코드 양식 설계의 고려사항이 아니다.
DCL(Data Control Language)은 데이터베이스에 대한 접근 권한을 제어하는 언어로 GRANT(권한 부여)와 REVOKE(권한 회수) 문을 포함한다.
DDL은 테이블 등 객체의 정의(CREATE·ALTER·DROP), DML은 데이터 조작(SELECT·INSERT·UPDATE·DELETE)을 담당하므로 REVOKE와는 구분된다.
데이터 사전(시스템 카탈로그)은 DBMS가 자동으로 생성·유지·갱신하는 메타데이터 저장소로, 일반 사용자는 직접 생성하거나 수정할 수 없고 조회만 가능하다.
테이블·인덱스 등 데이터베이스 객체를 정의·변경하는 SQL문을 실행하면 그 내용이 시스템에 의해 자동으로 데이터 사전에 반영된다.
릴레이션은 튜플의 집합이므로 튜플 사이에 순서가 존재하지 않는다(튜플의 무순서성).
반대로 각 튜플은 서로 중복되지 않고, 속성명은 릴레이션 내에서 유일하며, 속성 값은 더 이상 분해할 수 없는 원자 값을 가진다는 것은 릴레이션의 기본 성질이다.
따라서 튜플이 특정한 순서를 가진다는 설명이 틀린 것이다.
뷰(View)는 실제 데이터를 저장하지 않고 기본 테이블을 참조하는 정의(질의문)만 카탈로그에 저장되는 논리적 가상 테이블이다.
따라서 뷰가 물리적으로 존재한다는 설명은 틀리며, 물리적으로 존재하는 것은 기본 테이블이다.
뷰는 CREATE VIEW로 생성할 수 있고 다른 뷰를 기반으로 새 뷰를 만들 수 있으며, 갱신 시 제약이 따른다는 나머지 설명은 모두 옳다.
트랜잭션 상태는 활동(Active)→부분완료(Partially Committed)→완료(Committed) 순으로 진행되며, 실패 시 실패(Failed)를 거쳐 철회(Aborted)로 간다.
마지막 연산까지 실행을 마쳤지만 그 결과를 아직 데이터베이스에 반영(commit)하지 않은 상태가 바로 부분완료(Partially Committed)이다.
이후 로그를 디스크에 기록하고 반영까지 끝나야 비로소 완료(Committed) 상태가 된다.
SQL 명령어는 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL)로 구분된다.
SELECT·INSERT·UPDATE는 데이터 검색·삽입·수정을 담당하는 DML에 속하지만, GRANT는 권한을 부여하는 DCL이므로 성격이 다르다.
키 중에서 튜플을 유일하게 식별할 수 있는 유일성과, 그 식별에 꼭 필요한 속성만으로 구성되는 최소성을 모두 만족하는 것이 후보키(Candidate key)이다.
유일성만 만족하고 최소성은 만족하지 않아도 되는 슈퍼키(Super key)와 구분된다.
개념적 설계 단계는 DBMS에 독립적인 개념 스키마를 만드는 단계로, 산출물은 E-R 다이어그램이며 논리적 설계 단계의 바로 앞에서 수행된다.
이 단계에서 다루는 트랜잭션 작업은 트랜잭션 모델링이고, 트랜잭션 인터페이스의 설계·작성은 개념 스키마를 목표 DBMS의 논리적 구조로 사상하는 논리적 설계 단계의 작업이므로 개념적 설계에 대한 설명으로는 틀리다.
기본키(Primary Key)는 NOT NULL 제약을 가지며, 릴레이션 내 튜플을 유일하게 식별하고, 다른 테이블에서 외래키로 참조될 수 있다.
그러나 검색은 기본키가 아닌 다른 속성(예: 인덱스가 걸린 속성)으로도 얼마든지 수행할 수 있으므로, 검색에 반드시 기본키가 필요하다는 설명은 옳지 않다.
데이터 모델의 구성 요소는 데이터 구조(Structure), 연산(Operation), 제약조건(Constraint)으로 이루어진다.
이 중 Operation은 데이터 구조에 따라 개념 세계나 컴퓨터 세계에서 표현된 실제 값을 처리하는 작업을 의미하며, Constraint는 값들이 지켜야 할 제약을 규정한다는 점에서 구분된다.
'직원' 테이블에서 이름이 '정도일'인 행의 팀코드를 조회하려면 대상 테이블을 FROM 절에, 조건을 WHERE 절에 명시해야 한다.
따라서 SELECT 팀코드 FROM 직원 WHERE 이름 = '정도일'이 옳은 SQL문이며, FROM 절 이름이 '이름' 테이블로 되어 있거나 SELECT 절이 누락된 다른 보기는 문법상 성립하지 않는다.
개체 무결성(Entity Integrity) 제약조건은 기본키를 구성하는 속성이 NULL 값을 가질 수 없고, 릴레이션 내에서 다른 튜플과 중복되지 않는 유일한 값이어야 한다는 규칙이다.
도메인 값의 제한은 도메인 무결성, 외래키와 부모 릴레이션 간의 관계는 참조 무결성에 해당하므로 이와 구분된다.
릴레이션 구조에서 속성(Attribute)의 개수를 Degree(차수)라 하고, 튜플(Tuple)의 개수를 Cardinality(기수)라 한다.
따라서 릴레이션에 포함된 튜플의 수를 묻는 이 문제의 답은 Cardinality이다.
사용자에게 테이블 생성 권한과 같은 데이터베이스 객체 권한을 부여할 때는 DCL 명령인 GRANT 문을 사용하며, 형식은 GRANT 권한 TO 사용자이다.
테이블 생성 권한은 CREATE TABLE이므로, 빈칸에는 CREATE TABLE TO가 들어가 GRANT CREATE TABLE TO PARK; 형태의 문장이 완성된다.
strcmp(s1, s2)는 두 문자열의 내용을 비교하여 대소·일치 여부를 반환하는 함수이며, 두 문자열을 이어 붙이는 기능은 strcat이 담당한다.
따라서 "s1과 s2를 연결한다"는 strcmp의 기능 설명으로 틀렸다.
a=5, b=3, c=12로 초기화된 뒤 t1=a&&b는 둘 다 0이 아니므로 1, t2=a||b도 1이 된다.
t3=!c는 c가 12(참)이므로 0이 되어, t1+t2+t3 = 1+1+0 = 2가 출력된다.
첫 for문에서 ob1.c[i]=i(0~9), ob2.c[i]=ob1.c[i]+i=2i로 채워진 뒤, 두 번째 for문은 i=0,2,4,6,8일 때만 ob1.a와 ob2.a에 각 배열 원소를 누적한다.
ob1.a=0+2+4+6+8=20, ob2.a=0+4+8+12+16=40이 되어 ob1.a+ob2.a = 60이 출력된다.
IP 헤더의 Total(Packet) Length 필드는 16비트로 구성되어 헤더를 포함한 패킷 전체 길이를 0~65,535바이트 범위로 표시하므로, 제시된 크기 설명은 실제 필드 크기와 맞지 않아 틀렸다.
나머지 보기는 각각 Header Length(32비트 워드 단위)·Time To Live(전송 전 지정하는 생존 시간)·Version Number(버전 표시)에 대한 올바른 설명이다.
x=20일 때 첫 번째 if(x==10) 조건은 거짓이고 두 번째 조건에서 "20"이 출력되었으므로, 빈칸은 파이썬에서 앞선 조건이 거짓일 때 다음 조건을 검사하는 elif이다.
파이썬에는 else if나 either 같은 키워드가 존재하지 않고 다중 분기는 elif로만 작성한다.
RIP는 홉 카운트를 메트릭으로 사용하고 벨만-포드 알고리즘으로 최단 경로를 계산하며, 인접 라우터끼리 정보를 교환해 라우팅 표를 갱신하는 대표적인 IGP(내부 게이트웨이 프로토콜)이다.
따라서 "EGP에 해당한다"는 설명이 틀렸다.
제시된 식 우선순위=(대기 시간+서비스를 받을 시간)/서비스를 받을 시간은 HRN(Highest Response-ratio Next) 스케줄링의 응답률 계산식이다.
HRN은 대기 시간을 우선순위에 반영해 SJF에서 긴 작업이 계속 밀리는 약점을 보완한 비선점 스케줄링 기법이다.
UNIX는 여러 사용자가 동시에 접속하는 Multi-User뿐 아니라 여러 작업을 동시에 처리하는 Multi-Tasking도 지원하는 운영체제이다.
따라서 "Multi-Tasking은 지원하지 않는다"는 설명이 틀렸다.
UDP는 비연결형 서비스를 제공하고 헤더 구조가 단순해 오버헤드가 적으며 TCP와 마찬가지로 트랜스포트 계층에 위치한다.
주소를 지정하고 경로를 설정(라우팅)하는 기능은 IP가 담당하는 네트워크 계층의 역할이므로 UDP의 특징이 아니다.
튜플(tuple)은 파이썬의 시퀀스 자료형으로 서로 다른 타입의 값을 순서대로 저장할 수 있지만, 리스트와 달리 한번 만들어지면 원소를 바꿀 수 없는 불변(immutable) 자료형이다.
리스트는 시퀀스이면서 변경 가능하고, 사전(dict)은 순서 기반 시퀀스가 아닌 매핑(mapping) 타입이다.
marr() 메서드는 int[4] 배열 temp를 생성해 인덱스와 같은 값 0·1·2·3을 순서대로 저장한 뒤 그대로 반환한다. main에서 iarr가 이 배열을 참조하여 for문으로 순차 출력하므로 0 1 2 3이 출력된다.
a=1, b=2이므로 mx = a<b ? b : a 에 의해 mx=2가 되어 if(mx==1) 조건이 거짓이 되고 else 분기가 실행된다. mn = b<mx ? d : c 에서 b(2)<mx(2)는 거짓이므로 mn=c=3이 출력된다.
Myers가 제시한 응집도 단계는 강한 순서대로 기능적·순차적·통신적·절차적·시간적·논리적·우연적 응집도이며, 이 중 우연적 응집도(Coincidental Cohesion)가 모듈 구성 요소 간 연관성이 전혀 없는 가장 낮은 단계다.
r1 = (n2<=2)||(n3>3) 은 (2<=2)참(1)과 (3>3)거짓(0)의 OR로 r1=1이다. r2 = !n3 은 n3(3)이 0이 아니므로 r2=0이고, r3 = (n1>1)&&(n2<3) 은 (1>1)거짓이므로 r3=0이다. 따라서 r3-r2+r1 = 0-0+1 = 1이 출력된다.
IP 프로토콜의 체크섬은 헤더(Header) 영역만 검사하며 데이터 영역의 무결성은 검사하지 않는다. 데이터 체크섬까지 제공한다는 설명은 IP의 실제 동작과 다르므로 특징에 해당하지 않으며, 비연결형 서비스·단편화(분할·병합)·Best Effort 전송은 모두 IP의 실제 특징이다.
참조열 1,2,3,1,2,4,1,2,5 를 4개 프레임에서 LRU로 처리하면 앞의 1,2,3,4 적재에서 4회 결함이 발생하고, 이어지는 1·2 재참조는 모두 적중(hit)이다. 마지막 5 참조 시 가장 오래 사용되지 않은 3이 교체되어 결함이 1회 더 발생하므로 총 5회의 페이지 결함이 발생한다.
사용자 수준 스레드는 스레드 관리를 커널 개입 없이 라이브러리 차원에서 처리하므로 스레드 전환 시 커널 모드로 전환할 필요가 없어 문맥 교환 오버헤드가 줄어든다. 반면 커널 접근·시스템 호출의 동시 처리나 독립적 스케줄링은 오히려 커널 수준 스레드의 특성이다.
한 모듈이 다른 모듈의 내부 기능과 내부 자료를 직접 참조하는 것은 결합도 중 가장 강한 형태인 내용 결합도(Content Coupling)에 해당한다. 이는 모듈의 캡슐화 원칙을 깨뜨리는 가장 바람직하지 않은 결합 형태다.
a[0]의 주소가 10이고 int가 4Byte이므로 &a[2]는 10 + 2×4 = 18이다. 배열명 a는 배열의 시작 주소를 값으로 가지는 포인터로 평가되므로 두 번째 printf는 10을 출력하여, 전체 결과는 18, 10이다.
응집도(Cohesion)는 한 모듈 내부 구성 요소들 간의 관련성 정도를 의미하며, 모듈과 모듈 사이의 상호의존·연관 정도를 나타내는 것은 결합도(Coupling)이다. 따라서 응집도를 모듈 간 연관 정도로 설명한 보기가 틀린 설명이다.
정보보안의 3요소는 기밀성(인가된 사용자만 접근·열람 가능)·무결성(인가된 사용자만 수정 가능하고 전송 중 변조되지 않음)·가용성(인가된 사용자는 필요할 때 언제든 자원에 접근 가능)이다.
휘발성은 정보보안 3요소에 포함되지 않는 개념이므로 해당 설명이 옳지 않다.
TCP Wrapper는 외부 호스트에서 접속 요청이 들어오면 접속을 허용할 대상인지 사전에 점검해 인가된 경우에만 접속을 허용하고, 그렇지 않으면 거부하는 접근제어 유틸리티이다.
주로 유닉스·리눅스 계열에서 서비스 단위로 접근을 통제하는 데 사용된다.
문제에서 설명한, 10㎝ 이내 근접 거리에서 기가급 속도로 데이터를 전송하는 초고속 근접무선통신 기술은 Zing이다.
BcN은 유무선을 통합한 광대역 융합망, C-V2X는 차량과 사물 간 이동통신 기반 통신 기술, Marine Navi는 선박 항법 관련 기술로 근접무선통신과는 성격이 다르다.
취약점 관리를 위한 응용 프로그램의 보안 설정은 실행 프로세스의 권한 설정, 운영체제의 접근 제한, 운영체제의 정보 수집 제한처럼 소프트웨어·운영체제 수준의 통제를 의미한다.
서버 관리실 출입 통제는 시설에 대한 물리적 보안 대책이므로 응용 프로그램 보안 설정과는 거리가 멀다.
소프트웨어 프레임워크는 IoC(제어의 역전) 원리에 따라 동작하며, 이는 프레임워크가 전체 흐름의 제어권을 가지고 필요한 시점에 사용자가 작성한 코드를 호출하는 방식이다.
따라서 라이브러리와 달리 사용자 코드가 아니라 프레임워크가 제어권을 가지는 것이 특징이므로, 제어를 사용자 코드가 가진다고 서술한 설명이 옳지 않다.
클라우드 기반 HSM은 데이터센터의 하드웨어 보안 기기에서 암호화 키를 생성·저장·처리하고, 사용자는 네트워크를 통해 이를 이용함으로써 인증서를 별도 기기에 담아 다닐 필요가 없게 하는 서비스이다.
하드웨어 기반 보안 모듈을 사용하는 것이 핵심 특징이므로, 소프트웨어적으로만 구현된다고 서술한 설명은 옳지 않다.
메시 네트워크(Mesh Network)는 각 노드가 다수의 다른 노드와 그물망 형태로 직접 연결되어, 특정 노드나 경로에 장애가 발생해도 다른 경로로 우회해 통신을 이어갈 수 있는 분산형 네트워크 구조이다.
VLAN은 물리적 배치와 무관하게 논리적으로 분할한 근거리망이고, Modem Network는 모뎀을 이용한 단순 회선 연결 방식으로 그물형 다중 경로 구조와는 다르다.
물리적 위협은 화재·홍수 등 천재지변, 하드웨어의 파손·고장, 방화·테러에 의한 하드웨어와 기록장치의 파괴처럼 시설·장비 자체에 가해지는 위협을 말한다.
방화벽 설정을 잘못 조작해 발생하는 네트워크·서버 보안 위협은 시설·장비의 물리적 파괴가 아니라 관리적·기술적(논리적) 위협에 해당한다.
웜(Worm)은 다른 시스템의 취약점을 이용하거나 이메일을 통해 스스로 전파되며, 숙주 파일 없이도 자기 자신을 복제·증식하는 악성코드 유형이다.
Adware는 광고를 강제로 노출시키는 프로그램, Rogue Ware는 가짜 보안 소프트웨어로 사용자를 속이는 악성코드로, 자기복제·자기전파가 핵심 특징이 아니다.
Ping of Death는 규정된 최대 크기(65,535바이트)를 초과하는 비정상적으로 큰 ICMP(Ping) 패킷을 조각내어 전송함으로써, 수신 시스템이 이를 재조립하는 과정에서 버퍼 오버플로우를 일으켜 시스템을 다운시키는 서비스 거부 공격이다.
Session Hijacking은 정상 세션을 가로채 인증을 우회하는 공격, XSS는 웹페이지에 악성 스크립트를 삽입하는 공격으로 대량의 비정상 패킷을 이용한 시스템 마비 방식과는 다르다.
소프트웨어 개발 프레임워크는 애플리케이션 개발에 필요한 클래스·라이브러리·API 등을 표준화된 형태로 제공하는 반제품 소프트웨어로, 재사용 가능한 설계·구현을 바탕으로 제어의 역전(IoC) 구조를 통해 개발자가 정해진 골격 안에서 프로그램을 작성하도록 지원한다. 필요한 함수를 개발자가 호출해 쓰는 라이브러리와 달리, 프레임워크는 애플리케이션의 전체 흐름을 프레임워크 자신이 제어한다는 점에서 구분된다.
애자일은 반복적·점증적 개발과 잦은 피드백을 통해 변화하는 요구사항에 유연하게 대응하는 방법론으로, 구성원 간 의사소통을 중시하고 프로젝트 상황에 따라 계획을 주기적으로 조정한다. 반면 한 단계의 결과가 완전히 확인된 뒤에야 다음 단계로 넘어가는 방식은 순차적·계획 중심의 폭포수(Waterfall) 모델의 특징이므로 애자일과 가장 거리가 멀다.
대칭키 암호는 암호화·복호화에 동일한 비밀키를 사용하므로, 송신자와 수신자가 사전에 그 키를 안전하게 공유하는 키 교환 과정이 반드시 필요하다. 따라서 '키 교환이 필요하지 않다'는 설명이 틀렸으며, 대칭키 방식이 빠른 이유는 키 교환과 무관하게 연산 구조가 단순하기 때문이다. AES·IDEA가 대표적 대칭키 알고리즘이라는 점과, 비대칭키의 개인 비밀키가 인증·전자서명에 쓰인다는 설명은 옳다.
생산성(LOC/인월)은 총 코드 라인 수를 총 투입 인월(인원수×개발기간)로 나누어 산정한다. 개발자 2명이 5개월간 10000라인을 개발했으므로 인월은 이 되어, 생산성은 로 계산하는 것이 적합하다.
RBAC(Role-Based Access Control)는 사용자 개인이 아니라 조직 내 직무·직책 등 역할(Role)에 접근 권한을 부여하고, 사용자는 자신이 맡은 역할에 따라 그 권한을 상속받는 접근통제 방식이다. 소유자(자원 소유자)가 직접 권한을 지정하는 DAC, 보안등급으로 통제하는 MAC과 구분된다.
COCOMO는 보헴(Boehm)이 제안한 원시 코드 라인 수(LOC) 기반 비용 산정 모형으로, 프로젝트 규모·특성에 따라 조직형(Organic)·반분리형(Semi-detached)·내장형(Embedded)의 3가지 모드로 구분하며 산정 결과를 man-month로 나타낼 수 있다. object·dynamic·function의 3가지 모드로 구분한다는 설명은 실제 COCOMO의 개발유형 분류와 다르므로 특징이 아니다.
사용자 인증 유형 중 '존재(Something you are)'는 지문·홍채·얼굴 등 개인의 고유한 생체적 특징으로 신원을 증명하는 생체인증을 가리킨다. 패턴이나 QR 코드는 사용자가 기억하거나 소지하는 대상에 가까워 지식·소유 기반 인증에 해당하므로, 이를 존재 인증의 예시로 든 설명은 적절하지 않다.
사용자가 로그인 시 아이디·비밀번호 등을 입력해 본인이 맞는지를 확인하는 절차는 인증(Authentication)이다. 이는 확인된 사용자에게 권한을 부여하는 Authorization, 사용 내역을 기록하는 Accounting과 구분되는 개념으로, 신원 확인이 먼저 이루어진 뒤 권한 부여·사용 기록 관리가 뒤따르는 것이 일반적인 순서다.
SDN(Software Defined Networking)은 네트워크의 제어 평면과 데이터 평면을 분리하여 네트워크 장비의 동작을 소프트웨어로 중앙집중 제어·관리할 수 있도록 하는 기술이다. 이를 통해 트래픽 경로 등 네트워크 구성을 관리자가 프로그래밍 방식으로 유연하게 설정·변경할 수 있다.
PERT는 각 작업 간의 선후 관계·상호 관련성을 네트워크로 나타내고 결정경로(주공정)·경계(여유)시간·자원할당 등을 제시하는 일정관리 기법이다. 반면 각 작업의 시작·종료 시점을 막대 도표로 표시하고 수평 막대의 길이로 작업 기간을 나타내는 것은 시간선(Time-line) 차트라고도 불리는 간트(Gantt) 차트의 특징이다.