정처기보충
시험 직전 정리본 · 인쇄용

응집도 (Cohesion) — 7종 · 약함 → 강함

모듈 내부 요소들이 얼마나 밀접하게 연관되어 있는가. 높을수록 좋은 설계 (결합도와 반대).

순위 종류 핵심 특징
1 (가장 나쁨) 우연적 (Coincidental) 관련 없는 기능들이 우연히 한 모듈에 모임
2 논리적 (Logical) 비슷한 성격의 작업을 묶음, 매개변수로 동작 선택
3 시간적 (Temporal) 같은 시점에 실행되어야 하는 기능들 (예: 초기화 루틴)
4 절차적 (Procedural) 정해진 순서대로 수행되는 기능들 (제어 흐름 공유)
5 통신적 (Communication) 동일한 입출력 자료를 사용하는 기능들
6 순차적 (Sequential) 한 기능의 출력이 다음 기능의 입력
7 (가장 좋음) 기능적 (Functional) 모든 요소가 단일 목적 수행

암기: "우논시절통순기" — 우(연) 논(리) 시(간) 절(차) 통(신) 순(차) 기(능). 결합도 "내공외제스자"와 짝.


디자인 패턴 (GoF) — 23개

생성 (Creational) · 5개

패턴 핵심
Singleton 인스턴스 하나만 보장, 전역 접근
Factory Method 객체 생성을 서브클래스에 위임
Abstract Factory 관련 객체군을 인터페이스로 생성
Builder 복잡한 객체를 단계적으로 조립
Prototype 기존 객체를 복제(clone) 해서 생성

구조 (Structural) · 7개

패턴 핵심
Adapter 호환되지 않는 인터페이스를 변환
Bridge 추상과 구현을 분리해 독립적 변경
Composite 객체를 트리 구조로 구성, 부분-전체 동일 처리
Decorator 객체에 기능을 동적 추가 (상속 대안)
Facade 복잡한 서브시스템에 단순화된 창구 제공
Flyweight 공유를 통해 다수의 작은 객체 효율적 사용
Proxy 객체 접근을 대리(권한·지연·원격)

행위 (Behavioral) · 11개

패턴 핵심
Chain of Responsibility 요청을 여러 객체가 순차 처리
Command 요청을 객체로 캡슐화 (Undo/Redo 가능)
Interpreter 언어/문법의 해석기 정의
Iterator 컬렉션 내부 노출 없이 순차 접근
Mediator 객체 간 상호작용을 중재자가 캡슐화
Memento 객체 상태를 저장/복원 (Undo)
Observer 상태 변화 시 구독자에게 통지 (Pub/Sub)
State 상태 변화에 따라 행동 변경
Strategy 알고리즘을 교체 가능한 객체로 캡슐화
Template Method 알고리즘 골격을 정의, 단계는 서브클래스
Visitor 구조를 바꾸지 않고 새 연산 추가

시험 단골: Singleton·Factory·Adapter·Observer·Strategy·Template Method.


소프트웨어 개발 방법론

모델 특징
폭포수 (Waterfall) 순차적 진행, 단계 완료 후 다음 진행. 변경 어려움
프로토타입 견본품 제작 → 사용자 평가 → 개선. 요구사항 불명확 시
나선형 (Spiral) 위험 분석 중심, 점진적 개발. 계획→위험분석→개발→평가 반복
반복적 (Iterative) 점증적·반복적으로 개발 (RUP)
애자일 (Agile) 짧은 주기 반복, 변화 수용. 개인·소통·동작·협력 중시
V-모델 폭포수 + 검증/확인 강조 (각 개발단계에 대응되는 테스트단계)

애자일 4가지 가치 (Agile Manifesto)

Scrum 핵심 용어


객체지향 4대 특징 + SOLID 5원칙

객체지향 4특징 (캡상다추)

특징 설명
캡슐화 데이터+메서드 묶고 외부 은닉(Hiding)
상속 부모 클래스의 속성·메서드 재사용
다형성 같은 메시지에 객체마다 다르게 반응 (Overriding)
추상화 공통 속성을 추출해 단순화

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).

라우팅 프로토콜

분류 프로토콜 알고리즘 특징
IGP (내부) RIP 거리 벡터 (홉 수) 최대 15홉, UDP 520, 소규모
IGP (내부) OSPF 링크 상태 (Dijkstra) 대규모, 빠른 수렴, 영역(Area) 분할
EGP (외부) BGP 경로 벡터 AS 간 라우팅, 인터넷 백본

DB 정규화 (Normalization)

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

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

트랜잭션 ACID

특성 의미
Atomicity (원자성) 전부 반영되거나 전부 취소 (All or Nothing)
Consistency (일관성) 트랜잭션 전후 DB 무결성 제약 유지
Isolation (격리성) 동시 실행 트랜잭션이 서로 영향 X
Durability (영속성) 완료된 트랜잭션은 영구 반영 (장애에도 보존)

DB 키 종류

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

OS — 페이지 교체 알고리즘

알고리즘 풀어쓰기 교체 대상
OPT Optimal 앞으로 가장 오래 안 쓸 페이지 (이론)
FIFO First In First Out 가장 먼저 들어온 페이지
LRU Least Recently Used 가장 오래전 사용된 페이지
LFU Least Frequently Used 사용 횟수가 가장 적은 페이지
NUR Not Used Recently 최근 미사용 (참조·변경 비트 사용)
SCR Second Chance FIFO + 참조비트 검사

Belady's Anomaly: 프레임 수 증가 시 페이지 부재가 오히려 증가하는 현상 — FIFO에서 발생.

프로세스 스케줄링

알고리즘 선점/비선점 기준
FCFS 비선점 도착 순서
SJF 비선점 실행시간 짧은 순 (기아 발생 가능)
SRT 선점 SJF의 선점형, 남은 실행시간 짧은 순
Priority 선점/비선점 우선순위 (기아 → 에이징(Aging) 으로 해결)
RR 선점 타임 퀀텀(Time Quantum)으로 순환
HRN 비선점 우선순위 = (대기시간 + 서비스시간) / 서비스시간
MLQ/MLFQ 선점 다단계 큐 / 피드백 큐

교착상태 (Deadlock)

4가지 발생 조건 (모두 충족 시 발생):

  1. 상호배제 (Mutual Exclusion) — 자원을 한 번에 한 프로세스만
  2. 점유와 대기 (Hold and Wait) — 자원 보유 + 다른 자원 대기
  3. 비선점 (Non-preemption) — 강제 회수 불가
  4. 환형 대기 (Circular Wait) — 순환적 대기 사슬

처리 방법 4가지: 예방(Prevention) · 회피(Avoidance, 은행원 알고리즘) · 탐지(Detection) · 회복(Recovery).


테스트 기법 (블랙박스 vs 화이트박스)

구분 블랙박스 (명세 기반) 화이트박스 (구조 기반)
관점 기능·요구사항 내부 코드 흐름
시점 주로 인수·시스템 단계 주로 단위 단계
대표 기법 동등 분할, 경계값 분석, 원인-결과 그래프, 오류 추측, 비교 검사 문장/분기/조건/경로 커버리지, 기초 경로, 루프

테스트 커버리지 (강도 약 → 강)

문장 → 분기(결정) → 조건 → 분기-조건 → 다중 조건 → 변형 조건/결정(MC/DC)

McCabe 순환 복잡도 = E − N + 2

(E: 간선 수, N: 노드 수). 10 이하 권장.

테스트 오라클 (Oracle)


빈출 보너스 한 줄 정리