정처기공유용
시험 직전 정리본 · 인쇄용

정보처리기사 시험장 직전 정리본

자주 출제되는 핵심 개념을 표 중심으로 정리. 시험 운, 합격 기원.


Part 1. 핵심 정리

구조 다이어그램 (Structure Diagrams) — 7종

시스템의 정적인 구조를 표현합니다.

다이어그램 핵심 내용
Class Diagram 클래스, 속성, 메서드, 관계
Object Diagram 특정 시점의 객체 인스턴스
Component Diagram 소프트웨어 컴포넌트 구성 및 의존성
Deployment Diagram 하드웨어/서버에 소프트웨어 배치 구조
Package Diagram 패키지(모듈) 간 관계와 계층
Composite Structure Diagram 클래스 내부의 세부 구조
Profile Diagram UML 확장을 위한 메타모델 정의

행위 다이어그램 (Behavior Diagrams) — 7종

시스템의 동적인 흐름과 상호작용을 표현합니다.

다이어그램 핵심 내용
Use Case Diagram 사용자(액터)와 시스템 기능 간 관계
Activity Diagram 작업 흐름, 분기, 병렬 처리
State Diagram (State Machine) 단일 객체의 상태 변화와 전이
Sequence Diagram 객체 간 메시지 교환 순서 (시간 축)
Communication Diagram 객체 간 상호작용 (구조 중심)
Timing Diagram 시간에 따른 상태/조건 변화
Interaction Overview Diagram 여러 상호작용 다이어그램의 흐름 요약

데이터 흐름도는 시스템 내에서 데이터가 어떻게 흐르고 처리되는지를 시각적으로 표현하는 구조적 분석 도구입니다.

DFD의 구성 요소는 정확히 4가지입니다.

구성 요소 영문 표기 기호 설명
프로세스 Process 원 (○) 데이터를 변환·처리하는 기능
데이터 흐름 Data Flow 화살표 (→) 데이터가 이동하는 경로
데이터 저장소 Data Store 평행선 (=) 데이터를 저장하는 공간 (파일, DB 등)
단말 Terminator / External Entity 사각형 (□) 시스템 외부의 입출력 주체 (사람, 조직 등)

럼바우(Rumbaugh) 분석 기법 — OMT(Object Modeling Technique)

럼바우 OMT — 3가지 모델 한눈에 비교

모델 핵심 질문 산출물 관점
객체 모델링 무엇이 있는가 객체 다이어그램 정적 구조
동적 모델링 어떻게 변하는가 상태 다이어그램 시간·상태
기능 모델링 무엇을 하는가 DFD 데이터 처리

정적 vs 동적 분석 비교

구분 정적 분석 동적 분석
실행 여부 실행 안 함 실행함
분석 시점 개발 중, 컴파일 전후 런타임
발견 대상 코드 결함, 보안 취약점, 규칙 위반 메모리 누수, 성능 병목, 런타임 오류
대표 도구 pmd, cppcheck, SonarQube Valgrind, JUnit

대표적인 정적 분석 도구

도구 대상 언어 특징
pmd Java 등 코드 스타일, 중복 코드, 불필요한 코드 탐지
cppcheck C, C++ 메모리 오류, 널 포인터, 버퍼 오버플로 탐지
SonarQube 다중 언어 코드 품질 종합 관리 플랫폼, 대시보드 제공
FindBugs / SpotBugs Java 바이트코드 분석으로 버그 패턴 탐지
Checkstyle Java 코딩 컨벤션 준수 여부 검사

시험에서는 pmd, cppcheck가 정적 분석 도구의 대표 예시로 자주 등장합니다.

"실행 없이 코드만 본다 = 정적" 으로 기억하세요.

정적 분석은 개발 초기에 결함을 발견할 수 있어 비용 효율이 높다는 점도 출제 포인트입니다.

선택 정렬 (Selection Sort)

개념

전체 데이터에서 가장 작은(또는 큰) 값을 선택하여 앞에서부터 차례로 채워나가는 정렬 방식입니다.

핵심 특징

항목 내용
시간 복잡도 최선 / 평균 / 최악 모두 O(n²)
공간 복잡도 O(1) — 제자리 정렬 (추가 메모리 불필요)
안정성 불안정(Unstable) 정렬
비교 횟수 항상 n(n-1)/2 번으로 고정
교환 횟수 최대 n-1번으로 버블 정렬보다 교환이 적음

다른 O(n²) 정렬과 비교

정렬 방식 안정성 특징
선택 정렬 최솟값 선택 후 교환 불안정 교환 횟수 가장 적음
버블 정렬 인접 요소 비교·교환 안정 구현 가장 단순
삽입 정렬 적절한 위치에 삽입 안정 거의 정렬된 경우 빠름

EAI 유형별 핵심 비교

유형 연결 방식 병목 확장성 특징
Point-to-Point 1:1 직접 연결 없음 낮음 미들웨어 없음
Hub & Spoke 중앙 허브 경유 있음 중간 단일 장애점
Message Bus 공유 버스 경유 적음 높음 분산 처리
Hybrid 혼합 최소화 높음 두 방식 결합

테스트 4단계 한눈에 비교

단계 대상 범위 주체 핵심 키워드
단위 테스트 개별 모듈 하나 개발자 모듈, 기능 정확성
통합 테스트 모듈 간 결합 개발자 인터페이스, 연동
시스템 테스트 전체 시스템 개발팀 요구사항 전체 검증
인수 테스트 전체 시스템 사용자/고객 요구사항 만족 여부

통합 테스트와 단위 테스트는 범위로 구분하세요. 모듈 하나면 단위, 여러 모듈 결합이면 통합입니다.

**스텁(Stub)과 드라이버(Driver)**는 통합 테스트에서 사용하는 도구로, 함께 출제되는 경우가 많습니다.

소프트웨어 테스트에서 오류의 80%는 전체 모듈의 20% 내에서 발견된다는 법칙은?

Pareto

선형/비선형 구조의 분류, 그리고 스택·큐의 동작 방식과 활용처를 정확히 알고 있는지를 평가합니다.

핵심 개념: 자료 구조 분류

선형 구조 (Linear)

데이터가 일렬로 나열된 구조입니다.

자료 구조 특징
배열 (Array) 인덱스로 접근, 크기 고정
연결 리스트 (Linked List) 포인터로 연결, 크기 가변
스택 (Stack) LIFO (Last In First Out)
큐 (Queue) FIFO (First In First Out)
데크 (Deque) 양쪽 끝에서 삽입/삭제 가능

비선형 구조 (Non-Linear)

데이터가 계층적 또는 망형으로 연결된 구조입니다.

자료 구조 특징
트리 (Tree) 계층 구조, 부모-자식 관계
그래프 (Graph) 노드와 간선, 순환 가능

스택과 큐 상세 비교

구분 스택 (Stack) 큐 (Queue)
처리 방식 LIFO (후입선출) FIFO (선입선출)
삽입 Push (top에 추가) Enqueue (rear에 추가)
삭제 Pop (top에서 제거) Dequeue (front에서 제거)
구조 분류 선형 선형
활용 예 함수 호출, 인터럽트, 수식 계산, 되돌리기(Undo) 프로세스 스케줄링, 프린터 대기열, BFS

스택의 주요 활용처 (시험 자주 출제)

서브루틴(함수) 호출: 복귀 주소를 스택에 저장

인터럽트 처리: 현재 상태를 스택에 보관 후 복귀

수식 계산: 후위 표기법(Postfix) 계산에 활용

수식 표기법 변환: 중위 → 후위 변환 시 사용

되돌리기(Undo): 최근 작업을 역순으로 취소

학습 팁

"스택 = LIFO = 선형", "큐 = FIFO = 선형" 을 한 세트로 암기하세요.

트리와 그래프만 비선형입니다. 스택과 큐를 비선형으로 혼동하는 경우가 많으니 주의하세요.

스택의 활용처 4가지(서브루틴, 인터럽트, 수식 계산, 수식 표기법)는 통째로 암기해 두는 것이 좋습니다.

분류 명령어
DDL CREATE, ALTER, DROP, TRUNCATE
DML SELECT, INSERT, UPDATE, DELETE
DCL GRANT, REVOKE
TCL COMMIT, ROLLBACK, SAVEPOINT

DDL (Data Definition Language) — 데이터 정의어

구조(스키마)를 생성·변경·삭제합니다.

명령어 기능
CREATE 테이블, 뷰 등 객체 생성
ALTER 구조 변경 (컬럼 추가/수정)
DROP 객체 완전 삭제
TRUNCATE 데이터만 전체 삭제 (구조 유지)

AUTO COMMIT — 실행 즉시 반영, ROLLBACK 불가

DML (Data Manipulation Language) — 데이터 조작어

데이터를 조회·삽입·수정·삭제합니다.

명령어 기능
SELECT 데이터 조회
INSERT 데이터 삽입
UPDATE 데이터 수정
DELETE 행 단위 삭제 (구조 유지)

COMMIT 전까지 ROLLBACK 가능

DCL (Data Control Language) — 데이터 제어어

권한을 부여하고 회수합니다.

명령어 기능
GRANT 권한 부여 (TO, WITH GRANT OPTION)
REVOKE 권한 회수 (FROM, CASCADE)

TCL (Transaction Control Language) — 트랜잭션 제어어

트랜잭션 상태를 제어합니다.

명령어 기능
COMMIT 변경사항 영구 확정
ROLLBACK 변경사항 취소·복귀
SAVEPOINT 중간 저장점 설정

핵심 암기 포인트

DDL → 구조 정의 → AUTO COMMIT (롤백 불가)

DML → 데이터 조작 → 트랜잭션 대상 (롤백 가능)

DCL → 권한 제어 → GRANT / REVOKE

TCL → 트랜잭션 제어 → COMMIT / ROLLBACK

핵심 개념: E-R 다이어그램 기호 체계

E-R(Entity-Relationship) 다이어그램은 데이터베이스의 개념적 설계 단계에서 사용하며, 각 요소를 고유한 도형으로 표현합니다.

기호 도형 의미
사각형 (□) 직사각형 개체 타입 (Entity Type)
타원 (○) 타원형 속성 (Attribute)
마름모 (◇) 다이아몬드 관계 타입 (Relationship Type)
선 (—) 실선 개체-속성 연결 / 개체-관계 연결
이중 타원 이중 타원형 다중값 속성
이중 사각형 이중 직사각형 약한 개체 타입
밑줄 타원 밑줄 있는 타원 기본키 속성

카디널리티 (Cardinality)

차수 (Degree)

핵심 개념: 관계대수 (Relational Algebra)

관계대수 vs 관계해석 비교

구분 관계대수 관계해석
언어 유형 절차적 비절차적
표현 방식 How (어떻게 구할 것인가) What (무엇을 원하는가)
기반 연산자 중심 논리식(술어 논리) 중심
종류 - 튜플 관계해석, 도메인 관계해석

관계대수 연산자 종류

일반 집합 연산

연산 기호 설명
합집합 두 릴레이션의 모든 튜플
교집합 공통 튜플
차집합 - 한쪽에만 있는 튜플
카티션 프로덕트 × 두 릴레이션의 모든 조합

순수 관계 연산

연산 기호 설명
셀렉트 σ 조건에 맞는 선택
프로젝트 π 원하는 선택
조인 공통 속성으로 두 릴레이션 결합
디비전 ÷ 특정 릴레이션을 포함하는 튜플 추출

IPv4 vs IPv6 핵심 비교

구분 IPv4 IPv6
주소 길이 32비트 128비트
표현 방식 10진수, 점(.) 구분 16진수, 콜론(:) 구분
예시 192.168.0.1 2001:0db8:85a3::8a2e
주소 개수 약 43억 개 사실상 무한
헤더 길이 가변 길이 40 octet 고정
주소 자동설정 지원 안 함 (DHCP 필요) Auto Configuration 지원
보안 IPSec 선택 적용 IPSec 기본 내장
QoS 미흡 흐름 레이블로 향상
브로드캐스트 지원 미지원
멀티캐스트 선택적 지원 기본 지원
애니캐스트 미지원 기본 지원
체크섬 헤더에 포함 헤더에서 제거

전송 방식 비교

방식 IPv4 IPv6
유니캐스트 (1:1)
멀티캐스트 (1:다)
브로드캐스트 (1:전체)
애니캐스트 (1:가장 가까운 1)

IPv4 클래스별 주소 범위

클래스 시작 주소 끝 주소 네트워크/호스트 비트
A 0.0.0.0 127.255.255.255 8 / 24
B 128.0.0.0 191.255.255.255 16 / 16
C 192.0.0.0 223.255.255.255 24 / 8
D 224.0.0.0 239.255.255.255 멀티캐스트용
E 240.0.0.0 255.255.255.255 연구/예약용

C언어 연산자 우선순위 (높음 → 낮음)

순위 연산자 종류 대표 연산자
1 단항 연산자 ++ -- ! ~ (type) sizeof
2 산술 연산자 * / % → + -
3 시프트 연산자 << >>
4 관계 연산자 < > <= >= → == !=
5 비트 연산자 & → ^ → `
6 논리 연산자 && → `
7 조건 연산자 ? :
8 대입 연산자 = += -= 등
9 쉼표 연산자 ,

핵심 개념: 흐름 제어 (Flow Control)

송신 측과 수신 측의 데이터 처리 속도 차이로 인한 데이터 손실을 방지하기 위해 송신량을 조절하는 기법입니다.

두 가지 흐름 제어 방식

1. 정지-대기 (Stop-and-Wait)

2. 슬라이딩 윈도우 (Sliding Window)

슬라이딩 윈도우 크기 조절 원리

상황 윈도우 크기 변화
ACK 수신 (정상) 증가 → 더 많은 패킷 전송 가능
NAK 수신 (오류 발생) 감소 → 전송량 줄임
타임아웃 발생 감소 → 혼잡 제어와 연계

ACK vs NAK

신호 의미 송신 측 반응
ACK (Acknowledgement) 정상 수신 확인 윈도우 크기 유지 또는 증가
NAK (Negative Acknowledgement) 오류 수신 윈도우 크기 감소, 재전송

핵심 개념: 구역성 (Locality)

프로세스가 실행될 때 일부 특정 페이지만 집중적으로 참조하는 경향을 말합니다. 캐시 메모리와 가상 메모리의 성능 이론적 근거가 됩니다.

두 가지 구역성 비교

구분 시간 구역성 (Temporal) 공간 구역성 (Spatial)
의미 최근에 참조한 데이터를 가까운 미래에 다시 참조 참조한 데이터 근처의 데이터를 참조
핵심 키워드 같은 위치를 반복 참조 인접한 위치를 참조
대표 예시 루프, 서브루틴, 스택, 카운터 변수 배열 순회, 순차적 코드 실행

핵심 개념: 결합도 (Coupling)

모듈 간의 상호 의존 정도를 나타내며, 낮을수록 좋은 설계입니다.

결합도 6종류 (높음 → 낮음)

순위 종류 핵심 특징
1 (가장 나쁨) 내용 결합도 (Content) 한 모듈이 다른 모듈의 내부 기능·내부 자료를 직접 참조
2 공통 결합도 (Common) **두 모듈이 *전역 변수(공유 데이터)*를 함께 사용
3 외부 결합도 (External) 외부에서 선언된 변수를 공유
4 제어 결합도 (Control) ***제어 신호(플래그, 스위치)*를 파라미터로 전달하여 상대 모듈의 흐름을 제어
5 스탬프 결합도 (Stamp) ***자료 구조(레코드, 구조체 전체)*를 파라미터로 전달
6 (가장 좋음) 자료 결합도 (Data) 필요한 데이터만 단순 파라미터로 전달

암기 팁

"내공외제스자" 로 순서를 외우세요.

내용 → 공통 → 외부 → 제어 → 스탬프 → 자료

(나쁨 ←————————————————→ 좋음)

C 언어 주요 표준 라이브러리

시험 출제 빈도가 높은 헤더와 함수만 선별 정리.

1. <stdio.h> — 입출력

Standard Input/Output

함수 기능
printf() 형식 지정 출력
scanf() 형식 지정 입력
gets() / puts() 문자열 입출력
getchar() / putchar() 문자 단위 입출력
fopen() / fclose() 파일 열기/닫기
fread() / fwrite() 파일 읽기/쓰기

2. <stdlib.h> — 일반 유틸리티

Standard Library

함수 기능
malloc() 동적 메모리 할당
calloc() 동적 할당 + 0으로 초기화
realloc() 할당된 메모리 크기 변경
free() 동적 메모리 해제
atoi() 문자열 → 정수 변환
atof() 문자열 → 실수 변환
rand() 난수 생성
srand() 난수 시드 설정
exit() 프로그램 종료
abs() 정수 절댓값

3. <string.h> — 문자열 처리

함수 기능
strlen() 문자열 길이 반환
strcpy() 문자열 복사
strcat() 문자열 이어붙이기
strcmp() 문자열 비교
strchr() 문자 탐색
strstr() 부분 문자열 탐색
memset() 메모리 블록 초기화
memcpy() 메모리 블록 복사

4. <math.h> — 수학 함수

함수 기능
sqrt() 제곱근
pow() 거듭제곱
abs() / fabs() 절댓값 (정수/실수)
ceil() 올림
floor() 내림
sin() / cos() / tan() 삼각함수
log() / log10() 자연로그 / 상용로그

5. <ctype.h> — 문자 분류·변환

함수 기능
isalpha() 알파벳 여부
isdigit() 숫자 문자 여부
isspace() 공백 여부
isupper() / islower() 대/소문자 여부
toupper() / tolower() 대/소문자 변환

6. <time.h> — 시간 처리

함수 기능
time() 현재 시간 반환
clock() CPU 실행 시간 측정
difftime() 두 시간의 차이

시험 출제 빈도 기준

★★★ stdio.h, stdlib.h, string.h

★★ math.h, ctype.h

★ time.h


Part 2. 필수 보충 4선

SOLID 5원칙

원칙 이름 핵심
S 단일 책임 (Single Responsibility) 클래스는 하나의 책임
O 개방-폐쇄 (Open-Closed) 확장 개방, 수정 폐쇄
L 리스코프 치환 (Liskov Substitution) 자식이 부모를 대체 가능
I 인터페이스 분리 (Interface Segregation) 사용 안 하는 인터페이스에 의존 금지
D 의존 역전 (Dependency Inversion) 구체가 아닌 추상에 의존

OSI 7계층 + TCP/IP 4계층

계층 OSI TCP/IP PDU 대표 프로토콜·장비
7 응용 (Application) 응용 Data HTTP, FTP, SMTP, DNS, Telnet
6 표현 (Presentation) 응용 Data SSL/TLS, JPEG, ASCII, MIME
5 세션 (Session) 응용 Data NetBIOS, RPC
4 전송 (Transport) 전송 Segment TCP, UDP / 게이트웨이
3 네트워크 (Network) 인터넷 Packet IP, ICMP, ARP / 라우터
2 데이터 링크 네트워크 액세스 Frame Ethernet, PPP / 브리지·스위치
1 물리 (Physical) 네트워크 액세스 Bit RS-232 / 리피터·허브

암기: "물데네전세표응" (1→7).

DB 정규화 (Normalization)

단계 조건 제거 대상
1NF 모든 속성이 원자값(Atomic) 다중값·반복 그룹
2NF 1NF + 부분 함수 종속 제거 (기본키 일부에만 종속 X) 부분 함수 종속
3NF 2NF + 이행 함수 종속 제거 (A→B→C 형태 X) 이행 종속
BCNF 3NF + 모든 결정자가 후보키 결정자가 후보키가 아닌 종속
4NF BCNF + 다치 종속 제거 다치 종속(MVD)
5NF 4NF + 조인 종속 제거 조인 종속

암기: "도부이결다조" — (원)도(부분)(이행)(결정자)(다치)(조인). 또는 "도(메인)·부·이·BC·다·조".

DB 키 종류

설명
슈퍼키 유일성 만족, 최소성 X
후보키 유일성 + 최소성 모두 만족
기본키 (PK) 후보키 중 선택된 것, NULL 불가, 중복 불가
대체키 후보키 중 PK가 아닌 나머지
외래키 (FK) 다른 릴레이션의 PK를 참조, NULL 가능