21년-2회차-정보처리기사-필기 시험지 PDF 다운로드
21년-2회차-정보처리기사-필기
시스템은 일반적으로 Input·Process·Output·Feedback·Control을 구성요소로 본다. Maintenance(유지보수)는 시스템 운영 이후에 이루어지는 활동이지 시스템 자체의 구성요소가 아니다.
액터(Actor)는 대상 시스템과 상호작용하는 사람이나 다른 시스템에 의한 역할이라는 것이 유스케이스 다이어그램의 표준 정의다. 유스케이스 다이어그램은 개발자가 아니라 사용자의 요구사항을 추출·분석하기 위해 쓰이며, 연동 시스템을 뜻하는 것은 사용자 액터가 아니라 시스템 액터이고, 연동은 일방적 전달이 아니라 상호작용을 의미하므로 나머지 보기는 틀리다.
요구사항 개발 프로세스는 수집 → 분석 → 정의 → 검증의 순서로 진행된다. 이미지의 ㉠은 수집(requirements gathering), ㉡은 분석(analysis), ㉢은 정의(specification), ㉣는 검증(validation)을 나타낸다. 먼저 stakeholder로부터 요구사항을 수집한 후, 수집된 요구사항들의 충돌·불완전성을 분석하고, 이를 바탕으로 명확한 요구사항 명세서를 정의한 다음, 최종적으로 정의된 요구사항이 실제 요구를 만족하는지 검증하는 단계적 프로세스이다.
인스턴스(instance)는 객체지향에서 같은 클래스로부터 생성된 개별 객체를 가리키는 용어다. 메시지(message)는 객체 간 상호작용 수단, 메소드(method)는 객체의 동작(연산), 모듈(module)은 프로그램 구성 단위로 각각 의미가 다르다.
이 문항은 실제 시험에서 출제 오류로 처리되었고, 확정답안은 정보은닉(Information Hiding)이다. 정보은닉은 객체 내부의 속성과 오퍼레이션의 세부 구현을 외부에서 접근할 수 없도록 감추는 개념으로, 캡슐화와 밀접히 연관되지만 별개의 용어로 구분된다.
브리지(Bridge) 패턴은 추상화와 구현을 분리하여 각각을 독립적으로 확장할 수 있게 하는 구조 패턴이다. 그런데 문제에 제시된 '기존 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할'은 어댑터(Adapter) 패턴에 대한 설명이므로 브리지 패턴의 설명으로는 틀리다.
사용자의 요구사항은 실제로 예외 상황이 많고 열거·구조화가 어려운 것이 요구사항 분석을 어렵게 만드는 원인 중 하나다. '예외가 거의 없어 열거와 구조화가 어렵지 않다'는 설명은 이와 반대되므로 요구사항 분석이 어려운 이유에 해당하지 않는다.
소프트웨어 아키텍처의 시스템 품질속성은 가용성·변경 용이성·사용성 외에 성능·보안·신뢰성 등을 포함하는 개념이다. 독립성(Isolation)은 이러한 품질속성 목록에 속하지 않는다.
이미지에 표시된 시스템은 데이터를 생성하여 다른 시스템으로 전송하는 역할을 하고 있으므로 송신 시스템이 맞다. 연계 서버는 여러 시스템 간 중간에서 데이터를 변환·매개하는 역할이고, 중계 서버는 네트워크 통신 경로상의 중간 지점으로 신호를 재전송하는 역할이며, 수신 시스템은 데이터를 받아들이는 쪽이므로 모두 설명과 맞지 않다.
CASE의 원천 기술은 구조적 기법·프로토타이핑 기술·정보 저장소(Repository) 기술 및 자동화 도구 기술 등이다. 일괄처리 기술은 이러한 CASE 원천 기술에 해당하지 않는다.
메시지(Message)는 객체 간에 주고받는 명령으로, 송신 객체가 수신 객체에게 특정 행위(오퍼레이션)를 수행하도록 지시하는 역할을 한다. 클래스는 객체의 틀, 객체는 클래스의 인스턴스, 패키지는 클래스들의 묶음이므로 행위 지시와는 무관하다.
파이프 필터(Pipe-Filter) 구조는 각 서브시스템(필터)이 입력 데이터를 받아 처리한 뒤 파이프를 통해 다음 필터로 결과를 전달하는 과정이 반복되는 아키텍처 스타일이다. 컴파일러의 어휘분석-구문분석-최적화-코드생성 단계처럼 데이터 흐름 중심 처리에 적합하다.
럼바우(Rumbaugh)의 객체지향 분석(OMT)은 객체 모델링(객체·클래스·속성·관계를 다이어그램으로 표현) → 동적 모델링(상태·이벤트에 따른 제어 흐름 표현) → 기능 모델링(자료 흐름과 처리 기능 표현)의 세 단계로 진행된다. 정적 모델링은 럼바우 OMT의 표준 용어가 아니다.
UML은 클래스·유스케이스·시퀀스·협력(커뮤니케이션)·상태·액티비티·컴포넌트·배치 다이어그램 등을 표준 다이어그램으로 정의하며, 절차 다이어그램(Procedural diagram)은 이 목록에 포함되지 않는 비표준 명칭이다.
실체화(Realization) 관계는 인터페이스와 같은 명세(사양) 요소가 특정 오퍼레이션의 수행을 지정하고, 이를 클래스가 실제로 구현(수행)하는 의미적 관계이다. 연관(Association)은 객체 간 참조 관계, 의존(Dependency)은 일시적 사용 관계, 일반화(Generalization)는 상속 관계로 각각 성격이 다르다.
상위(Upper) CASE 도구는 요구분석·설계 단계에서 자료흐름도 작성, 모델 간 모순검사, 모델 오류검증 등을 지원하는 도구이며, 전체 소스코드 생성은 설계 결과를 코드로 변환하는 하위(Lower) CASE 도구의 기능이다.
요구사항 관리 도구는 요구사항 변경에 따른 비용 편익 분석, 변경 추적, 영향 평가를 지원해 요구사항을 체계적으로 관리하는 데 목적이 있다. 기존 시스템과 신규 시스템의 성능 비교는 요구사항 관리와 무관한 별도의 성능 평가 활동이다.
스크럼·익스트림 프로그래밍(XP)·기능 주도 개발(FDD)은 반복·점증 개발과 고객 협업을 중시하는 애자일 방법론이다. 하둡(Hadoop)은 대용량 분산 데이터 처리를 위한 빅데이터 프레임워크로 개발 방법론이 아니다.
GoF 디자인 패턴 중 싱글턴(Singleton)은 클래스의 인스턴스를 하나만 생성하도록 보장하는 생성 패턴이다. 어댑터(Adapter)와 데코레이터(Decorator)는 구조 패턴, 스테이트(State)는 행위 패턴에 속한다.
사용자 인터페이스(UI)는 사용자의 편의성을 높여 작업 시간을 단축시키는 것을 목표로 하며, 오류를 최소화하고 구체적인 방법을 제시해 사용자 중심의 상호작용을 지원한다. 따라서 편의성을 높임으로써 작업시간을 증가시킨다는 설명은 UI의 목적과 반대되므로 틀린 특징이다.
힙 정렬(Heap Sort)은 완전 이진트리 형태의 힙을 구성한 뒤 가장 큰(또는 작은) 키를 가진 루트 노드를 반복적으로 제거·재구성하며 정렬하는 기법으로, 힙 재구성에 O(log n)이 걸리는 과정을 n번 반복하므로 최선·평균·최악 모두 O(n log n)이다.
따라서 최악의 수행 시간이 O(2n4)라는 표현은 힙 정렬의 시간복잡도와 무관한 잘못된 진술이다.
단위 테스트는 하나의 모듈(함수·클래스) 내부의 논리 오류를 검증하는 것으로, 알고리즘 오류, 탈출구 없는 반복문, 잘못된 계산 수식 등은 모듈 내부 검사로 발견할 수 있다.
반면 모듈 간의 비정상적 상호작용으로 인한 오류는 여러 모듈이 결합된 이후에 나타나는 문제이므로 통합 테스트의 영역이며 단위 테스트로는 발견하기 어렵다.
결함 집중(Defect Clustering)은 소프트웨어에 존재하는 결함의 대부분이 소수의 특정 모듈에 몰려 있는 경향을 말하며, 전체 결함의 약 80%가 20%의 모듈에서 발견된다는 파레토 법칙과 연관된 테스트 기본 원칙이다.
이는 결함이 발견된 모듈에 추가 테스트 자원을 집중해야 함을 시사한다.
체크인(Check-In)은 개발자가 로컬에서 수정·작업한 파일을 형상관리 저장소(repository)에 반영하여 새로운 버전으로 갱신하는 것을 의미한다.
이는 저장소의 최신 버전을 로컬로 받아오는 체크아웃(Check-Out)과 반대되는 개념이다.
기본 경로(Basis Path)는 흐름 그래프의 시작 노드에서 종료 노드까지 이르는 서로 독립적인 경로들의 집합을 말하지만, 반복문(루프)을 0회·1회 등 서로 다른 횟수로 통과하는 경로도 독립 경로에 포함될 수 있어 사이클(반복)을 허용하지 않는다는 설명은 틀렸다.
화이트박스 테스트는 모듈의 논리 구조를 직접 점검하고, 블랙박스 테스트는 내부 구조와 무관하게 입출력만으로 검증한다는 나머지 설명은 옳다.
성능 테스트 도구는 가상의 다수 사용자를 생성하여 애플리케이션에 부하를 가하고 처리량·응답시간·경과시간·자원사용률 등을 측정함으로써 성능 목표 달성 여부를 확인하는 테스트 자동화 도구이다(예: LoadRunner, JMeter).
명세 기반·코드 기반 테스트 설계 도구나 기능 테스트 수행 도구는 기능적 정확성 검증에 초점을 두므로 부하·응답시간 측정과는 목적이 다르다.
형상관리 도구는 소프트웨어 산출물(프로젝트 계획서·분석서·설계서·프로그램·테스트 케이스 등)의 버전과 변경 이력을 관리하는 도구로 Git, SVN, CVS, ClearCase 등이 대표적이다.
Ant·Maven·Gradle은 컴파일·패키징·의존성 관리를 자동화하는 빌드 도구이지 형상관리 도구가 아니므로 해당 설명이 거리가 멀다.
DRM(디지털 저작권 관리)의 구성요소로는 콘텐츠를 암호화하는 Packager, 라이선스·정책을 관리하는 DRM Controller, 암호화된 콘텐츠를 배포하는 Contents Distributor, 이 외에 Contents Provider·Clearing House·DRM Agent 등이 있다.
데이터웨어하우스(Data warehouse)는 대용량 데이터 분석·저장을 위한 시스템으로 DRM 구성요소에 해당하지 않는다.
분산 저장소 방식은 중앙 저장소뿐 아니라 각 개발자의 로컬 환경에도 전체 버전 이력을 가진 저장소를 두어, 로컬에서 커밋한 뒤 원격 저장소와 동기화(push/pull)하는 버전 관리 방식이다(대표적으로 Git).
이는 하나의 중앙 저장소만 두는 단일 저장소 방식이나 서버가 파일을 직접 관리하는 클라이언트·서버 방식과 구분된다.
블랙박스 테스트는 프로그램의 내부 구조나 제어 흐름을 보지 않고 입력에 대한 출력 결과만으로 검증하는 기법이다.
반복 조건을 만족하는데도 루프 내부 문장이 수행되지 않는 경우는 프로그램 내부의 제어 흐름 구조를 살펴봐야 발견할 수 있는 오류이므로, 이는 화이트박스 테스트(예: 루프 테스트)의 영역이지 블랙박스 테스트로 발견할 수 있는 오류가 아니다.
버블 정렬은 인접한 두 값을 비교해 큰 값을 오른쪽으로 밀어내며, 한 Pass가 끝날 때마다 뒤쪽부터 정렬 값이 하나씩 확정된다.
초기값 9, 6, 7, 3, 5에서 Pass 1을 수행하면 (9,6)→(9,7)→(9,3)→(9,5) 순으로 모두 교환되어 6, 7, 3, 5, 9가 된다.
이어서 Pass 2에서는 (6,7) 비교는 교환 없음, (7,3)과 (7,5)는 교환, 마지막 (7,9)는 교환 없음이 일어나 결과가 6, 3, 5, 7, 9가 된다.
합병정렬(Merge Sort)은 데이터를 반씩 분할해 재귀적으로 정렬한 뒤 병합하는 방식으로, 분할 단계가 회 반복되고 각 단계마다 N개의 원소를 병합하므로 시간복잡도가 항상 이다.
반면 버블정렬·선택정렬·삽입정렬은 단순 비교·교환 기반으로 평균 및 최악 시간복잡도가 이다.
후위표기법(postfix)은 피연산자를 스택에 쌓다가 연산자를 만나면 스택에서 두 값을 꺼내 연산한 뒤 결과를 다시 push하는 방식으로 계산한다.
3 4 * 5 6 * +를 처리하면 먼저 3과 4를 곱해 12를 push하고, 이어 5와 6을 곱해 30을 push한 뒤, 마지막 +에서 12와 30을 더해 최종 결과 42가 된다.
EAI 구축 유형 중 메시지 버스(Message Bus) 방식은 애플리케이션 사이에 미들웨어(버스)를 두고 이를 통해 표준화된 방식으로 데이터를 전송·중계한다.
이는 애플리케이션을 1:1로 직접 연결하는 Point-to-Point, 중앙 허브가 모든 연계를 집중 관리하는 Hub&Spoke, 두 방식을 혼합한 Hybrid와 구분된다.
STAF·watir·xUnit은 각각 분산 테스트 자동화 프레임워크, 웹 애플리케이션 테스트 도구, 단위 테스트 프레임워크로 인터페이스 구현 검증에 활용된다.
반면 Foxbase는 dBASE 계열의 데이터베이스 관리 프로그램으로 테스트 도구가 아니다.
클린코드는 다른 코드(모듈)에 미치는 영향, 즉 의존성을 최소화하도록 작성해 변경 시 파급 효과를 줄이는 것을 원칙으로 한다.
따라서 '다른 모듈에 미치는 영향을 최대화하도록 작성한다'는 설명은 클린코드 원칙에 반한다.
소프트웨어 패키징은 개발자가 아닌 사용자(고객) 중심으로 진행되어야 하며, 사용자가 최소한의 환경 설정만으로 쉽게 사용할 수 있도록 범용 배포 형태로 구성하는 것이 원칙이다.
따라서 '개발자 중심으로 진행한다'는 설명은 틀린 내용이다.
공학적으로 잘된 소프트웨어는 사용자의 수준과 요구에 맞는 인터페이스를 제공해야 하며, 이러한 사용성(Usability)이 특성 중 하나다.
따라서 '사용자 수준에 무관하게 일관된 인터페이스를 제공해야 한다'는 설명은 틀리며, 유지보수 용이성·신뢰성·충분한 테스팅은 올바른 특성이다.
테스트는 소프트웨어에 존재하는 오류를 찾아내는 작업이고, 디버깅은 테스트로 발견된 오류의 원인을 찾아 수정하는 작업이다.
즉 두 활동은 각각 오류 발견과 오류 수정이라는 서로 다른 목적을 갖는다.
재귀호출은 함수 복귀 주소를 스택에 저장하고, 후위표현(postfix) 연산은 피연산자를 스택에 push하며 계산하고, 깊이우선탐색(DFS)은 방문 경로를 스택으로 관리하므로 모두 스택 기반 연산이다.
선택정렬은 매 회전마다 배열 전체를 순회하며 최솟값을 찾아 교환하는 방식으로 스택을 사용하지 않는다.
병렬 데이터베이스의 수평 분할 기법에는 라운드-로빈·범위 분할·해시 분할이 있으며, 각각 순차 배분·값의 범위·해시 함수 결과에 따라 튜플을 여러 노드에 분산 저장한다. 예측 분할은 표준적인 수평 분할 기법으로 분류되지 않는 용어이다.
시스템 카탈로그는 DBMS가 스스로 생성·유지·관리하는 메타데이터 저장소로서, 사용자는 SELECT 문 등으로 내용을 조회할 수 있을 뿐 직접 갱신할 수 없다. 사용자가 직접 시스템 카탈로그를 갱신하여 무결성을 유지한다는 설명은 DBMS의 자동 관리 원칙에 어긋난다.
중복 레코드를 제거하려면 SELECT 절 바로 뒤에 DISTINCT 키워드를 붙여 SELECT DISTINCT 형태로 사용해야 하며, WHERE 절에는 DISTINCT를 쓸 수 없다. FROM·HAVING·ORDER BY 절에 대한 나머지 설명은 SQL 문법과 일치한다.
SQL에서 뷰(VIEW)를 포함한 스키마 객체를 제거할 때는 DROP 문을 사용하며, VIEW 삭제는 DROP VIEW 뷰이름; 형식으로 수행한다.
DDL 명령어 중 스키마·도메인·인덱스·테이블 등의 객체를 새로 정의할 때는 CREATE 문을 사용한다. ALTER는 이미 정의된 객체의 변경에 쓰이며, SELECT·INSERT는 DDL이 아닌 DML에 속하는 데이터 조작 명령이다.
SQL문을 단계별로 실행하면, 먼저 R1과 R2의 FULL OUTER JOIN으로 두 테이블의 모든 행을 결합한다. R1에는 A(1,2,3), R2에는 B(2,3,4)가 있으므로 조인 결과는 A=1(R2NULL), A=2(B=2), A=3(B=3), A=NULL(B=4)의 4행이다.
다음 WHERE A IS NOT NULL OR B IS NOT NULL 조건은 양쪽 모두 NULL인 행을 제외하므로 모든 4행이 남는다.
마지막으로 GROUP BY A, B로 각 (A, B) 조합별로 그룹화되고, COUNT(*)는 각 그룹당 1이 된다. 최종 결과는 (1, NULL, 1), (2, 2, 1), (3, 3, 1), (NULL, 4, 1)의 4행으로, 정답은 2번이다.
데이터베이스 설계의 물리적 설계 단계에서는 저장 레코드의 양식 설계·레코드 집중 분석·접근 경로 설계 등 저장 구조와 관련된 사항을 다룬다. 목표 DBMS에 맞춘 스키마 설계는 이보다 앞선 논리적 설계 단계에서 수행되는 작업이다.
기본 키를 구성하는 속성이 널 값이나 중복 값을 가질 수 없다는 제약은 개체 무결성이다. 참조 무결성은 외래 키 값이 참조 대상 기본 키 값과 일치하거나 널이어야 한다는 별개의 제약조건이다.
병행제어 기법에는 로킹 기법·타임스탬프 기법·다중 버전 기법 등이 있으며, 트랜잭션의 동시 접근 시 데이터 일관성을 보장하기 위한 방식들이다. 시분할 기법은 CPU를 여러 프로세스에 나누어 할당하는 운영체제의 스케줄링 기법으로 병행제어와는 무관하다.
R1과 R2를 학번으로 조인한 뒤 원하는 한 학생의 과목 정보만 얻으려면 학과·이름 조건을 모두 AND로 연결해 동시에 만족하는 행만 선택해야 한다. OR로 연결한 보기는 조건 중 하나만 맞아도 결과에 포함되어 불필요한 행까지 검색되므로 실행 결과와 일치하지 않는다. R1 테이블에 제시된 실제 학과·이름 값과 정확히 일치하는 AND 조건식을 쓴 보기만 원하는 결과를 산출한다.
순수 관계 연산자는 select·project·join·division 네 가지이며, 합집합·교집합·차집합(difference)·카티션 프로덕트는 두 릴레이션 사이에 수행하는 일반 집합 연산자에 속한다. 따라서 차집합은 순수 관계 연산자가 아니다.
릴레이션에서는 튜플 사이뿐 아니라 속성(애트리뷰트) 사이에도 순서가 존재하지 않는다. 각 속성은 이름으로 식별되며 나열 순서와 무관하게 동일한 릴레이션으로 취급되므로 "속성 사이에는 순서가 존재한다"는 설명이 틀렸다.
두 릴레이션의 카티션 프로덕트 결과는 차수가 두 릴레이션 차수의 합, 카디널리티가 두 릴레이션 카디널리티의 곱이 된다.
차수는 , 카디널리티는 이므로 결과 릴레이션은 차수 10, 카디널리티 35이다.
속성(애트리뷰트)의 수는 릴레이션의 차수(Degree)라고 부르며, cardinality는 튜플(행)의 수를 의미한다. 따라서 "속성의 수를 cardinality라 한다"는 설명은 틀렸다.
값을 변경하는 UPDATE 문은 UPDATE 테이블명 SET 컬럼=값 [WHERE 조건] 형식으로 작성하며, 갱신할 컬럼과 값을 지정하는 절이 SET이다. FROM은 SELECT 문에서 대상 테이블을 지정할 때, INTO는 INSERT 문에서 사용하는 키워드이므로 이 빈칸에는 맞지 않는다.
차수(Degree)는 하나의 릴레이션(테이블)을 구성하는 애트리뷰트(속성)의 수를 의미하며, 튜플의 수는 카디널리티라고 부른다.
E-R 다이어그램에서 개체타입은 사각형, 속성은 타원(원형), 관계타입은 마름모로 표현하고, 개체타입·속성·관계타입 사이의 연결은 직선으로 나타낸다. 삼각형은 E-R 다이어그램 표기법에 쓰이지 않으므로 "연결-삼각형"이 옳지 않다.
ROLLBACK 연산은 트랜잭션 수행 중 오류가 발생했을 때 지금까지 수행한 변경 내용을 취소하고 트랜잭션 시작 이전 상태로 되돌리는 연산이다. 이는 트랜잭션의 성공을 확정하는 COMMIT 연산과 반대되는 개념이다.
정규화가 미흡한 릴레이션에서 발생하는 이상 현상은 삽입 이상·삭제 이상·갱신 이상 세 가지이며, 데이터를 조회할 때 발생하는 '검색 이상'이라는 개념은 존재하지 않는다.
3NF가 BCNF가 되려면 릴레이션에 존재하는 함수 종속 중 결정자가 후보키가 아닌 함수 종속을 제거하여 모든 결정자가 후보키가 되도록 해야 한다. 이행적 함수 종속 제거는 2NF에서 3NF로, 부분 함수 종속 제거는 1NF에서 2NF로 갈 때의 조건이다.
무선랜 환경에서 매체가 비어 있음을 확인한 뒤에도 충돌 회피를 위해 임의의 시간(랜덤 백오프)을 기다린 후 데이터를 전송하고, 전송이 없는 상황에서도 동시 전송으로 인한 충돌에 대비해 확인 신호를 주고받는 방식은 CSMA/CA이다.
유선 이더넷에서 쓰이는 CSMA/CD는 충돌을 사전에 회피하는 대신 전송 중 충돌을 감지(Detection)한 뒤 재전송하는 방식이라는 점에서 구분된다.
결합도(Coupling)는 강한 순서로 내용(Content)→공통(Common)→외부(External)→제어(Control)→스탬프(Stamp)→자료(Data) 결합도로 갈수록 약해진다.
제시된 보기 중 가장 약한 결합도는 스탬프 결합도(Stamp Coupling)이며, 전역변수를 공유하는 공통 결합도나 모듈 내부를 직접 참조하는 내용 결합도보다 결합 강도가 낮다.
a=4(0100), b=7(0111)이고 c = a | b는 비트별 OR 연산이므로 0100 | 0111 = 0111, 즉 7이다.
따라서 printf("%d", c)의 출력 결과는 7이다.
setdata(4, 2) 호출로 sel(self 역할)의 fir=4, sec=2가 설정되고, add()는 result = sel.fir + sel.sec = 4 + 2 = 6을 반환한다.
따라서 print(a.add())의 출력은 6이다.
은행원 알고리즘(Banker's Algorithm)은 자원 요청 시 시스템이 안전 상태(Safe State)를 유지할 수 있는지 미리 검사하여 교착상태에 빠질 가능성이 있는 요청을 거부함으로써 교착상태 발생 자체를 막는 기법이므로 회피(Avoidance)에 해당한다.
이는 자원을 미리 선점·제한하는 예방(Prevention)이나 발생 후 찾아내는 탐지(Detection)와는 구분된다.
서브넷 프리픽스 /27은 네트워크 비트가 27개, 호스트 비트가 개임을 의미하며 호스트 비트 5개를 모두 1로 채우면 , 남은 비트를 1로 채운 마지막 옥텟 값은 이다.
따라서 서브넷 마스크는 255.255.255.224이다.
x=5에서 y = x++는 후위 증가이므로 x가 6이 되기 전 값인 5가 먼저 y에 대입되어 y=5, x=6이 된다.
이어서 z = --x는 전위 감소로 x를 먼저 5로 감소시킨 뒤 그 값을 z에 대입하므로 x=5, z=5가 되고, 최종 출력은 x, y, z 순서로 5, 5, 5이다.
스레싱(Thrashing)은 프로세스가 실제 실행에 사용하는 시간보다 페이지 교체(폴트 처리)에 소요되는 시간이 더 커질 때 발생하는 현상으로, 프로세스 수행 시간이 페이지 교환 시간보다 크면 스레싱이 발생한다는 설명은 이 조건을 반대로 서술한 것이라 틀리다.
나머지 보기인 반복·스택·부프로그램의 시간 지역성, 인접 페이지 참조 경향인 공간 지역성, 필요 프레임 제공을 통한 스레싱 방지는 모두 옳은 설명이다.
프레임워크(Framework)는 소프트웨어 개발에 필요한 기본 구조와 뼈대를 미리 제공하여 개발자가 그 위에서 기능을 재사용·확장하며 개발할 수 있게 해주는 반제품 형태의 결과물이다.
따라서 재사용성을 높여준다는 설명이 옳으며, 프레임워크는 확장과 모듈화를 지원하고 특정 아키텍처의 구현체일 뿐 아키텍처 자체와 동일한 개념은 아니다.
do-while문은 조건 검사 전에 본문을 최소 1회 실행하므로 cnt=0에서 cnt++가 실행되어 cnt=1이 되고, 조건 cnt<0이 거짓이라 곧바로 반복이 종료된다.
이어서 cnt==1이 참이므로 cnt++가 실행되어 cnt=2가 되고, System.out.printf("%d", cnt)의 출력은 2이다.
export는 변수를 자식 프로세스에서도 쓸 수 있도록 환경변수로 등록하는 명령이며, 변수 값을 화면에 출력할 때는 export가 아니라 echo를 사용하므로 "출력을 위해 export를 사용해야 한다"는 설명은 틀리다. export를 매개변수 없이 실행하면 현재 설정된 환경변수 목록이 나열되고, export하지 않은 사용자 변수는 현재 쉘에만 국한되며, export된 변수는 전역 변수처럼 쉘이 종료될 때까지 유지된다.
이미지의 C언어 코드를 읽으면, main 함수에서 재귀함수 func를 호출하여 결과값을 출력한다. func 함수는 n ≤ 1일 때 1을 반환하고, n > 1일 때 n + func(n-1) + func(n-2)를 반환한다. func(5)를 계산하면: func(5) = 5 + func(4) + func(3), func(4) = 4 + func(3) + func(2), func(3) = 3 + func(2) + func(1), func(2) = 2 + func(1) + func(0) = 2 + 1 + 1 = 4, func(1) = 1, func(0) = 1이므로 func(3) = 3 + 4 + 1 = 8, func(4) = 4 + 8 + 4 = 16, func(5) = 5 + 16 + 8 = 29이다. 그런데 정답이 66이라는 점을 고려하면, 코드에서 여러 번 호출되거나 누적되는 구조가 있을 수 있다. 이미지를 더 정확히 보면 printf 부분에서 func(5) 외에 다른 누적 계산이 있거나, 전역 변수에 값을 누적하는 로직이 포함되어 있을 가능성이 높다. 재귀 호출 과정에서 각 함수 호출마다 증가하는 전역 카운터나 누적값이 있다면, 모든 재귀 호출의 합이 66이 될 수 있다.
이미지의 C 프로그램을 읽으면, i가 1부터 10까지 반복되면서 sum에 i를 계속 더하는 구조다. 먼저 각 단계를 추적하면: i=1일 때 sum=0+1=1, i=2일 때 sum=1+2=3, i=3일 때 sum=3+3=6, ..., i=10일 때 sum=45+10=55가 된다. 그 다음 for 루프에서 i가 1부터 11까지 반복되면서 sum에 i를 더하므로, sum=55+1+2+3+...+11이 된다. 1부터 11까지의 합은 11×12÷2=66이므로, 최종 sum=55+66=121이다.
페이지 크기가 작아지면 프로세스가 차지하는 페이지 수가 늘어나므로 페이지 맵 테이블의 크기는 오히려 증가한다. 반면 페이지가 작아질수록 내부 단편화는 감소하고 기억장소 이용 효율은 증가하며, 페이지 수가 늘어나 페이지 교체를 위한 입출력 횟수와 시간은 증가한다.
응집도는 기능적 > 순차적(Sequential) > 교환적 > 절차적(Procedural) > 시간적 > 논리적(Logical) > 우연적(Coincidental) 순으로 강도가 낮아진다. 제시된 보기 중에서는 한 요소의 출력이 다음 요소의 입력으로 사용되는 Sequential Cohesion이 가장 강한 응집도이며, Procedural·Logical·Coincidental은 이보다 약한 응집도이다.
"인접한 노드 사이의 프레임 전송 및 오류 제어"는 데이터 링크 계층의 기능 설명이며, TCP는 전송 계층 프로토콜로 이와 무관하다. TCP는 흐름 제어를 수행하고 전이중(Full Duplex) 방식의 양방향 가상회선을 제공하며, 응답 데이터에 전송 데이터를 함께 실어 보내는 피기배킹 방식도 지원한다.
이미지의 연산자를 확인하면 ㉠ 괄호(), ㉡ 논리합(||), ㉢ 논리곱(&&), ㉣ 관계연산자(>), ㉤ 할당(=), ㉥ 곱셈(*)이다. C언어의 연산자 우선순위는 괄호 > 곱셈·나눗셈 > 관계연산자 > 논리곱(&&) > 논리합(||) > 할당 순서로 높은 것에서 낮은 것이다. 따라서 ㉠(괄호) > ㉥(곱셈) > ㉣(관계연산자) > ㉢(논리곱) > ㉡(논리합) > ㉤(할당) 순으로 나열되어야 한다.
stdlib.h는 표준 유틸리티 라이브러리로 atoi·atof처럼 문자열을 수치로 바꾸는 함수와 itoa처럼 수치를 문자열로 바꾸는 변환 함수 등을 제공한다. strlen()과 같은 문자열 처리 함수는 string.h, 표준 입출력 함수는 stdio.h, 삼각함수·제곱근 등 수학 함수는 math.h에 속한다.
자바스크립트는 클래스 기반이 아닌 프로토타입(Prototype) 기반 객체지향 언어로, 객체 간 상속은 Prototype Link와 Prototype Object를 통해 이루어진다. ES6의 class 문법은 이러한 프로토타입 상속을 문법적으로 표현한 것일 뿐이므로 "클래스 기반으로 객체 상속을 지원한다"는 설명은 틀리다.
"한 노드로부터 다른 노드로 프레임을 전송하는 책임을 진다"는 데이터 링크 계층의 역할이며, 네트워크 계층은 프레임이 아닌 패킷 단위로 발신지에서 최종 목적지까지 전달하는 책임을 진다. 네트워크 계층은 패킷에 발신지·목적지의 논리 주소를 추가하고, 라우터가 경로 지정과 교환 기능을 수행한다.
제시된 설명은 SAN(Storage Area Network)에 대한 것이다.
광채널(Fibre Channel) 스위치를 이용해 고속·장거리 전송과 멀티 프로토콜을 지원하고, 운영체제가 다른 여러 서버가 네트워크를 통해 동일 저장장치의 데이터를 공유하게 함으로써 저장장치와 백업 장비를 단일화한 전용 저장장치 네트워크이다.
MBR(마스터 부트 레코드)·NAC(네트워크 접근 제어)·NIC(네트워크 인터페이스 카드)는 저장장치를 네트워크로 통합하는 기술과 무관하다.
SSH(Secure Shell)의 기본 네트워크 포트는 22번이며 220번이 아니므로 이 설명이 틀렸다.
SSH는 전송 데이터를 암호화하고, 클라이언트의 공개키를 서버에 등록하는 방식의 공개키 인증을 지원하며, 원격 명령 실행이나 셸 서비스를 안전하게 수행한다는 나머지 설명은 모두 옳다.
CBD 표준 산출물 중 분석 단계에 해당하는 것은 사용자 요구사항 정의서이다.
클래스 설계서는 설계 단계, 프로그램 코드는 구현 단계, 통합시험 결과서는 테스트(시험) 단계의 산출물이므로 분석 단계와 맞지 않는다.
제시된 설명은 Bell-LaPadula Model에 대한 것이다.
군사 등급처럼 정보의 기밀성에 따라 상하 관계를 두어 보호하는 최초의 수학적 보안 모델로, 자신의 권한보다 높은 등급의 문서는 읽을 수 없는 No Read Up과 자신의 권한보다 낮은 등급 문서에는 쓸 수 없는 No Write Down 원칙을 따른다.
Clark-Wilson 모델은 무결성 중심, Chinese Wall 모델은 이해상충 방지가 목적이므로 기밀성 등급 기반 통제라는 설명과 맞지 않는다.
Sqoop은 하둡(Hadoop)과 관계형 데이터베이스(RDBMS) 간에 대용량 데이터를 상호 전송하도록 설계된 도구로, 이름 자체가 SQL to Hadoop에서 유래했다.
Topology·SDB·Apnic은 하둡과 RDBMS 간 데이터 이전 기능과 관련이 없다.
OSPF(Open Shortest Path First)는 링크 상태(link-state) 라우팅 프로토콜이지 거리 벡터 라우팅 프로토콜이 아니므로 이 설명이 옳지 않다.
OSPF는 Dijkstra 알고리즘으로 최단 경로를 계산하고, 멀티캐스팅을 지원하며, 링크 상태 변화 시 신속하게 갱신되는 특징을 가진다.
PERT는 작업 간 선후관계를 네트워크로 표현해 일정을 계획·통제하는 프로젝트 일정관리 기법으로, 소프트웨어 비용 추정 모형이 아니다.
COCOMO·Putnam·Function-Point는 모두 소프트웨어 규모나 기능을 기준으로 개발 비용을 산정하는 대표적인 비용 추정 모형이다.
'12536'이 '12936'으로 표기된 것은 세 번째 자리 '5'가 '9' 하나로 잘못 기록된 것으로, 자릿수 증감이나 순서 바뀜 없이 한 문자만 틀리게 옮겨 적은 Transcription Error(오기 오류)에 해당한다.
자리를 빠뜨리는 Omission Error, 자리를 추가하는 Addition Error, 자리 순서가 뒤바뀌는 Sequence Error와는 오류 양상이 다르다.
ISO/IEC 12207 표준의 기본(주요) 생명주기 프로세스는 획득·공급·개발·운영·유지보수 프로세스로 구성되며, 성능평가 프로세스는 여기에 포함되지 않는다.
COCOMO는 소프트웨어 규모(KDSI)를 기준으로 비용을 산정하는 모형으로, 개발 유형을 organic(조직형)·semi-detached(반분리형)·embedded(내장형)로 구분한다.
PUTNAM은 Rayleigh-Norden 곡선 기반, FP(Function Point)는 기능 점수 기반 산정 기법으로 이러한 개발 유형 구분을 사용하지 않는다.
SPICE(ISO/IEC 15504) 모델의 프로세스 수행능력 수준은 0(불완전)~5(최적화)의 6단계로 구성되며, 수준 7은 존재하지 않는다. 수준 5=최적화, 수준 4=예측, 수준 3=확립 단계는 모두 올바른 설명이지만, 수준 7-미완성 단계는 존재하지 않는 등급을 가리키므로 틀린 설명이다.
N-Screen은 하나의 콘텐츠를 PC·TV·휴대폰 등 여러 단말에서 끊김없이(seamless) 이어서 이용할 수 있게 하는 서비스를 뜻한다. Memristor는 메모리+저항 소자, MEMS는 초정밀 기계전자 시스템, SNMP는 네트워크 관리 프로토콜로 모두 콘텐츠 이용 서비스와 무관하다.
해쉬 함수는 임의 길이 입력을 고정 길이 해쉬값으로 변환하는 일방향 함수로, HAVAL·SHA-1 등이 대표적이며 주로 무결성 검증과 전자서명에 쓰인다. 반면 공개키 암호화 방식의 키 생성은 RSA·ECC 등 비대칭키 알고리즘의 영역이므로 해쉬 기법의 주된 용도로 보기 어려운 틀린 설명이다.
IPSec은 AH(발신지 인증·무결성 보장)와 ESP(인증·무결성·기밀성 보장)를 통해 대칭키 방식의 암호화를 지원하며, Tunnel 모드와 Transport 모드로 운영된다. 따라서 "암호화 수행시 일방향 암호화만 지원한다"는 설명은 실제와 달라 틀린 설명이다.
Stack Guard는 함수 복귀 주소와 지역 변수 사이에 특정 값(canary)을 저장해 두고, 함수 종료 시 이 값의 변조 여부를 검사해 스택 버퍼 오버플로우를 탐지하면 프로그램 실행을 중단시키는 기법이다. Bridge·ASLR·FIN은 각각 네트워크 장비, 메모리 주소 무작위화, TCP 종료 플래그로 이와 무관하다.
Screened Subnet은 내부망과 외부망 사이에 DMZ(비무장지대) 서브넷을 두고, 외부-DMZ와 DMZ-내부 양쪽에 각각 스크리닝 라우터/방화벽을 배치해 이중으로 접근을 통제하는 방화벽 구축 유형이다.
Secure OS의 보안 기능에는 사용자 식별 및 인증, 임의적 접근 통제(DAC), 강제적 접근 통제(MAC), 감사 등이 포함된다. 고가용성 지원은 시스템의 지속 운영성과 관련된 성능·안정성 요소로 보안 기능과는 거리가 멀다.
nmap은 서버의 열린 포트를 스캐닝해 서비스와 보안 취약점을 점검하는 대표적인 포트 스캐닝 도구이다. type은 파일 내용 출력, mkdir는 디렉터리 생성, ftp는 파일 전송용 명령/프로토콜로 포트 스캐닝과는 무관하다.
라우터는 서로 다른 네트워크(대역)를 연결해 각 네트워크에 속한 호스트 간 통신 경로를 설정·중계하는 3계층(네트워크 계층) 장비이다. L2 스위치는 동일 네트워크 대역 내에서 MAC 주소 기반으로 프레임을 전달할 뿐 서로 다른 대역을 연결하지 않는다.
AES는 암호화 키와 복호화 키가 동일한 대칭키(비밀키) 암호화 알고리즘이다. RSA·DSA·ECC는 공개키와 개인키가 서로 다른 비대칭키 방식이므로 암복호화 키가 일치하지 않는다.