
📘 정보처리기사 필수 용어집
시험 5과목 핵심 용어를 간결하게 정리한 학습 노트
굵은 글씨(bold)는 시험 빈출 키워드 · 코드 서식은 약어·명령어
💡 학습 전략: 프로그래밍·SQL·자료구조는 실무로 이미 익숙하므로 빠르게 훑고 넘어가고, 한국 정처기 특유의 분류·순서 암기형 문제(디자인패턴, UML, 정규화 단계, 응집도/결합도, 암호 알고리즘 등)에 시간을 집중 투자할 것.
1주 이론 학습 계획
| 일차 | 범위 | 비고 |
|---|
| Day 1 | 1과목 소프트웨어 설계 | UML·디자인패턴 암기 위주 |
| Day 2 | 2과목 소프트웨어 개발 | 자료구조는 속독, 형상관리·패키징 집중 |
| Day 3~4 | 3과목 데이터베이스 구축 | 정규화·관계대수·트랜잭션 반복 암기 |
| Day 5 | 4과목 프로그래밍 언어 활용 | 강점 과목 → 코드 실행결과 유형만 집중 점검 |
| Day 6 | 5과목 정보시스템 구축 관리 | 암기량이 가장 많은 과목, 하루 전체 투자 |
| Day 7 | 전체 복습 + 취약 과목 재점검 | 오답노트 작성 후 다음 주 문제풀이 대비 |
목차
- 제1과목 : 소프트웨어 설계
- 제2과목 : 소프트웨어 개발
- 제3과목 : 데이터베이스 구축
- 제4과목 : 프로그래밍 언어 활용
- 제5과목 : 정보시스템 구축 관리
제1과목 : 소프트웨어 설계
01 요구사항 확인
소프트웨어 생명 주기 모델
| 모델 | 핵심 특징 |
|---|
| 폭포수 모델 (Waterfall) | 이전 단계로 돌아갈 수 없음. 단계별 철저한 검토 후 진행 |
| 프로토타입 모델 (Prototype) | 견본품(프로토타입)을 먼저 제작해 요구사항 파악 |
| 나선형 모델 (Spiral) | 계획 → 위험분석 → 개발 → 고객평가를 점진적·반복적으로 수행 |
| 애자일 모델 (Agile) | 일정 주기(스프린트)를 반복. 변화에 유연 |
| XP 기법 (eXtreme Programming) | 고객 참여 + 반복 개발. 핵심 가치: 의사소통·단순성·용기·존중·피드백 |
| 스크럼 (Scrum) | 짧은 주기(스프린트) 반복 + 일일 스크럼 회의. 제품 백로그·스프린트 백로그 관리 |
💡 애자일 세부 방법론: XP(익스트림 프로그래밍), 스크럼(Scrum), 칸반(Kanban) — 이름과 특징 매칭 문제 자주 출제
현행 시스템 분석 (요구공학의 출발점)
DBMS·플랫폼·네트워크 등 현재 운영 중인 환경을 먼저 파악하는 단계. 시험에서는 아래 스키마 3단계 구조가 자주 출제됨.
| 스키마 | 관점 |
|---|
| 외부 스키마 | 사용자·응용 프로그래머 관점의 개별 논리적 구조(뷰) |
| 개념 스키마 | 조직 전체 관점에서 객체·구조·제약을 통합 정의 (스키마 = 1개만 존재) |
| 내부 스키마 | 물리적 저장 장치 관점의 전체 DB 명세 |
DBMS — 사용자와 DB 사이에서 정보를 생성·관리하는 소프트웨어
요구사항 개발 프로세스
요구사항 도출 → 요구사항 분석 → 요구사항 명세 → 요구사항 확인
| 단계 | 설명 |
|---|
| 도출 | 사용자와 의견 교환으로 요구사항 수집 (설문·인터뷰·브레인스토밍·유스케이스 등) |
| 분석 | 타당성 조사 및 불명확한 부분 제거. DFD·DD 도구 활용 |
| 명세 | 분석 결과를 모델로 작성·문서화 |
| 확인 | 명세서가 정확·완전하게 작성되었는지 검토 |
구조적 분석 도구
DFD (자료 흐름도) — 자료 흐름과 기능을 도형으로 표현DD (자료 사전) — DFD의 자료를 상세히 기록. “데이터의 데이터” = 메타 데이터HIPO — 입력·처리·출력 과정을 계층 구조로 표현 (가시적/총체적/세부적 도표)
UML 다이어그램 — 구조적(정적) vs 행위적(동적)
UML은 크게 구조 다이어그램(시스템의 정적 구조)과 행위 다이어그램(시간에 따른 동작)으로 나뉨. 시험에는 다이어그램 이름과 용도를 매칭시키는 문제가 매우 자주 출제된다.
| 구분 | 다이어그램 | 용도 |
|---|
| 구조 (정적) | 클래스 다이어그램 | 클래스 간 속성·메소드·관계 표현 |
| 구조 (정적) | 컴포넌트 다이어그램 | 컴포넌트 간 의존 관계 표현 |
| 구조 (정적) | 배치 다이어그램 | 하드웨어·소프트웨어의 물리적 배치 표현 |
| 행위 (동적) | 유스케이스 다이어그램 | 사용자 요구사항 분석, 기능 모델링 |
| 행위 (동적) | 시퀀스 다이어그램 | 시간 흐름에 따른 객체 간 메시지 교환 표현 |
| 행위 (동적) | 상태 다이어그램 | 객체 상태 변화 표현 |
| 행위 (동적) | 액티비티 다이어그램 | 업무 처리 흐름을 순서도 형태로 표현 |
💡 구조 다이어그램 7종(클래스·객체·컴포넌트·배치·복합체구조·패키지·프로파일), 행위 다이어그램 7종(유스케이스·시퀀스·상태·액티비티·커뮤니케이션·상호작용개요·타이밍) — 표에 없는 나머지는 “구조 vs 행위” 구분만 가능하면 충분
02 화면 설계
UI 설계 도구 비교
| 도구 | 특징 |
|---|
| 와이어프레임 | 초기 레이아웃 틀 설계. 가장 단순 |
| 스토리보드 | 와이어프레임 + 흐름 설명. 디자이너·개발자 최종 지침서 |
| 목업 (Mockup) | 실제 화면과 유사한 정적 모형 |
| 프로토타입 | 인터랙션 적용, 실제처럼 테스트 가능한 동적 모형 |
💡 정적 vs 동적: 목업(정적) vs 프로토타입(동적)
소프트웨어 품질 요구사항 (ISO/IEC 25010)
| 항목 | 핵심 한 줄 요약 |
|---|
| 기능성 (Functionality) | 요구 기능을 정확히 제공하는가 |
| 신뢰성 (Reliability) | 오류 없이 일관되게 수행하는가 |
| 사용성 (Usability) | 사용자가 쉽게 이해하고 다시 쓰고 싶은가 |
| 효율성 (Efficiency) | 한정 자원 내에서 얼마나 빠른가 |
| 유지 보수성 (Maintainability) | 변경·확장이 얼마나 용이한가 |
| 이식성 (Portability) | 다른 환경에서도 쉽게 적용되는가 |
03 애플리케이션 설계
객체지향(OO) 핵심 개념
| 용어 | 한 줄 정의 |
|---|
| 객체 (Object) | 데이터 + 처리 함수를 묶은 소프트웨어 모듈 |
| 클래스 (Class) | 객체를 추상화한 단위(설계도) |
| 인스턴스 (Instance) | 클래스로부터 생성된 각각의 객체 |
| 메시지 (Message) | 객체 간 상호작용 수단 |
객체지향 4대 특성
| 기법 | 설명 |
|---|
| 캡슐화 | 데이터와 함수를 하나로 묶고 외부 접근을 제한 |
| 상속성 | 상위 클래스의 속성·메소드를 하위 클래스가 재사용 |
| 다형성 | 같은 메시지에 객체마다 다르게 응답 (오버로딩: 매개변수 다른 동일 이름 메소드 / 오버라이딩: 상위 클래스 메소드 재정의) |
| 추상화 | 공통 속성·기능을 추출해 상위 개념으로 정의 |
럼바우(Rumbaugh) 객체지향 분석 3단계
- 객체 모델링 — 객체 다이어그램으로 속성·관계 표현 (= 정보 모델링)
- 동적 모델링 — 상태 다이어그램으로 시간에 따른 행위 표현
- 기능 모델링 —
DFD로 프로세스 간 자료 흐름 표현
결합도 (낮을수록 품질 ↑)
자료 < 스탬프 < 제어 < 외부 < 공유 < 내용 결합도
(약함 ←—————————————→ 강함)
| 유형 | 설명 |
|---|
| 자료 결합도 (Data) | 인터페이스가 자료 요소로만 구성 → 가장 약함(좋음) |
| 스탬프 결합도 (Stamp) | 자료구조 전체(레코드 등)를 참조하며 넘김 |
| 제어 결합도 (Control) | 제어 신호(플래그 등)를 주고받아 흐름을 제어 |
| 공유 결합도 (Common) | 공통 데이터 영역을 여러 모듈이 공유 |
| 내용 결합도 (Content) | 다른 모듈 내부를 직접 참조·수정 → 가장 강함(나쁨) |
응집도 (높을수록 품질 ↑)
기능적 > 순차적 > 교환적 > 절차적 > 시간적 > 논리적 > 우연적
(강함 ←—————————————→ 약함)
| 유형 | 설명 |
|---|
| 기능적 응집도 | 모든 기능 요소가 단일 문제와 연관 → 가장 강함(좋음) |
| 순차적 응집도 | 한 요소의 출력이 다음 요소의 입력이 됨 |
| 절차적 응집도 | 구성 요소들이 순차적으로 기능 수행 |
| 시간적 응집도 | 특정 시간에 처리되어야 하는 기능들을 모음 (초기화 모듈 등) |
| 우연적 응집도 | 서로 무관한 요소로만 구성 → 가장 약함(나쁨) |
디자인 패턴 (GoF, 총 23가지)
생성(5) · 구조(7) · 행위(11) 3계열로 분류. 시험은 이름-용도 매칭 위주로 출제되므로 빈출 패턴만 우선 암기.
| 계열 | 패턴 | 핵심 용도 |
|---|
| 생성 | 싱글톤 (Singleton) | 인스턴스를 오직 하나만 생성해 어디서든 동일 객체 참조 |
| 생성 | 팩토리 메소드 (Factory Method) | 객체 생성을 서브클래스에 위임 |
| 생성 | 빌더 (Builder) | 복잡한 객체를 단계적으로 생성 |
| 구조 | 어댑터 (Adapter) | 호환되지 않는 인터페이스를 연결 |
| 구조 | 데코레이터 (Decorator) | 객체에 동적으로 기능을 추가 |
| 구조 | 퍼사드 (Facade) | 복잡한 서브시스템에 단순한 인터페이스 제공 |
| 행위 | 옵서버 (Observer) | 상태 변화를 다른 객체에 자동 통지 (1:N 의존) |
| 행위 | 전략 (Strategy) | 알고리즘을 캡슐화해 런타임에 교체 가능 |
| 행위 | 상태 (State) | 객체 상태에 따라 행위를 다르게 처리 |
💡 암기 포인트: “생성 5 / 구조 7 / 행위 11”, 그리고 표의 9개 패턴은 매년 반복 출제되는 핵심 패턴
04 인터페이스 설계
미들웨어(Middleware) 종류
| 종류 | 설명 |
|---|
DB | 클라이언트 ↔ 원격 데이터베이스 연결 |
RPC | 원격 프로시저를 로컬처럼 호출 |
MOM | 비동기 방식 메시지 기반 통신 |
TP-Monitor | 항공·철도 예약 등 온라인 트랜잭션 처리·감시 |
WAS | 웹 서버 + 애플리케이션 실행 환경 제공 |
제2과목 : 소프트웨어 개발
01 데이터 입출력 구현 (자료구조)
프로그래밍 실무에서 익숙한 영역이므로 표로 빠르게 훑고 넘어갈 것.
| 구조 | 특징 |
|---|
| 스택 (Stack) | 한쪽에서만 삽입·삭제. 후입선출(LIFO) |
| 큐 (Queue) | 한쪽 삽입, 반대쪽 삭제. 선입선출(FIFO) |
| 데크 (Deque) | 양쪽에서 삽입·삭제 모두 가능 |
| 그래프 | vertex(정점) + edge(간선)으로 구성, 순환 가능 |
| 트리 | 회로 없이 두 노드를 잇는 길이가 하나뿐인 그래프(비순환) |
정렬 알고리즘 요약 (평균 시간복잡도 포함)
| 정렬 | 방식 | 평균 시간복잡도 |
|---|
| 삽입 정렬 | 정렬된 데이터 사이 적절한 위치에 삽입 | O(n²) |
| 선택 정렬 | 가장 작은 값을 찾아 앞과 교환 | O(n²) |
| 버블 정렬 | 인접한 두 값 비교 후 큰 값을 뒤로 이동 | O(n²) |
| 퀵 정렬 | 기준키(pivot) 기준으로 분할 정복 | O(n log n) |
| 힙 정렬 | 완전 이진 트리(힙) 구조로 정렬 | O(n log n) |
| 합병 정렬 | 분할 후 정렬된 데이터를 병합 | O(n log n) |
| 기수 정렬 | 자릿수별로 반복 정렬 | O(dn) |
💡 정처기는 정렬 이름과 “무엇을 기준으로 동작하는가”를 묻는 문제가 많다. 시간복잡도까지 O(n²) 계열/O(n log n) 계열로 구분해서 암기.
02 통합 구현
형상관리 (Configuration Management)
소스코드 버전·변경 이력을 체계적으로 관리하는 활동. 식별 → 통제 → 감사 → 기록 4단계로 구성.
| 도구 | 특징 |
|---|
| Git | 분산형 형상관리, 로컬 저장소에서도 버전 관리 가능 |
| SVN (Subversion) | 중앙집중형, 하나의 중앙 서버에 저장소 존재 |
| CVS | 초기 중앙집중형 도구, SVN의 전신 |
03 제품소프트웨어 패키징
| 개념 | 설명 |
|---|
| 애플리케이션 패키징 | 개발 완료된 SW를 배포 가능한 형태로 묶는 작업. 사용자 편의성 중심 |
DRM (디지털 저작권 관리) | 콘텐츠 제공자, 클리어링하우스, 패키저, DRM 컨트롤러, 보안 컨테이너로 구성되어 저작권 보호·인증·유통 통제 |
빌드 자동화 도구
| 도구 | 특징 |
|---|
| Ant | XML 기반 스크립트, 절차 직접 명시 필요 |
| Maven | pom.xml로 의존성(라이브러리) 자동 관리 |
| Gradle | Groovy/Kotlin DSL 기반, Maven보다 빌드 속도 빠름 |
04 애플리케이션 테스트 관리
테스트 분류
| 구분 | 설명 |
|---|
| 정적 테스트 | 코드를 실행하지 않고 명세·코드를 검토해 결함 발견 |
| 동적 테스트 | 실제 프로그램을 실행해 오류 탐지 |
| 화이트 박스 테스트 | 내부 소스 코드 로직(제어 흐름)을 직접 테스트. 기본 경로 검사, 조건/분기 커버리지 |
| 블랙 박스 테스트 | 내부를 보지 않고 입·출력값으로 유효성 판단 |
블랙 박스 테스트 기법
- 경계값 분석 — 경계 값과 그 인접 양쪽 값을 이용해 테스트
- 동치(등가) 분할 — 입·출력 값을 그룹으로 분류, 그룹 내 값은 동일하게 취급
테스트 레벨
단위 테스트 → 통합 테스트 → 시스템 테스트 → 인수 테스트
| 레벨 | 설명 |
|---|
| 단위 테스트 | 각 모듈이 명세대로 구현되었는지 확인 |
| 통합 테스트 | 모듈 통합 시 발생하는 오류 탐지 |
| 시스템 테스트 | 전체 시스템 정상 작동 확인 |
| 인수 테스트 | 요구 사항에 맞는지 최종 확인 |
- 하향식 통합: 상위 → 하위 모듈 순으로 통합, 이때 하위 모듈 자리를 대신하는 스텁(Stub) 사용
- 상향식 통합: 하위 → 상위 모듈 순으로 통합, 이때 상위 모듈 자리를 대신하는 드라이버(Driver) 사용
소스 코드 품질분석 도구
| 구분 | 설명 |
|---|
| 정적 분석 도구 | 코드를 실행하지 않고 코딩 스타일·잠재 결함 분석 (예: pmd, checkstyle, SonarQube) |
| 동적 분석 도구 | 실행 중 메모리 누수·오류 등을 분석 (예: Valgrind) |
05 인터페이스 구현 (EAI 구축 유형)
| 유형 | 설명 |
|---|
| Point to Point | 애플리케이션 1:1 연결 (가장 기본) |
| Hub & Spoke | 단일 허브를 통한 중앙 집중형 전송 |
| Message Bus | 애플리케이션 사이에 미들웨어를 두어 처리 |
| Hybrid | Hub & Spoke + Message Bus 혼합 |
ESB (Enterprise Service Bus) — 연계·데이터 변환·웹 서비스 표준 기반 솔루션
제3과목 : 데이터베이스 구축
01 SQL 응용/활용
SQL 언어 분류
| 분류 | 명령어 | 설명 |
|---|
DDL (데이터 정의어) | CREATE ALTER DROP | DB 구성 요소 정의·변경·삭제 |
DML (데이터 조작어) | INSERT UPDATE DELETE SELECT | 데이터 삽입·수정·삭제·조회 |
DCL (데이터 제어어) | GRANT REVOKE COMMIT ROLLBACK | 권한 부여·취소, 트랜잭션 제어 |
💡 COMMIT = 트랜잭션 종료·확정 / ROLLBACK = 변경 취소·되돌리기
JOIN 종류
| 종류 | 설명 |
|---|
| INNER JOIN | 양쪽 테이블에 모두 존재하는 행만 반환 |
| LEFT/RIGHT OUTER JOIN | 한쪽 테이블 기준으로 일치하지 않는 행도 NULL 채워 반환 |
| FULL OUTER JOIN | 양쪽 테이블의 모든 행 반환 |
| SELF JOIN | 같은 테이블을 자기 자신과 조인 |
집합 연산자
| 연산자 | 설명 |
|---|
| UNION | 두 결과의 합집합, 중복 제거 |
| UNION ALL | 합집합, 중복 포함 |
| INTERSECT | 교집합 |
MINUS (EXCEPT) | 차집합 |
02 논리 데이터베이스 설계
관계형 DB 주요 용어
| 용어 | 정의 |
|---|
| 튜플 (Tuple) | 릴레이션의 각 행(Row) |
| 속성 (Attribute) | DB를 구성하는 가장 작은 논리적 단위(열) |
| 도메인 (Domain) | 속성이 취할 수 있는 원자 값들의 집합 |
키(Key) 종류
| 키 | 설명 |
|---|
| 후보키 | 유일성 + 최소성 만족 |
| 기본키 (Primary Key) | 각 튜플을 고유하게 식별하는 속성 (Null·중복 불가) |
| 슈퍼키 | 유일성 만족, 최소성은 불필요 |
| 외래키 (Foreign Key) | 다른 릴레이션의 기본키를 참조하는 속성 |
- 유일성: 하나의 키로 하나의 튜플만 식별 / 최소성: 꼭 필요한 속성으로만 구성
관계대수 (Relational Algebra)
| 구분 | 연산자 | 설명 |
|---|
| 순수 관계 연산자 | Select (σ) | 조건을 만족하는 행(튜플) 선택 |
| 순수 관계 연산자 | Project (π) | 지정한 열(속성)만 선택, 중복 제거 |
| 순수 관계 연산자 | Join (⋈) | 공통 속성을 기준으로 두 릴레이션 결합 |
| 순수 관계 연산자 | Division (÷) | 두 릴레이션에서 나눗셈처럼 특정 조건 만족 행 추출 |
| 일반 집합 연산자 | ∪ ∩ − × | 합집합·교집합·차집합·교차곱 |
이상(Anomaly) 현상과 정규화
| 이상 | 설명 |
|---|
| 삽입 이상 | 삽입 시 원치 않는 값이 함께 삽입 |
| 삭제 이상 | 삭제 시 필요한 데이터까지 함께 손실 |
| 갱신 이상 | 일부만 수정해 데이터 불일치 발생 |
정규화 — 이상 현상 제거를 위해 함수 종속 관계를 분석하여 릴레이션을 분해하는 과정. 단계별로 “무엇을 제거하는가”가 시험 핵심 포인트.
| 단계 | 제거 대상 |
|---|
| 1NF | 모든 속성값이 원자값(더 이상 분해 불가)이 되도록 분해 |
| 2NF | 부분 함수 종속 제거 (기본키 일부에만 종속되는 속성 분리) |
| 3NF | 이행 함수 종속 제거 (A→B→C 관계에서 B→C를 분리) |
| BCNF | 결정자가 후보키가 아닌 함수 종속 제거 |
- 반정규화 — 조회 성능 향상을 위해 의도적으로 정규화 원칙을 위배 (테이블 통합·중복·분리)
03 트랜잭션과 회복·병행제어
ACID 속성
| 속성 | 설명 |
|---|
| 원자성 (Atomicity) | 전부 실행되거나 전혀 실행되지 않아야 함 (All or Nothing) |
| 일관성 (Consistency) | 완료 후에도 DB가 일관된 상태 유지 |
| 독립성 (Isolation) | 다른 트랜잭션의 연산이 끼어들지 못함 |
| 지속성 (Durability) | 완료된 결과는 영구적으로 반영 |
트랜잭션 상태
활동(Active) → 부분완료(Partially Committed) → 완료(Committed)
↘ 실패(Failed) → 철회(Aborted)
회복 기법 / 병행제어 기법
| 기법 | 설명 |
|---|
| 로그 기반 회복 | 로그(변경 이력)를 이용해 장애 발생 시 DB를 이전 상태로 복구 |
| 체크포인트 기법 | 특정 시점(체크포인트) 이후 로그만으로 빠르게 복구 |
| 로킹(Locking) | 트랜잭션이 사용 중인 데이터에 잠금을 걸어 병행 접근 제어 |
| 타임스탬프 순서법 | 트랜잭션 시작 시각(타임스탬프) 순서로 실행 순서 결정 |
04 물리 데이터베이스 설계
인덱스 (Index)
| 종류 | 특징 |
|---|
| B-tree 인덱스 | 범위 검색(BETWEEN, <, >)에 강함, 가장 일반적 |
| 해시 인덱스 | 등가 검색(=)에 강함, 범위 검색 불가 |
파티셔닝 / 클러스터링
- 파티셔닝 — 대용량 테이블을 범위·해시·목록 기준으로 물리적으로 분할 저장 (조회 성능 향상)
- 클러스터링 — 자주 함께 조회되는 데이터를 물리적으로 인접하게 저장
05 데이터 전환
ETL (Extraction, Transformation, Loading) — 데이터를 추출·변환·적재하는 데이터 이관 프로세스- 데이터 정제 — 오류·중복·결측 데이터를 표준화·보정하는 작업
제4과목 : 프로그래밍 언어 활용
💡 실무 프로그래밍 경험이 강점인 과목. 문법 자체보다 정처기 특유의 “코드 실행 결과 예측” 문제 유형(연산자 우선순위, 형변환, 배열·포인터 인덱싱)에 익숙해지는 것이 관건.
01 기본 문법 활용
변수(기억 클래스) 종류 — C 언어
| 유형 | 특징 |
|---|
| 자동 변수 | 블록 내에서만 유효, 블록 종료 시 소멸 |
| 정적 변수 | 프로그램 종료까지 기억 공간 유지 |
| 외부 변수 | 다른 파일에서 선언된 변수·함수 참조 |
| 레지스터 변수 | CPU 레지스터에 저장, 처리 속도 향상 |
연산자 우선순위 (헷갈리기 쉬운 순서)
() [] → 단항(!, ++, --) → 산술(*, /, %, +, -) → 관계(<, >) → 논리(&&, ||) → 대입(=) → 콤마(,)
💡 기출은 a = b++ + ++c; 같은 전위/후위 증감 연산자 혼합 코드의 실행 결과를 자주 물어본다.
프로그래밍 언어 분류
| 분류 | 대표 언어 |
|---|
| 절차적 | C, ALGOL, COBOL, FORTRAN |
| 객체지향 | JAVA, C++, Smalltalk |
| 스크립트 | JavaScript, Python, Shell Script |
| 선언형 | SQL, Prolog, HTML |
02 응용 SW 기초 기술 (운영체제)
기억장치 관리 전략
| 전략 | 설명 |
|---|
| 반입 전략 | 보조기억장치의 데이터를 언제 주기억장치로 적재할지 결정 |
| 배치 전략 | 새 프로그램을 주기억장치 어디에 배치할지 결정 |
| 교체 전략 | 주기억장치가 꽉 찼을 때 어느 영역을 교체할지 결정 |
가상 기억장치 관련 개념
| 용어 | 설명 |
|---|
| 페이징 | 가상기억장치를 같은 크기 블록으로 분할해 관리 |
| 세그먼테이션 | 프로그램을 다양한 크기의 논리 단위로 분할해 적재 |
| 구역성 (Locality) | 프로세스 실행 중 일부 페이지만 집중 참조하는 성질 |
| 스래싱 | 페이징이 너무 빈번해 시스템이 거의 유효한 작업을 못 하는 상태 |
페이지 교체 알고리즘
| 알고리즘 | 설명 |
|---|
OPT | 앞으로 가장 오래 사용되지 않을 페이지 교체 (최적, 이론적) |
FIFO | 가장 먼저 들어온 페이지를 먼저 교체 |
LRU | 가장 오랫동안 참조되지 않은 페이지를 교체 (실무에서 가장 흔히 쓰임) |
LFU | 참조 횟수가 가장 적은 페이지를 교체 |
CPU 스케줄링
| 분류 | 설명 |
|---|
| 비선점 스케줄링 | CPU를 할당받으면 완료까지 빼앗기지 않음 |
| 선점 스케줄링 | 우선순위가 높은 프로세스가 CPU를 빼앗을 수 있음 |
SJF | 실행 시간이 가장 짧은 프로세스 먼저 처리 (비선점) |
RR (Round Robin) | 정해진 시간 할당량(Time Slice)만큼씩 순환 실행 (선점) |
HRN | 응답률 = (대기시간 + 서비스시간) / 서비스시간, 값이 클수록 우선순위↑ → 오래 기다린 프로세스의 기아 상태 방지 |
03 네트워크 기초 활용
OSI 7계층
| 계층 | 이름 | 주요 기능 |
|---|
| 7 | 응용 계층 | 사용자 직접 서비스 제공 |
| 6 | 표현 계층 | 인코딩·디코딩, 암호화, 데이터 압축 |
| 5 | 세션 계층 | 논리적 연결 확립·관리 |
| 4 | 전송 계층 | 투명한 데이터 전송, 신뢰성 보장 |
| 3 | 네트워크 계층 | 경로 선택, 흐름·오류 제어 |
| 2 | 데이터 링크 계층 | 오류 검출·수정 |
| 1 | 물리 계층 | 비트 스트림 전송, 전기·기계적 규정 |
💡 암기 팁: “물데네전세표응”
TCP vs UDP
| 구분 | TCP | UDP |
|---|
| 연결 방식 | 연결형 (3-way handshake) | 비연결형 |
| 신뢰성 | 보장 (재전송, 순서제어) | 보장 안 함 |
| 속도 | 상대적으로 느림 | 빠름 |
| 활용 예 | HTTP, FTP, 이메일 | DNS, 스트리밍, 실시간 게임 |
IP 주소 체계
| 클래스 | 범위 | 용도 |
|---|
| A | 0 ~ 127 | 대규모 네트워크 |
| B | 128 ~ 191 | 중규모 네트워크 |
| C | 192 ~ 223 | 소규모 네트워크 |
| D | 224 ~ 239 | 멀티캐스트 전용 |
- IPv6: 16비트 × 8부분 = 총 128비트. 유니캐스트(1:1)·멀티캐스트(1:다)·애니캐스트(가장 가까운 노드로)
주요 네트워크 장비
| 장비 | 기능 |
|---|
| 라우터 (Router) | LAN↔LAN 또는 LAN↔WAN 연결, 최적 경로 결정 |
| 게이트웨이 (Gateway) | 서로 다른 네트워크 프로토콜 간 변환·연결 |
| 브리지 (Bridge) | 두 LAN을 서로 연결, 데이터링크 계층에서 동작 |
제5과목 : 정보시스템 구축 관리
💡 실무 경험만으로 커버하기 어려운, 암기량이 가장 많은 과목. 특히 보안(시큐어코딩·암호 알고리즘)과 비용산정 공식은 반드시 표를 통째로 암기할 것.
01 소프트웨어 개발 방법론 활용
비용 산정 기법
| 기법 | 설명 |
|---|
| 하향식 | 전문가 경험·회의 기반 (전문가 감정, 델파이 기법) |
| 상향식 | 세부 작업 단위별로 산정 후 합산 (LOC, Effort Per Task) |
| 수학적 | 경험적 공식 사용 (COCOMO, Putnam) |
LOC — 예측치 = (비관치 + 4×기대치 + 낙관치) / 6COCOMO — 추정 LOC 기반 개발 노력·기간 계산. 프로젝트 규모에 따라 3유형: Organic(소규모·단순), Semi-detached(중규모), Embedded(대규모·복잡, 하드웨어 제약 큼)
프로젝트 일정 관리
| 기법 | 특징 |
|---|
CPM (임계 경로법) | 시간 + 비용 모두 고려. 임계 경로(최장 경로) 도출 |
PERT | 시간만 고려. 작업 간 상호관계를 네트워크로 표현, 3점 추정 사용 |
02 IT 신기술 용어
| 용어 | 설명 |
|---|
IoT (사물인터넷) | 사물에 센서 부착, 실시간으로 인터넷 데이터 교환 |
M2M | 사물 간 센싱·제어·정보교환 기술 |
| 클라우드 컴퓨팅 | 인터넷 서버를 통해 IT 서비스를 한 번에 이용 |
| 빅데이터 | 방대한 규모, 짧은 생성 주기의 대규모 데이터 (3V: Volume, Velocity, Variety) |
| 하둡 (Hadoop) | 대용량 데이터 분산 처리 공개 소스 프레임워크 |
| 블록체인 | 분산형 데이터 저장으로 위·변조 방지 기술 |
| 디지털 트윈 | 현실 사물을 가상세계에 구현해 모의시험 |
RAID | 소용량 디스크 여러 대를 배열로 묶어 대용량·가용성 확보 |
OLAP | 대용량 데이터를 다양한 관점에서 분석하는 BI 기술 |
| 데이터 마이닝 | 대량 데이터에서 유용한 상관관계를 발견해 의사결정 지원 |
03 소프트웨어 개발 보안 구축
Secure SDLC
요구사항 분석 단계부터 보안을 내재화하는 개발 생명주기. “보안을 나중에 붙이지 않고 처음부터 설계에 포함”이 핵심 포인트.
요구사항 분석(보안요구사항 정의) → 설계(위협 모델링) → 구현(시큐어 코딩) → 테스트(보안 취약점 점검) → 운영(패치·모니터링)
시큐어 코딩 4대 항목 (행정안전부 가이드 기준)
| 항목 | 대표 취약점 | 설명 |
|---|
| 입력 데이터 검증 및 표현 | SQL Injection, XSS, 버퍼 오버플로우 | 외부 입력값을 검증 없이 처리해 발생하는 공격 |
| 보안 기능 | 부적절한 인증/접근제어 | 인증·권한 관리 로직 결함 |
| 에러 처리 | 민감정보 노출 | 에러 메시지에 시스템 내부 정보 노출 |
| 세션 통제 | 세션 하이재킹, CSRF | 세션 관리 미흡으로 인한 도용 |
암호 알고리즘
| 구분 | 알고리즘 | 특징 |
|---|
| 대칭키 (비밀키) | DES, AES | 암·복호화에 같은 키 사용, 속도 빠름, 키 분배 어려움 |
| 비대칭키 (공개키) | RSA | 공개키/개인키 쌍 사용, 속도 느림, 키 분배 문제 해결 |
| 해시 | SHA-256, MD5 | 단방향 암호화, 복호화 불가, 데이터 무결성 검증에 사용 |
접근 통제 모델
| 모델 | 설명 |
|---|
DAC (임의적 접근통제) | 데이터 소유자가 접근 권한을 직접 결정 |
MAC (강제적 접근통제) | 시스템이 보안 등급에 따라 강제로 접근 통제 |
RBAC (역할기반 접근통제) | 사용자의 역할(Role)에 따라 권한 부여 |
04 시스템 보안 구축
주요 해킹 공격 유형
| 공격 | 설명 |
|---|
DoS (서비스 거부) | 대량 접속 신호로 서버 마비 |
DDoS (분산 서비스 거부) | 다수의 좀비 PC로 DoS 공격 |
| 스니핑 (Sniffing) | 네트워크 트래픽을 도청해 정보 탈취 |
| 키 로거 공격 | 키보드 입력을 탐지해 ID·패스워드 탈취 |
| 백 도어 | 몰래 설치된 비인가 접근 통신 연결 기능 |
| 랜섬웨어 | 중요 파일 접근 차단 후 금품 요구 악성 프로그램 |
| 트로이 목마 | 정상 프로그램으로 위장한 자료 삭제·정보 탈취 악성 코드 |
보안 솔루션
| 솔루션 | 설명 |
|---|
| 방화벽 (Firewall) | 외부에서 내부 네트워크로의 불법 접근 차단 |
IDS (침입 탐지 시스템) | 비정상 트래픽을 탐지만 함 (사후 대응) |
IPS (침입 방지 시스템) | 비정상 트래픽을 탐지 후 실시간 차단까지 수행 |
VPN | 인터넷망을 전용선처럼 암호화해 사용 |
NAC | 보안 정책에 부합하는 단말기에만 네트워크 접근 허용 |
📝 최종 암기 체크리스트
- 결합도는 낮을수록, 응집도는 높을수록 좋다
- 트랜잭션 특성 ACID, 정규화 단계 1NF→2NF→3NF→BCNF와 각 단계 제거 대상
- 디자인 패턴 생성 5 / 구조 7 / 행위 11, 그중 싱글톤·팩토리메소드·옵서버·전략·어댑터는 반드시 암기
- OSI 7계층 순서(물데네전세표응)와 각 계층의 역할 구분
- SQL
DDL·DML·DCL 명령어 분류, JOIN·집합연산자 종류 - 시큐어 코딩 4대 항목과 암호 알고리즘(대칭키/비대칭키/해시) 구분
- CPU 스케줄링
HRN 공식, 페이지 교체 LRU/LFU/OPT/FIFO 차이
📊 이력서 기반 과목별 학습 우선순위
🔥 집중 공부 필요 (생소한 영역)
5과목 정보시스템 구축 관리 — 최우선
- 비용산정(COCOMO/PERT/CPM), 시큐어코딩, 암호 알고리즘, Secure SDLC, 접근통제모델 등은 트레이딩 알고리즘·ML 프로젝트 경력에서 전혀 다뤄본 적 없는 순수 암기 영역
- 실무 감으로 유추할 수 있는 부분이 거의 없어서, 이론 학습 시간을 가장 많이 배정해야 함
3과목 데이터베이스 구축 — 집중
- MySQL로 데이터 저장·조회는 해봤지만(Naver News 프로젝트), 그건 “SQL 문법 사용자” 수준. 정규화 단계, 관계대수(σ/π/⋈/÷), 트랜잭션 상태·회복/병행제어, 인덱스 설계 같은 “DB 설계자” 이론은 학교(EEIE)에서도 실무에서도 다룬 흔적이 없음
- SQL 문법(DDL/DML/DCL, JOIN)은 빠르게, 설계 이론은 꼼꼼히
⚖️ 중간 — 개념은 쉽지만 암기 분류표가 많음
1과목 소프트웨어설계
- 객체지향 개념(캡슐화/상속/다형성) 자체는 Python/Java/C++ 실무 경험으로 직관적으로 이해 가능
- 다만 UML 다이어그램 종류, 디자인패턴 23종, 결합도/응집도 순서, 미들웨어 종류는 코드로 체득한 게 아니라 “시험용 분류표”라서 암기가 별도로 필요
✅ 빠르게 넘어가도 되는 영역
4과목 프로그래밍 언어 활용 — 최강점
- Python, Java, C/C++, R을 실제로 써왔고 Linux/Docker 환경 경험도 있어 기본문법·제어문·OS·쉘스크립트는 대부분 아는 내용
- 예외: 네트워크 파트(OSI 7계층, TCP/UDP, IP 클래스)는 직접 다뤄본 적 없어 보이니 여기만 짧게 암기
2과목 소프트웨어개발
- 자료구조/정렬은 Operations Research 배경 덕에 무난, 코드 리뷰·디버깅·테스트도 실무 감각으로 커버 가능
- 형상관리(Git 정도는 알겠지만 SVN 비교), 빌드도구(Ant/Maven/Gradle), DRM은 처음 보는 용어일 수 있으니 그 부분만 콕 집어 암기
💡 학습 시간 배분 우선순위: 5과목 > 3과목 > 1과목 > 2과목 ≈ 4과목