문제지 PDF · 웹 정답 해설

정보처리기사 필기 2023년 2회 CBT 편집복원 100문항

정보처리기사 필기 2023년 2회 CBT 편집복원 100문항을 과목별로 풀고 문항별 정답과 상세해설을 확인하세요.

후기복원 100문항 시험기간 2023-05-13 ~ 2023-06-04 근거 기준일 2026-10-08

정보처리기사 필기 2023년 2회 CBT 편집복원 100문항 안내

정보처리기사 필기 2023년 2회 CBT 편집복원 100문항을 과목별로 풀고 문항별 정답과 상세해설을 확인하세요.

2023년 2회 범위의 후기복원 분류 대표 학습 세트입니다. CBT 원문이나 공식 정답표를 제공하는 자료가 아닙니다. 100문항의 해설을 기술 문서와 필요한 독립 계산으로 새로 편집 검토했으며, 질문·조건·보기를 바로잡은 문항은 학습용 개정문항으로 표시합니다.

정보처리기사 전체 자료 · 정보처리기사 CBT 학습실

정보처리기사 필기 기출문제 · 소프트웨어 설계

1. 설계 검토 회의에서 다음 항목을 판단한다. '주문 취소' 유스케이스가 실행될 때마다 반드시 '사용자 인증' 절차를 수행한다. 두 유스케이스 관계는?

  1. 사용자 인증이 주문 취소를 extend 한다
  2. 두 유스케이스가 generalization 관계다
  3. 두 유스케이스 사이에는 관계를 표시하지 않는다
  4. 주문 취소가 사용자 인증을 include 한다
정답과 해설 보기

정답: 4

정답은 ④이다. 주문 취소의 수행 과정에 사용자 인증 동작을 반드시 포함한다고 명시했으므로 포함 관계인 include에 해당한다. 포함하는 주문 취소에서 포함되는 사용자 인증으로 관계를 표시한다. extend는 기본 유스케이스에 조건에 따라 추가되는 확장 행동을 나타내므로 이 조건과 다르다. 단순히 이미 로그인되어 있어야 한다는 사전조건만 제시한 경우와도 구별해야 한다.

선지별 해설

  • 인증이 선택적 확장 행동이라는 조건이 없으므로 extend가 아니다.
  • 일반화는 특수 유스케이스가 일반 유스케이스의 성질을 물려받는 관계다.
  • 두 행동 사이에 필수 포함 관계가 명시되어 있다.
  • 주문 취소가 인증 행동을 포함하므로 방향과 관계가 모두 맞다.

편집 해설 근거: OMG UML 2.5.1 (2017) — §18 UseCases — Include, Extend

2. 설계 검토 회의에서 다음 항목을 판단한다. 배송 서비스가 처리량 급증 시 메시지를 브로커에 쌓고 소비자가 가능한 속도로 처리한다. 이 MOM 구조에 대한 기술로 적절하지 않은 설명을 고르면?

  1. 메시지 지속성을 사용하면 소비자 중단 중에도 전달 신뢰성을 높일 수 있다.
  2. 생산자와 소비자가 동시에 실행되지 않아도 통신할 수 있다.
  3. 모든 요청이 같은 호출 스택에서 즉시 끝나야 하는 동기 처리에만 적합하다.
  4. 큐가 생산자와 소비자의 처리 속도 차이를 완충할 수 있다.
정답과 해설 보기

정답: 3

정답은 ③이다. 메시지 지향 미들웨어에서는 생산자가 브로커에 메시지를 맡기고 소비자가 준비된 시점에 처리할 수 있다. 큐에 대기 중인 메시지는 생산 속도와 소비 속도의 일시적인 차이를 흡수한다. 따라서 같은 호출 스택에서 모든 처리를 즉시 끝내야 하는 동기 호출 전용 구조라는 설명은 맞지 않는다. 메시지 지속성은 장애 시 신뢰성을 높이는 수단이지만 저장 설정, 확인 응답, 재전송 정책까지 함께 설계해야 한다.

선지별 해설

  • 지속성은 메시지 보존과 장애 복구에 도움을 준다.
  • 메시지를 보관할 수 있어 송수신자의 실행 시점이 분리될 수 있다.
  • 비동기 메시징의 특성을 동기 호출 전용으로 잘못 제한했다.
  • 대기열은 순간적인 처리량 차이를 완충하지만 무한 용량을 보장하지 않는다.

편집 해설 근거: Oracle Java EE 7 Tutorial, Overview of the JMS API — 45.1.1 What Is Messaging?; 45.1.2 What Is the JMS API?

3. 설계 검토 회의에서 다음 항목을 판단한다. 럼바우 OMT 분석에서 정적 클래스 구조를 먼저 정리하고, 객체의 상태 변화와 사건을 표현한 뒤, 처리와 데이터 변환을 나타낼 때 모델의 순서는?

  1. 기능 모델 → 객체 모델 → 동적 모델
  2. 객체 모델 → 동적 모델 → 기능 모델
  3. 객체 모델 → 기능 모델 → 동적 모델
  4. 기능 모델 → 동적 모델 → 객체 모델
정답과 해설 보기

정답: 2

정답은 ②이다. 정적 클래스 구조와 객체 사이의 관계는 객체 모델의 대상이다. 사건에 따른 상태 전이와 시간에 따른 변화는 동적 모델로 표현한다. 입력 데이터가 처리되어 다른 데이터로 바뀌는 과정은 기능 모델에서 다룬다. 그러므로 지문에 제시된 작업 순서에 대응시키면 객체 모델, 동적 모델, 기능 모델 순서가 된다. 이 답을 모든 프로젝트가 반드시 한 번씩만 수행해야 하는 고정 개발 절차로 확대해서는 안 된다.

선지별 해설

  • 처리와 변환을 다루는 기능 모델을 처음에 배치해 조건과 다르다.
  • 정적 구조, 상태 변화, 데이터 변환의 순서에 정확히 대응한다.
  • 상태 변화와 데이터 변환의 순서가 뒤바뀌었다.
  • 처음과 마지막 작업에 대응하는 모델이 모두 다르다.

편집 해설 근거: Dov Dori, On Bridging the Analysis–Design and Structure–Behavior Grand Canyons with Object Paradigms (1996), 저자 제공 원문 — 본문 p.26, OMT의 세 모델 설명

4. 설계 검토 회의에서 다음 항목을 판단한다. UML 시퀀스 다이어그램에서 송신 객체가 수신 객체의 처리 완료를 기다리지 않고 다음 동작을 계속한다. 사용한 메시지 유형은?

  1. 동기 메시지
  2. 비동기 메시지
  3. 반환 메시지
  4. 객체 소멸 메시지
정답과 해설 보기

정답: 2

정답은 ②이다. 비동기 메시지를 보낸 객체는 수신 측 작업이 끝날 때까지 호출 지점에서 기다릴 필요 없이 자신의 다음 동작을 수행할 수 있다. 동기 호출은 호출 결과가 돌아올 때까지 기다리는 상호작용과 구별된다. UML은 비동기 호출과 비동기 신호를 메시지 종류로 구분하지만, 이 문항은 두 종류에 공통인 비대기 특성을 묻는다. 비동기라고 해서 수신 동작이 항상 즉시 실행되거나 성공이 자동 보장되는 것은 아니다.

선지별 해설

  • 동기 메시지는 수신 측 처리 완료를 기다리는 호출과 관련된다.
  • 송신 측이 기다리지 않고 계속 실행하므로 비동기 메시지다.
  • 반환 메시지는 앞선 호출의 결과를 돌려주는 메시지다.
  • 객체 소멸 메시지는 대상 생명선의 종료를 나타낸다.

편집 해설 근거: OMG UML 2.5.1 (2017) — §17 Interactions — MessageSort

5. 여러 모듈 사이의 의존 관계 중 공통 결합도(Common Coupling)에 해당하는 사례는?

[학습용 개정문항]

  1. 고객 레코드 전체를 전달하고 그중 주소 필드만 사용한다.
  2. 여러 모듈이 같은 전역 변수 영역을 직접 읽고 수정한다.
  3. 호출자가 처리 모드를 나타내는 플래그를 전달한다.
  4. 정수 금액과 통화 코드만 매개변수로 전달한다.
정답과 해설 보기

정답: 2

정답은 ②이다. 공통 결합도는 여러 모듈이 동일한 공유 데이터 영역에 의존할 때 나타난다. 특히 같은 전역 변수를 여러 모듈이 수정하면 어느 모듈이 값을 바꿨는지와 실행 순서를 함께 살펴야 한다. ①은 전달받은 레코드의 일부 필드만 쓰는 스탬프 결합도이고, ③은 동작을 선택하는 제어 정보를 넘기는 제어 결합도이다. ④처럼 필요한 단순 데이터만 명시적 매개변수로 전달하는 경우는 자료 결합도에 해당한다.

선지별 해설

  • 레코드 전체 중 일부만 사용하므로 스탬프 결합도다.
  • 같은 전역 영역을 함께 읽고 수정하므로 공통 결합도다.
  • 처리 모드를 지시하는 플래그는 제어 결합도의 사례다.
  • 필요한 단순 자료를 전달하는 자료 결합도다.

편집 해설 근거: CMU SEI, Candidate Complexity Metrics (2016), Appendix A.6 — Appendix A.6, pp.28–29

6. 설계 검토 회의에서 다음 항목을 판단한다. 회원가입 화면이 저장 버튼을 누른 직후 성공·실패 여부와 오류 위치를 즉시 알려 준다. 가장 직접적으로 충족하는 UI 원칙은?

  1. 개인화
  2. 정보 은닉
  3. 피드백
  4. 은유
정답과 해설 보기

정답: 3

정답은 ③이다. 피드백은 사용자가 한 동작에 대해 시스템이 어떤 결과나 상태 변화를 일으켰는지 알리는 것이다. 저장 직후 성공 여부를 보여 주고 오류가 난 입력 위치를 알려 주면 사용자는 저장 완료 여부와 다음 수정 행동을 판단할 수 있다. 개인화는 사용자 특성에 맞춘 설정이고, 은유는 익숙한 현실 개념을 화면에 대응시키는 방법이다. 상태와 오류 메시지는 화면에 표시하는 것뿐 아니라 보조기술에도 전달될 수 있어야 한다.

선지별 해설

  • 개인화는 사용자별 환경을 맞추는 것으로 실행 결과 통지와 다르다.
  • 정보 은닉은 내부 구현을 감추는 설계 개념이다.
  • 사용자의 동작 결과를 즉시 알려 주는 피드백이다.
  • 은유는 휴지통 같은 익숙한 개념으로 기능을 표현하는 방식이다.

편집 해설 근거: W3C, Understanding WCAG 2.2 — Status Messages — SC 4.1.3 Intent; W3C WCAG 2.2, Understanding SC 3.3.1 Error Identification — SC 3.3.1 Intent

7. 설계 검토 회의에서 다음 항목을 판단한다. 화면 표시, 업무 규칙, 사용자 입력 제어를 View·Model·Controller로 분리한다. 이 구조의 주된 효과는?

  1. 데이터베이스 정규화를 대신 수행한다
  2. 모든 데이터를 하나의 전역 변수로 공유한다
  3. 표현과 업무 로직의 변경 영향을 분리한다
  4. 네트워크 지연을 자동으로 제거한다
정답과 해설 보기

정답: 3

정답은 ③이다. MVC는 애플리케이션의 책임을 모델, 뷰, 컨트롤러로 나눈다. 모델은 상태와 업무 규칙을, 뷰는 표시를, 컨트롤러는 사용자 입력에 따른 흐름 제어를 담당한다. 책임을 나누면 화면을 변경할 때 업무 규칙까지 함께 수정해야 하는 상황을 줄이고 각 부분을 시험하기 쉬워진다. 이 구조 자체가 데이터베이스를 정규화하거나 네트워크 지연을 없애는 것은 아니며, 각 구성 요소 사이의 인터페이스 설계는 여전히 필요하다.

선지별 해설

  • 정규화는 데이터 종속성과 릴레이션 구조를 다루는 별도 설계 활동이다.
  • 전역 변수로 모두 공유하면 오히려 변경 영향이 커질 수 있다.
  • 표현과 업무 처리 책임을 분리하여 변경과 시험을 돕는다.
  • 통신 시간은 네트워크와 처리 조건에 따라 발생한다.

편집 해설 근거: Microsoft, Overview of ASP.NET Core MVC — MVC pattern — MVC pattern; Model, View, Controller Responsibilities

8. 설계 검토 회의에서 다음 항목을 판단한다. 복합기 API 하나에 인쇄, 스캔, 팩스, 제본 메서드가 모두 선언되어 있어 단순 인쇄 앱도 나머지 메서드를 빈 구현으로 작성한다. SOLID 원칙에 맞는 개선은?

  1. 기능별로 작은 인터페이스를 나누어 클라이언트가 필요한 계약만 의존하게 한다.
  2. 모든 기능의 구현을 하나의 거대한 클래스에 합친다.
  3. 기존 인터페이스의 모든 메서드를 정적 메서드로 바꾼다.
  4. 지원하지 않는 메서드는 실행 시 예외를 던지도록 그대로 둔다.
정답과 해설 보기

정답: 1

정답은 ①이다. 인터페이스 분리 원칙은 클라이언트가 사용하지 않는 기능에 불필요하게 의존하지 않도록 계약을 나누자는 원칙이다. 인쇄만 하는 앱에 스캔이나 팩스의 빈 구현까지 요구하면 관련 없는 기능 변경의 영향을 받을 수 있다. 인쇄용·스캔용 등 필요한 역할별 인터페이스를 제공하면 단순 인쇄 앱은 인쇄 계약만 구현하면 된다. 이는 반드시 모든 메서드마다 별도 인터페이스를 만들라는 뜻이 아니라 실제 사용 역할에 맞게 나누라는 의미이다.

선지별 해설

  • 필요한 기능의 계약에만 의존하게 하므로 ISP에 부합한다.
  • 거대한 클래스에 합쳐도 불필요한 의존성이 해소되지 않는다.
  • 정적 메서드로 바꾸는 것은 인터페이스 책임 분리의 해결책이 아니다.
  • 실행 시 예외로 미루면 지원하지 않는 계약을 요구하는 문제가 남는다.

편집 해설 근거: Robert C. Martin, Solid Relevance (2020-10-18) — Interface Segregation Principle

9. 설계 검토 회의에서 다음 항목을 판단한다. 통합 테스트 T-14가 실패했다. 이 테스트가 검증하는 요구사항과 해당 요구사항을 구현한 설계 요소를 역으로 확인할 때 가장 적절한 산출물은?

  1. 테스트 결과 요약서
  2. 요구사항 추적 매트릭스
  3. 인터페이스 명세서
  4. 형상 기준선 목록
정답과 해설 보기

정답: 2

정답은 ②이다. 요구사항 추적 매트릭스는 요구사항 식별자와 이를 구현하는 설계 요소, 검증하는 시험 항목 사이의 연결을 기록한다. 따라서 실패한 T-14에서 출발해 어떤 요구사항을 검증하는 시험인지, 그 요구사항이 어느 설계에 반영됐는지 역방향으로 추적할 수 있다. 시험 결과 요약서는 실패 사실을 보여 주지만 요구사항과 설계의 연결을 반드시 제공하지는 않는다. 추적성은 변경 영향 분석과 검증 누락 확인에도 활용된다.

선지별 해설

  • 합격·실패 현황은 알 수 있지만 요구사항과 설계 연결은 별도일 수 있다.
  • 시험·요구사항·설계 요소 사이의 양방향 연결을 확인하는 산출물이다.
  • 인터페이스 규약을 기술하지만 전체 요구사항 추적표를 대신하지 않는다.
  • 기준선의 구성 항목과 버전을 관리하는 목록이다.

편집 해설 근거: NASA Systems Engineering Handbook — 6.2 Requirements Management — §6.2.1.2.2–6.2.1.2.3

10. 설계 검토 회의에서 다음 항목을 판단한다. 객체지향 개념에서 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고, 필요한 인터페이스만 밖으로 드러내는 과정은?

  1. 다형성(polymorphism)
  2. 상속(Inheritance)
  3. 메시지(Message)
  4. 캡슐화(Encapsulation)
정답과 해설 보기

정답: 4

정답은 ④이다. 캡슐화는 관련된 상태와 동작을 하나의 객체 경계 안에 묶고 외부에서 사용할 수 있는 인터페이스를 정하는 것이다. 내부 표현에 직접 의존하는 코드를 줄이면 객체 내부를 바꿀 때 외부로 퍼지는 영향을 제한할 수 있다. 상속은 기존 타입의 성질을 물려받는 관계이고, 다형성은 같은 인터페이스를 서로 다른 구현으로 사용하는 성질이다. 필요한 기능을 제공하되 모든 내부 상태를 무조건 공개하지 않는다는 점이 지문의 핵심이다.

선지별 해설

  • 다형성은 공통 인터페이스에 서로 다른 구현이 대응하는 성질이다.
  • 상속은 기존 클래스나 타입의 성질을 이어받는 관계다.
  • 메시지는 객체에 특정 동작을 요청하는 상호작용이다.
  • 데이터와 연산을 묶고 공개 경계를 정하는 캡슐화다.

편집 해설 근거: IEEE Computer Society, SWEBOK Guide V4.0a — Software Design — Key Issues: Encapsulation and Information Hiding

11. 설계 검토 회의에서 다음 항목을 판단한다. 업무 시스템을 HIPO로 문서화할 때 수행할 작업으로 적절하지 않은 것은?

  1. 기능 계층을 따라 누락된 하위 기능과 모듈 사이의 인터페이스를 검토한다.
  2. 구현이 끝난 소스 모듈의 호출 순서만 아래에서 위로 기록하고 입력·출력 정보는 생략한다.
  3. 시스템의 주요 기능을 식별한 뒤 상위 기능에서 하위 기능으로 단계적으로 분해한다.
  4. 각 기능이 받는 입력, 수행하는 처리, 생성하는 출력을 기능별 도표에 정리한다.
정답과 해설 보기

정답: 2

정답은 ②이다. HIPO는 계층 구조와 입력·처리·출력 정보를 결합해 시스템을 설명하는 문서화 기법이다. 상위 기능에서 하위 기능으로 이어지는 구조를 보여 주고 각 기능의 입력, 처리, 출력을 도표로 정리한다. 소스 모듈의 호출 순서만 기록하면서 입력·출력을 생략하면 HIPO가 제공하려는 기능별 정보와 인터페이스를 확인하기 어렵다. 계층 도표와 기능별 IPO 도표가 서로 보완한다는 점을 중심으로 판단해야 한다.

선지별 해설

  • 기능 계층과 기능별 정보를 이용해 누락과 인터페이스를 검토할 수 있다.
  • 호출 순서만 남기고 IPO 정보를 생략하므로 HIPO의 핵심을 빠뜨렸다.
  • 상위 기능에서 하위 기능으로 단계적으로 구체화하는 취지에 맞는다.
  • 입력·처리·출력을 기록하는 IPO 도표의 역할에 맞는다.

편집 해설 근거: IBM, Improved Programming Technologies—An Overview, GC20-1850-0 (1974), 보존 원문 — Chapter 5, pp.13–14

12. 설계 검토 회의에서 다음 항목을 판단한다. 데이터 흐름도(DFD)의 구성 요소에 포함되지 않는 것은?

  1. Data Flow
  2. Data Dictionary
  3. Process
  4. Data Store
정답과 해설 보기

정답: 2

정답은 ②이다. 데이터 흐름도의 기본 요소는 데이터를 변환하는 처리, 이동 경로인 데이터 흐름, 보관 장소인 데이터 저장소, 시스템 외부의 데이터 출발지나 도착지인 외부 개체이다. 자료 사전은 각 데이터의 의미와 구성 등을 일관되게 정의하는 보조 명세다. 따라서 DFD와 함께 사용될 수 있지만 처리나 흐름처럼 도형으로 나타내는 기본 구성 요소에 포함되지는 않는다. 보기에 외부 개체가 없더라도 자료 사전을 대신 그 요소로 볼 수 없다.

선지별 해설

  • Data Flow는 처리나 저장소 사이의 데이터 이동을 나타낸다.
  • Data Dictionary는 데이터 정의를 모은 별도 명세이므로 정답이다.
  • Process는 입력 데이터를 처리해 출력으로 바꾸는 요소다.
  • Data Store는 데이터의 보관 장소를 나타내는 요소다.

편집 해설 근거: Microsoft, Threat Modeling for Drivers: Create a data flow diagram — Create a data flow diagram

13. 설계 검토 회의에서 다음 항목을 판단한다. Shape 참조 변수에 Circle 또는 Rectangle 객체를 대입하고 draw()를 호출했을 때 실제 객체 타입의 재정의 메서드가 실행된다. 이 동작을 가능하게 하는 것은?

  1. 자료 추상화
  2. 메서드 오버로딩
  3. 동적 바인딩
  4. 정적 링크
정답과 해설 보기

정답: 3

정답은 ③이다. 동적 바인딩은 실행 중 실제 객체의 타입에 따라 호출할 재정의 메서드를 결정하는 것이다. 참조 변수의 선언 타입이 Shape여도 그 변수가 가리키는 객체가 Circle이면 Circle의 draw 구현이 실행될 수 있다. 메서드 오버로딩은 이름은 같고 매개변수 형식이 다른 메서드 중 적절한 선언을 선택하는 문제라서 재정의 메서드의 실행 시 선택과 다르다. 여기서는 재정의 가능한 인스턴스 메서드를 호출한다는 조건이 중요하다.

선지별 해설

  • 자료 추상화는 필요한 특성만 드러내는 개념으로 호출 구현의 선택 자체가 아니다.
  • 오버로딩은 다른 매개변수 목록을 가진 동명 메서드의 선택이다.
  • 실제 객체 타입에 따른 재정의 메서드 선택은 동적 바인딩이다.
  • 정적 링크는 실행 파일을 구성하는 연결 과정이며 이 동작과 다르다.

편집 해설 근거: Oracle Java SE 17 Language Specification — Chapter 15 Expressions — §15.12.4.4 Locate Method to Invoke

14. 설계 검토 회의에서 다음 항목을 판단한다. GoF(Gang of Four) 디자인 패턴 중 생성 패턴으로 타당한 설명을 고르면?

  1. Decorator Pattern
  2. State Pattern
  3. Singleton Pattern
  4. Adapter Pattern
정답과 해설 보기

정답: 3

정답은 ③이다. Singleton은 특정 클래스의 인스턴스 수와 접근 방식을 제어하는 생성 패턴이다. GoF 분류에서 생성 패턴은 객체 생성 책임과 방법을 다루고, 구조 패턴은 객체나 클래스의 조합을, 행위 패턴은 역할 분담과 상호작용을 다룬다. Decorator와 Adapter는 구조 패턴이고 State는 행위 패턴이다. Singleton이라는 이름만으로 동시성 안전성이나 프로그램 전체의 전역 상태 관리 문제가 자동 해결되는 것은 아니다.

선지별 해설

  • Decorator는 객체를 감싸 기능을 덧붙이는 구조 패턴이다.
  • State는 상태에 따라 동작을 달리하는 행위 패턴이다.
  • Singleton은 인스턴스 생성과 접근을 제어하는 생성 패턴이다.
  • Adapter는 인터페이스를 맞추어 연결하는 구조 패턴이다.

편집 해설 근거: Douglas C. Schmidt, Object-Oriented Patterns & Frameworks — p.15, Design Space for GoF Patterns

15. 설계 검토 회의에서 다음 항목을 판단한다. 럼바우(Rumbaugh) 분석 기법에서 정보 모델링이라고도 하며, 시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들 간의 관계를 규정하여 다이어그램을 표시하는 모델링은?

[학습용 개정문항]

  1. Process
  2. Object
  3. Dynamic
  4. Function
정답과 해설 보기

정답: 2

정답은 ②이다. OMT의 객체 모델은 문제 영역에 존재하는 객체와 클래스, 속성, 연산, 객체 사이의 관계를 정리한다. 이 모델은 시스템의 정적 구조를 표현하므로 정적 모델 또는 정보 모델이라는 설명과 연결된다. 동적 모델은 사건과 상태 변화를, 기능 모델은 입력에서 출력으로의 변환을 다룬다. 정적이라는 말은 별도의 네 번째 OMT 모델을 뜻하는 것이 아니라 객체 모델이 시간에 따른 변화보다 구조에 초점을 둔다는 설명이다.

선지별 해설

  • 프로세스 모델링은 여기서 묻는 OMT 객체 모델의 이름이 아니다.
  • 객체·속성·연산·관계로 정적 구조를 표현하는 객체 모델이다.
  • 동적 모델은 상태와 사건에 따른 변화를 표현한다.
  • 기능 모델은 처리와 데이터 변환을 표현한다.

편집 해설 근거: Dov Dori, On Bridging the Analysis–Design and Structure–Behavior Grand Canyons with Object Paradigms (1996), 저자 제공 원문 — 본문 p.26, OMT의 객체·동적·기능 모델

16. 설계 검토 회의에서 다음 항목을 판단한다. 다음 결합도의 종류에 대한 설명 중 적절하지 않은 설명을 고르면?

[학습용 개정문항]

  1. 자료 결합도: 모듈 사이에 필요한 단순 자료 요소를 매개변수로 전달한다.
  2. 내용 결합도: 제어 신호로 통신하고 공통 데이터 영역을 공유한다.
  3. 스탬프 결합도: 레코드 전체를 전달하고 수신 모듈은 일부 필드만 사용한다.
  4. 내용 결합도: 다른 모듈 내부의 코드나 데이터 영역에 직접 접근하여 변경한다.
정답과 해설 보기

정답: 2

정답은 ②이다. 내용 결합도는 한 모듈이 다른 모듈 내부의 코드나 데이터 영역에 직접 접근해 영향을 미치는 관계이다. 제어 신호를 넘겨 상대 동작을 바꾸는 것은 제어 결합도이고, 공유 데이터 영역에 함께 의존하는 것은 공통 결합도이므로 ②는 서로 다른 개념을 섞었다. 자료 결합도는 필요한 단순 데이터를 명시적으로 전달하는 경우다. 이 문항에서는 레코드 전체를 전달하지만 일부만 사용하는 경우를 스탬프 결합도로 구체화해 구분한다.

선지별 해설

  • 필요한 단순 데이터의 매개변수 전달은 자료 결합도다.
  • 제어 결합도와 공통 결합도의 특성을 내용 결합도로 잘못 설명했다.
  • 레코드 전체 중 일부만 사용하면 스탬프 결합도에 해당한다.
  • 다른 모듈의 내부 코드·데이터 영역 접근은 내용 결합도의 사례다.

편집 해설 근거: CMU SEI, Candidate Complexity Metrics (2016), Appendix A.6 — Appendix A.6, pp.28–29

17. 설계 검토 회의에서 다음 항목을 판단한다. CASE 도구의 활용 효과로 보기 어려운 것은?

  1. 분석·설계 표준을 적용해 산출물 일관성을 높인다.
  2. 도메인 전문가의 검토 없이도 요구사항의 업무 적합성을 자동으로 보장한다.
  3. 산출물 추적성으로 유지보수 변경을 돕는다.
  4. 모델과 코드 산출물의 재사용을 돕는다.
정답과 해설 보기

정답: 2

정답은 ②이다. CASE 도구는 분석·설계·구현 등의 개발 활동과 산출물 관리를 지원한다. 표준 양식, 모델 일관성 검사, 추적 링크, 재사용 기능은 업무를 도울 수 있지만 실제 업무에 적합한 요구사항인지는 이해관계자와 전문가의 확인이 필요하다. 형식이 올바르고 모델 사이 모순이 없더라도 요구한 기능 자체가 업무 목적과 다를 수 있다. 따라서 도메인 전문가의 검토 없이 업무 적합성을 자동 보장한다는 설명은 도구의 역할을 과장한다.

선지별 해설

  • 표준화와 일관성 검사는 도구가 지원할 수 있는 활동이다.
  • 요구사항의 업무 적합성을 사람의 검토 없이 자동 보장할 수는 없다.
  • 요구사항과 관련 산출물 연결은 변경 영향 확인에 도움이 된다.
  • 도구는 모델과 코드 등 기존 산출물의 재사용을 지원할 수 있다.

편집 해설 근거: ISO/IEC 14102:2008, Guideline for the evaluation and selection of CASE tools, 공개 개요 — Scope; IEEE Computer Society, SWEBOK Guide V4.0a — Software Requirements — Requirements Validation

18. 설계 검토 회의에서 다음 항목을 판단한다. 파이프 필터 형태의 소프트웨어 아키텍처에 대한 기술로 타당한 설명을 고르면?

[학습용 개정문항]

  1. 계층 모델이라고도 한다.
  2. 모델·뷰·컨트롤러의 3개 서브시스템으로 구성된다.
  3. 중앙 저장소의 자료만 공유하고 필터 사이에는 데이터를 전달하지 않는다.
  4. 서브시스템이 입력 데이터를 받아 처리한 결과를 다음 서브시스템으로 넘겨주는 과정을 반복한다.
정답과 해설 보기

정답: 4

정답은 ④이다. 파이프·필터 구조는 입력을 받아 처리한 뒤 결과를 내보내는 필터들을 파이프로 연결한다. 한 필터의 출력이 다음 필터의 입력이 되므로 변환 단계를 나누어 조합할 수 있다. 예를 들어 데이터 정제, 변환, 집계 단계를 순서대로 연결하는 방식이다. 계층 구조나 MVC의 책임 분리와는 구별되며, 연결되는 필터 사이에는 입출력 형식이 맞아야 한다. 단계를 나누었다고 해서 처리 실패나 중복 실행 문제가 자동 해결되는 것은 아니다.

선지별 해설

  • 계층형과 파이프·필터는 서로 다른 아키텍처 스타일이다.
  • 모델·뷰·컨트롤러의 분리는 MVC의 설명이다.
  • 파이프·필터는 필터 사이에 데이터가 흐르는 구조다.
  • 앞 단계의 결과를 다음 단계로 전달하는 처리 흐름에 맞는다.

편집 해설 근거: Microsoft Azure Architecture Center, Pipes and Filters pattern (2026-10-05 확인) — Solution; Issues and considerations

19. 설계 검토 회의에서 다음 항목을 판단한다. 공통 모듈에 대한 명세 기법 중 해당 기능에 대해 일관되게 이해되고 한 가지로 해석될 수 있도록 작성하는 원칙은?

  1. 내용성
  2. 상호작용성
  3. 명확성
  4. 독립성
정답과 해설 보기

정답: 3

정답은 ③이다. 명확성은 명세를 읽는 사람에 따라 기능의 의미가 달라지지 않도록 한 가지 의미로 표현하는 성질이다. 모호한 표현이나 정의되지 않은 용어를 줄이고 입력, 처리 조건, 출력과 예외 상황을 구체적으로 쓰는 것이 도움이 된다. 예를 들어 빠르게 처리한다는 표현만 쓰기보다 어떤 조건에서 얼마 이내에 응답하는지 정하면 해석 차이를 줄일 수 있다. 모듈 사이의 의존성을 줄이는 독립성과는 판단 대상이 다르다.

선지별 해설

  • 내용성이라는 이름은 지문의 단일한 해석 가능성을 직접 나타내지 않는다.
  • 상호작용성은 구성 요소 사이의 상호작용과 관련된 표현이다.
  • 한 가지 의미로 일관되게 이해되도록 하는 명확성이다.
  • 독립성은 다른 모듈에 대한 의존 정도와 관련된다.

편집 해설 근거: IEEE Computer Society, SWEBOK Guide V4.0a — Software Requirements — Requirements Analysis

20. 설계 검토 회의에서 다음 항목을 판단한다. 주문 처리 시스템의 모듈 독립성을 높이기 위한 설계 원칙과 반대되는 것은?

  1. 모듈이 하나의 명확한 업무를 완결하도록 응집도를 높인다.
  2. 인터페이스에는 필요한 데이터만 전달해 구현 세부사항 노출을 줄인다.
  3. 모듈이 서로의 내부 전역 상태를 직접 수정하도록 결합도를 높인다.
  4. 상위 수준 정책과 하위 구현 사이의 의존 관계를 명시적으로 관리한다.
정답과 해설 보기

정답: 3

정답은 ③이다. 모듈 독립성을 높이려면 한 모듈 내부의 기능은 하나의 목적에 잘 모이게 하고, 모듈 사이의 의존 관계는 필요한 인터페이스로 제한해야 한다. 서로의 내부 전역 상태를 직접 바꾸면 변경 원인과 영향 범위를 파악하기 어려워지고 실행 순서에도 민감해질 수 있다. 따라서 결합도를 의도적으로 높이는 ③은 목표와 반대다. 낮은 결합도는 모듈 사이의 통신을 없앤다는 뜻이 아니라 필요한 계약을 명확하게 만든다는 의미이다.

선지별 해설

  • 하나의 명확한 업무에 기능을 모으면 응집도를 높일 수 있다.
  • 필요한 데이터만 노출하면 내부 구현에 대한 의존을 줄일 수 있다.
  • 상호 내부 상태를 직접 수정하면 결합과 변경 파급이 커진다.
  • 의존 관계를 명시하면 정책과 구현의 변경 영향을 관리하기 쉽다.

편집 해설 근거: IEEE Computer Society, SWEBOK Guide V4.0a — Software Design — Modularization; Coupling and Cohesion

정보처리기사 필기 기출문제 · 소프트웨어 개발

21. 인덱스가 0~4인 크기 5 원형 큐에서 front는 첫 원소 직전 위치, rear는 마지막 원소 위치이다. front=1, rear=4이고 한 칸을 비워 포화를 구분한다. 한 원소를 삽입한 뒤 rear는?

[학습용 개정문항]

  1. 0
  2. 4
  3. 5
  4. 1
정답과 해설 보기

정답: 1

정답은 ①이다. 인덱스가 0부터 4까지인 원형 큐에서 다음 위치는 현재 인덱스에 1을 더한 뒤 배열 크기 5로 나눈 나머지이다. rear가 4이므로 다음 위치는 (4+1)%5=0이다. 한 칸을 비우는 방식에서는 다음 rear가 front와 같으면 포화인데, 여기서는 0과 1이 다르므로 삽입할 수 있다. 삽입 뒤 rear는 0이 되며, 다시 한 번 삽입하려 하면 다음 위치 1이 front와 같아 포화로 판단한다.

선지별 해설

  • 배열 끝 다음 위치가 0으로 순환하므로 맞다.
  • 삽입했으므로 rear가 기존 위치 4에 그대로 있지 않는다.
  • 5는 인덱스 범위 0~4 밖이므로 나머지 연산이 필요하다.
  • 1까지 이동하면 비워 두는 칸을 침범한다.

편집 해설 근거: NIST DADS — queue — Definition

22. 무방향 그래프의 정점은 A, B, C, D, E이고 간선은 A-B, A-C, B-D, B-E뿐이다. A에서 시작해 미방문 인접 정점을 알파벳 순으로 선택하며 깊이 우선 탐색할 때 A 다음 두 정점은?

[학습용 개정문항]

  1. B, D
  2. D, E
  3. B, C
  4. C, B
정답과 해설 보기

정답: 1

정답은 ①이다. 깊이 우선 탐색은 현재 정점에서 아직 방문하지 않은 인접 정점을 선택한 뒤 그 정점의 탐색을 먼저 계속한다. A에서 B와 C 중 알파벳 순으로 앞선 B를 방문하고, B에서는 아직 방문하지 않은 D와 E 중 D를 방문한다. 따라서 A 다음 두 정점은 B, D이다. A의 다른 인접 정점 C를 곧바로 방문하는 B, C 순서는 이 그래프에서 너비 우선 탐색의 초기 순서와 혼동한 것이다.

선지별 해설

  • A에서 B로 내려간 뒤 B의 인접 정점 D를 먼저 방문한다.
  • A에서 처음 선택할 B를 빠뜨렸다.
  • B의 하위 탐색을 끝내기 전에 C를 방문한 순서다.
  • A의 인접 정점은 알파벳 순으로 B를 먼저 선택한다.

편집 해설 근거: NIST DADS — depth-first search — Definition

23. 개발·시험 담당자가 다음 사례를 검토한다. Java 클래스 멤버의 접근 제어에 대한 기술로 틀린 설명을 고르면?

  1. 접근 지정자를 생략한 멤버는 기본적으로 같은 패키지에서 접근할 수 있다.
  2. public 멤버는 해당 클래스에 접근할 수 있는 코드에서 사용할 수 있다.
  3. private 멤버는 같은 패키지에 속한 모든 클래스가 직접 접근할 수 있다.
  4. protected 멤버는 같은 패키지와, 조건을 만족하는 다른 패키지의 하위 클래스에서 접근할 수 있다.
정답과 해설 보기

정답: 3

정답은 ③이다. private 멤버는 같은 패키지에 있다는 이유만으로 다른 최상위 클래스에서 직접 접근할 수 있는 멤버가 아니다. Java는 private 선언을 둘러싼 최상위 클래스나 인터페이스의 몸체 안에서 접근을 허용하므로 중첩 클래스 관계도 함께 고려한다. 접근 지정자가 없는 일반 클래스 멤버는 패키지 접근이며, protected는 같은 패키지 접근과 일정 조건의 하위 클래스 접근을 허용한다. public도 소속 타입 자체에 접근 가능해야 사용할 수 있다.

선지별 해설

  • 일반 클래스 멤버의 접근 지정자 생략은 패키지 접근이다.
  • 선언 타입의 접근 가능성까지 만족하면 public 멤버를 사용할 수 있다.
  • 같은 패키지의 모든 클래스에 private 접근을 허용하지 않는다.
  • 다른 패키지에서는 하위 클래스 관계와 접근 표현식 조건이 적용된다.

편집 해설 근거: Oracle Java SE 25 Language Specification, Chapter 6 Names — §6.6.1 Determining Accessibility; §6.6.2 protected Access

24. 개발·시험 담당자가 다음 사례를 검토한다. 정렬된 두 부분 배열 [2, 8, 11]과 [3, 7, 13]을 병합한다. 결과는?

  1. [2, 8, 11, 3, 7, 13]
  2. [13, 11, 8, 7, 3, 2]
  3. [2, 3, 7, 8, 11, 13]
  4. [2, 3, 8, 7, 11, 13]
정답과 해설 보기

정답: 3

정답은 ③이다. 병합은 각각 정렬된 두 배열의 맨 앞 미처리 원소를 비교해 작은 값을 결과에 붙이는 방식으로 진행한다. 2와 3을 비교해 2, 8과 3을 비교해 3, 8과 7을 비교해 7을 먼저 선택한다. 이어서 8, 11을 선택하고 남은 13을 붙이면 [2, 3, 7, 8, 11, 13]이 된다. 단순히 두 배열을 이어 붙이는 것은 병합 결과의 전체 정렬 상태를 보장하지 못한다.

선지별 해설

  • 두 배열을 연결하기만 하여 11 다음에 3이 오는 역전이 남는다.
  • 내림차순 결과이므로 주어진 오름차순 부분 배열의 병합과 다르다.
  • 모든 원소를 한 번씩 포함하면서 오름차순을 유지한다.
  • 8 다음에 7이 나타나 정렬 순서를 어긴다.

편집 해설 근거: NIST DADS, merge sort — Definition

25. 개발·시험 담당자가 다음 사례를 검토한다. 제어 흐름 그래프가 노드 9개, 간선 11개인 하나의 연결 성분이다. 순환 복잡도 E-N+2는?

  1. 4
  2. 9
  3. 20
  4. 2
정답과 해설 보기

정답: 1

정답은 ①이다. 하나의 연결된 제어 흐름 그래프에 대해 제시된 순환 복잡도 식은 V(G)=E-N+2이다. 간선 수 E=11과 노드 수 N=9를 대입하면 11-9+2=4가 된다. 이 값은 독립적인 제어 흐름 경로의 수와 관련된 복잡도 지표이지 노드 개수나 전체 가능한 실행 횟수가 아니다. 반복문이 있으면 실행 횟수는 매우 커질 수 있어도 그래프의 순환 복잡도와 그대로 같아지지는 않는다.

선지별 해설

  • 11-9+2=4이므로 맞다.
  • 9는 노드 수이며 간선 수와 함께 식에 대입해야 한다.
  • 20은 간선 수와 노드 수를 더한 값으로 식과 다르다.
  • 간선 수와 노드 수의 차이만 계산하고 2를 빠뜨렸다.

편집 해설 근거: NIST SP 500-235, Structured Testing (1996) — Cyclomatic Complexity

26. 정수 입력의 유효 범위는 10 이상 50 이하이다. 각 유효 경계값과 그 바로 안쪽·바깥쪽 정수를 모두 포함하는 3값 경계값 분석의 입력 집합은?

[학습용 개정문항]

  1. {11, 49}
  2. {9, 10, 11, 49, 50, 51}
  3. {10, 20, 30, 40, 50}
  4. {9, 51}
정답과 해설 보기

정답: 2

정답은 ②이다. 이 문항은 유효 구간 양 끝값과 각 끝값의 바로 안쪽·바깥쪽 정수를 고르는 방식이다. 하한 10 주위에서는 9, 10, 11을, 상한 50 주위에서는 49, 50, 51을 선택한다. 9와 51은 무효 입력이고 나머지는 유효 입력이다. 경계값 분석에는 경계와 이웃값을 선택하는 여러 변형이 있으므로, 단일 결함이라는 표현만으로 여섯 값을 유일하게 결정하지 않고 문항에 선택 규칙을 명시했다.

선지별 해설

  • 경계 자체와 무효 구간의 이웃값이 빠졌다.
  • 두 경계와 각각의 바로 안쪽·바깥쪽 정수를 모두 포함한다.
  • 유효 구간의 여러 값이지만 경계 바로 바깥값을 시험하지 않는다.
  • 무효 값만 있고 경계와 바로 안쪽 값이 빠졌다.

편집 해설 근거: ISTQB CTFL 2018 Syllabus v3.1.1 (2021-07-01) — §4.2.2 Boundary Value Analysis

27. 개발·시험 담당자가 다음 사례를 검토한다. 승인된 형상 항목 집합을 기준선으로 확정한 뒤 변경 요청이 들어왔다. 다음 조치로 가장 적절한 것은?

  1. 영향 분석과 승인 절차를 거쳐 기준선을 변경한다
  2. 개발자가 즉시 원본을 덮어쓴다
  3. 기준선 기록을 삭제한 뒤 새 파일만 남긴다
  4. 승인 없이 운영 서버에서 먼저 시험한다
정답과 해설 보기

정답: 1

정답은 ①이다. 기준선은 승인된 형상 항목들의 특정 상태이므로 변경 요청이 왔다고 곧바로 덮어쓰지 않는다. 변경의 영향과 필요성을 검토하고 정해진 권한자의 승인을 받은 뒤 변경 내용과 새 기준선을 기록한다. 이렇게 해야 어떤 요구로 무엇이 바뀌었는지 추적하고 문제가 발생했을 때 이전 상태와 비교할 수 있다. 기준선 관리는 변경 자체를 영구 금지하는 것이 아니라 변경을 통제된 절차로 수행하도록 하는 활동이다.

선지별 해설

  • 영향 분석과 승인을 거친 통제된 변경이 적절하다.
  • 즉시 덮어쓰면 승인과 추적 절차를 건너뛴다.
  • 이전 기준선 기록을 없애면 변경 이력을 확인하기 어렵다.
  • 승인 없는 운영 시험은 통제된 기준선 변경 절차가 아니다.

편집 해설 근거: IEEE Computer Society, SWEBOK Guide V4.0a — Software Configuration Management — Software Configuration Control

28. 개발·시험 담당자가 다음 사례를 검토한다. 해싱 함수(Hashing Function)의 종류가 해당하지 않는 것을 고르면?

  1. 제곱법(Mid-Square)
  2. 숫자 분석법(Digit Analysis)
  3. 개방주소법(Open Addressing)
  4. 제산법(Division)
정답과 해설 보기

정답: 3

정답은 ③이다. 해시 함수는 키를 테이블의 주소나 해시값으로 변환하는 규칙이다. 제곱법은 키를 제곱한 값의 일부를 이용하고, 숫자 분석법은 키의 숫자 분포를 고려하며, 제산법은 나머지 연산을 사용한다. 반면 개방주소법은 서로 다른 키가 같은 위치로 매핑된 충돌을 처리하기 위해 테이블 안의 다른 위치를 탐사하는 방식이다. 해시값을 만드는 단계와 충돌 후 저장 위치를 찾는 단계를 나누면 구별하기 쉽다.

선지별 해설

  • 키를 제곱해 일부 자릿수를 취하는 해시 함수 구성 방법이다.
  • 키 자릿수의 분포를 분석해 주소 계산에 사용할 부분을 고르는 방법이다.
  • 해시 함수의 종류가 아니라 충돌을 해결하는 탐사 방식이다.
  • 키를 일정 수로 나눈 나머지를 주소 계산에 사용하는 방법이다.

편집 해설 근거: Sartaj Sahni, Data Structures, Algorithms, & Applications in C++ (2004), Hash Functions — Hash Functions; NIST DADS, linear probing — Definition

29. 개발·시험 담당자가 다음 사례를 검토한다. 오프라인 환경에도 설치되는 서명된 업데이트 패키지를 설계한다. 안전한 업그레이드 고려사항으로 부적절한 것은?

  1. 이전 사용자 설정을 조건 없이 덮어쓰고 실패해도 되돌리기 절차를 제공하지 않는다.
  2. 업데이트 중단 시 재시도하거나 이전 정상 버전으로 복구할 수 있게 한다.
  3. 업데이트 후 핵심 파일과 서비스 상태를 확인하고 결과 로그를 남긴다.
  4. 설치 전에 패키지 서명과 대상 버전·필수 디스크 공간을 검증한다.
정답과 해설 보기

정답: 1

정답은 ①이다. 업데이트는 새 파일을 복사하는 것뿐 아니라 기존 설정과 정상 동작을 이어 가는 과정이다. 사용자 설정을 조건 없이 덮어쓰고 실패 시 복구 수단도 없으면 서비스 중단이나 설정 손실에서 회복하기 어렵다. 서명을 검증해 패키지의 출처와 무결성을 확인하고 설치 대상·공간 등 사전조건, 실패 시 재시도·복구, 완료 후 상태 점검을 함께 준비해야 한다. 오프라인 환경에서도 신뢰할 검증 키와 패키지 검증 절차가 필요하다.

선지별 해설

  • 설정 보존과 실패 복구를 모두 무시한 부적절한 방침이다.
  • 중단 후 재시도나 이전 정상 상태 복구를 준비하는 것이 적절하다.
  • 완료 후 상태 확인과 로그는 설치 결과 검증과 추적에 도움이 된다.
  • 서명과 설치 사전조건을 확인하면 위변조나 설치 실패 위험을 줄인다.

편집 해설 근거: NIST SP 800-218 — Secure Software Development Framework v1.1 — PS.2.1 Verify Software Release Integrity; NIST SP 800-53 Rev.5, Security and Privacy Controls (2020, 2020-12-10 정오표 포함본) — CM-3 Configuration Change Control; CP-10 System Recovery and Reconstitution

30. 개발·시험 담당자가 다음 사례를 검토한다. 빈 스택에 A2, B30, C6을 차례로 push한 뒤 두 번 pop한다. 출력 순서는?

  1. C6, B30
  2. C6, A2
  3. A2, B30
  4. B30, C6
정답과 해설 보기

정답: 1

정답은 ①이다. 스택은 마지막에 넣은 원소가 먼저 나오는 LIFO 구조이다. A2, B30, C6을 차례로 넣으면 바닥부터 A2, B30, C6이 쌓이고 맨 위는 C6이다. 첫 번째 pop은 C6을 꺼내고 두 번째 pop은 그 아래의 B30을 꺼낸다. 따라서 출력 순서는 C6, B30이며 스택에는 A2만 남는다. 문자 뒤 숫자는 원소 이름의 일부이므로 숫자 크기로 정렬하거나 꺼낼 순서를 판단하지 않는다.

선지별 해설

  • 맨 위 C6 다음에 B30이 제거되므로 맞다.
  • C6 뒤에는 A2가 아니라 B30이 놓여 있다.
  • 처음 넣은 A2부터 꺼내는 것은 스택의 LIFO 규칙과 다르다.
  • B30보다 나중에 들어온 C6이 먼저 제거되어야 한다.

편집 해설 근거: Python 공식 자습서: Data Structures — §5.1.1 Using Lists as Stacks

31. 개발·시험 담당자가 다음 사례를 검토한다. 릴리스 2.4의 형상 관리 활동과 직접 관련이 가장 적은 것은?

  1. 여러 개발 브랜치의 변경을 검토하고 기준선에 병합한다.
  2. 릴리스 태그로 배포 시점의 소스와 설정을 식별한다.
  3. 승인된 변경 요청과 실제 커밋의 연결 관계를 기록한다.
  4. 영업팀의 다음 분기 광고 단가를 산정한다.
정답과 해설 보기

정답: 4

정답은 ④이다. 형상 관리는 소프트웨어를 이루는 항목과 버전을 식별하고, 변경을 통제하며, 상태와 이력을 추적하는 활동이다. 브랜치 변경의 검토·병합, 릴리스 태그 지정, 승인 요청과 커밋의 연결은 모두 배포본이 무엇으로 구성됐는지 설명하는 데 필요하다. 영업 광고 단가 산정은 사업 계획이나 가격 결정 업무로서 해당 릴리스의 소프트웨어 형상 관리와 직접적인 관련이 가장 적다. 같은 조직의 업무라는 이유로 모두 형상 관리에 포함되지는 않는다.

선지별 해설

  • 병합할 변경을 검토하고 기준선을 관리하는 형상 통제 활동이다.
  • 태그는 특정 릴리스의 소스 상태를 식별하는 데 쓰인다.
  • 변경 요청과 실제 수정의 연결은 추적성과 상태 기록에 해당한다.
  • 광고 단가 산정은 소프트웨어 구성과 변경을 관리하는 활동이 아니다.

편집 해설 근거: IEEE Computer Society, SWEBOK Guide V4.0a — Software Configuration Management — Identification, Control, Status Accounting

32. 배열 [13, 9, 11, 15]를 오름차순 삽입 정렬한다. 첫 원소를 정렬된 구간으로 보고 두 번째 원소를 삽입하는 첫 회전의 결과는?

[학습용 개정문항]

  1. [9, 13, 11, 15]
  2. [13, 11, 9, 15]
  3. [9, 11, 13, 15]
  4. [13, 9, 15, 11]
정답과 해설 보기

정답: 1

정답은 ①이다. 오름차순 삽입 정렬은 맨 앞 원소를 이미 정렬된 구간으로 보고 다음 원소를 알맞은 위치에 끼워 넣는다. 첫 회전에서는 9를 꺼내 왼쪽의 13과 비교한다. 13이 더 크므로 한 칸 오른쪽으로 옮기고 9를 맨 앞에 넣어 [9, 13, 11, 15]가 된다. 11과 15를 정렬 구간에 넣는 작업은 뒤의 회전에서 수행하므로 첫 회전만으로 전체가 정렬됐다고 판단해서는 안 된다.

선지별 해설

  • 두 번째 원소 9를 첫 원소 13 앞에 삽입한 결과다.
  • 첫 회전의 대상은 11이 아니라 두 번째 원소 9이다.
  • 이는 전체 정렬 결과이며 첫 회전 결과가 아니다.
  • 마지막 두 원소를 바꾸는 것은 첫 삽입 단계가 아니다.

편집 해설 근거: NIST DADS, insertion sort — Definition

33. 개발·시험 담당자가 다음 사례를 검토한다. 결제 금액 입력 화면을 테스트한다. 입력 범위를 1원 이상 1,000,000원 이하로 정하고 범위의 안쪽·경계·바깥값을 실행하되 프로그램 내부 분기 구조는 보지 않는다. 이 접근과 다른 종류의 기법은?

  1. 경계값 분석
  2. 동치 분할
  3. 원인-결과 그래프
  4. 분기 커버리지 검사
정답과 해설 보기

정답: 4

정답은 ④이다. 지문은 입력 범위와 기대 결과 같은 외부 명세로 시험을 설계하고 내부 코드 구조는 보지 않는 접근이다. 경계값 분석과 동치 분할, 원인·결과 관계에 따른 시험 설계는 이런 명세 기반 접근에 속한다. 분기 커버리지는 코드의 분기 결과가 실제로 얼마나 실행됐는지 측정하는 구조 기반 기준이므로 성격이 다르다. 입력값을 여러 개 실행했다는 사실만으로 모든 내부 분기가 실행됐다고 결론 내릴 수는 없다.

선지별 해설

  • 허용 범위의 경계와 이웃값을 이용하는 명세 기반 기법이다.
  • 같은 처리를 기대하는 입력 집합을 나누는 명세 기반 기법이다.
  • 입력 조건과 결과의 논리 관계를 바탕으로 시험을 설계한다.
  • 내부 제어 흐름의 분기 실행을 다루므로 구조 기반이다.

편집 해설 근거: ISTQB CTFL 2018 Syllabus v3.1.1 (2021-07-01) — §4.2 Black-box Test Techniques; §4.3 White-box Test Techniques

34. 개발·시험 담당자가 다음 사례를 검토한다. 하향식 통합 시험을 위해 일시적으로 필요한 조건만을 가지고 임시로 제공되는 시험용 모듈은?

  1. Procedure
  2. Function
  3. Stub
  4. Driver
정답과 해설 보기

정답: 3

정답은 ③이다. 하향식 통합 시험에서는 상위 모듈부터 연결해 시험하므로 아직 준비되지 않은 하위 모듈을 대신할 코드가 필요할 수 있다. 스텁은 그 하위 모듈의 호출 인터페이스를 제공하고 시험에 필요한 제한된 응답을 돌려준다. 드라이버는 반대로 시험 대상 모듈을 호출하고 입력을 제공하는 상위 호출자 역할을 대신한다. 스텁이 실제 하위 모듈의 모든 기능을 구현해야 한다면 임시 대역으로 사용하는 이점이 줄어든다.

선지별 해설

  • 프로시저는 일반적인 실행 단위 이름으로 하위 모듈 대역을 특정하지 않는다.
  • 함수도 일반적인 프로그램 구성 단위이며 시험 대역의 역할 이름이 아니다.
  • 호출되는 하위 모듈을 임시로 대신하는 스텁이 맞다.
  • 드라이버는 시험 대상을 호출하는 상위 측 대역이다.

편집 해설 근거: ISTQB CTFL 2018 Syllabus v3.1.1 (2021-07-01) — §2.2.1 Component Testing; §2.2.2 Integration Testing

35. 개발·시험 담당자가 다음 사례를 검토한다. 승인된 변경 요청 CR-35만 기준선에 반영하려 한다. 형상 통제의 올바른 절차는?

  1. 감사 결과와 무관하게 이전 버전을 삭제한다
  2. 요청 즉시 모든 기준선을 덮어쓴다
  3. 변경 기록 없이 소스만 수정한다
  4. 영향 분석과 승인 후 변경·기록한다
정답과 해설 보기

정답: 4

정답은 ④이다. 형상 통제는 기준선에 반영할 변경을 평가하고 승인된 범위대로 구현한 뒤 결과를 기록하는 과정이다. CR-35가 승인되었다면 해당 승인 범위와 영향 분석 내용을 확인해 변경하고, 어떤 항목과 버전이 달라졌는지 남겨야 한다. 요청만으로 전체 기준선을 덮어쓰거나 기록을 생략하면 승인되지 않은 수정이 섞여도 알아내기 어렵다. 이전 버전도 보존 정책과 감사·복구 필요성을 고려해야 하므로 무조건 삭제하는 절차는 적절하지 않다.

선지별 해설

  • 감사나 보존 필요성을 무시한 이전 버전 삭제는 적절하지 않다.
  • 요청 접수만으로 변경 범위와 승인이 확정되는 것은 아니다.
  • 기록이 없으면 승인 요청과 실제 변경을 추적하기 어렵다.
  • 영향 분석·승인에 따라 변경하고 이력을 남기는 절차가 맞다.

편집 해설 근거: IEEE Computer Society, SWEBOK Guide V4.0a — Software Configuration Management — Software Configuration Control

36. 하나의 연결 성분으로 이루어진 제어 흐름 그래프의 간선 수 E=6, 노드 수 N=4이다. McCabe 순환 복잡도 V(G)=E-N+2는?

[학습용 개정문항]

  1. 3
  2. 4
  3. 5
  4. 6
정답과 해설 보기

정답: 2

정답은 ②이다. 단일 연결 제어 흐름 그래프의 순환 복잡도는 V(G)=E-N+2로 계산한다. 지문에서 E=6, N=4이므로 6-4+2=4이다. 그래프의 모든 간선을 단순히 세는 값이나 노드 수 자체를 정의로 삼는 값은 아니다. 이 사례에서는 결과 4와 노드 수 4가 우연히 같지만, 다른 그래프에서도 둘이 같다고 일반화하면 안 된다. 연결 성분 조건을 함께 확인한 뒤 식을 적용해야 한다.

선지별 해설

  • 제시된 간선·노드 수를 식에 대입하면 3이 아니다.
  • 6-4+2=4이므로 정답이다.
  • 노드 수나 상수를 다르게 대입한 값이다.
  • 6은 간선 수이며 순환 복잡도와 다르다.

편집 해설 근거: NIST SP 500-235, Structured Testing (1996) — Cyclomatic Complexity

37. 개발·시험 담당자가 다음 사례를 검토한다. 주문 처리 함수가 120줄이며 주소 검증 코드 25줄이 세 곳에서 거의 동일하게 반복된다. 동작을 유지하면서 중복과 함수 길이를 함께 줄이는 우선 리팩터링은?

  1. Extract Function
  2. Rename Variable
  3. Move Field
  4. Inline Function
정답과 해설 보기

정답: 1

정답은 ①이다. Extract Function은 의미 있는 코드 조각을 별도 함수로 뽑고 원래 위치를 함수 호출로 바꾸는 리팩터링이다. 반복되는 주소 검증을 하나의 함수로 모으면 세 곳의 수정 지점을 줄이고 주문 처리 함수도 짧게 만들 수 있다. 공통 부분의 입력과 반환값, 예외 및 부수 효과를 확인하여 기존 동작이 유지되도록 해야 한다. 이름만 바꾸는 작업은 가독성에는 도움이 되지만 반복된 검증 코드 자체를 제거하지 않는다.

선지별 해설

  • 반복된 검증을 함수로 추출하면 중복과 원래 함수 길이를 함께 줄인다.
  • 변수 이름 변경만으로 중복 코드가 사라지지는 않는다.
  • 필드 이동은 데이터의 소속을 바꾸는 작업으로 우선 목표와 다르다.
  • 함수를 인라인하면 호출을 본문으로 펼쳐 길이와 중복이 늘 수 있다.

편집 해설 근거: Martin Fowler, Refactoring Catalog — Extract Function — Extract Function 예시; inverse of Inline Function

38. 다음 중 기본 규격의 주된 목적이 통신 보안 채널 제공이 아니라 전자우편 전송인 프로토콜은?

[학습용 개정문항]

  1. SMTP
  2. TLS
  3. IPsec
  4. SSH
정답과 해설 보기

정답: 1

정답은 ①이다. SMTP의 기본 목적은 전자우편을 전송하는 것이다. 기본 SMTP만으로 전송 내용의 암호화와 상대 인증이 제공되는 것은 아니며, 메일 전송을 보호하려면 TLS 같은 별도 보안 기능을 적용한다. TLS는 통신 채널 보호, IPsec은 IP 계층의 보안, SSH는 안전한 원격 접속 등에 사용된다. 서로 다른 계층의 프로토콜을 모두 OSI 네트워크 계층이라고 부르지 않고 통신 보안이라는 넓은 목적에서 비교해야 한다.

선지별 해설

  • 기본 SMTP는 메일 전송 프로토콜이며 암호화 보안 채널 자체가 아니다.
  • TLS는 기밀성과 무결성 등을 제공하는 통신 보안 프로토콜이다.
  • IPsec은 IP 패킷 통신을 보호하는 보안 구조다.
  • SSH는 안전한 원격 로그인과 통신을 지원한다.

편집 해설 근거: IETF RFC 5321, Simple Mail Transfer Protocol (2008) — §1 Introduction; IETF RFC 8446, TLS 1.3 (2018) — §1 Introduction; IETF RFC 4301 — IPsec architecture — §2.1 Goals/Objectives/Requirements; IETF RFC 4253, SSH Transport Layer Protocol (2006) — §1 Introduction

39. 다음 무방향 그래프를 A에서 깊이 우선 탐색한다. 각 인접 목록에서 왼쪽의 미방문 정점을 먼저 선택할 때 최초 방문 순서는?

[학습용 개정문항]
A: B, C, D
B: A, E, C
C: A, B, F, D
D: A, C, F
E: B, F
F: E, G, C, D
G: F

  1. ABEFGCD
  2. ABECDFG
  3. ABECFDG
  4. ABCDEFG
정답과 해설 보기

정답: 1

정답은 ①이다. A에서 우선순위상 B로 들어가고, B에서는 이미 방문한 A를 건너뛰어 E를 선택한다. 이어 E에서 F, F에서 G로 진행한 뒤 G에 미방문 이웃이 없으므로 F로 돌아온다. F의 다음 미방문 이웃 C를 방문하고 C에서 D로 진행하면 최초 방문 순서는 A-B-E-F-G-C-D가 된다. 되돌아갈 때 이미 방문한 정점을 다시 출력하지 않으며, 각 인접 목록의 왼쪽부터 선택한다는 규칙을 일관되게 적용한다.

선지별 해설

  • 깊게 진행한 뒤 되돌아가 남은 이웃을 방문한 순서다.
  • E에서 방문할 F가 남아 있는데 C로 먼저 이동했다.
  • E의 미방문 이웃 F보다 C를 먼저 방문해 규칙과 다르다.
  • A의 이웃을 단순 알파벳 순으로 나열한 것으로 깊이 탐색 순서가 아니다.

편집 해설 근거: NIST DADS — depth-first search — Definition

40. 개발·시험 담당자가 다음 사례를 검토한다. 의료 영상 시스템의 구현 언어를 선택할 때 실질적인 평가 기준과 관련성이 가장 낮은 방침을 고르면?

  1. 영상 처리와 병행 처리 요구에 적합한가
  2. 요구되는 플랫폼과 라이브러리를 지원하는가
  3. 검증된 컴파일러와 개발 도구를 구할 수 있는가
  4. 컴파일러 제작자의 아이디어가 다른 제품보다 독창적인가
정답과 해설 보기

정답: 4

정답은 ④이다. 구현 언어를 선택할 때에는 해결할 문제, 목표 플랫폼, 필요한 라이브러리, 실행 성능과 개발·검증 도구를 함께 평가한다. 영상 처리와 병행 처리 요구를 지원하는지, 실제 배포 환경에서 안정적으로 개발하고 유지보수할 수 있는지가 실질적인 기준이다. 컴파일러 제작자의 아이디어가 독창적이라는 사실만으로 이러한 요구를 충족한다고 볼 수 없다. 독창성 자체보다 요구 충족을 입증할 기능과 성능, 지원 체계를 살펴야 한다.

선지별 해설

  • 문제 영역의 계산과 병행 처리 요구를 지원하는지 확인해야 한다.
  • 목표 환경과 라이브러리 호환성은 구현 가능성에 직접 영향을 준다.
  • 컴파일러와 진단·개발 도구의 가용성은 검증과 유지보수에 중요하다.
  • 제작자의 독창성만으로 구현 적합성을 판단할 수 없어 관련성이 낮다.

편집 해설 근거: IEEE Computer Society, SWEBOK Guide V4.0a — Software Construction — Construction Languages; Construction Tools

정보처리기사 필기 기출문제 · 데이터베이스 구축

41. SQL Server의 행 저장소 테이블에 비클러스터드 인덱스가 있다. 인덱스 키 순서와 기본 데이터 행의 물리 배치가 다를 때 설명으로 옳은 것은?

[학습용 개정문항]

  1. 인덱스 리프가 데이터 행 자체를 키 순서로 저장한다
  2. 테이블마다 비클러스터드 인덱스는 하나만 만들 수 있다
  3. 키 열을 수정해도 해당 인덱스 엔트리는 갱신할 필요가 없다
  4. 인덱스 리프가 행 위치를 가리키는 별도 구조다
정답과 해설 보기

정답: 4

정답은 ④이다. SQL Server의 행 저장소 비클러스터드 인덱스는 데이터 행과 별도로 구성되며, 키 값과 해당 행을 찾는 행 로케이터를 저장한다. 대상이 힙이면 물리 행 위치를, 클러스터드 테이블이면 클러스터드 키를 이용할 수 있다. 따라서 인덱스 키 순서와 기본 데이터 행의 배치가 같을 필요는 없다. 포함 열을 리프에 추가할 수도 있으므로 비클러스터드 리프에는 포인터만 있고 열 값은 없다는 식으로 단정해서도 안 된다.

선지별 해설

  • 데이터 행 자체를 인덱스 키 순서로 저장하는 설명은 클러스터드 인덱스에 해당한다.
  • 비클러스터드 인덱스는 한 테이블에 여러 개 만들 수 있다.
  • 인덱스 키가 바뀌면 관련 인덱스 항목도 유지·갱신해야 한다.
  • 기본 행과 별도 구조에서 행 로케이터를 제공하므로 맞다.

편집 해설 근거: Microsoft SQL Server, Clustered and nonclustered indexes — Nonclustered indexes; Clustered indexes

42. 수학적 관계 모델의 R(A, B, C)에 서로 다른 튜플 12개가 있다. 기존 튜플과 다르고 모든 제약을 만족하는 튜플 하나를 삽입할 때 다음 중 틀린 설명은?

[학습용 개정문항]

  1. 튜플의 표시 순서를 바꾸어도 같은 튜플 집합이면 동일한 릴레이션이다.
  2. 각 속성 값은 그 속성에 정의된 도메인에 속해야 한다.
  3. 새로운 튜플 1개를 삽입하면 카디널리티는 13이 된다.
  4. 새로운 튜플 1개를 삽입하면 디그리는 4가 된다.
정답과 해설 보기

정답: 4

정답은 ④이다. 릴레이션의 차수 또는 디그리는 속성 수이고 카디널리티는 튜플 수이다. R(A, B, C)의 차수는 처음부터 3이며 기존 튜플과 다른 유효한 튜플 하나를 추가해도 속성 수는 변하지 않는다. 따라서 카디널리티만 12에서 13으로 증가한다. 수학적 관계 모델은 튜플을 순서 없는 집합으로 보므로 표시 순서가 달라져도 같은 관계이고, 각 속성 값은 정의된 도메인을 따라야 한다.

선지별 해설

  • 같은 튜플 집합이면 표시 순서는 관계의 의미를 바꾸지 않는다.
  • 속성 값은 해당 속성의 도메인에 속해야 한다.
  • 중복되지 않는 유효 튜플 하나를 추가하면 12+1=13이다.
  • 튜플 삽입은 열을 추가하지 않으므로 차수는 3으로 유지된다.

편집 해설 근거: Ramakrishnan·Gehrke, Database Management Systems 3판, Relational Model — Relational Model — Basic Definitions

43. T1이 같은 범위 조건을 두 번 조회한다. 그 사이 T2가 조건에 맞는 새 행을 삽입하고 커밋하여 T1의 두 번째 조회에서 행 수가 늘었다. 이 현상은?

[학습용 개정문항]

  1. 비반복 읽기에서 기존 행 값만 변경된 경우
  2. 팬텀 리드
  3. 더티 리드
  4. 갱신 손실
정답과 해설 보기

정답: 2

정답은 ②이다. 팬텀 리드는 같은 검색 조건을 다시 실행했을 때 그 조건을 만족하는 행 집합이 달라지는 현상이다. 다른 트랜잭션이 범위에 들어오는 행을 삽입하고 커밋하여 두 번째 조회에서 행 수가 늘어났다면 팬텀 리드에 해당한다. 기존 특정 행의 값이 달라지는 비반복 읽기, 미커밋 값을 읽는 더티 리드와 구분해야 한다. 실제 발생 가능성은 DBMS의 격리 수준과 구현에 따라 달라지므로 모든 반복 조회에서 반드시 나타나는 현상은 아니다.

선지별 해설

  • 기존 행의 값 변경만이 아니라 조회 결과에 새 행이 추가됐다.
  • 동일 조건에 해당하는 행 집합이 달라지는 팬텀 리드다.
  • 다른 트랜잭션이 커밋한 뒤 읽었으므로 미커밋 읽기가 아니다.
  • 자신의 변경이 다른 쓰기에 덮인 상황이 아니다.

편집 해설 근거: PostgreSQL 18 — Transaction Isolation — §13.2 Transaction Isolation — phantom read

44. 데이터베이스 설계자가 다음 조건을 확인한다. 관계 R의 각 튜플을 관계 S의 모든 튜플과 한 번씩 짝지어 조합하는 관계대수 연산은?

  1. 합집합
  2. 교집합
  3. 차집합
  4. 카티션 프로덕트
정답과 해설 보기

정답: 4

정답은 ④이다. 카티션 프로덕트 R×S는 R의 각 튜플을 S의 각 튜플과 짝지어 결합한다. 별도의 결합 조건이 없으므로 가능한 모든 쌍이 결과에 포함된다. R에 m개, S에 n개 튜플이 있으면 결과는 m×n개이고 속성 수는 두 관계의 속성 수를 합한 값이다. 같은 이름의 속성이 있으면 이름을 구별해 다룬다. 합집합·교집합·차집합처럼 동일 구조의 튜플 집합을 비교하는 연산과는 목적이 다르다.

선지별 해설

  • 합집합은 두 관계에 포함된 튜플을 하나의 집합으로 모은다.
  • 교집합은 양쪽에 공통으로 있는 튜플을 고른다.
  • 차집합은 한쪽에만 있는 튜플을 고른다.
  • 두 관계의 모든 튜플 쌍을 조합하는 곱 연산이다.

편집 해설 근거: Ramakrishnan·Gehrke, Database Management Systems 3판, Relational Algebra 저자 자료 — Cross-Product

45. 데이터베이스 설계자가 다음 조건을 확인한다. 병렬 데이터베이스의 수평 분할 기법에 해당하지 않는 것은?

  1. 범위 분할
  2. 예측 분할
  3. 해시 분할
  4. 라운드 로빈 분할
정답과 해설 보기

정답: 2

정답은 ②이다. 수평 분할은 같은 속성 구조를 유지하면서 행들을 여러 저장 위치에 나누는 것이다. 범위 분할은 분할 키 값의 구간으로, 해시 분할은 키의 해시 결과로, 라운드 로빈은 일정 순환 규칙으로 행의 위치를 정한다. 예측 분할은 이 문항에서 비교하는 기본 수평 분할 기법의 이름이 아니다. 특정 제품이 예측을 이용한 배치 최적화를 제공할 가능성과 교재의 기본 분류에 포함되는지는 별개의 판단이다.

선지별 해설

  • 키 값의 범위를 기준으로 행을 나누는 기본 분할 방식이다.
  • 제시된 기본 수평 분할 분류에 해당하는 명칭이 아니다.
  • 분할 키의 해시 결과로 저장 위치를 정한다.
  • 삽입되는 튜플을 순환하며 여러 노드에 배분한다.

편집 해설 근거: Silberschatz·Korth·Sudarshan, Database System Concepts 7판, Chapter 21 — 슬라이드 21.4–21.10, I/O Parallelism

46. 데이터베이스 설계자가 다음 조건을 확인한다. 분산 데이터베이스 시스템과 관련한 기술로 적절하지 않은 설명을 고르면?

[학습용 개정문항]

  1. 통신 네트워크 구조가 데이터 통신에 영향을 주므로 효율적으로 설계해야 한다.
  2. 데이터베이스가 분산되어 있음을 사용자가 인식할 수 있도록 분산 투명성을 배제해야 한다.
  3. 물리적으로 분산된 데이터베이스를 논리적으로 하나의 데이터베이스처럼 사용할 수 있도록 한 것이다.
  4. 분산 실행에서는 통신 실패와 노드 사이 조정 비용을 고려해야 한다.
정답과 해설 보기

정답: 2

정답은 ②이다. 분산 데이터베이스는 여러 위치에 저장된 데이터를 논리적으로 통합해 사용할 수 있게 하는 시스템이다. 분산 투명성은 사용자가 실제 저장 위치나 분산 처리의 세부사항을 모두 직접 처리하지 않아도 되도록 복잡성을 감추는 목표다. 따라서 투명성을 의도적으로 배제해야 한다는 설명은 반대이다. 다만 실제 구현에서는 성능과 장애 대응 등의 이유로 일부 분산 특성이 드러날 수 있으며, 모든 상황에서 완전한 투명성을 보장한다는 뜻은 아니다.

선지별 해설

  • 노드 사이 통신 비용과 구조는 분산 처리 성능에 영향을 준다.
  • 분산 투명성의 목표를 반대로 설명했으므로 틀리다.
  • 물리적으로 나뉜 데이터를 논리적으로 통합해 사용하는 설명이다.
  • 분산 실행에서는 통신 실패와 노드 간 조정 비용을 고려해야 한다.

편집 해설 근거: Oracle Database — Distributed Database Concepts — §31.1 Distributed Database Architecture; §31.5.1 Transparency; Tanenbaum·van Steen, Distributed Systems 2판, 저자 공개 해답 Chapter 1 — Chapter 1, Questions 4–6

47. 데이터베이스 설계자가 다음 조건을 확인한다. 스키마의 종류 중 조직이나 기관의 총괄적 입장에서 본 데이터베이스의 전체 논리 구조로서, 모든 응용 프로그램과 사용자가 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스 구조는?

  1. 개념 스키마
  2. 관계 스키마
  3. 외부 스키마
  4. 내부 스키마
정답과 해설 보기

정답: 1

정답은 ①이다. 3단계 스키마 구조에서 개념 스키마는 조직 전체 데이터의 논리적 구조와 제약을 통합해 기술한다. 개별 사용자나 응용이 보는 부분적인 관점은 외부 스키마이며, 저장 파일·페이지·접근 경로 같은 물리적 표현은 내부 스키마가 다룬다. 관계 스키마는 특정 릴레이션의 이름과 속성 구조 등을 뜻할 수 있어 조직 전체 관점을 가리키는 3단계 분류의 정답은 아니다. 전체라는 범위와 논리 구조라는 수준을 함께 읽어야 한다.

선지별 해설

  • 조직 전체 데이터의 통합된 논리 구조를 나타내는 개념 스키마다.
  • 개별 릴레이션 구조를 뜻하는 용어와 3단계 스키마의 전체 관점을 혼동했다.
  • 외부 스키마는 사용자나 응용별로 필요한 데이터 관점이다.
  • 내부 스키마는 실제 저장과 접근 경로 등 물리적 표현을 다룬다.

편집 해설 근거: Ramakrishnan·Gehrke, Database Management Systems 3판, Introduction — Levels of Abstraction; Schemas

48. 데이터베이스 설계자가 다음 조건을 확인한다. 재고 수량이 100일 때 T1과 T2가 모두 이 값을 읽었다. T1은 10을 차감해 90을 기록하고, 이어서 T2는 처음 읽은 값을 기준으로 20을 차감해 80을 기록했다. T1의 변경 결과가 사라진 이상 현상은?

  1. 더티 리드
  2. 팬텀 리드
  3. 갱신 분실
  4. 교착 상태
정답과 해설 보기

정답: 3

정답은 ③이다. T1과 T2가 모두 처음 값 100을 읽은 뒤 각자 계산하면 T1은 90, T2는 80을 쓸 준비를 한다. T1의 90이 저장된 후 T2가 오래된 읽기값으로 계산한 80을 쓰면 T1의 10 차감 효과가 최종 값에서 사라진다. 두 차감을 정상적으로 반영한 값은 100-10-20=70이므로 실제 최종 값 80과 다르다. 이것이 갱신 분실이며, 적절한 잠금·원자적 갱신·버전 확인 등으로 충돌을 제어해야 한다.

선지별 해설

  • 미완료 데이터 읽기가 아니라 오래된 값을 바탕으로 한 덮어쓰기다.
  • 조건에 맞는 행 집합의 변화가 아니라 같은 값의 갱신 충돌이다.
  • 나중 쓰기가 앞선 갱신 효과를 없앤 갱신 분실이다.
  • 상호 대기로 작업이 멈춘 상황이 아니다.

편집 해설 근거: Ramakrishnan·Gehrke, Database Management Systems 3판, Concurrency Control — Concurrency Control — Lost Updates

49. 데이터베이스 설계자가 다음 조건을 확인한다. 다음 중 SQL에서의 DDL문이 해당하지 않는 것을 고르면?

  1. DELETE
  2. ALTER
  3. DROP
  4. CREATE
정답과 해설 보기

정답: 1

정답은 ①이다. DELETE는 테이블에 저장된 행을 제거하는 데이터 조작문이다. WHERE 조건으로 일부 행을 지우거나 조건을 생략해 모든 행을 지울 수 있지만 테이블 정의 자체는 남는다. CREATE는 객체 생성, ALTER는 정의 변경, DROP은 객체 제거를 수행하는 데이터 정의문에 속한다. DELETE와 DROP은 모두 삭제라는 말로 설명되기도 하므로 삭제 대상이 행인지 테이블 같은 객체인지 구별하는 것이 중요하다.

선지별 해설

  • 행 데이터를 삭제하는 DML이므로 DDL이 아니다.
  • 객체의 정의를 변경하는 DDL이다.
  • 테이블 등 데이터베이스 객체의 정의를 제거하는 DDL이다.
  • 새 데이터베이스 객체를 정의하는 DDL이다.

편집 해설 근거: PostgreSQL 18: DELETE — Description; PostgreSQL 18: Data Definition — Chapter 5 Data Definition

50. 다음 SQL 문장의 동작으로 옳은 것은?

INSERT INTO 컴퓨터과테이블(학번, 이름, 학년)
SELECT 학번, 이름, 학년
FROM 학생테이블
WHERE 학과 = '컴퓨터';

[학습용 개정문항]

  1. 학생테이블에서 학과가 컴퓨터인 사람의 학번·이름·학년을 검색하여 컴퓨터과테이블에 삽입한다.
  2. 컴퓨터과테이블에서 학과가 컴퓨터인 사람의 학번·이름·학년을 검색하여 학생테이블에 삽입한다.
  3. 학생테이블에서 학과가 컴퓨터인 사람의 학번·이름·학년을 검색한다.
  4. 학생테이블에 학과가 컴퓨터인 사람의 학번·이름·학년을 삽입한다.
정답과 해설 보기

정답: 1

정답은 ①이다. INSERT INTO 다음의 컴퓨터과테이블은 데이터를 받을 대상이고, 뒤의 SELECT가 원본 학생테이블에서 삽입할 행과 열을 만든다. WHERE 학과 = 컴퓨터 조건을 만족한 학생의 학번, 이름, 학년이 지정된 순서로 대상 테이블에 들어간다. 조회만 하는 문장도 아니고 원본 학생테이블에 삽입하는 문장도 아니다. 실제 실행에서는 대상 열의 자료형과 제약도 만족해야 하며, 원본 행을 대상에 옮기면서 자동 삭제하는 작업은 아니다.

선지별 해설

  • SELECT 결과를 지정된 대상 열에 삽입하므로 맞다.
  • 대상과 원본 테이블의 방향을 반대로 읽었다.
  • SELECT 결과를 조회하는 데서 끝나지 않고 대상에 삽입한다.
  • INSERT INTO 뒤의 대상은 학생테이블이 아니라 컴퓨터과테이블이다.

편집 해설 근거: PostgreSQL 18 — INSERT — Description; query

51. 데이터베이스 설계자가 다음 조건을 확인한다. R은 속성 2개·튜플 3개, S는 속성 5개·튜플 4개다. R×S의 차수와 카디널리티는?

  1. 10, 20
  2. 5, 4
  3. 7, 7
  4. 7, 12
정답과 해설 보기

정답: 4

정답은 ④이다. 카티션 프로덕트의 한 결과 튜플은 R의 튜플과 S의 튜플을 나란히 결합한 것이므로 속성 수는 2+5=7이다. R의 세 튜플 각각이 S의 네 튜플과 한 번씩 짝지어지므로 결과 튜플 수는 3×4=12이다. 따라서 차수와 카디널리티는 7, 12가 된다. 속성 수를 곱하거나 튜플 수를 더하는 것은 결합 결과의 열과 가능한 행 조합을 서로 바꾸어 계산한 것이다.

선지별 해설

  • 속성 수를 곱한 10과 다른 수량을 혼합한 값이다.
  • S의 원래 차수와 카디널리티만 제시했다.
  • 차수 7은 맞지만 튜플 수는 합이 아니라 곱이다.
  • 차수는 2+5=7, 카디널리티는 3×4=12이다.

편집 해설 근거: Ramakrishnan·Gehrke, Database Management Systems 3판, Relational Algebra 저자 자료 — Cross-Product

52. 데이터베이스 설계자가 다음 조건을 확인한다. 각 부서의 최고 급여 직원 이름을 찾되 동률인 직원도 모두 표시하려 한다. 가장 적절한 SQL 접근은?

  1. 부서별 MAX 급여를 구한 상관 서브쿼리와 각 직원의 급여를 비교한다.
  2. 전체 직원 중 MAX 급여 하나와 각 직원의 급여를 비교한다.
  3. 급여를 문자열로 변환한 뒤 사전순 첫 행만 선택한다.
  4. GROUP BY 없이 직원 이름과 MAX(급여)를 함께 조회한다.
정답과 해설 보기

정답: 1

정답은 ①이다. 각 직원 행을 기준으로 같은 부서의 최대 급여를 계산하고 그 직원 급여가 최대값과 같은지 비교하면 된다. 예를 들어 WHERE e.급여 = (SELECT MAX(x.급여) FROM 직원 x WHERE x.부서 = e.부서)와 같이 부서 조건으로 바깥 행과 연결한다. 등호 조건을 만족하는 행을 모두 남기므로 같은 부서에서 최고 급여가 같은 직원도 함께 나온다. 전체 회사의 최대 급여 하나만 비교하면 다른 부서의 최고 급여 직원을 놓칠 수 있다.

선지별 해설

  • 현재 직원과 같은 부서의 최대값에 비교하므로 동률까지 선택한다.
  • 전사 최고 급여만 선택하므로 부서별 최고값을 구하지 못한다.
  • 문자열 사전순은 숫자 급여 순서와 다를 수 있고 한 행만 선택하면 동률을 놓친다.
  • 그룹화 없는 이름과 집계의 혼합은 이 목표에 맞는 유효한 조회가 아니다.

편집 해설 근거: PostgreSQL 18 — Aggregate Functions tutorial — Aggregate Functions — GROUP BY and subqueries; PostgreSQL 18, Subquery Expressions — Introduction

53. 데이터베이스 설계자가 다음 조건을 확인한다. 트랜잭션 수행 중 장애로 손상된 데이터베이스를 손상되기 이전의 정상 상태로 복구시키는 작업은?

  1. Restart
  2. Commit
  3. Abort
  4. Recovery
정답과 해설 보기

정답: 4

정답은 ④이다. 회복은 장애 후 데이터베이스가 일관된 상태로 돌아가도록 저장 내용과 로그 등을 이용해 복구하는 활동이다. 상황에 따라 미완료 트랜잭션의 영향을 취소하고 완료된 변경을 다시 적용하거나 백업에서 복원하는 과정이 필요하다. 재시작은 시스템을 다시 실행하는 행위이며 회복을 촉발할 수 있지만 회복 전체와 같은 뜻은 아니다. Commit은 정상 완료를 확정하고 Abort는 특정 트랜잭션을 중단하는 동작이라는 점도 구별해야 한다.

선지별 해설

  • 재시작 자체만으로 손상된 데이터의 복구 작업 전체를 뜻하지 않는다.
  • Commit은 트랜잭션의 정상 완료와 변경 확정이다.
  • Abort는 트랜잭션을 중단하는 것으로 회복 활동 전체보다 좁다.
  • 장애 이후 일관된 상태를 되찾는 회복 작업이다.

편집 해설 근거: Silberschatz, Korth, Sudarshan, Database System Concepts 7th ed., Chapter 19 Recovery System — Chapter 19 — Recovery System, Failure Classification and Recovery

54. 릴레이션 R의 도메인은 원자값이고 비키 속성에는 부분 함수 종속이 없다. 또한 R의 모든 비자명 함수 종속 X→Y에서 X는 슈퍼키이다. 이 조건으로 만족함을 알 수 있는 보기 중 가장 높은 정규형은?

[학습용 개정문항]

  1. 제2정규형
  2. 제3정규형
  3. BCNF
  4. 제1정규형
정답과 해설 보기

정답: 3

정답은 ③이다. BCNF의 핵심 조건은 모든 비자명 함수 종속 X→Y에서 결정자 X가 슈퍼키여야 한다는 것이다. 이 조건은 주어진 설명의 마지막 문장에 직접 제시되어 있다. BCNF를 만족하면 더 낮은 정규형 조건도 충족하므로 단순히 만족하는 정규형이라고만 물으면 다른 보기와 겹칠 수 있다. 따라서 보기 중 가장 높은 정규형을 선택한다는 조건을 명시했다. BCNF는 중복을 줄이는 데 도움이 되지만 모든 분해가 종속성 보존까지 보장하는 것은 아니다.

선지별 해설

  • 부분 함수 종속 제거를 다루지만 제시된 결정자 조건보다 약하다.
  • BCNF를 만족하면 3NF도 만족하지만 보기 중 가장 강한 조건은 아니다.
  • 모든 비자명 함수 종속의 결정자가 슈퍼키라는 BCNF 조건이다.
  • 원자값 조건만으로는 마지막의 강한 결정자 조건을 설명하지 못한다.

편집 해설 근거: Silberschatz·Korth·Sudarshan, Database System Concepts 7판, Chapter 7 저자 자료 — Boyce-Codd Normal Form

55. 데이터베이스 설계자가 다음 조건을 확인한다. 관계 데이터베이스의 정규화에 대한 기술로 틀린 설명을 고르면?

  1. 정규화가 잘못되면 불필요한 중복으로 릴레이션 조작 시 문제가 발생할 수 있다.
  2. 정규화하지 않으면 서로 다른 종류의 정보를 한 릴레이션으로 표현하면서 이상(Anomaly)이 발생할 수 있다.
  3. 정규화의 목적은 각 릴레이션에 분산된 종속성을 하나의 릴레이션에 통합하는 것이다.
  4. 이상 현상은 데이터 사이의 함수 종속이 원인이 될 수 있다.
정답과 해설 보기

정답: 3

정답은 ③이다. 정규화는 함수 종속 등 데이터의 제약을 분석해 불필요한 중복과 삽입·삭제·갱신 이상을 줄이는 설계 과정이다. 여러 종류의 사실이 한 릴레이션에 섞여 있으면 같은 정보를 반복 저장하거나 무관한 사실까지 함께 삭제하는 문제가 생길 수 있어 적절히 분해한다. 각 릴레이션의 종속성을 하나로 합치는 것이 정규화의 목적은 아니다. 분해할 때는 원래 정보를 잃지 않는 무손실 조인과 필요한 종속성 보존도 검토해야 한다.

선지별 해설

  • 불필요한 중복이 남으면 수정 불일치 등 조작 이상이 생길 수 있다.
  • 서로 다른 사실을 한 관계에 섞으면 여러 이상 현상이 발생할 수 있다.
  • 종속성을 한 릴레이션으로 통합하는 것이 정규화의 목적은 아니다.
  • 특정 종속성과 부적절한 관계 구성이 결합하면 중복과 이상을 유발할 수 있다.

편집 해설 근거: Ramakrishnan·Gehrke, Database Management Systems 3판, Chapter 19 저자 자료 — Redundancy and Anomalies; Decomposition

56. 데이터베이스 설계자가 다음 조건을 확인한다. 분산 데이터베이스의 투명성(Transparency)에 해당하지 않는 것은?

  1. Location Transparency
  2. Replication Transparency
  3. Failure Transparency
  4. Media Access Transparency
정답과 해설 보기

정답: 4

정답은 ④이다. 분산 투명성은 데이터나 자원이 여러 장소와 복제본에 걸쳐 있다는 사실의 일부를 사용자에게 감추는 성질이다. 위치 투명성은 실제 위치를, 복제 투명성은 여러 사본의 존재를, 장애 투명성은 장애와 복구 처리의 일부를 감추는 목표와 연결된다. Media Access Transparency는 여기서 다루는 분산 데이터베이스 투명성의 기본 분류가 아니다. 접근 투명성이라는 일반 개념과 통신 매체 접근 제어를 섞어 읽지 않아야 한다.

선지별 해설

  • 데이터의 실제 저장 위치를 몰라도 사용하게 하는 위치 투명성이다.
  • 여러 복제본의 존재를 사용자에게 감추는 복제 투명성이다.
  • 장애와 복구를 감추려는 장애 투명성으로, 완전한 달성에는 한계가 있다.
  • 매체 접근이라는 명칭은 이 기본 분산 투명성 분류에 해당하지 않는다.

편집 해설 근거: Tanenbaum·van Steen, Distributed Systems 2판, 저자 공개 해답 Chapter 1 — Chapter 1, Questions 4–6; Oracle Database — Distributed Database Concepts — §31.5.1.1 Location Transparency

57. 트랜잭션 T1이 같은 범위 조건을 두 번 조회하는 사이 T2가 그 범위에 속하는 새 행을 삽입하고 커밋했다. T1의 두 번째 조회에서 행 수가 늘어난 현상은?

[학습용 개정문항]

  1. 갱신 손실
  2. 팬텀 리드
  3. 비반복 읽기
  4. 더티 리드
정답과 해설 보기

정답: 2

정답은 ②이다. 같은 WHERE 범위를 재조회했는데 이전에 없던 행이 보이는 경우는 팬텀 리드로 분류한다. 중요한 판단 기준은 특정 행의 값 변경보다 검색 조건에 해당하는 행 집합의 변화이다. 삽입한 트랜잭션이 커밋한 뒤에도 이런 결과 차이가 보일 수 있으므로 더티 리드와는 구분된다. 이를 방지하는 방식은 격리 수준과 구현에 따라 다르며, PostgreSQL처럼 표준의 최소 보장보다 강하게 팬텀을 막는 격리 수준을 제공하는 경우도 있다.

선지별 해설

  • 기존 변경이 후속 쓰기로 사라지는 갱신 손실 상황이 아니다.
  • 동일 검색 범위에서 행 집합이 바뀌는 팬텀 리드다.
  • 특정 기존 행의 값 변경만을 묻는 사례와 구별된다.
  • 커밋 후의 새 행을 읽는 것이므로 미커밋 읽기가 아니다.

편집 해설 근거: PostgreSQL 18 — Transaction Isolation — §13.2; §13.2.2 Repeatable Read Isolation Level

58. 데이터베이스 설계자가 다음 조건을 확인한다. 다음 두 릴레이션에서 외래키로 사용된 속성은? 과목(과목번호 PK, 과목명) 수강(수강번호 PK, 학번, 과목번호 FK, 학기)

  1. 학번
  2. 과목명
  3. 수강번호
  4. 과목번호
정답과 해설 보기

정답: 4

정답은 ④이다. 지문은 수강 릴레이션의 과목번호를 FK로 직접 지정했다. 이 속성은 과목 릴레이션의 과목번호를 참조해 수강 기록이 어느 과목에 속하는지 연결한다. 과목의 과목번호는 그 테이블에서는 기본키이고, 같은 이름의 속성이 수강에서는 외래키 역할을 한다. 학번도 별도 학생 테이블이 있다면 외래키로 설계할 수 있지만 이 문항에 그런 제약은 주어지지 않았다. 이름만 보고 숨은 관계를 추가하지 말고 명시된 PK·FK를 기준으로 판단한다.

선지별 해설

  • 학번에 대한 외래키 제약은 지문에 명시되지 않았다.
  • 과목명은 과목 정보를 설명하는 속성이며 지정된 참조키가 아니다.
  • 수강번호는 수강 테이블의 기본키로 표시되어 있다.
  • 수강의 과목번호가 과목의 기본키를 참조하는 FK로 지정되어 있다.

편집 해설 근거: PostgreSQL 18: Constraints — §5.5.5 Foreign Keys

59. 데이터베이스 설계자가 다음 조건을 확인한다. 데이터베이스 병행제어를 적용하는 목적으로 적절하지 않은 것은?

  1. 갱신 손실이나 미완료 데이터 읽기 같은 이상 현상을 방지한다.
  2. 서로 독립적인 트랜잭션을 가능한 범위에서 동시에 실행해 처리량을 높인다.
  3. 충돌 연산의 순서를 관리해 사용자 응답 지연을 줄이면서 일관성을 지킨다.
  4. 동시 사용자가 접근하지 못하도록 데이터베이스 공유 자체를 없앤다.
정답과 해설 보기

정답: 4

정답은 ④이다. 병행제어는 여러 트랜잭션이 같은 데이터를 함께 사용하는 상황에서 충돌을 조절하는 기술이다. 독립적인 작업은 가능한 범위에서 동시에 실행하고, 충돌하는 읽기·쓰기에는 잠금이나 버전 관리 같은 방법을 적용해 일관성을 지킨다. 데이터베이스 공유 자체를 없애는 것은 여러 사용자에게 일관된 서비스를 제공하려는 목적과 맞지 않는다. 병행제어가 있다고 모든 대기가 사라지는 것은 아니며, 안전한 순서를 만들기 위해 일부 작업을 기다리게 할 수 있다.

선지별 해설

  • 충돌로 인한 갱신 손실과 부적절한 읽기를 제어하는 목적에 해당한다.
  • 독립 작업의 동시 실행을 허용하면 처리량을 높일 수 있다.
  • 일관성을 지키는 범위에서 충돌 순서와 응답 지연을 관리한다.
  • 공유 자체의 폐지는 여러 사용자의 안전한 병행 실행이라는 목적과 다르다.

편집 해설 근거: Ramakrishnan·Gehrke, Database Management Systems 3판, Concurrency Control — Concurrency Control — Motivation and Serializability

60. 데이터베이스 설계자가 다음 조건을 확인한다. 동일한 속성 구조와 연산 계약을 공유하는 객체를 생성하기 위한 객체지향의 설계 틀은?

  1. 메시지
  2. 클래스
  3. 캡슐화
  4. 메서드 호출
정답과 해설 보기

정답: 2

정답은 ②이다. 클래스는 같은 종류의 객체가 가질 상태와 수행할 동작을 정의하는 설계 틀이다. 객체는 그 클래스를 바탕으로 만들어진 구체적인 인스턴스이며 각 객체가 자기 상태를 가질 수 있다. 메시지는 객체에게 동작을 요청하는 상호작용이고, 메서드 호출은 특정 동작을 실행하는 행위이다. 캡슐화는 상태와 동작을 묶고 외부 경계를 정하는 원리이므로 객체 생성의 틀이라는 질문에는 클래스가 가장 직접적으로 대응한다.

선지별 해설

  • 메시지는 동작 요청이며 객체를 정의하는 틀 자체가 아니다.
  • 공통 상태 구조와 동작을 정의하는 클래스다.
  • 캡슐화는 구현을 묶고 접근 경계를 정하는 설계 원리다.
  • 메서드 호출은 정의된 동작을 실행하는 행위다.

편집 해설 근거: Oracle Java SE 25 Language Specification, Chapter 8 Classes — §8.1 Class Declarations; §8.2 Class Members

정보처리기사 필기 기출문제 · 프로그래밍 언어 활용

61. 프로그램과 운영환경을 분석하여 다음 물음에 답한다. 장기 운영할 금융 서버의 구현 언어를 정할 때 우선순위가 가장 낮은 항목은?

  1. 운영팀과 개발팀의 숙련도
  2. 지원되는 컴파일러·런타임·진단 도구
  3. 언어 이름과 로고의 독창성
  4. 트랜잭션 처리와 오류 제어 기능의 적합성
정답과 해설 보기

정답: 3

정답은 ③이다. 장기간 운영할 서버의 언어는 업무 요구를 구현할 기능뿐 아니라 개발자와 운영자의 숙련도, 컴파일러·런타임의 지원, 오류 진단과 유지보수 가능성을 함께 고려해 고른다. 거래 처리와 실패 제어에 필요한 기능이 적합한지도 실제 구현에 영향을 준다. 언어 이름이나 로고가 독창적이라는 사실은 이런 기술적·운영적 요구를 충족한다는 근거가 되기 어렵다. 이 문항은 특정 언어의 우열이 아니라 평가 기준의 관련성을 묻는다.

선지별 해설

  • 팀의 숙련도는 구현과 장애 대응, 유지보수의 수행 가능성에 영향을 준다.
  • 지원되는 도구와 런타임은 장기 운영의 실질적 고려사항이다.
  • 이름과 로고의 독창성은 기술 요구 충족과 직접적인 관련이 낮다.
  • 업무 처리와 오류 제어에 필요한 기능의 적합성은 중요하다.

편집 해설 근거: IEEE Computer Society, SWEBOK Guide V4.0a — Software Construction — Construction Languages; Construction Tools

62. 역사적인 IPv4 클래스 기반 주소 분류에서 클래스 C에 속하는 주소는?

[학습용 개정문항]

  1. 225.2.4.1
  2. 172.16.98.3
  3. 200.168.30.1
  4. 10.3.2.14
정답과 해설 보기

정답: 3

정답은 ③이다. 역사적인 IPv4 클래스 기반 분류에서 클래스 C는 첫 3비트가 110이며 첫 옥텟이 192부터 223까지인 주소이다. 200.168.30.1은 첫 옥텟이 200이므로 이 범위에 들어간다. 172로 시작하는 주소는 클래스 B, 10으로 시작하는 주소는 클래스 A, 225로 시작하는 주소는 클래스 D 범위다. 현재의 네트워크 크기는 CIDR 접두 길이로 표현하므로 이 과거 분류만 보고 실제 서브넷 마스크를 확정해서는 안 된다.

선지별 해설

  • 225는 클래스 D의 멀티캐스트 주소 범위에 속한다.
  • 172는 과거 클래스 B 범위에 속한다.
  • 200은 클래스 C의 첫 옥텟 범위 192~223에 들어간다.
  • 10은 과거 클래스 A 범위에 속한다.

편집 해설 근거: IETF RFC 791, Internet Protocol (1981) — §3.2 Discussion — Addressing; RFC 4632, Classless Inter-domain Routing (2006) — §3 Classless Addressing Architecture

63. Python 3에서 다음 코드를 실행한 결과는? 보기의 두 값은 각각 첫째 줄과 둘째 줄의 출력이다.

a = 100
list_data = ['a', 'b', 'c']
dict_data = {'a': 90, 'b': 95}
print(list_data[0])
print(dict_data['a'])

[학습용 개정문항]

  1. a 100
  2. a 90
  3. 100 a
  4. 90 a
정답과 해설 보기

정답: 2

정답은 ②이다. list_data[0]은 리스트의 첫 번째 원소인 문자열 a를 선택하므로 첫 줄에는 a가 출력된다. dict_data['a']는 변수 a의 값이 아니라 문자열 키 a로 사전을 조회하므로 그 키에 저장된 정수 90이 둘째 줄에 출력된다. 처음에 선언한 변수 a=100은 두 출력 표현식에서 사용되지 않는다. print를 두 번 호출했으므로 실제 출력은 a와 90이 각각 다른 줄에 나타나며 문자열의 따옴표는 출력에 포함되지 않는다.

선지별 해설

  • 변수 a의 값 100은 사전의 문자열 키 조회 결과가 아니다.
  • 첫 줄 a, 둘째 줄 90이 실제 출력과 일치한다.
  • 리스트 첫 원소를 조회하므로 첫 줄에 100이 나오지 않는다.
  • 리스트 출력과 사전 출력의 순서가 반대다.

편집 해설 근거: Python 3.14 Tutorial — Data Structures — §5.1 Lists; §5.5 Dictionaries; Python 3.14, Built-in Functions — print()

64. 프로그램과 운영환경을 분석하여 다음 물음에 답한다. 파이썬의 변수 작성 규칙 기술로 틀린 설명을 고르면?

  1. 첫 자리에 숫자를 사용할 수 없다.
  2. 영문 대문자·소문자, 숫자, 밑줄(_)을 사용할 수 있다.
  3. 변수 이름 중간에 공백을 사용할 수 있다.
  4. 예약어는 변수 이름으로 사용할 수 없다.
정답과 해설 보기

정답: 3

정답은 ③이다. Python의 변수 이름은 하나의 식별자로 해석되어야 하므로 이름 중간에 공백을 넣을 수 없다. 영문자와 밑줄로 시작할 수 있고 숫자는 첫 글자를 제외한 위치에 사용할 수 있으며 대소문자를 구별한다. 또한 if, class 같은 예약어를 변수 이름으로 사용할 수 없다. Python 3은 규칙을 만족하는 여러 유니코드 문자도 허용하므로 영문자만 가능하다는 뜻은 아니다. 문맥에 따라 특별하게 해석되는 소프트 키워드도 일반 예약어와 구별한다.

선지별 해설

  • 숫자는 식별자의 첫 글자로 사용할 수 없다.
  • 영문 대소문자와 밑줄, 첫 글자 이후의 숫자를 사용할 수 있다.
  • 공백은 식별자의 일부가 될 수 없으므로 틀린 설명이다.
  • if 등 예약어는 일반 변수 식별자로 사용할 수 없다.

편집 해설 근거: Python 3.14 Language Reference — Names and Keywords — §2.3 Names, Keywords, Soft Keywords

65. 프로그램과 운영환경을 분석하여 다음 물음에 답한다. 세 프레임에 페이지 2, 1, 3이 차례로 적재되어 있다. 그 뒤 2를 다시 참조하고 페이지 4가 들어올 때 LRU가 교체할 페이지는?

  1. 1
  2. 3
  3. 4
  4. 2
정답과 해설 보기

정답: 1

정답은 ①이다. LRU는 가장 오래전에 마지막으로 사용한 페이지를 교체한다. 처음 2, 1, 3 순서로 참조해 적재하면 최근 사용 순서도 그 순서이며, 이어서 2를 다시 참조하면 2가 가장 최근으로 이동한다. 따라서 오래된 순서는 1, 3, 2가 되고 새 페이지 4를 넣을 때 1이 교체된다. 처음 들어온 2를 계속 교체 후보로 두는 것은 재참조를 고려하지 않는 FIFO와 혼동한 판단이다.

선지별 해설

  • 재참조 이후 마지막 사용 시점이 가장 오래된 페이지다.
  • 3보다 1의 마지막 참조가 더 오래됐다.
  • 4는 새로 적재할 페이지이며 기존 교체 후보가 아니다.
  • 2는 방금 다시 참조되어 가장 최근 사용 페이지가 되었다.

편집 해설 근거: Arpaci-Dusseau, OSTEP, 22 Beyond Physical Memory: Policies (2025 개정 표시본) — Chapter 22 — LRU

66. 다음 중 주된 목적이 메모리 페이지 교체가 아니라 실행 가능한 프로세스에 CPU 시간 할당량을 순환 배분하는 정책은?

[학습용 개정문항]

  1. OPT(Optimal Page Replacement)
  2. LRU(Least Recently Used)
  3. FIFO(First-In-First-Out)
  4. Round Robin CPU Scheduling
정답과 해설 보기

정답: 4

정답은 ④이다. OPT, LRU, FIFO는 메모리 공간이 부족할 때 어떤 페이지를 내보낼지 고르는 페이지 교체 정책이다. OPT는 앞으로 가장 늦게 사용할 페이지를, LRU는 과거에 가장 오래 사용하지 않은 페이지를, FIFO는 먼저 적재된 페이지를 고른다. 반면 CPU 라운드 로빈 스케줄링은 실행 가능한 프로세스에 시간 할당량을 번갈아 제공하는 정책이다. 따라서 정책의 이름뿐 아니라 선택하는 자원이 페이지인지 실행할 프로세스인지 구별해야 한다.

선지별 해설

  • 미래의 다음 참조 시점을 이용하는 이론적 최적 페이지 교체 정책이다.
  • 마지막 참조 시점을 기준으로 페이지를 교체한다.
  • 적재 순서를 기준으로 페이지를 교체한다.
  • CPU 실행 시간을 프로세스에 배분하는 정책이므로 문항의 페이지 교체와 다르다.

편집 해설 근거: Arpaci-Dusseau, OSTEP, 22 Beyond Physical Memory: Policies (2025 개정 표시본) — Chapter 22 — Optimal, FIFO, LRU; Arpaci-Dusseau, OSTEP v1.10, 7 Scheduling: Introduction — Chapter 7 — Round Robin

67. 프로그램과 운영환경을 분석하여 다음 물음에 답한다. 192.168.2.64/27 네트워크의 사용 가능한 호스트 주소 범위는?

  1. 192.168.2.66 ~ 192.168.2.93
  2. 192.168.2.64 ~ 192.168.2.95
  3. 192.168.2.65 ~ 192.168.2.95
  4. 192.168.2.65 ~ 192.168.2.94
정답과 해설 보기

정답: 4

정답은 ④이다. /27은 호스트 부분이 5비트이므로 주소 블록 하나의 크기는 2의 5제곱인 32개다. 시작 주소가 192.168.2.64이므로 마지막 주소는 64+31=95이다. 일반적인 IPv4 서브넷에서 첫 주소 .64는 네트워크 주소, 마지막 .95는 브로드캐스트 주소로 사용한다. 따라서 호스트에 배정할 범위는 .65부터 .94까지 30개다. 블록 전체 주소 범위와 실제 호스트 주소 범위를 나누어 계산해야 한다.

선지별 해설

  • 정상적으로 사용 가능한 .65와 .94를 불필요하게 제외했다.
  • 네트워크 주소와 브로드캐스트 주소까지 포함한 전체 블록 범위다.
  • 마지막 .95는 브로드캐스트 주소이므로 호스트에 포함하지 않는다.
  • .65~.94가 양 끝의 예약 주소를 제외한 호스트 범위다.

편집 해설 근거: IETF RFC 1878, Variable Length Subnet Table For IPv4 (1995) — Table 2 — /27 subnet examples

68. 프로그램과 운영환경을 분석하여 다음 물음에 답한다. UNIX 계열 운영체제에서 현재 프로세스를 복제하여 새로운 프로세스를 생성하는 시스템 호출은?

  1. ls
  2. cat
  3. fork
  4. chmod
정답과 해설 보기

정답: 3

정답은 ③이다. fork()는 호출한 프로세스를 바탕으로 새 자식 프로세스를 만드는 시스템 호출이다. 성공하면 부모에는 자식의 프로세스 ID가, 자식에는 0이 반환되어 같은 호출 이후 코드를 서로 다른 흐름으로 실행할 수 있다. 새 프로그램 파일로 실행 이미지를 바꾸는 exec 계열과는 역할이 다르다. ls와 cat은 파일 목록이나 내용을 다루는 명령이고 chmod는 파일 접근 권한을 바꾸므로 새 자식 프로세스 생성의 답이 아니다.

선지별 해설

  • ls는 디렉터리 항목을 나열하는 명령이다.
  • cat은 파일 내용을 이어 출력하는 명령이다.
  • 부모를 바탕으로 자식 프로세스를 만드는 fork()다.
  • chmod는 파일 모드와 접근 권한을 변경한다.

편집 해설 근거: The Open Group, POSIX.1-2024 fork() — DESCRIPTION; RETURN VALUE

69. 다음 중 같은 주소를 곧 다시 사용하는 시간 지역성보다 인접 주소를 연속 접근하는 공간 지역성을 직접 보여 주는 사례는?

[학습용 개정문항]

  1. 같은 서브루틴의 명령 주소들을 짧은 간격으로 다시 실행한다.
  2. 연속 배치된 배열 원소를 앞에서부터 한 번씩 읽는다.
  3. 스택 최상단의 같은 메모리 위치를 짧은 간격으로 다시 사용한다.
  4. 짧은 루프의 같은 명령 주소들을 여러 번 실행한다.
정답과 해설 보기

정답: 2

정답은 ②이다. 시간 지역성은 최근 사용한 같은 주소를 가까운 시점에 다시 사용할 가능성이 높은 성질이다. 같은 루프 명령이나 스택의 최상단 위치를 반복 사용하는 사례가 이에 해당한다. 반면 배열의 연속 원소를 한 번씩 읽는 사례의 직접적인 특징은 이미 읽은 주소 근처의 다른 주소를 차례로 사용한다는 공간 지역성이다. 실제 배열 처리에서 시간·공간 지역성이 함께 나타날 수 있으므로 배열이라는 자료형 자체가 시간 지역성을 갖지 않는다고 단정하지 않는다.

선지별 해설

  • 같은 서브루틴 명령을 다시 실행하므로 시간 지역성의 사례다.
  • 인접한 서로 다른 주소를 연속 접근하므로 공간 지역성이 직접 드러난다.
  • 같은 최상단 위치를 재사용하면 시간 지역성과 연결된다.
  • 같은 루프 명령 주소를 반복 사용하므로 시간 지역성의 사례다.

편집 해설 근거: MIT 6.004 (2017), 14.1 Caches and the Memory Hierarchy — Caches and the Memory Hierarchy — locality

70. 프로그램과 운영환경을 분석하여 다음 물음에 답한다. TCP 헤더와 관련한 기술로 적절하지 않은 설명을 고르면?

[학습용 개정문항]

  1. 체크섬은 헤더와 데이터를 포함한 TCP 세그먼트 및 IP 의사 헤더를 이용해 오류를 검사한다.
  2. 윈도우 크기는 송수신 측 버퍼 크기를 나타내며 최대 크기는 32767bit이다.
  3. SYN이 없는 데이터 세그먼트의 순서 번호는 첫 데이터 바이트의 순서 번호이다.
  4. ACK 플래그가 설정된 확인 응답 번호는 다음에 받으려는 순서 번호를 나타낸다.
정답과 해설 보기

정답: 2

정답은 ②이다. TCP 헤더의 Window 필드는 수신자가 받아들일 수 있다고 알리는 수신 윈도우를 바이트 단위로 나타내며 기본 필드는 16비트다. 따라서 필드 값의 범위는 0부터 65535이고 32767비트라는 설명은 값의 범위와 단위를 모두 혼동했다. 윈도우 스케일 옵션을 협상하면 더 큰 윈도우를 표현할 수 있다. 순서 번호는 바이트 스트림의 위치를, 확인 응답 번호는 다음에 기대하는 순서 번호를 나타낸다.

선지별 해설

  • TCP 체크섬은 헤더와 데이터 및 IP 의사 헤더를 이용해 오류를 검사한다.
  • 기본 16비트 수신 윈도우의 단위와 최댓값을 잘못 설명했다.
  • SYN이 없는 데이터 세그먼트의 순서 번호는 첫 데이터 바이트의 위치를 가리킨다.
  • ACK가 유효할 때 확인 응답 번호는 다음에 기대하는 순서 번호다.

편집 해설 근거: IETF RFC 9293, Transmission Control Protocol (2022) — §3.1 Header Format; §3.7 Data Communication

71. 프로그램과 운영환경을 분석하여 다음 물음에 답한다. OSI 7계층 모델에서 전송에 필요한 장치 간의 실제 접속과 절단 등 기계적, 전기적, 기능적, 절차적 특성을 정의한 계층은?

  1. 전송 계층
  2. 물리 계층
  3. 데이터 링크 계층
  4. 네트워크 계층
정답과 해설 보기

정답: 2

정답은 ②이다. 물리 계층은 비트 전송을 위한 물리적 접속의 기계적·전기적·기능적·절차적 특성을 다룬다. 신호와 접속 인터페이스 등 가장 아래 수준의 전송 조건을 정하는 계층이다. 데이터 링크 계층은 인접 노드 사이의 프레임 전달을, 네트워크 계층은 네트워크 사이의 패킷 전달을, 전송 계층은 종단 시스템 사이의 전송 서비스를 다룬다. 실제 장비의 이름보다 지문에서 요구하는 기능의 수준으로 구분해야 한다.

선지별 해설

  • 전송 계층은 종단 간 데이터 전송 서비스를 다룬다.
  • 물리 접속과 신호의 특성을 정의하는 물리 계층이다.
  • 데이터 링크 계층은 프레임과 링크 수준 전달을 다룬다.
  • 네트워크 계층은 패킷의 전달과 경로 설정 등을 다룬다.

편집 해설 근거: ITU-T X.200 (07/1994), OSI Basic Reference Model — Physical layer; OSI seven-layer functions

72. 프로그램과 운영환경을 분석하여 다음 물음에 답한다. 192.168.1.0/24 네트워크를 FLSM으로 4개의 서브넷으로 나누고 IP Subnet-zero를 적용했다. 이때 네 번째 서브넷의 네 번째 사용 가능한 IP 주소는?

  1. 192.168.1.192
  2. 192.168.1.195
  3. 192.168.1.196
  4. 192.168.1.198
정답과 해설 보기

정답: 3

정답은 ③이다. /24를 같은 크기의 네 서브넷으로 나누려면 서브넷 번호에 2비트를 더 쓰므로 /26이 된다. 한 블록은 64개 주소이고 subnet-zero를 포함한 네트워크 시작점은 .0, .64, .128, .192이다. 네 번째 서브넷의 네트워크 주소 .192는 호스트에 배정하지 않으므로 첫 사용 가능 주소는 .193이다. 차례로 .193, .194, .195, .196을 세면 네 번째 사용 가능 주소는 192.168.1.196이다.

선지별 해설

  • .192는 네 번째 서브넷의 네트워크 주소다.
  • 네트워크 주소를 제외하면 .195는 세 번째 호스트다.
  • 네 번째 서브넷의 네 번째 사용 가능 호스트 주소다.
  • .198은 해당 서브넷의 여섯 번째 사용 가능 주소다.

편집 해설 근거: IETF RFC 1878, Variable Length Subnet Table For IPv4 (1995) — /26 subnet mask and subnet/host ranges

73. 프로그램과 운영환경을 분석하여 다음 물음에 답한다. UNIX에 대한 기술로 틀린 설명을 고르면?

  1. 사용자는 하나 이상의 작업을 백그라운드에서 수행해 여러 작업을 병행 처리할 수 있다.
  2. 셸(shell)은 프로세스 관리·기억장치 관리·입출력 관리 등의 기능을 수행한다.
  3. 여러 사용자가 동시에 시스템을 사용하며 정보와 유틸리티를 공유할 수 있다.
  4. 상당 부분이 C 언어로 작성되어 이식성이 우수하다.
정답과 해설 보기

정답: 2

정답은 ②이다. 셸은 명령을 해석하고 프로그램 실행을 요청하는 사용자 인터페이스이며, 프로세스·메모리·장치 입출력의 핵심 관리는 커널이 담당한다. 셸이 작업을 시작하거나 백그라운드 실행을 지시할 수 있다는 사실과 커널의 자원 관리 역할은 구별해야 한다. UNIX는 여러 사용자와 여러 작업을 지원하고, 주요 부분을 C로 구현한 역사 덕분에 다양한 하드웨어로 이식하기 쉬워졌다. 모든 구성 요소가 C로만 작성됐다는 뜻은 아니다.

선지별 해설

  • 셸을 통해 작업을 백그라운드로 실행하여 여러 작업을 병행할 수 있다.
  • 커널의 핵심 자원 관리 기능을 셸의 기능으로 잘못 설명했다.
  • 다중 사용자 시스템으로 정보와 유틸리티를 공유할 수 있다.
  • C 기반 구현은 UNIX의 이식성에 기여한 역사적 특징이다.

편집 해설 근거: POSIX.1-2024 Issue 8, Shell Command Language — Shell Command Language — Introduction; Ritchie·Thompson, The UNIX Time-Sharing System (1978 개정본) — The UNIX Time-Sharing System — implementation and process control

74. 크기가 20KB, 16KB, 8KB, 40KB인 빈 고정 파티션이 있다. 파티션을 쪼개거나 합치지 않고 17KB 프로그램을 Best Fit으로 배치할 때 선택 파티션의 내부 단편화는?

[학습용 개정문항]

  1. 64KB
  2. 67KB
  3. 3KB
  4. 23KB
정답과 해설 보기

정답: 3

정답은 ③이다. 분할하지 않는 고정 파티션 중 17KB를 수용할 수 있는 것은 20KB와 40KB이다. Best Fit은 이 가운데 가장 작은 충분한 파티션인 20KB를 선택하므로 할당된 파티션 안에서 20-17=3KB가 사용되지 않는다. 이처럼 할당 단위 내부에 남은 공간을 내부 단편화라고 한다. 가변 크기 빈 공간을 분할하는 방식이라면 남은 3KB는 별도 빈 공간으로 관리될 수 있으므로 같은 표현을 무조건 적용하면 안 된다.

선지별 해설

  • 전체 빈 공간 합도 아니고 선택 파티션의 잔여 공간도 아니다.
  • 선택된 20KB 파티션에서 17KB를 뺀 값과 다르다.
  • 20KB 파티션 내부에 3KB가 남는다.
  • 23KB는 40KB에 적재했을 때의 잔여량으로 Best Fit이 아니다.

편집 해설 근거: Arpaci-Dusseau & Arpaci-Dusseau, OSTEP Chapter 17 Free-Space Management — Chapter 17 — Internal/External Fragmentation; Best Fit

75. 프로그램과 운영환경을 분석하여 다음 물음에 답한다. C언어에서 두 개의 논리 값 중 하나라도 참이면 1을, 모두 거짓이면 0을 반환하는 연산자는?

  1. !=
  2. ||
  3. &&
  4. **
정답과 해설 보기

정답: 2

정답은 ②이다. C의 논리 OR 연산자 ||는 두 피연산자 중 하나라도 0이 아니면 int 값 1을 반환하고 둘 다 0이면 0을 반환한다. 왼쪽이 참이면 결과가 이미 정해지므로 오른쪽을 평가하지 않는 단락 평가도 수행한다. &&는 둘 다 참이어야 1이며, !=는 두 값이 서로 다른지 비교한다. C에는 **라는 거듭제곱 연산자가 없으므로 다른 언어의 기호와 혼동하지 않아야 한다.

선지별 해설

  • !=는 두 값의 같고 다름을 비교하며 논리합 연산자가 아니다.
  • 하나 이상이 참이면 1을 반환하는 논리 OR이다.
  • &&는 두 피연산자가 모두 참일 때만 1을 반환한다.
  • C에 **라는 거듭제곱 연산자는 정의되어 있지 않다.

편집 해설 근거: ISO/IEC JTC1/SC22/WG14, C11 committee draft N1570 (2011-04-12) — §6.5.14 Logical OR operator; §6.5.13 Logical AND operator

76. 다섯 결합 사례를 순서대로 이름 붙인 것은?
(가) 필요한 단순 값을 매개변수로 전달한다.
(나) 레코드 전체를 전달하지만 일부 필드만 사용한다.
(다) 상대 처리 모드를 바꾸는 플래그를 전달한다.
(라) 두 모듈이 같은 전역 영역을 읽고 수정한다.
(마) 다른 모듈 내부의 코드나 데이터 영역에 직접 접근해 변경한다.

[학습용 개정문항]

  1. Stamp → Data → Control → Common → Content
  2. Control → Data → Stamp → Common → Content
  3. Content → Stamp → Control → Common → Data
  4. Data → Stamp → Control → Common → Content
정답과 해설 보기

정답: 4

정답은 ④이다. 단순 자료를 넘기면 Data, 전체 레코드 중 일부만 사용하면 Stamp, 처리 모드를 지시하는 정보를 넘기면 Control 결합도이다. 같은 전역 영역에 쓰기 접근하면 Common, 다른 모듈 내부의 코드나 데이터 영역을 직접 변경하면 Content 결합도다. 따라서 제시된 다섯 사례에 대응하는 순서는 Data → Stamp → Control → Common → Content이다. 실제 변경 영향은 인터페이스와 사용 맥락에도 좌우되므로 명칭 순서만으로 모든 시스템의 위험을 수치화할 수는 없다.

선지별 해설

  • 첫 번째는 단순 자료 전달이고 두 번째가 레코드 일부 사용이므로 순서가 반대다.
  • 첫 번째 사례에는 동작을 지시하는 제어 정보가 없다.
  • 첫 번째는 내부 코드 접근이 아니라 단순 자료 전달이다.
  • 다섯 사례의 정의와 결합도 이름이 순서대로 일치한다.

편집 해설 근거: CMU SEI, Candidate Complexity Metrics (2016), Appendix A.6 — Appendix A.6, pp.28–29

77. 프로그램과 운영환경을 분석하여 다음 물음에 답한다. 현재 프레임은 2, 5, 7이고 앞으로 5, 2, 8, 5, 2 순서로 참조된다. 8을 적재할 때 OPT가 교체할 페이지는? 미래 참조열에 나타나는 다음 사용 시점을 비교한다.

  1. 2
  2. 5
  3. 8
  4. 7
정답과 해설 보기

정답: 4

정답은 ④이다. OPT는 교체 시점 이후의 참조열을 보고 다음 사용이 가장 먼 페이지를 내보낸다. 현재 2, 5, 7이 있고 5와 2를 참조한 뒤 8이 필요해진 시점의 남은 참조열은 5, 2이다. 5와 2는 곧 다시 사용되지만 7은 남은 참조열에서 사용되지 않으므로 7을 교체한다. OPT는 미래를 안다는 가정으로 비교 기준을 제공하는 정책이며, 일반적인 실제 운영체제가 미래 참조열을 완벽히 알고 실행한다는 뜻은 아니다.

선지별 해설

  • 2는 남은 참조열에서 다시 사용된다.
  • 5는 8을 적재한 직후 다시 사용된다.
  • 8은 새로 넣어야 하는 페이지이므로 기존 피해 페이지가 아니다.
  • 7은 이후 사용되지 않아 가장 늦게 사용할 페이지로 선택된다.

편집 해설 근거: Arpaci-Dusseau, OSTEP, 22 Beyond Physical Memory: Policies (2025 개정 표시본) — Chapter 22 — The Optimal Replacement Policy

78. 프로그램이 입력 길이를 검사하지 않은 채 고정 크기 버퍼에 데이터를 복사하여 버퍼 경계를 넘어 인접 메모리에 기록한다. 이 취약점은?

[학습용 개정문항]

  1. 버퍼 오버플로
  2. 디렉터리 접근 공격
  3. FTP 바운스 공격
  4. SQL 삽입
정답과 해설 보기

정답: 1

정답은 ①이다. 버퍼 오버플로는 버퍼에 마련된 범위를 넘어 데이터를 기록해 인접 메모리를 손상시키는 취약점이다. 입력 길이를 확인하지 않은 복사가 대표적인 발생 원인이다. 단순히 메모리 처리 오류라고만 하면 해제 후 사용이나 잘못된 포인터 접근 등도 포함될 수 있으므로, 문항에서는 버퍼 경계를 넘는 쓰기라는 조건을 명시했다. 디렉터리 접근, FTP 바운스, SQL 삽입은 각각 경로·프로토콜·질의 처리의 다른 취약점을 다룬다.

선지별 해설

  • 할당된 버퍼 경계를 넘어 쓰는 버퍼 오버플로의 사례다.
  • 허용 경로 밖의 파일 접근을 유도하는 문제와 다르다.
  • FTP의 데이터 연결 기능을 악용하는 공격과 다르다.
  • 입력 문자열이 SQL 구문으로 해석되는 문제와 다르다.

편집 해설 근거: MITRE CWE-120 — Buffer Copy without Checking Size of Input — Description; Common Consequences

79. 프로그램과 운영환경을 분석하여 다음 물음에 답한다. 야간 배치 처리의 품질 특성과 설명의 연결로 틀린 설명을 고르면?

  1. 무결성 — 반드시 가장 짧은 시간 안에 끝나고 다른 작업의 CPU를 전혀 사용하지 않는다.
  2. 자동화 — 정상 상황에서는 사용자 개입 없이 실행한다.
  3. 추적성 — 실패 시각과 처리 단계, 원인을 로그로 확인할 수 있다.
  4. 대용량성 — 예상 최대 데이터 건수를 처리할 수 있다.
정답과 해설 보기

정답: 1

정답은 ①이다. 무결성은 처리 대상과 결과가 부적절하게 변조되거나 손실되지 않고 정확하게 유지되는 성질과 관련된다. 반드시 가장 짧은 시간에 끝나거나 다른 작업의 CPU 사용에 전혀 영향을 주지 않는다는 것은 무결성의 정의가 아니다. 자동화는 정상 상황의 무인 실행, 추적성은 처리 기록을 통한 원인 확인, 대용량성은 필요한 데이터 규모를 처리할 능력으로 구별한다. 빠른 처리만 달성해도 누락이나 중복 갱신이 있다면 무결성을 만족하지 못한다.

선지별 해설

  • 성능과 자원 경합에 관한 절대적 주장을 무결성으로 잘못 연결했다.
  • 정상 상황에서 사람의 반복 조작 없이 실행하는 자동화의 설명이다.
  • 실패 시점과 원인을 기록으로 확인하는 추적성의 설명이다.
  • 요구된 최대 규모의 데이터를 처리할 능력에 관한 설명이다.

편집 해설 근거: NIST FIPS 199 — Security Objectives — Integrity

80. C11에서 다음 프로그램의 출력은?

#include <stdio.h>
int main(void) {
    int a = 7;
    int b = 2;
    printf("%d", a / b);
    return 0;
}

[학습용 개정문항]

  1. 3
  2. 3.5
  3. 4
  4. 2
정답과 해설 보기

정답: 1

정답은 ①이다. a와 b의 형식이 모두 int이므로 a/b에는 정수 나눗셈이 적용된다. C11에서는 정수 몫의 소수 부분을 0 방향으로 버리므로 양수 7을 2로 나눈 결과는 3이다. printf의 %d는 이 int 값을 십진 정수로 출력한다. 3.5를 얻으려면 나눗셈 전에 적어도 한 피연산자를 실수형으로 바꿔야 하며, 출력 형식만 바꾸는 것으로 이미 계산된 정수 몫이 실수 몫으로 되돌아가지는 않는다.

선지별 해설

  • 정수 나눗셈 7/2의 결과 3이 출력된다.
  • 3.5는 실수 나눗셈의 결과이며 현재 피연산자는 int이다.
  • 정수 몫은 반올림이 아니라 소수 부분을 버린다.
  • 2는 나누는 수이며 몫이 아니다.

편집 해설 근거: ISO/IEC JTC1/SC22/WG14, C11 committee draft N1570 (2011-04-12) — §6.5.5 Multiplicative operators; §7.21.6.1 fprintf

정보처리기사 필기 기출문제 · 정보시스템 구축관리

81. 정보시스템 구축·보안 검토에서 다음 항목을 판단한다. 소프트웨어 생명주기 모형에서 프로토타입 모형의 장점이 해당하지 않는 것을 고르면?

  1. 개발과정에서 사용자의 요구를 충분히 반영한다.
  2. 최종 결과물이 만들어지기 전에 의뢰자가 최종결과물의 일부 혹은 모형을 볼 수 있다.
  3. 의뢰자나 개발자 모두에게 공동의 참조 모델을 제공한다.
  4. 단기간 제작 목적으로 인하여 비효율적인 언어나 알고리즘을 사용할 수 있다.
정답과 해설 보기

정답: 4

정답은 ④이다. 프로토타입은 완제품 전에 일부 기능이나 화면을 구체화하여 요구사항에 대한 이해를 맞추는 데 도움이 된다. 사용자는 모형을 보고 피드백할 수 있고 개발자와 같은 대상을 놓고 논의할 수 있다. 빠르게 확인하려고 임시 구현이나 비효율적인 방법을 사용하는 것은 발생 가능한 한계이지 장점이 아니다. 모든 프로토타입이 비효율적이라는 뜻도 아니며, 탐색용 모형을 운영 제품으로 발전시킬 경우에는 품질과 구조를 다시 검토해야 한다.

선지별 해설

  • 구체적인 모형에 대한 피드백으로 요구사항 반영을 도울 수 있다.
  • 완성 전 일부 기능이나 모형을 확인할 수 있다는 장점이다.
  • 같은 모형을 보며 논의하므로 의사소통의 공통 참조가 된다.
  • 임시 구현의 비효율성은 가능한 단점이나 한계이지 장점이 아니다.

편집 해설 근거: IEEE Computer Society, SWEBOK Guide V4.0a — Software Engineering Models and Methods — §4.3 Prototyping Methods

82. 정보시스템 구축·보안 검토에서 다음 항목을 판단한다. 기본 COCOMO에서 경험이 풍부한 소규모 팀이 익숙한 환경에서 비교적 단순한 중소 규모 업무 소프트웨어를 개발할 때 적용하는 유형은?

  1. Semi-Detached
  2. Application Composition
  3. Embedded
  4. Organic
정답과 해설 보기

정답: 4

정답은 ④이다. 기본 COCOMO의 Organic 모드는 문제 영역과 개발 환경에 익숙한 팀이 비교적 유연한 조건에서 개발하는 경우와 연결된다. Embedded는 강한 하드웨어·운영 제약이 있는 환경, Semi-Detached는 경험과 복잡성이 중간적으로 섞인 환경을 나타낸다. 규모만 보고 모드를 정하는 것이 아니라 팀 경험과 제약 조건도 함께 판단해야 한다. Application Composition은 COCOMO II 계열의 다른 모델 명칭이므로 기본 COCOMO의 세 모드와 섞지 않는다.

선지별 해설

  • 경험과 복잡성이 중간적인 혼합 환경을 가리키는 모드다.
  • COCOMO II 계열의 모델로, 기본 COCOMO의 세 모드가 아니다.
  • 강한 운영·하드웨어 제약이 결합된 환경의 모드다.
  • 경험 있는 팀과 익숙하고 비교적 단순한 개발 환경에 대응한다.

편집 해설 근거: Barry W. Boehm, Software Engineering Economics (1984), 저자 논문 보존 사본 — Table IV — COCOMO development modes

83. CMMI의 성숙도 수준(Maturity Level) 1~5에 사용하는 명칭에 해당하지 않는 것은?

[학습용 개정문항]

  1. 반복(Repeatable)
  2. 초기(Initial)
  3. 관리(Managed)
  4. 정의(Defined)
정답과 해설 보기

정답: 1

정답은 ①이다. CMMI 성숙도 수준 1부터 5의 명칭은 Initial, Managed, Defined, Quantitatively Managed, Optimizing이다. 따라서 초기·관리·정의는 해당 명칭이지만 Repeatable이라는 반복 단계는 이 목록에 없다. 성숙도 수준과 개별 실무 영역의 능력 수준은 서로 다른 축이므로 구별해야 한다. 현재 공식 안내에는 수준 0 Incomplete도 제시되지만, 그것이 ①의 Repeatable을 CMMI 성숙도 명칭으로 만들지는 않는다.

선지별 해설

  • Repeatable은 CMMI 성숙도 수준 1~5의 공식 명칭에 없다.
  • Initial은 성숙도 수준 1이다.
  • Managed는 성숙도 수준 2이다.
  • Defined는 성숙도 수준 3이다.

편집 해설 근거: CMMI Institute, CMMI Levels of Capability and Performance (2026-10-05 확인) — Maturity Levels 0–5; Capability Levels

84. 정보시스템 구축·보안 검토에서 다음 항목을 판단한다. 낙관 LOC 400, 가능성 높은 LOC 600, 비관 LOC 1400을 제시했다. 가중 평균 (낙관+4×가능+비관)/6은?

  1. 400 LOC
  2. 700 LOC
  3. 600 LOC
  4. 1400 LOC
정답과 해설 보기

정답: 2

정답은 ②이다. 문제에서 제시한 가중 평균은 가능성이 높은 추정치에 가중치 4를 주고 세 추정치의 가중합을 6으로 나누는 식이다. 수치를 대입하면 (400+4×600+1400)/6=(400+2400+1400)/6=4200/6=700 LOC이다. 단순 산술평균이나 세 값 중 하나를 선택하는 방식이 아니다. 계산 결과는 제시된 추정값과 가중치에 따른 예상 규모이며 실제 구현이 반드시 700줄이 된다는 확정값은 아니다.

선지별 해설

  • 낙관 추정치 하나만 사용한 값이다.
  • 가중합 4200을 총 가중치 6으로 나눈 값이다.
  • 가능성이 높은 추정치만 선택한 값이다.
  • 비관 추정치 하나만 선택한 값이다.

편집 해설 근거: R. G. Batson, NASA TM-100311 Program Risk Analysis Handbook (1987) — PERT의 optimistic·most likely·pessimistic 추정 설명

85. 정보시스템 구축·보안 검토에서 다음 항목을 판단한다. 웹 응용 취약점 관리를 위한 논리적 보안 설정과 관련성이 가장 낮은 방침을 고르면?

  1. 응용 프로세스를 최소 권한 계정으로 실행한다.
  2. 운영체제 파일 접근 권한을 제한한다.
  3. 불필요한 오류 정보와 시스템 정보 노출을 막는다.
  4. 서버실 출입문에 생체 인식 장치를 설치한다.
정답과 해설 보기

정답: 4

정답은 ④이다. 최소 권한 계정, 파일 접근 권한, 불필요한 오류 정보 노출 억제는 운영체제와 애플리케이션의 논리적 보안 설정에 해당한다. 서버실 출입문에 생체 인식 장치를 설치하는 것은 사람의 물리적 출입을 통제하는 조치다. 물리적 보호도 시스템 보안에 필요하지만 웹 응용의 실행 권한이나 오류 응답 설정을 직접 바꾸지는 않는다. 조치의 중요도를 비교하기보다 무엇을 직접 통제하는지를 기준으로 분류해야 한다.

선지별 해설

  • 응용이 필요한 권한만 갖도록 제한하는 논리적 통제다.
  • 파일 읽기·쓰기·실행 권한을 제한하는 논리적 통제다.
  • 오류 응답으로 내부 정보가 노출되지 않게 하는 응용 설정이다.
  • 서버실 출입을 제한하는 물리적 통제이므로 질문 범위와 가장 멀다.

편집 해설 근거: NIST SP 800-53 Rev.5, Security and Privacy Controls (2020, 2020-12-10 정오표 포함본) — AC-6 Least Privilege; SI-11 Error Handling; PE-3 Physical Access Control

86. 오픈 소스 기반으로 여러 컴퓨터의 저장·처리 자원을 활용하며 HDFS, YARN, MapReduce를 주요 구성 요소로 사용하는 분산 컴퓨팅 플랫폼은?

[학습용 개정문항]

  1. 포스퀘어(Foursquare)
  2. 멤리스터(Memristor)
  3. 하둡(Hadoop)
  4. 비콘(Beacon)
정답과 해설 보기

정답: 3

정답은 ③이다. Apache Hadoop은 여러 컴퓨터에 데이터를 나누어 저장하고 분산 처리하도록 하는 오픈 소스 생태계다. HDFS는 분산 파일 저장을, YARN은 클러스터 자원 관리를, MapReduce는 분산 계산을 담당하는 주요 구성 요소로 알려져 있다. 일반 서버 여러 대를 함께 활용할 수 있다는 설명은 Hadoop의 방향과 맞지만 가상 머신 사용이 반드시 필요하다는 뜻은 아니다. 나머지 보기는 위치 서비스나 전자 소자·근거리 신호 기술로 목적이 다르다.

선지별 해설

  • Foursquare는 위치 기반 서비스와 관련된 이름이다.
  • Memristor는 전자 소자 개념이며 분산 데이터 처리 플랫폼이 아니다.
  • HDFS·YARN·MapReduce를 포함하는 Apache Hadoop이다.
  • Beacon은 근거리 신호를 이용하는 기술로 이 분산 처리 플랫폼과 다르다.

편집 해설 근거: Apache Hadoop documentation — Apache Hadoop — HDFS, YARN, MapReduce overview

87. 공격자가 피해자 IP를 출발지로 위조한 ICMP Echo 요청을 directed broadcast 주소로 보내, 여러 호스트의 응답이 피해자에게 집중되게 한다. 이 공격은?

[학습용 개정문항]

  1. Smurfing
  2. TearDrop
  3. Smishing
  4. Qshing
정답과 해설 보기

정답: 1

정답은 ①이다. Smurf 공격은 피해자의 주소를 출발지로 위조한 ICMP Echo 요청을 브로드캐스트 주소로 보내 여러 호스트의 응답이 피해자에게 모이게 하는 반사·증폭 공격이다. 단순히 IP나 ICMP로 많은 데이터를 보낸다는 설명만으로는 특정 공격을 구별하기 어려우므로 출발지 위조와 브로드캐스트 응답이라는 특징을 함께 확인해야 한다. Teardrop은 비정상 IP 조각 처리와 관련되고 Smishing과 Qshing은 각각 문자와 QR 코드를 이용하는 피싱 범주다.

선지별 해설

  • 위조한 출발지와 ICMP 브로드캐스트 응답의 반사·증폭은 Smurf의 특징이다.
  • Teardrop은 IP 조각의 중첩 등 재조립 문제를 악용하는 공격이다.
  • Smishing은 문자 메시지를 매개로 하는 피싱이다.
  • Qshing은 QR 코드를 매개로 하는 피싱을 뜻한다.

편집 해설 근거: RFC 2644, Changing the Default for Directed Broadcasts in Routers (1999) — §2 Discussion

88. 정보시스템 구축·보안 검토에서 다음 항목을 판단한다. 서버에 설치된 백도어를 찾기 위한 점검으로 효과가 가장 낮은 것은?

  1. 중요 실행 파일의 해시를 신뢰 기준선과 비교한다.
  2. 한 번의 스캔에서 닫혀 있다고 나온 포트만 기록하고 이후 열린 포트와 프로세스는 확인하지 않는다.
  3. 인증·프로세스·네트워크 로그에서 비정상 실행 흔적을 찾는다.
  4. 예상하지 않은 SetUID 실행 파일과 소유권 변화를 검사한다.
정답과 해설 보기

정답: 2

정답은 ②이다. 백도어 탐지는 정상 상태와 현재 시스템의 차이를 여러 관점에서 확인해야 한다. 신뢰할 수 있는 기준선과 파일 해시를 비교하고, 프로세스·인증·네트워크 로그 및 예상 밖의 권한 변화를 함께 살피는 것이 도움이 된다. 한 시점에 닫혀 있던 포트만 기록하고 이후 열린 포트와 실행 프로세스를 확인하지 않으면 시간에 따라 동작하거나 다른 통신 경로를 쓰는 백도어를 놓칠 수 있다. 어느 한 점검만으로 감염이 전혀 없다고 보장할 수는 없다.

선지별 해설

  • 신뢰 기준선과의 차이는 실행 파일 변조의 단서를 제공한다.
  • 단일 시점의 닫힌 포트만 기록하면 지속적 실행·통신 흔적을 놓친다.
  • 서로 다른 로그를 함께 보면 비정상 동작을 찾는 데 도움이 된다.
  • 예상 밖의 SetUID 파일이나 소유권 변화는 권한 악용 단서가 될 수 있다.

편집 해설 근거: NIST SP 800-123 — General Server Security — §6.1 Logging; §6.3 Recovering From a Security Compromise; §6.4 Security Testing Servers

89. 정보시스템 구축·보안 검토에서 다음 항목을 판단한다. 정보 보안의 3대 요소에 해당하지 않는 것은?

  1. 휘발성
  2. 무결성
  3. 가용성
  4. 기밀성
정답과 해설 보기

정답: 1

정답은 ①이다. 정보 보안의 대표적인 세 목표는 기밀성, 무결성, 가용성으로 CIA라고 부른다. 기밀성은 허가되지 않은 공개를 막는 것, 무결성은 부적절한 변경과 파괴를 막는 것, 가용성은 권한 있는 사용자가 필요할 때 정보와 서비스를 사용할 수 있게 하는 것과 관련된다. 휘발성은 전원이나 저장 매체의 성질에 따라 정보가 유지되는지 등을 설명할 때 쓰는 특성이며, 이 세 보안 목표의 하나는 아니다.

선지별 해설

  • 휘발성은 CIA의 세 보안 목표에 포함되지 않는다.
  • 무결성은 부적절한 정보 변경과 파괴에 대한 보호 목표다.
  • 가용성은 필요한 때 신뢰할 수 있게 접근·사용할 수 있는 목표다.
  • 기밀성은 허가되지 않은 공개를 방지하는 목표다.

편집 해설 근거: NIST FIPS 199 — Security Objectives

90. IEEE 802.11s가 다루며, 무선 노드들이 서로 연결되어 중간 노드를 통한 다중 홉 전달과 경로 선택을 수행하는 네트워크 구조는?

[학습용 개정문항]

  1. Local Area Network
  2. Mesh Network
  3. Software Defined Perimeter
  4. Virtual Private Network
정답과 해설 보기

정답: 2

정답은 ②이다. 무선 메시 네트워크는 노드들이 서로 연결되어 데이터가 여러 무선 홉을 통해 전달될 수 있는 구조다. 하나의 중앙 접속점과 모든 단말이 직접 연결되는 방식만으로 설명되지 않으며, 중간 노드의 전달과 경로 선택이 중요하다. IEEE 802.11s는 무선 LAN 메시의 경로 선택과 전달을 다룬다. 메시 구조가 있다는 이유만으로 모든 연결 규모나 장애·간섭 문제를 자동 해결하는 것은 아니므로 구조적인 특징으로 판단해야 한다.

선지별 해설

  • LAN은 지역 네트워크라는 넓은 범주로 다중 홉 메시 구조를 특정하지 않는다.
  • 여러 노드의 연결과 다중 홉 전달을 사용하는 메시 네트워크다.
  • SDP는 접근 제어 경계를 구성하는 보안 접근 방식이다.
  • VPN은 공용망 등 위에 보호된 논리 연결을 제공하는 기술이다.

편집 해설 근거: IEEE 802.11 Working Group, Task Group s 개요 — Task Group s — Mesh Networking

91. 정보시스템 구축·보안 검토에서 다음 항목을 판단한다. 정보시스템 위험 중 물리적·환경적 보호 통제로 직접 다루기 어려운 것은?

  1. 웹 애플리케이션 세션 쿠키의 SameSite 속성을 잘못 설정한 위험
  2. 정전으로 서버와 스토리지가 갑자기 종료되는 위험
  3. 서버실 배관 누수로 장비가 침수되는 위험
  4. 출입카드 없이 서버실에 들어가 저장 매체를 반출하는 위험
정답과 해설 보기

정답: 1

정답은 ①이다. SameSite는 브라우저가 교차 사이트 요청에 쿠키를 포함할 조건을 제어하는 논리적 웹 보안 설정이다. 서버실 출입 통제나 전원·환경 설비만으로 이 속성의 잘못된 설정을 바로잡을 수는 없다. 반면 정전은 전원 보호, 누수는 환경 감시와 시설 대책, 저장 매체 반출은 물리적 출입과 매체 통제로 직접 다룰 수 있다. 각 위험을 해결하는 통제 계층을 구분해야 하며 여러 계층의 보호가 함께 필요할 수 있다.

선지별 해설

  • 쿠키 속성은 응용·브라우저의 논리 설정으로 수정해야 한다.
  • 정전 위험은 UPS 등 전원 보호 조치로 직접 다룰 수 있다.
  • 누수·침수 위험은 환경 감지와 시설 보호의 대상이다.
  • 무단 출입과 매체 반출은 물리적 접근 통제의 대상이다.

편집 해설 근거: OWASP, Session Management Cheat Sheet (2026-10-05 확인) — SameSite Attribute; NIST SP 800-53 Rev.5, Security and Privacy Controls (2020, 2020-12-10 정오표 포함본) — PE-3; PE-11 Emergency Power; PE-15 Water Damage Protection

92. COCOMO 81의 기본 비용 추정 모형에 대한 설명으로 틀린 것은?

[학습용 개정문항]

  1. 필요한 개발 노력을 Man-Month로 산정할 수 있다.
  2. Boehm이 제안했으며 원시 코드 라인 수를 기준으로 비용을 산정한다.
  3. 실제 소프트웨어 개발 프로젝트 자료로 보정한 경험적 비용 추정 모형이다.
  4. 개발 유형을 Object, Dynamic, Function의 세 가지 모드로 구분한다.
정답과 해설 보기

정답: 4

정답은 ④이다. COCOMO 81의 기본 모형은 소프트웨어 규모를 바탕으로 필요한 노력과 일정을 추정하며 개발 모드를 Organic, Semi-Detached, Embedded로 구분한다. Object, Dynamic, Function은 OMT 분석의 객체·동적·기능 모델 이름이므로 COCOMO의 개발 모드가 아니다. 경험 데이터로 보정한 추정식의 결과는 프로젝트 조건과 규모 추정의 정확성에 영향을 받는다. 모든 COCOMO 계열 모형을 동일한 입력과 동일한 세 모드로 일반화하지 않고 기본 모형의 범위에서 해석해야 한다.

선지별 해설

  • 노력은 인월과 같은 작업량 단위로 추정할 수 있다.
  • 기본 모형은 원시 코드 규모를 비용 추정 입력으로 사용한다.
  • 실제 프로젝트 자료에 기반해 보정한 경험적 모형이라는 설명이다.
  • OMT 모델 이름을 COCOMO 개발 모드로 잘못 가져왔다.

편집 해설 근거: Barry W. Boehm, Software Engineering Economics (1984), 저자 논문 보존 사본 — Basic COCOMO; Table IV; Dov Dori, On Bridging the Analysis–Design and Structure–Behavior Grand Canyons with Object Paradigms (1996), 저자 제공 원문 — 본문 p.26

93. 정보시스템 구축·보안 검토에서 다음 항목을 판단한다. 소인수 분해 문제를 이용한 공개키 암호화 기법에 널리 사용되는 암호 알고리즘 기법은?

  1. ECC
  2. PKI
  3. PRM
  4. RSA
정답과 해설 보기

정답: 4

정답은 ④이다. RSA는 서로 다른 큰 소수의 곱으로 만든 모듈러스를 사용하는 공개키 암호 방식이다. 그 모듈러스를 소인수분해할 수 있으면 개인키 계산에 필요한 정보를 얻을 수 있으므로 큰 정수의 소인수분해 난도가 보안과 밀접하게 관련된다. ECC는 타원곡선상의 이산로그 문제와 관련된 계열이고, PKI는 공개키 인증서를 관리하는 기반 구조다. RSA를 깨는 모든 방법이 소인수분해와 수학적으로 동등하다고 증명된 것은 아니라는 점도 구분해야 한다.

선지별 해설

  • ECC는 타원곡선 이산로그 문제와 관련된 공개키 암호 계열이다.
  • PKI는 공개키와 인증서를 관리하는 기반 구조이며 알고리즘 이름이 아니다.
  • PRM은 지문에서 설명한 표준 RSA 알고리즘의 명칭이 아니다.
  • 큰 소수의 곱과 모듈러 연산을 사용하는 RSA가 맞다.

편집 해설 근거: Menezes·van Oorschot·Vanstone, Handbook of Applied Cryptography, Chapter 8 저자 공개본 — §8.2 RSA public-key encryption

94. 정보시스템 구축·보안 검토에서 다음 항목을 판단한다. 암호화 키와 복호화 키가 동일한 암호 알고리즘은?

  1. DSA
  2. ECC
  3. RSA
  4. AES
정답과 해설 보기

정답: 4

정답은 ④이다. AES는 같은 비밀키를 기반으로 암호화와 복호화를 수행하는 대칭키 블록 암호이다. 내부의 암호화·복호화 단계나 라운드 키 처리가 다를 수 있지만 공개키와 개인키라는 서로 다른 키 쌍을 배포하는 방식은 아니다. RSA는 공개키 방식이고 DSA는 전자서명 알고리즘이다. ECC는 타원곡선 암호 계열을 가리키므로 그 전체를 하나의 동일키 블록 암호로 볼 수 없다. 용도와 키의 관계를 함께 확인해야 한다.

선지별 해설

  • DSA는 공개키 기반 전자서명 알고리즘이다.
  • ECC는 타원곡선 기반 공개키 암호 계열이다.
  • RSA는 공개키·개인키의 관계를 이용한다.
  • AES는 공유 비밀키를 사용하는 대칭키 블록 암호이다.

편집 해설 근거: NIST FIPS 197-upd1, Advanced Encryption Standard (2023) — §1 Scope; §3 Definitions; §5 Algorithm Specification

95. MQTT 5.0 클라이언트가 QoS 1 PUBLISH의 PUBACK을 받기 전에 연결이 끊겼다. Clean Start=0으로 재연결하고 기존 세션이 재개되었으며 해당 PUBLISH가 아직 미확인 상태일 때 올바른 재전송 방식은?

[학습용 개정문항]

  1. Retain=1만 설정하고 확인 응답을 기다리지 않는다.
  2. 새 Packet Identifier를 쓰고 DUP=0으로 보낸다.
  3. 기존 Packet Identifier를 유지하고 DUP=1로 보낸다.
  4. QoS를 2로 바꾸고 Packet Identifier를 제거한다.
정답과 해설 보기

정답: 3

정답은 ③이다. MQTT 5.0에서 Clean Start=0으로 기존 세션을 재개하면 아직 확인되지 않은 QoS 1 PUBLISH는 원래 Packet Identifier로 재전송한다. 이전 패킷의 재전송임을 나타내는 DUP 플래그는 1로 설정한다. RETAIN은 브로커가 마지막 메시지를 보존하는 기능과 관련되어 재전송 표시를 대신하지 않는다. 같은 연결에서 단순히 PUBACK이 늦었다는 이유만으로 임의 재전송한다고 설명하면 MQTT 5.0의 재시도 규칙과 어긋나므로 재연결 조건을 명시했다.

선지별 해설

  • RETAIN은 보존 메시지 설정이며 미확인 전송의 식별과 확인 응답을 대신하지 않는다.
  • 새 식별자와 DUP=0이면 원래 미확인 패킷의 재전송 규칙에 맞지 않는다.
  • 기존 식별자를 유지하고 DUP=1로 재전송해야 한다.
  • QoS를 임의 변경하거나 QoS 1의 패킷 식별자를 제거하지 않는다.

편집 해설 근거: OASIS, MQTT Version 5.0 Standard (2019) — §3.3.1.1 DUP; §4.4 Message delivery retry

96. 정보시스템 구축·보안 검토에서 다음 항목을 판단한다. 전자 칩과 같은 소프트웨어 부품, 즉 모듈을 만들어 끼워 맞추는 방식의 소프트웨어 재사용 방법은?

  1. 합성 중심
  2. 생성 중심
  3. 분리 중심
  4. 구조 중심
정답과 해설 보기

정답: 1

정답은 ①이다. 합성 중심 재사용은 이미 준비된 소프트웨어 부품을 선택하고 인터페이스에 맞게 연결하여 새 시스템을 구성하는 접근이다. 라이브러리나 컴포넌트가 가진 기능을 조합한다는 점에서 지문의 끼워 맞추기 비유와 연결된다. 생성 중심은 명세나 모델을 입력으로 코드를 만들어 내는 접근과 구별한다. 실제 부품 조합에는 자료형·호출 규약·오류 처리 등의 호환성을 확인해야 하므로 기존 부품이라는 이유만으로 통합 시험을 생략할 수는 없다.

선지별 해설

  • 기존 모듈이나 컴포넌트를 조합하는 합성 중심 재사용이다.
  • 생성 중심은 명세나 모델에서 산출물을 만들어 내는 접근이다.
  • 분리만 한다는 설명은 기존 부품을 조합하는 지문의 핵심과 다르다.
  • 일반적인 구조 설계라는 표현은 이 재사용 방식의 명칭이 아니다.

편집 해설 근거: IEEE Computer Society, SWEBOK Guide V4.0a — Software Construction — §3.5 Reuse in Construction; Software Design — Component-Based Design

97. 정보시스템 구축·보안 검토에서 다음 항목을 판단한다. 대용량 파일을 빠르게 암호화하고 같은 비밀키로 복호화하려 할 때 적합한 알고리즘은?

  1. RSA
  2. SHA-256
  3. ECDSA
  4. AES
정답과 해설 보기

정답: 4

정답은 ④이다. AES는 같은 비밀키로 데이터를 암호화하고 복호화하는 대칭키 블록 암호이므로 지문의 용도에 맞다. RSA는 공개키 방식이고 ECDSA는 서명용이며, SHA-256은 입력에서 고정 길이 요약값을 만드는 해시 함수여서 원문을 복호화하는 암호가 아니다. 실제 파일 보호에는 AES라는 이름만 고르는 것에서 끝나지 않고 안전한 운영 모드와 키·논스 관리도 필요하다. 여기서는 세부 구현 속도를 보장하는 것이 아니라 알고리즘의 용도와 키 관계를 구별한다.

선지별 해설

  • RSA는 비대칭 키 방식으로 지문의 동일 비밀키 조건과 다르다.
  • SHA-256은 해시이며 역으로 파일을 복호화하지 않는다.
  • ECDSA는 전자서명 알고리즘으로 파일 내용 암호화가 주목적이 아니다.
  • AES는 동일 비밀키를 사용하는 데이터 암호화에 적합하다.

편집 해설 근거: NIST FIPS 197-upd1, Advanced Encryption Standard (2023) — §1 Scope; §5 Algorithm Specification

98. 정보시스템 구축·보안 검토에서 다음 항목을 판단한다. 시스템의 사용자가 로그인하여 명령을 내리는 과정에 대한 시스템의 동작 중 다음 설명에 해당하는 항목을 고르면? 자신의 신원(Identity)을 시스템에 증명하는 과정이다. 아이디와 비밀번호를 입력하는 방식이 가장 일반적인 예이다.

  1. Authorization
  2. Authentication
  3. Aging
  4. Accounting
정답과 해설 보기

정답: 2

정답은 ②이다. 인증은 사용자가 주장한 신원이 맞는지 증거를 확인하는 과정이다. 아이디로 계정을 식별하고 그 계정의 비밀번호 같은 자격 증명을 검증하는 로그인이 대표적인 예다. 인가는 확인된 주체가 어떤 파일이나 기능을 사용할 수 있는지 결정하는 권한 판단이고, Accounting은 사용 내역을 기록하는 활동이다. 아이디를 입력하는 행위 자체만으로 신원이 증명되는 것은 아니며, 시스템이 제출된 증거를 검증해야 인증이 성립한다.

선지별 해설

  • Authorization은 주체에게 허용할 동작과 자원을 정하는 인가다.
  • Authentication은 주장한 신원을 검증하는 인증이다.
  • Aging은 계정이나 비밀번호의 사용 기간 등 시간 정책과 관련된 표현이다.
  • Accounting은 활동이나 자원 사용을 기록하는 기능이다.

편집 해설 근거: Peter Reiher, OSTEP v1.10, 54 Authentication — Chapter 54 Authentication — Identifying and Authenticating Users; Peter Reiher, OSTEP v1.10, 55 Access Control — Access Control — authorization

99. 정보시스템 구축·보안 검토에서 다음 항목을 판단한다. 낙관 LOC 500, 가능성 높은 LOC 700, 비관 LOC 1500을 제시했다. 가중 평균 (낙관+4×가능+비관)/6은?

  1. 800 LOC
  2. 500 LOC
  3. 700 LOC
  4. 1500 LOC
정답과 해설 보기

정답: 1

정답은 ①이다. 제시된 식에서 가능성이 높은 값 700에는 가중치 4를 적용한다. 계산하면 (500+4×700+1500)/6=(500+2800+1500)/6=4800/6=800 LOC이다. 총 가중치는 1+4+1=6이므로 분모를 세 추정치의 개수 3으로 바꾸면 안 된다. 결과가 가능성이 높은 추정치 700보다 큰 이유는 비관 추정치 1500이 낙관 추정치 500보다 중심에서 더 멀리 놓여 있기 때문이다.

선지별 해설

  • 주어진 가중 평균의 계산값 800 LOC이다.
  • 낙관 추정치만 고른 값으로 가중합을 반영하지 않았다.
  • 가능성이 높은 값만 고르고 나머지 두 추정치를 반영하지 않았다.
  • 비관 추정치만 선택한 값이다.

편집 해설 근거: R. G. Batson, NASA TM-100311 Program Risk Analysis Handbook (1987) — PERT의 세 점 추정 설명

100. TCP 세션의 이상을 조사하며 순서 번호, 확인 응답, 손실과 재전송 패턴을 분석한다. 다음 중 이러한 TCP 연결 상태 자료와 직접 관련이 가장 적은 것은?

[학습용 개정문항]

  1. 서버 TLS 인증서의 남은 유효기간
  2. 클라이언트와 서버가 기대하는 TCP 순서 번호의 불일치
  3. 비정상적으로 반복되는 ACK 교환
  4. 갑작스러운 패킷 유실과 재전송 증가
정답과 해설 보기

정답: 1

정답은 ①이다. TCP 상태를 분석할 때는 순서 번호와 확인 응답 번호가 기대 범위에 있는지, 재전송과 손실 패턴이 어떻게 변하는지 같은 연결 동작을 확인한다. 서버 TLS 인증서의 남은 유효기간은 인증서 관리 정보로서 이러한 TCP 순서·응답 상태 자료와 직접적인 종류가 다르다. 순서 번호 불일치나 ACK 증가, 재전송 증가도 공격의 확정 증거는 아니며 손실·지연·중복 등 정상 네트워크 원인을 함께 조사해야 한다.

선지별 해설

  • 인증서 유효기간은 TLS 인증서 관리 정보로 TCP 연결 상태 자료와 다르다.
  • 기대 순서 번호와 실제 값의 차이는 TCP 상태 분석 자료다.
  • ACK 교환의 비정상적인 반복은 TCP 동작을 조사할 자료가 된다.
  • 손실과 재전송 증가는 연결 상태를 분석할 자료지만 단독 공격 증거는 아니다.

편집 해설 근거: IETF RFC 9293, Transmission Control Protocol (2022) — §3.4 Sequence Numbers; §3.7 Data Communication; §3.8.5 Retransmission; NIST SP 800-94, Guide to Intrusion Detection and Prevention Systems (2007) — Network-Based IDPS — Detection

정보처리기사 필기 기출문제 학습 방법

먼저 PDF 문제지를 시간에 맞춰 푼 뒤, 이 글에서 오답의 정답·해설·근거를 확인하세요. 법규 문항은 근거 기준일 이후 개정 여부도 함께 확인하는 것이 안전합니다.

정보처리기사 과년도 전체 보기

자료 기준·검수 정보