2021년-정보처리기사실기-1회차
정보처리기사 실기 기출문제

2021년 정보처리기사실기 1회차

총 20문항 · 주관식 · A4 약 1장

1 / 1
A4정답 포함
정보처리기사 실기 기출문제모두CBT · moducbt.com

2021년 정보처리기사실기 1회차

총 20문항 · 주관식 · 정답·해설 포함
문제 1

21-1

아래 Python 프로그램을 실행한 결과를 적으시오.

class Route:
    stops = ["Yeosu", "Ulsan", "Namwon", "Gunsan", "Iksan"]

r = Route()
tag = ''
for s in r.stops:
    tag = s[0] + tag
print(tag)
정답 및 해설

IGNUY


[해설]

stops는 클래스 변수라 인스턴스 r을 통해서도 그대로 읽힌다. s[0]은 각 문자열의 첫 글자다.

  • 반복마다 첫 글자를 기존 tag의 앞에 붙인다(s[0] + tag).
  • Y → UY → NUY → GNUY → IGNUY

첫 글자들이 역순으로 쌓여 IGNUY가 출력된다.

문제 2

21-1

다음 설명에 해당하는 언어를 영문 약어로 적으시오.

  • 웹 서비스를 외부에 공개할 때 그 서비스를 어떻게 호출하는지 적어 둔 명세다.
  • 서비스 이름, 접근 위치(URL), 주고받는 메시지 형식, 사용하는 프로토콜 등을 담는다.
  • XML 문법으로 작성되며, UDDI에 등록되고 SOAP과 함께 쓰인다.
정답 및 해설

WSDL


[해설]

웹 서비스의 이름·위치·메시지 형식·프로토콜을 XML로 기술하는 것은 WSDL(Web Services Description Language)이다.

  • SOAP: XML 메시지를 HTTP 등으로 주고받는 통신 규약
  • UDDI: 웹 서비스 정보(WSDL)를 등록·검색하는 저장소
  • WSDL: 서비스 호출 방법을 적은 명세서
문제 3

21-1

빈칸 ( ㉮ )에 공통으로 들어갈 공격 기법을 적으시오.

  • ( ㉮ )은(는) 말 그대로 '세션을 가로챈다'는 뜻이다.
  • 공격자는 RST 패킷 등으로 피해자와 서버 사이의 정상 연결을 끊은 뒤, 다시 연결될 때 피해자 대신 자신이 그 연결을 차지한다.
  • ( ㉮ )은(는) 세션 관리의 취약점을 노리는 공격이다.
정답 및 해설

세션 하이재킹(Session Hijacking)


[해설]

세션 하이재킹(Session Hijacking)은 인증이 끝난 정상 세션을 가로채 사용자 행세를 하는 공격이다.

공격자는 RST 패킷으로 기존 연결을 끊고 TCP 순서 번호를 맞춰 끼어든다. 웹에서는 세션 ID(쿠키)를 훔쳐 같은 효과를 낸다.

이 과정에서 생기는 비정상적인 ACK 폭주(ACK Storm)가 탐지 단서가 된다. 대응책은 SSH·TLS 같은 암호화 통신과 세션 ID 주기적 재발급이다.

문제 4

21-1

데이터베이스 설계 단계에 관한 설명이다. 빈칸 ①~③에 알맞은 단계를 [보기]에서 골라 적으시오.

  • ( ① ): 사용할 DBMS의 특성과 성능을 따져 데이터가 실제로 저장될 구조(레코드 형식, 인덱스, 접근 경로 등)를 정한다. 테이블 정의서 같은 명세가 나온다.
  • ( ② ): 현실 세계를 추상화해 DBMS와 무관한 개념 구조로 표현한다. 대표 산출물은 E-R 다이어그램이다.
  • ( ③ ): 목표 DBMS가 따르는 데이터 모델(관계형 등)에 맞춰 스키마를 설계하고, 정규화와 트랜잭션 인터페이스 설계를 수행한다.

[보기] 개념적 설계, 구현, 논리적 설계, 물리적 설계, 요구사항 분석

정답 및 해설

① 물리적 설계

② 개념적 설계

③ 논리적 설계


[해설]

데이터베이스 설계는 요구사항 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현 순서로 진행한다.

  • 물리적 설계는 사용할 DBMS에 맞춰 레코드 형식·인덱스·접근 경로 같은 실제 저장 구조를 정한다.
  • 개념적 설계는 DBMS와 무관하게 현실 세계를 추상화하며, 대표 산출물은 E-R 다이어그램이다.
  • 논리적 설계는 관계형 같은 목표 데이터 모델에 맞춰 스키마를 만들고 정규화를 수행한다.

외우는 요령: DBMS와 무관하면 개념적 설계, 데이터 모델에 맞추면 논리적 설계, DBMS의 저장 구조를 정하면 물리적 설계다.

문제 5

21-1

아래 Java 프로그램의 출력 결과를 적으시오.

public class Main {
    public static void main(String[] args) {
        int[][] grid = { {12, 7}, {3, 9, 21, 5}, {40} };
        System.out.println(grid.length);
        System.out.println(grid[1].length);
        System.out.println(grid[2][0]);
        System.out.println(grid[1][2]);
        System.out.println(grid[0][1]);
    }
}
정답 및 해설

3
4
40
21
7


[해설]

grid는 행의 길이가 제각각인 가변 배열이며, 인덱스는 0부터 센다.

  • grid.length — 행의 개수이므로 3이다.
  • grid[1].length — 둘째 행 {3, 9, 21, 5}의 원소 수이므로 4다.
  • grid[2][0] — 셋째 행 {40}의 첫 원소이므로 40이다.
  • grid[1][2] — 둘째 행의 셋째 원소이므로 21이다.
  • grid[0][1] — 첫째 행의 둘째 원소이므로 7이다.

println은 값을 찍을 때 줄을 바꾸므로 한 줄에 하나씩 출력된다.

문제 6

21-1

요구사항을 성격에 따라 나눈 것이다. 빈칸 ①, ②에 알맞은 요구사항 유형을 적으시오.

  • ( ① ) 요구사항: 시스템이 무엇을 해야 하는지, 즉 제공해야 할 기능과 서비스를 정의한다. (예: 회원은 주문 내역을 조회할 수 있어야 한다.)
  • ( ② ) 요구사항: 기능 그 자체가 아니라 성능·보안·가용성처럼 시스템이 갖춰야 할 품질이나 구축상의 제약을 정의한다. (예: 조회 응답은 2초 안에 와야 한다.)
정답 및 해설

① 기능

② 비기능


[해설]

요구사항은 시스템이 무엇을 하는지(기능)와 그 일을 어떤 품질로 어떤 제약 아래 하는지(비기능)로 나뉜다.

  • 기능 요구사항 — 주문 내역 조회처럼 시스템이 제공할 기능과 서비스를 정한다.
  • 비기능 요구사항 — 응답 2초 이내처럼 성능·보안·가용성 같은 품질과 제약을 정한다.

외우는 요령: "~할 수 있어야 한다"는 동작이면 기능 요구사항이고, 수치나 품질 기준이면 비기능 요구사항이다.

문제 7

21-1

다음 설명에 해당하는 기술을 영문 약어로 적으시오.

  • 운영체제에서 서로 독립된 프로세스들이 데이터를 주고받거나 동작을 맞추기 위해 쓰는 방법을 통틀어 이른다.
  • 구현 수단으로 공유 메모리, 파이프, 소켓, 메시지 큐, 세마포어 등이 있다.
정답 및 해설

IPC


[해설]

독립된 프로세스들이 데이터를 주고받거나 동작을 맞추는 기법을 통틀어 IPC(Inter-Process Communication)라고 한다.

프로세스는 서로 메모리 공간이 분리돼 있다. 그래서 커널이 제공하는 공유 메모리·파이프·소켓·메시지 큐·세마포어 같은 통로를 거쳐야 데이터를 주고받을 수 있다.

문제 8

21-1

다음 설명에 해당하는 접근 통제 방식을 적으시오.

  • 객체에 대한 접근 허용 여부를 사용자 개인이나 그가 속한 그룹의 식별자(ID)를 기준으로 판단한다.
  • 객체의 소유자나 접근 권한을 가진 사용자가 자기 재량으로 다른 사용자에게 권한을 넘겨줄 수 있다.
정답 및 해설

임의적 접근 통제(DAC)


[해설]

임의적 접근 통제(DAC, Discretionary Access Control)는 사용자나 그룹의 신원(ID)을 기준으로 접근 허용 여부를 판단한다.

객체 소유자가 자기 재량으로 다른 사용자에게 권한을 넘겨줄 수 있어서 '임의적'이라고 부른다. 유닉스 파일 권한(소유자·그룹·기타의 rwx)이 대표적인 예다.

혼동 주의: 보안 등급을 비교해 시스템이 강제로 정하는 방식은 MAC, 직무 역할에 따라 권한을 주는 방식은 RBAC다.

문제 9

21-1

아래 Java 프로그램을 실행했을 때 출력되는 내용을 적으시오.

public class Main {
    public static void main(String[] args) {
        int k, t;
        for (k = 10, t = 0; k > 0; k -= 3) {
            t += k;
            System.out.print(k);
            if (k - 3 > 0)
                System.out.print("+");
            else
                System.out.print("=" + t);
        }
    }
}
정답 및 해설

10+7+4+1=22


[해설]

for 문은 k를 10부터 3씩 줄이며 k > 0인 동안 반복하고, 매번 t에 k를 더한 뒤 k를 출력한다. 다음 값 k−3이 양수면 '+'를, 아니면 '='와 누적합 t를 출력한다.

k=10 → t=10, 10+ 출력
k=7 → t=17, 7+ 출력
k=4 → t=21, 4+ 출력
k=1 → t=22, 1−3 < 0이므로 1=22 출력

print는 줄을 바꾸지 않아 출력이 한 줄로 이어지고, 최종 결과는 10+7+4+1=22다.

문제 10

21-1

다음 설명에 해당하는 솔루션을 영문 약어로 적으시오.

  • 기업 안에서 서로 다른 플랫폼 위에 구축된 여러 애플리케이션을 연결해, 정보를 전달·연계·통합할 수 있게 한다.
  • 구축 유형으로 Point-to-Point, Hub & Spoke, Message Bus, Hybrid 등이 있다.
정답 및 해설

EAI


[해설]

기업 내 이기종 애플리케이션을 통합하는 솔루션은 EAI(Enterprise Application Integration)이다.

  • Point-to-Point: 애플리케이션을 1:1로 직접 연결
  • Hub & Spoke: 가운데 허브가 중계(허브 장애 시 전체 영향)
  • Message Bus: 미들웨어(버스)를 두고 확장성을 확보
  • Hybrid: 그룹 내부는 허브, 그룹 간은 버스 방식

웹 서비스 기반으로 서비스 단위 통합을 하는 방식은 ESB로 구별된다.

문제 11

21-1

블랙박스 테스트 기법에 관한 예시이다. ①, ②에 해당하는 기법의 이름을 각각 적으시오.

  • ① 입력 조건이 '1 이상 100 이하'일 때, 오류가 몰리기 쉬운 경계 근처인 0, 1, 100, 101을 테스트 값으로 고른다.
  • ② 입력 값을 같은 결과가 기대되는 몇 개의 묶음(유효 구간·무효 구간)으로 나누고, 묶음마다 대표값 하나씩만 골라 검사한다.
정답 및 해설

① 경계값 분석

② 동등 분할


[해설]

두 기법 모두 내부 코드를 보지 않고 입력과 출력 명세만 보고 테스트 값을 고르는 블랙박스 테스트 기법이다.

  • 경계값 분석 — 오류가 몰리기 쉬운 경계값과 그 바로 안팎의 값(0, 1, 100, 101)을 고른다.
  • 동등 분할 — 입력을 유효 구간과 무효 구간으로 나누고, 구간마다 대표값 하나만 검사한다.

동등 분할은 동치 분할(Equivalence Partitioning)이라고도 한다. 이 밖의 블랙박스 기법으로는 원인-결과 그래프, 오류 예측, 비교 검사가 있다.

문제 12

21-1

다음 설명에 해당하는 프로토콜을 영문 약어로 적으시오.

  • 하드디스크가 없는 단말처럼 자신의 IP 주소를 보관하지 못하는 호스트가 사용한다.
  • 자신의 물리 주소(MAC 주소)를 담은 요청을 브로드캐스트하면, 서버가 그에 대응하는 IP 주소를 알려 준다.
  • IP 주소로 MAC 주소를 찾는 프로토콜과 반대 방향으로 동작해 '역순' 주소 결정 프로토콜이라 부른다.
정답 및 해설

RARP


[해설]

RARP(Reverse Address Resolution Protocol)는 자기 MAC 주소를 브로드캐스트해 RARP 서버로부터 자기 IP 주소를 받아 오는 프로토콜이다.

디스크가 없는 단말은 부팅할 때 자기 IP 주소를 모르기 때문에 이 방식으로 주소를 얻는다. 이름의 Reverse는 IP 주소로 MAC 주소를 찾는 ARP와 방향이 반대라는 뜻이다.

혼동 주의: RARP는 서브넷 마스크와 게이트웨이를 알려 줄 수 없어 오늘날에는 BOOTP와 DHCP로 대체되었다.

문제 13

21-1

아래 C 프로그램의 실행 결과를 적으시오.

#include <stdio.h>

struct Item {
    char code[8];
    int qty;
};

int main(void) {
    struct Item box[] = { {"AX", 14}, {"BQ", 27}, {"CM", 9}, {"DT", 33} };
    struct Item *p = box;
    p += 2;
    printf("%s\n", p->code);
    p--;
    printf("%d\n", p->qty);
    return 0;
}
정답 및 해설

CM
27


[해설]

구조체 포인터에 정수를 더하면 구조체 크기 단위로 이동한다. p는 box[0]에서 출발한다.

  • p += 2 → box[2]를 가리킴 → p->code는 "CM"
  • p-- → box[1]로 한 칸 되돌아옴 → p->qty는 27

출력은 CM과 27 두 줄이다.

문제 14

21-1

테스트 단계에 관한 설명이다. 빈칸 ①, ②에 알맞은 것을 [보기]에서 골라 기호로 적으시오.

  • ( ① ): 함수·서브루틴 같은 개별 모듈이 제 기능을 하는지 따로 떼어 확인한다.
  • ( ② ): 모듈들을 결합하면서 모듈 사이의 인터페이스가 올바르게 동작하는지 확인한다.

[보기] ㉠ 단위 테스트 ㉡ 알파 테스트 ㉢ 인수 테스트 ㉣ 시스템 테스트 ㉤ 통합 테스트 ㉥ 회귀 테스트

정답 및 해설

① ㉠

② ㉤


[해설]

테스트는 단위 → 통합 → 시스템 → 인수 순서로 범위를 넓혀 가며 진행한다.

  • 단위 테스트는 함수·서브루틴 같은 개별 모듈을 따로 떼어 기능이 맞는지 검사한다.
  • 통합 테스트는 모듈을 결합하면서 모듈 사이 인터페이스의 오류를 찾는다.

혼동 주의: 통합된 시스템 전체가 요구사항을 만족하는지 보는 것은 시스템 테스트이고, 수정 후 기존 기능을 다시 확인하는 것은 회귀 테스트다.

문제 15

21-1

IP 주소 체계에 관한 설명이다. 빈칸 ①, ②에 알맞은 숫자를 적으시오.

  • IPv6 주소는 총 ( ① )비트이며, 16비트씩 8개 필드로 나눠 16진수로 표기한다.
  • IPv4 주소는 총 32비트이며, ( ② )비트씩 4개 부분(옥텟)으로 나눠 점으로 구분한 10진수로 표기한다.
정답 및 해설

① 128

② 8


[해설]

IPv6 주소 길이는 128비트로, IPv4 주소 고갈 문제를 해결하려고 도입되었다.

IPv4는 32비트를 4개 옥텟으로 나누므로 한 부분은 8비트이고, 각 부분은 0~255 값을 가진다.

문제 16

21-1

다음 설명에 해당하는 데이터 모델링 기법을 적으시오.

  • 정규화를 마친 엔터티·속성·관계를 대상으로 한다.
  • 조회 성능을 높이고 개발·운영을 단순하게 하려고, 일부러 데이터를 중복시키거나 테이블을 합치거나 나눈다.
  • 정규화 원칙을 의도적으로 위배하므로 데이터 일관성 관리 부담이 늘어난다.
정답 및 해설

반정규화(De-normalization)


[해설]

성능을 위해 정규화된 모델에 중복·통합·분리를 적용하는 것은 반정규화(De-normalization)다. 비정규화·역정규화라고도 한다.

  • 테이블 통합·분할(수평·수직)
  • 중복 테이블 추가(집계·이력 테이블)
  • 중복 컬럼·파생 컬럼 추가

조인이 줄어 조회가 빨라지는 대신, 중복 데이터를 맞추는 갱신 비용이 커진다.

문제 17

21-1

[재고] 테이블에 아래 SQL 문을 실행했을 때 출력되는 값을 숫자로만 적으시오.

[재고]

번호수량
11060
22030
33080
44020
55090
SELECT COUNT(*) FROM 재고
WHERE 번호 >= 300 AND 수량 >= 50 OR 번호 = 220;
정답 및 해설

3


[해설]

논리 연산자는 AND가 OR에 앞서 계산되므로 조건은 (번호 >= 300 AND 수량 >= 50) OR 번호 = 220이다.

  • 앞 괄호를 만족: 330(80), 550(90)
  • 번호 = 220: 220(수량 30)도 포함
  • 110은 번호가, 440은 수량이 조건에 못 미쳐 제외

해당 행은 220·330·550으로 COUNT(*) 결과는 3이다. OR를 먼저 묶어 계산하면 220이 빠져 2가 나오니 주의한다.

문제 18

21-1

모듈 결합도에 관한 설명이다. 빈칸 ①~③에 알맞은 것을 [보기]에서 골라 기호로 적으시오.

  • ( ① ): 한 모듈이 다른 모듈 내부의 변수나 기능을 직접 가져다 쓴다.
  • ( ② ): 모듈 사이의 인터페이스로 배열·구조체·객체 같은 자료구조가 통째로 넘어간다.
  • ( ③ ): 매개변수를 거치지 않고, 모듈 밖에 선언된 전역 변수를 함께 참조하고 고치면서 서로 영향을 주고받는다.

[보기] ㉠ 공통 결합도 ㉡ 내용 결합도 ㉢ 스탬프 결합도 ㉣ 외부 결합도 ㉤ 자료 결합도 ㉥ 제어 결합도

정답 및 해설

① ㉡

② ㉢

③ ㉠


[해설]

모듈 결합도는 모듈끼리 서로 의존하는 정도이며, 약할수록 좋은 설계다.

  • 내용 결합도 — 다른 모듈 내부의 변수·기능을 직접 참조하는, 가장 강한 결합.
  • 스탬프 결합도 — 배열·구조체 같은 자료구조를 통째로 넘기는 결합.
  • 공통 결합도 — 매개변수 없이 전역 변수를 함께 참조·수정하는 결합.

결합도는 약한 것부터 자료 → 스탬프 → 제어 → 외부 → 공통 → 내용 순이다.

혼동 주의: 외부 결합도는 외부에서 선언한 데이터·통신 프로토콜을 참조하는 것이고, 전역 변수를 공유하는 것은 공통 결합도다.

문제 19

21-1

아래 [도서] 릴레이션의 카디널리티(Cardinality)와 차수(Degree)를 각각 구하시오.

[도서]

도서번호제목저자출판연도
B301자료구조 입문한서진2018
B302운영체제 이해강도현2020
B303네트워크 기초윤채원2019
B304데이터베이스 설계정민호2021
B305소프트웨어 공학임하율2017

(1) 카디널리티

(2) 차수

정답 및 해설

(1) 5

(2) 4


[해설]

카디널리티는 튜플(행)의 수로, B301~B305의 5다.

차수는 속성(열)의 수로, 도서번호·제목·저자·출판연도의 4다. 헤더 행은 튜플 수에 넣지 않는다.

문제 20

21-1

데이터 모델의 구성 요소 세 가지에 관한 설명이다. 빈칸 ①~③에 알맞은 구성 요소를 적으시오.

  • ( ① ): 데이터베이스에 저장된 실제 데이터를 처리(검색·삽입·삭제·갱신)하는 작업을 명세한다.
  • ( ② ): 논리적으로 표현된 개체 타입들 사이의 관계, 즉 데이터가 어떤 모양으로 짜여 있는지를 나타낸다.
  • ( ③ ): 데이터 무결성을 지키기 위해 저장될 수 있는 값에 거는 논리적 제약으로, 개체 무결성·참조 무결성 등이 있다.
정답 및 해설

① 연산(Operation)

② 구조(Structure)

③ 제약 조건(Constraint)


[해설]

데이터 모델은 구조·연산·제약 조건 세 가지 요소로 이루어진다.

  • 연산은 저장된 데이터를 검색·삽입·삭제·갱신하는 작업을 명세한다.
  • 구조는 개체 타입 사이의 관계, 즉 데이터가 어떤 모양으로 짜여 있는지를 나타낸다.
  • 제약 조건은 개체 무결성·참조 무결성처럼 저장될 수 있는 값에 거는 논리적 제한이다.

외우는 요령: 구조는 정적인 성질, 연산은 동적인 성질, 제약 조건은 무결성을 지키는 규칙이다.

정보처리기사 실기 기출문제모두CBT · moducbt.com
2021년 정보처리기사실기 1회차
총 20문항 · 주관식 · 정답·해설 포함
문제 1

21-1

아래 Python 프로그램을 실행한 결과를 적으시오.

class Route:
    stops = ["Yeosu", "Ulsan", "Namwon", "Gunsan", "Iksan"]

r = Route()
tag = ''
for s in r.stops:
    tag = s[0] + tag
print(tag)
정답 및 해설

IGNUY


[해설]

stops는 클래스 변수라 인스턴스 r을 통해서도 그대로 읽힌다. s[0]은 각 문자열의 첫 글자다.

  • 반복마다 첫 글자를 기존 tag의 앞에 붙인다(s[0] + tag).
  • Y → UY → NUY → GNUY → IGNUY

첫 글자들이 역순으로 쌓여 IGNUY가 출력된다.

문제 2

21-1

다음 설명에 해당하는 언어를 영문 약어로 적으시오.

  • 웹 서비스를 외부에 공개할 때 그 서비스를 어떻게 호출하는지 적어 둔 명세다.
  • 서비스 이름, 접근 위치(URL), 주고받는 메시지 형식, 사용하는 프로토콜 등을 담는다.
  • XML 문법으로 작성되며, UDDI에 등록되고 SOAP과 함께 쓰인다.
정답 및 해설

WSDL


[해설]

웹 서비스의 이름·위치·메시지 형식·프로토콜을 XML로 기술하는 것은 WSDL(Web Services Description Language)이다.

  • SOAP: XML 메시지를 HTTP 등으로 주고받는 통신 규약
  • UDDI: 웹 서비스 정보(WSDL)를 등록·검색하는 저장소
  • WSDL: 서비스 호출 방법을 적은 명세서
문제 3

21-1

빈칸 ( ㉮ )에 공통으로 들어갈 공격 기법을 적으시오.

  • ( ㉮ )은(는) 말 그대로 '세션을 가로챈다'는 뜻이다.
  • 공격자는 RST 패킷 등으로 피해자와 서버 사이의 정상 연결을 끊은 뒤, 다시 연결될 때 피해자 대신 자신이 그 연결을 차지한다.
  • ( ㉮ )은(는) 세션 관리의 취약점을 노리는 공격이다.
정답 및 해설

세션 하이재킹(Session Hijacking)


[해설]

세션 하이재킹(Session Hijacking)은 인증이 끝난 정상 세션을 가로채 사용자 행세를 하는 공격이다.

공격자는 RST 패킷으로 기존 연결을 끊고 TCP 순서 번호를 맞춰 끼어든다. 웹에서는 세션 ID(쿠키)를 훔쳐 같은 효과를 낸다.

이 과정에서 생기는 비정상적인 ACK 폭주(ACK Storm)가 탐지 단서가 된다. 대응책은 SSH·TLS 같은 암호화 통신과 세션 ID 주기적 재발급이다.

문제 4

21-1

데이터베이스 설계 단계에 관한 설명이다. 빈칸 ①~③에 알맞은 단계를 [보기]에서 골라 적으시오.

  • ( ① ): 사용할 DBMS의 특성과 성능을 따져 데이터가 실제로 저장될 구조(레코드 형식, 인덱스, 접근 경로 등)를 정한다. 테이블 정의서 같은 명세가 나온다.
  • ( ② ): 현실 세계를 추상화해 DBMS와 무관한 개념 구조로 표현한다. 대표 산출물은 E-R 다이어그램이다.
  • ( ③ ): 목표 DBMS가 따르는 데이터 모델(관계형 등)에 맞춰 스키마를 설계하고, 정규화와 트랜잭션 인터페이스 설계를 수행한다.

[보기] 개념적 설계, 구현, 논리적 설계, 물리적 설계, 요구사항 분석

정답 및 해설

① 물리적 설계

② 개념적 설계

③ 논리적 설계


[해설]

데이터베이스 설계는 요구사항 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현 순서로 진행한다.

  • 물리적 설계는 사용할 DBMS에 맞춰 레코드 형식·인덱스·접근 경로 같은 실제 저장 구조를 정한다.
  • 개념적 설계는 DBMS와 무관하게 현실 세계를 추상화하며, 대표 산출물은 E-R 다이어그램이다.
  • 논리적 설계는 관계형 같은 목표 데이터 모델에 맞춰 스키마를 만들고 정규화를 수행한다.

외우는 요령: DBMS와 무관하면 개념적 설계, 데이터 모델에 맞추면 논리적 설계, DBMS의 저장 구조를 정하면 물리적 설계다.

문제 5

21-1

아래 Java 프로그램의 출력 결과를 적으시오.

public class Main {
    public static void main(String[] args) {
        int[][] grid = { {12, 7}, {3, 9, 21, 5}, {40} };
        System.out.println(grid.length);
        System.out.println(grid[1].length);
        System.out.println(grid[2][0]);
        System.out.println(grid[1][2]);
        System.out.println(grid[0][1]);
    }
}
정답 및 해설

3
4
40
21
7


[해설]

grid는 행의 길이가 제각각인 가변 배열이며, 인덱스는 0부터 센다.

  • grid.length — 행의 개수이므로 3이다.
  • grid[1].length — 둘째 행 {3, 9, 21, 5}의 원소 수이므로 4다.
  • grid[2][0] — 셋째 행 {40}의 첫 원소이므로 40이다.
  • grid[1][2] — 둘째 행의 셋째 원소이므로 21이다.
  • grid[0][1] — 첫째 행의 둘째 원소이므로 7이다.

println은 값을 찍을 때 줄을 바꾸므로 한 줄에 하나씩 출력된다.

문제 6

21-1

요구사항을 성격에 따라 나눈 것이다. 빈칸 ①, ②에 알맞은 요구사항 유형을 적으시오.

  • ( ① ) 요구사항: 시스템이 무엇을 해야 하는지, 즉 제공해야 할 기능과 서비스를 정의한다. (예: 회원은 주문 내역을 조회할 수 있어야 한다.)
  • ( ② ) 요구사항: 기능 그 자체가 아니라 성능·보안·가용성처럼 시스템이 갖춰야 할 품질이나 구축상의 제약을 정의한다. (예: 조회 응답은 2초 안에 와야 한다.)
정답 및 해설

① 기능

② 비기능


[해설]

요구사항은 시스템이 무엇을 하는지(기능)와 그 일을 어떤 품질로 어떤 제약 아래 하는지(비기능)로 나뉜다.

  • 기능 요구사항 — 주문 내역 조회처럼 시스템이 제공할 기능과 서비스를 정한다.
  • 비기능 요구사항 — 응답 2초 이내처럼 성능·보안·가용성 같은 품질과 제약을 정한다.

외우는 요령: "~할 수 있어야 한다"는 동작이면 기능 요구사항이고, 수치나 품질 기준이면 비기능 요구사항이다.

문제 7

21-1

다음 설명에 해당하는 기술을 영문 약어로 적으시오.

  • 운영체제에서 서로 독립된 프로세스들이 데이터를 주고받거나 동작을 맞추기 위해 쓰는 방법을 통틀어 이른다.
  • 구현 수단으로 공유 메모리, 파이프, 소켓, 메시지 큐, 세마포어 등이 있다.
정답 및 해설

IPC


[해설]

독립된 프로세스들이 데이터를 주고받거나 동작을 맞추는 기법을 통틀어 IPC(Inter-Process Communication)라고 한다.

프로세스는 서로 메모리 공간이 분리돼 있다. 그래서 커널이 제공하는 공유 메모리·파이프·소켓·메시지 큐·세마포어 같은 통로를 거쳐야 데이터를 주고받을 수 있다.

문제 8

21-1

다음 설명에 해당하는 접근 통제 방식을 적으시오.

  • 객체에 대한 접근 허용 여부를 사용자 개인이나 그가 속한 그룹의 식별자(ID)를 기준으로 판단한다.
  • 객체의 소유자나 접근 권한을 가진 사용자가 자기 재량으로 다른 사용자에게 권한을 넘겨줄 수 있다.
정답 및 해설

임의적 접근 통제(DAC)


[해설]

임의적 접근 통제(DAC, Discretionary Access Control)는 사용자나 그룹의 신원(ID)을 기준으로 접근 허용 여부를 판단한다.

객체 소유자가 자기 재량으로 다른 사용자에게 권한을 넘겨줄 수 있어서 '임의적'이라고 부른다. 유닉스 파일 권한(소유자·그룹·기타의 rwx)이 대표적인 예다.

혼동 주의: 보안 등급을 비교해 시스템이 강제로 정하는 방식은 MAC, 직무 역할에 따라 권한을 주는 방식은 RBAC다.

문제 9

21-1

아래 Java 프로그램을 실행했을 때 출력되는 내용을 적으시오.

public class Main {
    public static void main(String[] args) {
        int k, t;
        for (k = 10, t = 0; k > 0; k -= 3) {
            t += k;
            System.out.print(k);
            if (k - 3 > 0)
                System.out.print("+");
            else
                System.out.print("=" + t);
        }
    }
}
정답 및 해설

10+7+4+1=22


[해설]

for 문은 k를 10부터 3씩 줄이며 k > 0인 동안 반복하고, 매번 t에 k를 더한 뒤 k를 출력한다. 다음 값 k−3이 양수면 '+'를, 아니면 '='와 누적합 t를 출력한다.

k=10 → t=10, 10+ 출력
k=7 → t=17, 7+ 출력
k=4 → t=21, 4+ 출력
k=1 → t=22, 1−3 < 0이므로 1=22 출력

print는 줄을 바꾸지 않아 출력이 한 줄로 이어지고, 최종 결과는 10+7+4+1=22다.

문제 10

21-1

다음 설명에 해당하는 솔루션을 영문 약어로 적으시오.

  • 기업 안에서 서로 다른 플랫폼 위에 구축된 여러 애플리케이션을 연결해, 정보를 전달·연계·통합할 수 있게 한다.
  • 구축 유형으로 Point-to-Point, Hub & Spoke, Message Bus, Hybrid 등이 있다.
정답 및 해설

EAI


[해설]

기업 내 이기종 애플리케이션을 통합하는 솔루션은 EAI(Enterprise Application Integration)이다.

  • Point-to-Point: 애플리케이션을 1:1로 직접 연결
  • Hub & Spoke: 가운데 허브가 중계(허브 장애 시 전체 영향)
  • Message Bus: 미들웨어(버스)를 두고 확장성을 확보
  • Hybrid: 그룹 내부는 허브, 그룹 간은 버스 방식

웹 서비스 기반으로 서비스 단위 통합을 하는 방식은 ESB로 구별된다.

문제 11

21-1

블랙박스 테스트 기법에 관한 예시이다. ①, ②에 해당하는 기법의 이름을 각각 적으시오.

  • ① 입력 조건이 '1 이상 100 이하'일 때, 오류가 몰리기 쉬운 경계 근처인 0, 1, 100, 101을 테스트 값으로 고른다.
  • ② 입력 값을 같은 결과가 기대되는 몇 개의 묶음(유효 구간·무효 구간)으로 나누고, 묶음마다 대표값 하나씩만 골라 검사한다.
정답 및 해설

① 경계값 분석

② 동등 분할


[해설]

두 기법 모두 내부 코드를 보지 않고 입력과 출력 명세만 보고 테스트 값을 고르는 블랙박스 테스트 기법이다.

  • 경계값 분석 — 오류가 몰리기 쉬운 경계값과 그 바로 안팎의 값(0, 1, 100, 101)을 고른다.
  • 동등 분할 — 입력을 유효 구간과 무효 구간으로 나누고, 구간마다 대표값 하나만 검사한다.

동등 분할은 동치 분할(Equivalence Partitioning)이라고도 한다. 이 밖의 블랙박스 기법으로는 원인-결과 그래프, 오류 예측, 비교 검사가 있다.

문제 12

21-1

다음 설명에 해당하는 프로토콜을 영문 약어로 적으시오.

  • 하드디스크가 없는 단말처럼 자신의 IP 주소를 보관하지 못하는 호스트가 사용한다.
  • 자신의 물리 주소(MAC 주소)를 담은 요청을 브로드캐스트하면, 서버가 그에 대응하는 IP 주소를 알려 준다.
  • IP 주소로 MAC 주소를 찾는 프로토콜과 반대 방향으로 동작해 '역순' 주소 결정 프로토콜이라 부른다.
정답 및 해설

RARP


[해설]

RARP(Reverse Address Resolution Protocol)는 자기 MAC 주소를 브로드캐스트해 RARP 서버로부터 자기 IP 주소를 받아 오는 프로토콜이다.

디스크가 없는 단말은 부팅할 때 자기 IP 주소를 모르기 때문에 이 방식으로 주소를 얻는다. 이름의 Reverse는 IP 주소로 MAC 주소를 찾는 ARP와 방향이 반대라는 뜻이다.

혼동 주의: RARP는 서브넷 마스크와 게이트웨이를 알려 줄 수 없어 오늘날에는 BOOTP와 DHCP로 대체되었다.

문제 13

21-1

아래 C 프로그램의 실행 결과를 적으시오.

#include <stdio.h>

struct Item {
    char code[8];
    int qty;
};

int main(void) {
    struct Item box[] = { {"AX", 14}, {"BQ", 27}, {"CM", 9}, {"DT", 33} };
    struct Item *p = box;
    p += 2;
    printf("%s\n", p->code);
    p--;
    printf("%d\n", p->qty);
    return 0;
}
정답 및 해설

CM
27


[해설]

구조체 포인터에 정수를 더하면 구조체 크기 단위로 이동한다. p는 box[0]에서 출발한다.

  • p += 2 → box[2]를 가리킴 → p->code는 "CM"
  • p-- → box[1]로 한 칸 되돌아옴 → p->qty는 27

출력은 CM과 27 두 줄이다.

문제 14

21-1

테스트 단계에 관한 설명이다. 빈칸 ①, ②에 알맞은 것을 [보기]에서 골라 기호로 적으시오.

  • ( ① ): 함수·서브루틴 같은 개별 모듈이 제 기능을 하는지 따로 떼어 확인한다.
  • ( ② ): 모듈들을 결합하면서 모듈 사이의 인터페이스가 올바르게 동작하는지 확인한다.

[보기] ㉠ 단위 테스트 ㉡ 알파 테스트 ㉢ 인수 테스트 ㉣ 시스템 테스트 ㉤ 통합 테스트 ㉥ 회귀 테스트

정답 및 해설

① ㉠

② ㉤


[해설]

테스트는 단위 → 통합 → 시스템 → 인수 순서로 범위를 넓혀 가며 진행한다.

  • 단위 테스트는 함수·서브루틴 같은 개별 모듈을 따로 떼어 기능이 맞는지 검사한다.
  • 통합 테스트는 모듈을 결합하면서 모듈 사이 인터페이스의 오류를 찾는다.

혼동 주의: 통합된 시스템 전체가 요구사항을 만족하는지 보는 것은 시스템 테스트이고, 수정 후 기존 기능을 다시 확인하는 것은 회귀 테스트다.

문제 15

21-1

IP 주소 체계에 관한 설명이다. 빈칸 ①, ②에 알맞은 숫자를 적으시오.

  • IPv6 주소는 총 ( ① )비트이며, 16비트씩 8개 필드로 나눠 16진수로 표기한다.
  • IPv4 주소는 총 32비트이며, ( ② )비트씩 4개 부분(옥텟)으로 나눠 점으로 구분한 10진수로 표기한다.
정답 및 해설

① 128

② 8


[해설]

IPv6 주소 길이는 128비트로, IPv4 주소 고갈 문제를 해결하려고 도입되었다.

IPv4는 32비트를 4개 옥텟으로 나누므로 한 부분은 8비트이고, 각 부분은 0~255 값을 가진다.

문제 16

21-1

다음 설명에 해당하는 데이터 모델링 기법을 적으시오.

  • 정규화를 마친 엔터티·속성·관계를 대상으로 한다.
  • 조회 성능을 높이고 개발·운영을 단순하게 하려고, 일부러 데이터를 중복시키거나 테이블을 합치거나 나눈다.
  • 정규화 원칙을 의도적으로 위배하므로 데이터 일관성 관리 부담이 늘어난다.
정답 및 해설

반정규화(De-normalization)


[해설]

성능을 위해 정규화된 모델에 중복·통합·분리를 적용하는 것은 반정규화(De-normalization)다. 비정규화·역정규화라고도 한다.

  • 테이블 통합·분할(수평·수직)
  • 중복 테이블 추가(집계·이력 테이블)
  • 중복 컬럼·파생 컬럼 추가

조인이 줄어 조회가 빨라지는 대신, 중복 데이터를 맞추는 갱신 비용이 커진다.

문제 17

21-1

[재고] 테이블에 아래 SQL 문을 실행했을 때 출력되는 값을 숫자로만 적으시오.

[재고]

번호수량
11060
22030
33080
44020
55090
SELECT COUNT(*) FROM 재고
WHERE 번호 >= 300 AND 수량 >= 50 OR 번호 = 220;
정답 및 해설

3


[해설]

논리 연산자는 AND가 OR에 앞서 계산되므로 조건은 (번호 >= 300 AND 수량 >= 50) OR 번호 = 220이다.

  • 앞 괄호를 만족: 330(80), 550(90)
  • 번호 = 220: 220(수량 30)도 포함
  • 110은 번호가, 440은 수량이 조건에 못 미쳐 제외

해당 행은 220·330·550으로 COUNT(*) 결과는 3이다. OR를 먼저 묶어 계산하면 220이 빠져 2가 나오니 주의한다.

문제 18

21-1

모듈 결합도에 관한 설명이다. 빈칸 ①~③에 알맞은 것을 [보기]에서 골라 기호로 적으시오.

  • ( ① ): 한 모듈이 다른 모듈 내부의 변수나 기능을 직접 가져다 쓴다.
  • ( ② ): 모듈 사이의 인터페이스로 배열·구조체·객체 같은 자료구조가 통째로 넘어간다.
  • ( ③ ): 매개변수를 거치지 않고, 모듈 밖에 선언된 전역 변수를 함께 참조하고 고치면서 서로 영향을 주고받는다.

[보기] ㉠ 공통 결합도 ㉡ 내용 결합도 ㉢ 스탬프 결합도 ㉣ 외부 결합도 ㉤ 자료 결합도 ㉥ 제어 결합도

정답 및 해설

① ㉡

② ㉢

③ ㉠


[해설]

모듈 결합도는 모듈끼리 서로 의존하는 정도이며, 약할수록 좋은 설계다.

  • 내용 결합도 — 다른 모듈 내부의 변수·기능을 직접 참조하는, 가장 강한 결합.
  • 스탬프 결합도 — 배열·구조체 같은 자료구조를 통째로 넘기는 결합.
  • 공통 결합도 — 매개변수 없이 전역 변수를 함께 참조·수정하는 결합.

결합도는 약한 것부터 자료 → 스탬프 → 제어 → 외부 → 공통 → 내용 순이다.

혼동 주의: 외부 결합도는 외부에서 선언한 데이터·통신 프로토콜을 참조하는 것이고, 전역 변수를 공유하는 것은 공통 결합도다.

문제 19

21-1

아래 [도서] 릴레이션의 카디널리티(Cardinality)와 차수(Degree)를 각각 구하시오.

[도서]

도서번호제목저자출판연도
B301자료구조 입문한서진2018
B302운영체제 이해강도현2020
B303네트워크 기초윤채원2019
B304데이터베이스 설계정민호2021
B305소프트웨어 공학임하율2017

(1) 카디널리티

(2) 차수

정답 및 해설

(1) 5

(2) 4


[해설]

카디널리티는 튜플(행)의 수로, B301~B305의 5다.

차수는 속성(열)의 수로, 도서번호·제목·저자·출판연도의 4다. 헤더 행은 튜플 수에 넣지 않는다.

문제 20

21-1

데이터 모델의 구성 요소 세 가지에 관한 설명이다. 빈칸 ①~③에 알맞은 구성 요소를 적으시오.

  • ( ① ): 데이터베이스에 저장된 실제 데이터를 처리(검색·삽입·삭제·갱신)하는 작업을 명세한다.
  • ( ② ): 논리적으로 표현된 개체 타입들 사이의 관계, 즉 데이터가 어떤 모양으로 짜여 있는지를 나타낸다.
  • ( ③ ): 데이터 무결성을 지키기 위해 저장될 수 있는 값에 거는 논리적 제약으로, 개체 무결성·참조 무결성 등이 있다.
정답 및 해설

① 연산(Operation)

② 구조(Structure)

③ 제약 조건(Constraint)


[해설]

데이터 모델은 구조·연산·제약 조건 세 가지 요소로 이루어진다.

  • 연산은 저장된 데이터를 검색·삽입·삭제·갱신하는 작업을 명세한다.
  • 구조는 개체 타입 사이의 관계, 즉 데이터가 어떤 모양으로 짜여 있는지를 나타낸다.
  • 제약 조건은 개체 무결성·참조 무결성처럼 저장될 수 있는 값에 거는 논리적 제한이다.

외우는 요령: 구조는 정적인 성질, 연산은 동적인 성질, 제약 조건은 무결성을 지키는 규칙이다.