정보처리기사 · 필기 대비

암기노트 + 실전문제 956제

시나공 필수 계산 39 · 필수 코드 57 · 잘못된 문장 찾기 191 · 키워드 찾기 256 · 종류·순서 113 + 2025년 1~3회 기출(300)

위 탭에서 암기노트/추가암기와 출처별 실전 문제를 오갈 수 있어요. 문제는 선택지를 먼저 골라본 뒤 "정답 확인"을 눌러 채점하세요. 검색은 현재 탭 안에서만 걸러집니다.

0장필수 계산 공식 모음

DB 기본 계산

  • 카디널리티 vs 차수(Degree) - 카디널리티=튜플(행) 수, 차수=속성(컬럼) 수. 서로 절대 헷갈리지 말 것.
  • 튜플 최대 수 = 각 속성 도메인 값 개수를 모두 곱한 값 (예: 3×2×4=24)
  • 교차곱(Cartesian Product) - 차수=두 릴레이션 차수의 합, 카디널리티=두 릴레이션 카디널리티의 곱
  • Division 연산 - R에서 S의 속성값을 모두 가진 튜플을 추출한 뒤, S가 가진 속성을 제외한 나머지 속성만 남김

숫자로 직접 따라가기 - 학생 릴레이션 예시로 카디널리티·차수 세어보기

학생 릴레이션 - 헤더 행=속성(컬럼), 데이터 행 각각=튜플(행)
학번이름학년전공
2021001김하나2컴퓨터공학
2021002이도현3정보통신
2021003박서연1소프트웨어
카디널리티(행 수)=3 (튜플 3개) / 차수(열 수)=4 (속성 4개: 학번·이름·학년·전공)

숫자로 직접 따라가기 - 속성 3개, 각 도메인 값 개수 3×2×4로 튜플 최대 수 계산

각 속성의 도메인(가능한 값의 집합) 크기를 모두 곱하면 나올 수 있는 튜플의 최대 개수
속성도메인(가능한 값)도메인 크기
학년{1, 2, 3}3
성별{남, 여}2
전공{컴공, 정통, 소프트, 산업}4
튜플 최대 수 = 3 × 2 × 424

숫자로 직접 따라가기 - R(차수2, 카디널리티2) × S(차수1, 카디널리티3) 교차곱

R 릴레이션 (차수=2, 카디널리티=2)
사번이름
1철수
2영희
S 릴레이션 (차수=1, 카디널리티=3)
부서
기획
개발
영업
R × S 교차곱 결과 - 차수=2+1=3, 카디널리티=2×3=6
사번이름부서
1철수기획
1철수개발
1철수영업
2영희기획
2영희개발
2영희영업
총 6개 튜플 (2×3), 차수 3 (2+1)

기억장치 배치 전략

  • First Fit - 들어갈 수 있는 첫 번째 빈 영역에 배치
  • Best Fit - 들어갈 수 있는 가장 작은(단편화 최소) 빈 영역에 배치
  • Worst Fit - 가장 큰(단편화 최대로 남는) 빈 영역에 배치
  • 내부 단편화 = 배치된 빈 영역 크기 − 실제 필요 크기

숫자로 직접 따라가기 - 빈 영역 [15K, 23K, 22K, 21K]에 17K 프로그램을 배치할 때 전략별 차이

배치 전 빈 영역 목록 (나열 순서대로 검사)
영역1영역2영역3영역4
15K23K22K21K
17K 프로그램 배치 전략별 비교 (17K 이상인 영역만 배치 가능: 23K, 22K, 21K)
전략선택 과정배치 영역내부 단편화
First Fit순서대로 검사 - 15K(17K 미만이라 불가) → 23K(가능) → 즉시 선택23K23-17=6K
Best Fit배치 가능한 영역(23K, 22K, 21K) 중 가장 작은 것 선택21K21-17=4K
Worst Fit배치 가능한 영역(23K, 22K, 21K) 중 가장 큰 것 선택23K23-17=6K

정렬 알고리즘 진행 패턴

  • 버블 정렬 - 인접한 두 값을 비교해 교환, 한 회전마다 최댓값이 끝으로 이동
  • 선택 정렬 - 남은 값 중 최솟값을 찾아 해당 회전의 맨 앞 위치와 교환
  • 삽입 정렬 - 두 번째 값부터 그 앞쪽과 비교하며 삽입 위치를 찾아 삽입
  • 세 알고리즘 모두 O(n²) - 힙·퀵·합병 정렬은 O(n log n)과 헷갈리지 말 것

숫자로 직접 따라가기 - 배열 [5, 2, 4, 1] 오름차순 정렬 (세 알고리즘 모두 같은 배열로 비교)

버블 정렬 - 인접한 두 값을 비교해 왼쪽이 크면 교환, 한 회전 끝마다 남은 구간의 최댓값이 맨 뒤로 확정
단계비교 내용배열 상태
시작-[5, 2, 4, 1]
1회전5·2 비교 → 5>2 교환[2, 5, 4, 1]
5·4 비교 → 5>4 교환[2, 4, 5, 1]
5·1 비교 → 5>1 교환 → 5 확정[2, 4, 1, 5]
2회전2·4 비교 → 2<4 유지[2, 4, 1, 5]
4·1 비교 → 4>1 교환 → 4 확정[2, 1, 4, 5]
3회전2·1 비교 → 2>1 교환 → 2 확정[1, 2, 4, 5]
정렬 완료 (4개 원소 → n-1=3회전)[1, 2, 4, 5]
선택 정렬 - 아직 정렬 안 된 구간에서 최솟값을 찾아 그 구간 맨 앞과 교환
단계탐색·교환 내용배열 상태
시작-[5, 2, 4, 1]
1회전[5,2,4,1] 중 최솟값 1 탐색 → idx0(5)과 교환[1, 2, 4, 5]
2회전남은 [2,4,5] 중 최솟값 2 → 이미 맨 앞, 교환 없음[1, 2, 4, 5]
3회전남은 [4,5] 중 최솟값 4 → 이미 맨 앞, 교환 없음[1, 2, 4, 5]
정렬 완료 (4개 원소 → n-1=3회전)[1, 2, 4, 5]
삽입 정렬 - 정렬된 앞부분과 비교하며 다음 값이 들어갈 자리를 찾아 밀어 넣기
단계비교·삽입 내용배열 상태
시작[5]는 정렬된 것으로 간주, 나머지 2,4,1 대기[5, 2, 4, 1]
2번째 값 삽입2 vs 5 → 2<5라 5를 뒤로 밀고 맨 앞에 삽입[2, 5, 4, 1]
3번째 값 삽입4 vs 5 → 밀림 / 4 vs 2 → 4>2라 정지, 2 뒤에 삽입[2, 4, 5, 1]
4번째 값 삽입1 vs 5,4,2 순서로 비교 → 전부 밀림, 맨 앞에 삽입[1, 2, 4, 5]
정렬 완료[1, 2, 4, 5]

운영체제 · 메모리

  • CPM 임계경로(Critical Path) = 여러 경로 중 소요 기일이 가장 긴(최장) 경로
  • 세그먼트 물리주소 변환 = 세그먼트 시작주소 + 변위(offset)값
  • 페이지 교체 알고리즘 - FIFO: 가장 먼저 적재된 페이지부터 교체 / LRU: 가장 오랫동안 참조되지 않은 페이지를 교체. 프레임 개수만큼 표를 그려 참조열을 순서대로 추적하면 부재 횟수를 셀 수 있음
  • umask 계산 - 파일 기본권한 666 − umask = 실제 파일 권한 / 디렉터리 기본권한 777 − umask = 실제 디렉터리 권한
  • SSTF 디스크 스케줄링 - 현재 헤드 위치에서 가장 가까운 트랙 요청부터 순서대로 처리

숫자로 직접 따라가기 - 참조열 2,3,2,1,5,2,4,5,3,2 / 프레임 3개, FIFO와 LRU 페이지 부재 비교

FIFO - 가장 먼저 들어온 페이지부터 교체
순서참조값적중/부재프레임 상태
12부재[2]
23부재[2, 3]
32적중[2, 3]
41부재[2, 3, 1]
55부재 (가장 먼저 들어온 2 교체)[3, 1, 5]
62부재 (가장 먼저 들어온 3 교체)[1, 5, 2]
74부재 (가장 먼저 들어온 1 교체)[5, 2, 4]
85적중[5, 2, 4]
93부재 (가장 먼저 들어온 5 교체)[2, 4, 3]
102적중[2, 4, 3]
총 부재 7회 / 적중 3회[2, 4, 3]
LRU - 가장 오랫동안 참조되지 않은 페이지부터 교체
순서참조값적중/부재프레임 상태
12부재{2}
23부재{2, 3}
32적중 (2가 최근 사용으로 갱신){2, 3}
41부재{1, 2, 3}
55부재 (가장 오래 안 쓰인 3 교체){1, 2, 5}
62적중 (2가 최근 사용으로 갱신){1, 2, 5}
74부재 (가장 오래 안 쓰인 1 교체){2, 4, 5}
85적중 (5가 최근 사용으로 갱신){2, 4, 5}
93부재 (가장 오래 안 쓰인 2 교체){3, 4, 5}
102부재 (가장 오래 안 쓰인 4 교체){2, 3, 5}
총 부재 7회 / 적중 3회 (이 예시에서는 FIFO와 결과 동일){2, 3, 5}

숫자로 직접 따라가기 - umask 022일 때 파일·디렉터리 실제 권한 계산

파일 - 기본권한 666에서 umask 022를 자릿수별로 뺀다
구분소유자(owner)그룹(group)기타(other)결과
파일 기본권한666666
umask-0-2-2022
파일 실제 권한644644
디렉터리 - 기본권한 777에서 umask 022를 자릿수별로 뺀다
구분소유자(owner)그룹(group)기타(other)결과
디렉터리 기본권한777777
umask-0-2-2022
디렉터리 실제 권한755755

네트워크 서브네팅

  • CIDR 서브넷 마스크 - /n 표기 시 1이 n개, 나머지는 0 (예: /27 → 255.255.255.224)
  • FLSM 서브네팅 - N개의 서브넷으로 나눌 때 2ⁿ≥N을 만족하는 최소 n비트를 네트워크 비트로 추가 사용, 나머지 비트가 호스트 비트
  • ip subnet-zero는 서브넷 부분이 모두 0인 네트워크도 사용하겠다는 의미. broadcast 주소=해당 대역의 마지막 주소

숫자로 직접 따라가기 - 200.1.1.0/24를 6개 서브넷으로 나누기

필요 비트 수 계산 - 2ⁿ ≥ 서브넷 개수(6)을 만족하는 최소 n
n2ⁿ6개 서브넷 커버 여부
n=122 < 6 → 부족
n=244 < 6 → 부족
n=388 ≥ 6 → 충족, n=3 확정 (네트워크 비트 3개 추가 차용)
/24 + 3비트 = /27, 서브넷당 2⁵=32개 주소(호스트 5비트) - 6개 서브넷 배정 결과
서브넷네트워크 주소사용 가능 범위브로드캐스트
1200.1.1.0/27.1 ~ .30200.1.1.31
2200.1.1.32/27.33 ~ .62200.1.1.63
3200.1.1.64/27.65 ~ .94200.1.1.95
4200.1.1.96/27.97 ~ .126200.1.1.127
5200.1.1.128/27.129 ~ .158200.1.1.159
6200.1.1.160/27.161 ~ .190200.1.1.191
n=3으로 만든 8개 서브넷 중 6개만 사용 (나머지 200.1.1.192/27, 200.1.1.224/27은 예비)

테스트 · 소프트웨어공학 계산

  • 경계값 분석 - 구간이 나뉘는 경계값과 경계값±1을 입력값으로 선정 (예: 0~59/60~79/80~100 구간이면 -1,0,59,60,79,80,100,101)
  • 노력(인월) = 개발기간 × 투입인원 = 총LOC / 인당 월평균 생산 라인 수
  • 생산성 = LOC / 노력(인월)  ·  개발기간 = 노력(인월) / 투입인원
  • SJF - 실행시간이 가장 짧은 프로세스부터 처리
  • HRN 우선순위 = (대기시간 + 서비스시간) / 서비스시간, 값이 클수록 우선순위 높음
  • McCabe 순환복잡도 - (내부 영역 수 + 외부 영역 1) 또는 V(G) = 간선수 − 노드수 + 2, 두 방법 결과는 동일해야 함

숫자로 직접 따라가기 - 대기시간·서비스시간이 다른 프로세스 3개의 HRN 값 비교

HRN = (대기시간 + 서비스시간) / 서비스시간, 값이 클수록 우선순위 높음
프로세스대기시간서비스시간계산HRN
P1520(5+20)/201.25
P2105(10+5)/53.0
P31510(15+10)/102.5
우선순위(HRN 높은 순): P2(3.0) > P3(2.5) > P1(1.25)

숫자로 직접 따라가기 - 노드 5개, 간선 6개인 흐름도의 순환복잡도 계산

공식1: V(G) = 간선 수 - 노드 수 + 2
간선 수노드 수계산V(G)
656 - 5 + 23
공식2: V(G) = 내부(닫힌) 영역 수 + 외부 영역 1
내부 영역 수외부 영역계산V(G)
212 + 13
두 공식 모두 V(G)=3으로 일치 (간선 6개, 노드 5개, 닫힌 내부영역 2개인 흐름도 기준)

트리 · 그래프

  • 트리 순회 - Preorder(전위): Root→Left→Right / Inorder(중위): Left→Root→Right / Postorder(후위): Left→Right→Root. 서브트리를 하나의 노드처럼 묶어서 순서대로 풀면 실수 없음
  • 트리 차수(Degree) = 가장 자식이 많은 노드의 자식 수  ·  단말 노드 = 자식이 하나도 없는 노드
  • 그래프 최대 간선 수 - 무방향 = n(n-1)/2, 방향 = n(n-1)
  • DFS - 자식 노드를 우선 방문, 더 갈 곳 없으면 방문 안 한 형제/상위로 되돌아가 탐색
  • 전위식→후위식 변환 - 피연산자 2개+연산자를 괄호로 묶은 뒤, 연산자를 피연산자 뒤(오른쪽)로 옮기고 괄호 제거
  • Postfix 연산 계산 - 피연산자 2개+뒤따르는 연산자 1개를 묶어 반복 계산 (예: 3 4 * 5 6 * + → (3*4)+(5*6) = 42)

숫자로 직접 따라가기 - 후위표기식 3 4 * 5 6 * + 스택 트레이스

토큰을 하나씩 읽으며 피연산자는 push, 연산자는 pop 2개 계산 후 결과를 다시 push
순서읽은 토큰처리스택 상태
13push[3]
24push[3, 4]
3*pop 4, pop 3 → 3×4=12 → push[12]
45push[12, 5]
56push[12, 5, 6]
6*pop 6, pop 5 → 5×6=30 → push[12, 30]
7+pop 30, pop 12 → 12+30=42 → push[42]
최종 결과 = 42[42]
  • fan-in / fan-out - 모듈로 들어오는 화살표 수 = fan-in, 나가는 화살표 수 = fan-out

기타

  • 스택 Push/Pop 순서 - 실제로 손으로 추적해봐서 특정 출력 순서가 가능한지 검증(더 나중에 들어온 것을 나중에 꺼내지 않고는 그 이전 것을 꺼낼 수 없음)
  • 외래키 판별 - 두 릴레이션의 공통 속성 중, 기본키가 아닌 일반 속성으로 존재하는 릴레이션 쪽이 외래키를 참조
  • 관계형 모델 3요소 - Relation(릴레이션=테이블 개수) / Attribute(속성=컬럼 개수) / Tuple(튜플=행 개수)
  • 이진 검색 비교 횟수 - 매번 (첫값+끝값)/2로 중간값을 구해 비교, 범위를 절반씩 좁혀가며 몇 번째에 찾는 값과 일치하는지 셈

숫자로 직접 따라가기 - A,B,C를 그 순서로 push할 때 나올 수 있는 pop 순서인지 검증 (개념 이해용 예시, 실제 기출문제 아님)

가능한 예: pop 순서 B → C → A
단계연산출력스택 상태
1push A-[A]
2push B-[A, B]
3popB[A]
4push C-[A, C]
5popC[A]
6popA[]
출력 순서 B, C, A - 가능한 순서
불가능한 예: pop 순서 C → A → B (push는 반드시 A,B,C 순서 유지)
단계연산출력스택 상태
1push A-[A]
2push B-[A, B]
3push C-[A, B, C]
4pop → C 출력 (목표 순서와 일치)C[A, B]
5다음 목표는 A인데 스택 맨 위는 B - B를 먼저 꺼내지 않고는 A를 꺼낼 수 없음(순서 위반)[A, B]
C, A, B 순서는 불가능 - B보다 아래 있는 A를 먼저 꺼낼 방법이 없음

숫자로 직접 따라가기 - 정렬 배열 [3, 7, 12, 18, 24, 31, 45, 52, 68, 77]에서 68 찾기

매번 (low+high)/2로 중간 인덱스를 구해 비교, 범위를 절반씩 좁힘 (인덱스 0~9, 목표값 68=인덱스8)
비교 횟수lowhighmid=(low+high)/2mid 값비교 결과
1회0942424 < 68 → low=mid+1=5
2회5975252 < 68 → low=mid+1=8
3회8986868 = 68 → 발견
총 3회 비교 만에 발견 (원소 10개인 배열은 최악의 경우에도 약 ⌈log₂10⌉=4회 이내로 찾을 수 있음)
1과목소프트웨어 설계

개발 방법론 · 생명주기 모형

  • 폭포수 모형 - 순차적, 단계별 산출물 명확하나 이전 단계로 돌아가기 어려워 개발 중 요구사항 반영이 쉽지 않음
  • 나선형(Spiral) 모형 - 계획수립 → 위험분석 → 개발및검증 → 고객평가를 반복 수행, 대규모·고위험 시스템에 적합
  • 프로토타이핑 모형 - 요구사항이 불분명할 때 적합, 의뢰자가 완성 전 모형을 보고 요구사항을 반영 가능, 구현 단계의 골격이 될 수 있음
  • V모델 - 요구분석·설계 각 단계를 테스트 단계와 1:1로 연결(폭포수 모델의 변형)
  • 애자일 방법론 - 스크럼, XP, Lean, ASD, 크리스탈, FDD, DSDM, DAD / 절차·도구보다 개인과 소통, 문서보다 실행되는 SW, 계획보다 변화 대응에 가치
  • XP 5대 가치 - 의사소통, 단순성, 피드백, 용기, 존중 (정형분석 아님) - 잦은 변화에도 팀이 유연하게 대응하도록 돕는 가치들
  • XP 실천방법 - 짝 프로그래밍, 공동 코드 소유, 테스트 주도 개발, 전체 팀, 계속적 통합, 리팩토링, 소규모 릴리즈, 지속적 자동화 테스트 수행 - 자주 통합하고 자주 확인해 결함을 초기에 줄이는 것이 핵심
  • CBD(컴포넌트 기반 개발) - 기존 컴포넌트 조합으로 재사용성↑, 개발기간 단축 (하향식 구조적 설계는 CBD 아니라 구조적 방법론 특징)
  • 럼바우(Rumbaugh) 분석 - 객체 모델링 → 동적 모델링 → 기능 모델링 순 (정적 구조를 먼저 정한 뒤 동작 변화, 마지막으로 처리 흐름을 분석하는 순서)
    • 객체 모델링: 객체·속성·연산 식별, 관계 규정 → 다이어그램
    • 동적 모델링: 시간 흐름에 따른 상태 변화 → State Diagram
    • 기능 모델링: 처리 과정 표현 → DFD 주로 활용
  • Coad-Yourdon 방법 - E-R 다이어그램으로 객체 식별 → 구조/주체 정의 → 속성/관계 정의 → 서비스 정의
  • Jacobson(OOSE) - Use-Case를 강조하는 객체지향 분석 방법론
  • CMMI 성숙도 5단계 - 초기(Initial) → 관리(Managed) → 정의(Defined) → 정량적 관리(Quantitatively Managed) → 최적화(Optimizing) ("반복"은 해당 없음)
  • SPICE 프로세스 능력 수준 - 0~5의 6단계(불완전-수행-관리-확립-예측-최적화)
  • 테일러링(Tailoring) - 프로젝트 특성에 맞게 방법론·절차·산출물을 조정, 예상되는 변화를 고려해야 함. 내부 기준=목표환경/요구사항/프로젝트 규모/보유 기술

요구사항 분석

  • 요구 분석은 SW 개발의 실질적 첫 단계, 요구사항 검증을 아무리 철저히 해도 모든 문제를 발견한다고 단정할 수 없음
  • 요구사항은 예외가 많고 모호하며 개발 중에도 계속 변함
  • 기능적 요구사항=시스템이 "무엇을 하는지" / 비기능적 요구사항=성능·보안·품질·안정성("3초 이내 응답"처럼 성능 관련은 비기능)
  • 요구사항 명세 - 정형 명세(Z 기법 등, 수학적 표기, 표현 간결) vs 비정형 명세(자연어 서술)
  • 요구사항 관리 도구 - 비용편익분석, 변경추적, 영향평가 담당 (성능 비교는 성능테스트 도구 역할)

설계 원칙(SOLID) · 결합도/응집도

  • SOLID - SRP(단일 책임) · OCP(개방-폐쇄: 확장에 열려있고 변경에 닫혀있음) · LSP(리스코프 치환: 하위타입은 상위타입으로 치환 가능해야 함) · ISP(인터페이스 분리: 사용하지 않는 메소드에 의존 금지) · DIP(의존 역전) → 5개 원칙 모두 '변경에 유연하고 재사용 쉬운 설계'가 목적
  • 결합도(모듈 간 상호 의존도) 약함→강함: 자료 < 스탬프 < 제어 < 외부 < 공통 < 내용 - 모듈끼리 서로 알아야 하는 정보의 범위가 넓어질수록 결합도가 강해짐
    • 자료 결합도: 단순 값 전달
    • 스탬프 결합도: 자료구조 형태 통째로 전달
    • 제어 결합도: 제어신호로 상대 모듈 논리 제어
    • 공통 결합도: 전역 데이터 공유
    • 내용 결합도: 다른 모듈 내부를 직접 참조(가장 나쁨)
  • 응집도(모듈 내부 요소 간 관련도) - 우연적(관련 없음, 가장 낮음) < 시간적 < 절차적 < 통신적 < 순차적 < 기능적(가장 높음) - 내부 요소들이 하나의 목적을 위해 얼마나 밀접하게 뭉쳐 있는지로 순서가 정해짐
  • 좋은 설계 = 결합도는 낮게, 응집도는 높게

객체지향 핵심 개념

  • 클래스 - 유사 객체들의 공통 속성·연산을 묶어 표현하는 데이터 추상화 단위 / 인스턴스 - 클래스에 속한 개별 객체
  • 캡슐화 - 데이터+함수를 하나로 묶고 필요한 인터페이스만 노출(정보 은닉과 밀접). "상위 속성을 하위가 물려받음"은 캡슐화가 아니라 상속
  • 다형성 - 오버라이딩(상위 메소드를 하위에서 재정의) vs 오버로딩(메소드명은 같고 매개변수 개수·타입을 다르게 구현)
  • 메시지 - 객체에게 행위를 지시하는 명령
  • 집단화(Aggregation) - 부분-전체(Part-Whole) 관계 / 일반화(Generalization) - 상위-하위 개념 관계 / 의존 관계 - 한 클래스 변경이 다른 클래스에 영향

UML

  • 구조적(정적) 다이어그램 - Class, Object, Component, Deployment, Composite Structure, Package → 시스템의 정적인 구성 요소와 관계를 표현
  • 행위(동적) 다이어그램 - Use Case, Sequence, Communication, State, Activity, Interaction Overview, Timing → 시간 흐름에 따른 동작·상호작용을 표현
  • 시퀀스 다이어그램 - 객체 간 메시지 교환을 시간 흐름에 따라 표현(구성요소: 액터·객체·생명선·실행상자·메시지 - "확장"은 구성요소 아님)
  • 상태(State) 다이어그램 - 하나의 객체가 가진 상태와 상태 변화 표현 시퀀스와 서로 바꿔 서술하면 오답
  • 유스케이스 다이어그램 - 사용자 요구 분석에 사용, 액터=시스템과 상호작용하는 모든 외부 요소(사람+외부시스템), 확장 관계=조건 만족 시에만 수행

아키텍처 · 디자인 패턴

  • 파이프-필터 - 서브시스템이 입력→처리→다음 서브시스템으로 결과 전달을 반복, 필터 간 이동 시 오버헤드 발생함
  • MVC - Model(핵심 기능·데이터), View(사용자에게 보여줌), Controller(Model에 명령해 상태 변경)
  • GoF 패턴 3분류
    • 생성 패턴: Singleton, Factory Method, Abstract Factory, Builder, Prototype
    • 구조 패턴: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
    • 행위 패턴: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor
    → 생성=객체를 만드는 방법, 구조=객체를 조합하는 방법, 행위=객체 간 역할·책임을 나누는 방법
  • Singleton - 인스턴스가 하나만 생성됨을 보장  ·  Factory Method - 객체 생성 인터페이스만 정의, 실제 인스턴스화는 서브클래스가 결정

DFD · HIPO · N-S Chart · 코드 설계

  • DFD 구성요소 - Process(원), Data Flow(화살표), Data Store(평행선 두 줄), Terminator(사각형) - Data Dictionary는 DFD 구성요소가 아니라 별도 보완 도구
  • HIPO - 하향식 개발 문서화 도구, 가시적 도표/총체적 도표/세부적 도표 3종
  • N-S Chart(Nassi-Schneiderman) - 논리 기술 중심 도형 표현, 화살표나 GOTO 사용하지 않음, 순차·선택·반복 구조로 표현
  • 코드 종류 - 순차코드(일련번호), 블록코드(공통 성질별로 구간을 나눠 부여), 연상코드(원래 명칭을 연상할 수 있게 기호화), 표의숫자코드(물리적 수치 그대로 사용)
  • 자료 사전 기호 - [ ]선택 · { }반복 · ( )생략 · +연결 · =정의

UI 설계

  • 사용자 중심으로 설계(개발자 중심 아님), 오류/경고는 사용자가 쉽게 인지하도록(소리·색 활용) 전달, 심미성보다 사용성 우선
  • 직관성 - 누구나 쉽게 이해·사용 가능해야 함 / 일관성 유지가 조작방법 다양화보다 중요
  • NUI - 멀티터치·제스처 등 자연스러운 신체 동작 인식(GUI/CLI와 구분) / CLI - 텍스트 명령어 기반
2과목소프트웨어 개발

자료구조

  • 선형 구조 - 배열, 리스트, 스택, 큐, 데크 / 비선형 구조 - 트리, 그래프 (원소 간 순서관계가 1:1이면 선형, 계층·다중관계면 비선형)
  • 스택(Stack) - LIFO, Top 포인터 1개, 응용분야=함수호출 순서 제어·인터럽트 처리·수식 계산·후위표기법·재귀호출·DFS. Underflow=Top이 0일 때 삭제 시도, Overflow=가득 찬 상태에서 삽입 시도
  • 큐(Queue) - FIFO, Front/Rear 2개 포인터 (먼저 들어온 순서를 지켜야 하는 프로세스 스케줄링·버퍼링에 사용)
  • 트리 - 노드+선분, 사이클 없음, 계층 구조 / 이진 탐색 트리는 편향되면 최악의 검색효율(O(n))
  • 해싱 함수 종류 - 제산법(키를 테이블 크기로 나눈 나머지 사용), 제곱법(Mid-Square, 키를 제곱한 값의 중간 비트 추출), 폴딩법(키를 여러 부분으로 나눠 합산), 기수변환법(키의 진법을 변환), 대수적 코딩법(다항식 연산으로 주소 생성), 숫자분석법(키의 특정 자릿수만 추출), 무작위법(난수로 주소 생성)
  • 연결 리스트 - 삽입·삭제 쉬움, 포인터 추가공간 필요, 검색은 순차 탐색이라 배열보다 느림

정렬 · 검색 알고리즘

  • O(n log n): 합병정렬(Merge), 퀵정렬(Quick), 힙정렬(Heap) / O(n²): 버블, 선택, 삽입 (분할정복으로 비교 횟수를 줄이는지가 두 그룹을 가르는 핵심)
  • 퀵 정렬 - 피벗 기준 분할정복, 최악의 경우 n(n-1)/2회 비교 (피벗이 한쪽으로 치우칠 때 최악, 무작위 데이터면 평균 O(n log n))
  • 이진 검색 - 정렬된 데이터 필요, 비교마다 대상 절반으로 감소 / 선형 검색 - 정렬 여부 무관하게 순차 탐색
  • 알고리즘 설계 기법 - 분할정복(문제를 나눠 해결 후 합침), 동적계획법(하위 문제 결과를 저장해 재사용), 탐욕(Greedy, 매 순간 최선을 선택하나 전체 최적은 보장 못함), 백트래킹(막히면 되돌아가 다른 경로 탐색)

테스트

  • 화이트박스 테스트 - 내부 논리 구조 점검, 기초경로검사·제어구조검사·조건검사·루프검사·데이터흐름검사
  • 블랙박스 테스트 - 입출력 중심, 동치분할·경계값분석·원인효과그래프·오류예측·비교검사 경계값 분석은 블랙박스! 화이트박스로 착각 주의
  • 스텁(Stub) - 하향식 통합시험에서 미개발 하위 모듈을 대신 / 드라이버(Driver) - 상향식 통합시험에서 상위 모듈을 대신(헷갈리면 오답)
  • 테스트 vs 디버깅 - 테스트=오류를 찾는 작업, 디버깅=찾은 오류를 수정하는 작업
  • 검증(Verification) - 개발자 관점, 명세 준수 여부 / 확인(Validation) - 사용자 관점, 요구 충족 여부
  • 테스트 오라클 - 참(Total, 모든 케이스) · 샘플링(일부만) · 휴리스틱(추정) · 일관성검사(전후 비교)
  • 알파 검사 - 개발자 장소에서 사용자+개발자 함께 통제된 환경 / 베타 검사 - 사용자 실제 환경에서 사용자 단독(필드 테스팅)
  • 단위테스트 - 개별 모듈의 알고리즘·계산식 오류 발견 / 통합테스트 - 모듈 간 상호작용 오류 발견
  • 파레토 법칙 - 오류의 80%는 전체 모듈의 20%에서 발견(결함 집중)
  • 강도(Stress) 테스트 - 과부하 상태에서도 정상 작동 확인 / 회복테스트 - 고의 실패 후 정상 복귀 확인
  • McCabe 순환복잡도, 코드 인스펙션은 정적 테스트 기법(실행 없이 검토)

결함 / 검토 기법

  • 워크스루 - 비공식적 검토, 사전 배포 후 짧은 회의로 오류 조기 검출 / 인스펙션 - 공식적 검토, 개발자 제외한 전문가가 수행 둘은 동일 개념 아님
  • 정형 기술 검토(FTR) - 의제·참가자 수 모두 제한 (짧은 시간에 집중적으로 검토해 효율을 높이기 위함)

빌드 · 형상관리

  • 빌드 자동화 도구 - Ant, Maven, Gradle, Jenkins(Java 기반 CI 도구) 형상관리 도구 아님에 주의
  • 형상관리(SCM) 도구 - Git, CVS, Subversion(SVN), Mercurial, RCS
  • 형상관리 항목 - 소스코드, 요구분석서, 설치지침서 등 산출물(프로젝트 개발비용 자체는 형상관리 항목 아님)
  • 체크인(Check-In) - 저장소에 새 버전으로 갱신 / 형상 통제 - 변경 요구를 검토 후 기준선(Baseline)에 반영

인터페이스 · 미들웨어

  • 미들웨어 - 이기종 환경 연결, 위치 투명성 제공, DB/RPC/MOM/TP-Monitor/ORB/WAS 등
  • MOM - 비동기 메시지 큐 기반, 이기종 분산 시스템 동기화에 사용
  • EAI 구축 유형 - Point-to-Point(1:1 직접 연결, 단순하나 확장성 낮음), Hub&Spoke(중앙 허브가 각 시스템과 연결), Message Bus(ESB, 공통 버스로 메시지 전달해 확장성 높음), Hybrid(Hub&Spoke+Message Bus 혼합)
  • AJAX - JS+XML로 비동기 통신 / STAF - 분산 환경 테스트 자동화 프레임워크
  • 인터페이스 구현 검증 도구 - xUnit, STAF, FitNesse, NTAF, Selenium, watir

소프트웨어 패키징 · DRM · 클린코드

  • 패키징은 사용자 중심(개발자 중심 아님), 이기종 연동·암호화 고려, 매뉴얼은 사용자 기준 작성
  • DRM 구성요소 - 콘텐츠 제공자(저작권자), 콘텐츠 분배자, 클리어링 하우스(키관리·라이선스 발급), DRM 컨트롤러(이용 권한 통제), 패키저(메타데이터와 함께 배포단위로 묶는 역할 - 콘텐츠 분배자와 혼동 주의)
  • 클린 코드 원칙 - 가독성, 단순성, 의존성 최소화, 중복성 최소화, 추상화(하위에서 상세 구현)
3과목데이터베이스 구축

기본 개념

  • 도메인(Domain) - 애트리뷰트가 가질 수 있는 원자값들의 집합
  • 릴레이션 특성 - 튜플 간 순서 없음, 속성 간에도 순서 없음, 튜플은 모두 상이(중복 없음), 모든 속성값은 원자값
  • 차수(Degree)=속성(컬럼) 수, 카디널리티(Cardinality)=튜플(행) 수
  • 슈퍼키 - 유일성 O, 최소성 X / 후보키 - 유일성+최소성 모두 O / 기본키 - 후보키 중 선택 / 외래키 - 다른 릴레이션의 기본키를 참조

정규화

  • 이상현상(Anomaly) 3가지 - 삽입 이상, 삭제 이상, 갱신 이상(모두 데이터 중복이 원인) "검색 이상", "종속 이상"은 존재하지 않는 용어 - 함정으로 자주 나옴
  • 정규화는 논리적 설계 단계에서 수행(개념적 설계 이전 아님), 데이터 구조 안정성 최대화·중복 최소화·이상현상 최소화가 목적
  • 1NF: 모든 속성이 원자값 / 2NF: 1NF + 부분함수종속 제거(완전함수종속) / 3NF: 이행적 함수종속 제거 / BCNF: 모든 결정자가 후보키 - 뒤로 갈수록 더 세밀한 함수 종속 문제까지 제거하는 단계
  • 이행적 함수 종속 - A→B, B→C이면 A→C (3NF에서 제거 대상이 되는 종속 형태)
  • 반정규화 - 성능 향상·개발운영 단순화 목적으로 중복·통합·분리 수행

E-R 모델 · 무결성

  • E-R 모델 - 개체=사각형, 관계=마름모, 속성=타원(원), 연결=선(삼각형 아님)
  • 개체 무결성 - 기본키는 Null·중복 불가 / 참조 무결성 - 외래키 변경 시 참조 릴레이션 기본키도 함께 변경되어야 함 / 도메인 무결성 - 속성은 정의된 도메인 값만

관계 연산

  • 순수 관계 연산자 - Select(σ), Project(π), Join(▷◁), Division(÷) - Cartesian Product는 일반 집합 연산자(순수 관계 연산자 아님), 각각 행 선택·열 추출·결합·몫 연산 수행
  • 관계대수=절차적(연산 순서 명시) vs 관계해석=비절차적(원하는 정보만 정의) 서로 바꿔 서술하면 오답. ∀=모든것에 대하여, ∃=존재

SQL

  • DDL: CREATE, ALTER, DROP / DML: SELECT, INSERT, UPDATE, DELETE / DCL: GRANT, REVOKE, COMMIT, ROLLBACK - DDL=구조 정의, DML=데이터 조작, DCL=권한·트랜잭션 제어
  • SELECT DISTINCT - 중복 제거 / SELECT(DISTINCT 없이) - 중복 미제거, WHERE 없으면 전체 행 반환
  • UNION - 중복 제거 합집합 / UNION ALL - 중복 유지 합집합 / INTERSECT - 교집합 - 결합 대상 SELECT문끼리 컬럼 개수·데이터타입이 일치해야 함(Union-compatible)
  • NULL 비교는 IS NULL/IS NOT NULL만 가능(= NULL 불가)
  • BETWEEN a AND b - a·b 포함 이상~이하 범위 (BETWEEN a OR b는 문법 오류)
  • LIKE 와일드카드 - %A%=포함, A%=시작, %A=끝
  • GRANT ~ TO / REVOKE ~ FROM 전치사 방향 주의
  • HAVINGGROUP BY와 함께 그룹 조건 지정(WHERE는 그룹화 전 행 필터, HAVING은 그룹화 후 집계결과 필터)
  • DELETE(WHERE 없이) - 데이터만 삭제, 테이블 구조는 남음(DROP TABLE과 다름) / TRUNCATE - 스키마 유지, DELETE보다 빠르지만 ROLLBACK 불가

뷰 · 인덱스 · 트랜잭션

  • 뷰(View) - 물리적으로 존재하지 않는 가상 테이블, 독립적 인덱스 불가, 삽입·갱신·삭제에 제약 있음
  • 트리거(Trigger) - 삽입/갱신/삭제 이벤트 발생 시 자동 수행되는 절차형 SQL - 애플리케이션 코드 없이 DB 차원에서 무결성 유지·로그 기록을 자동화
  • 인덱스 - 사용자가 CREATE/DROP으로 생성·제거 가능, 검색 속도 향상이 목적(단 갱신 시 오버헤드 발생)
  • 트랜잭션 특성(ACID) - 원자성(Atomicity, all-or-nothing) · 일관성(Consistency) · 격리성(Isolation) · 지속성(Durability) - 각각 부분실행·모순 데이터·동시실행 간섭·커밋 후 데이터 손실을 방지하기 위함
  • Commit/Rollback이 보장하는 특성 = 원자성
  • 병행제어 기법 - 로킹(Locking), 타임스탬프 순서, 낙관적(최적 병행수행 검증) 기법, 다중버전 기법 - 트랜잭션 충돌 빈도·환경에 따라 적합한 기법이 달라짐
  • 로킹 단위가 크면→병행성 낮아지고 오버헤드는 줄어듦 / 로킹 단위가 작으면→병행성 높아지고 오버헤드(락 개수) 증가
  • 회복(Recovery) - 장애로 손상된 DB를 정상 상태로 복구 / 즉각 갱신 기법은 로그(log) 필요 - 로그에 남은 변경 전후 값으로 UNDO/REDO를 수행하기 위함

분산 DB

  • 목표 - 위치 투명성, 중복 투명성, 병행 투명성, 장애 투명성(각각 위치·중복·동시접근·장애를 사용자가 의식하지 않아도 됨을 의미)
  • 구성요소 - 분산 처리기, 분산 데이터베이스, 통신 네트워크 - 각 지역 DB를 네트워크로 연결해 하나의 시스템처럼 동작시키는 구성
4과목프로그래밍 언어 활용

공통 프로그래밍 개념

  • 연산자 우선순위(대략) - 단항 > 산술 > 시프트(<<,>>) > 관계(<,<=,>=,>) > 등가(==,!=) > 비트 > 논리(&&,||) > 조건(?:) > 대입
  • 배열은 함수에 참조(주소)로 전달됨(원본이 함께 바뀜) - Java/C 공통

C 언어

  • 포인터-배열 별칭 - 포인터에 배열 대입 시 같은 메모리 공유, *(p+n) = p[n]
  • 2차원 배열 포인터 - p[1]은 두 번째 "행"의 시작주소, 개별 요소는 다시 역참조 필요
  • static 지역변수 - 일부만 초기화해도 나머지는 자동 0 초기화(일반 지역 배열은 쓰레기값)
  • 문자 리터럴은 아스키코드로 연산됨 ('A'+1 = 66)
  • switch-case - break 없으면 다음 case까지 흘러내려감(fall-through)
  • break는 가장 가까운 반복문/switch 하나만 탈출
  • scanf는 주소 전달 필요: scanf("%d", &n)
  • 변수명 - 숫자로 시작 불가, _로 시작 가능
  • stdlib.h(문자열↔수치 변환, atoi 등) · string.h(문자열 처리) · math.h(삼각함수 등) · stdio.h(표준 입출력) - 헤더 기능 서로 바꾸면 오답
  • malloc() - 원하는 byte 수만큼 동적 할당, free()로 해제, 실패 시 NULL 반환

Java

  • 배열/객체는 참조로 전달, 메서드 내에서 바꾸면 원본도 바뀜
  • 문자열 + 연산은 왼쪽→오른쪽 순차 평가(괄호로 숫자 먼저 묶으면 숫자 연산)
  • length는 배열의 속성(괄호 없음), 문자열은 length()(메소드)
  • do~while은 조건이 처음부터 거짓이어도 무조건 1회 실행
  • 전위 증가(++x)는 먼저 증가 후 대입, 후위 증가(x++)는 대입 후 증가
  • while/if 조건식은 반드시 boolean이어야 함(C처럼 정수 조건 불가)
  • &&,||,! 논리연산자는 boolean(1/0) 반환
  • char는 한 글자만 저장(여러 문자는 String)
  • 예외(Exception)는 실행 시간 중 발생하는 오류만 해당(컴파일 문법 오류는 예외 아님)

Python

  • 슬라이싱 [시작:끝:증가값] - 끝 인덱스 미포함, 증가값 생략 시 1
  • range(n+1)은 0~n 포함(n+1개), range(n)은 0~n-1
  • continue는 다음 회차로, break는 반복문 자체 탈출(구분 주의)
  • elif 사용(else if 아님)
  • input().split(구분자) + map(int, ...) - 구분자로 나눈 뒤 일괄 형변환
  • self - 인스턴스 메서드에서 자기 자신 속성 접근 시 첫 인자로 필요
  • print(a, b)는 기본 구분자가 공백

Shell

  • until은 조건이 참이 될 때까지(거짓인 동안) 반복(while과 반대)
  • export한 변수는 하위 프로세스까지 전달되는 전역 환경변수, export 없으면 현재 쉘 로컬 변수

운영체제

  • 커널(Kernel) - 프로세스·기억장치·파일·입출력 관리, 프로세스 간 통신 담당 / 쉘(Shell)은 명령어 해석기(관리 기능 아님)
  • 프로세스 vs 스레드 - 스레드는 프로세스 내 실행 흐름의 단위(경량 프로세스), 한 프로세스가 여러 스레드를 가짐
  • 사용자 수준 스레드 - 커널 모드 전환 없이 교환 가능해 오버헤드 적음 / 커널 수준 스레드 - 커널 접근·독립적 스케줄링 가능
  • 스케줄링 - SJF(실행시간 짧은 순), HRN((대기+서비스)/서비스, 값 클수록 우선순위 높음, SJF의 기아현상 보완), SSTF(현재헤드에서 가까운 트랙 우선)
  • 페이지 교체 - FIFO(가장 먼저 적재된 것 교체), LRU(가장 오래 미참조 것 교체), OPT(향후 가장 오래 사용 안 될 것 교체, 이론상 최적), LFU(참조 횟수 가장 적은 것 교체), NUR(참조·변형비트로 최근 사용여부 근사 판단)
  • 스레싱(Thrashing) - 페이지 교체 시간이 프로세스 수행시간보다 커지는 현상(대응: 충분한 프레임 제공)
  • 지역성(Locality) - 시간 지역성(루프·스택·서브루틴), 공간 지역성(인접 페이지 참조)
  • 세마포어 - P/V 연산으로 상호배제 구현
  • 교착상태 4대 필요조건 - 상호배제(자원 배타적 점유), 점유와대기(자원 보유한 채 추가 자원 요청), 비선점(강제로 자원 뺏을 수 없음), 환형대기(프로세스들이 원형으로 자원을 요청)
  • 파일 디스크립터(FCB) - 사용자가 직접 참조 불가, open 시 보조기억장치→주기억장치로 이동

네트워크

  • OSI 7계층 PDU - 응용/표현/세션=메시지, 전송=세그먼트, 네트워크=패킷, 데이터링크=프레임
  • 네트워크 계층 - 라우팅, 논리주소(패킷) / 데이터링크 계층 - 프레임 전송, 오류·흐름 제어(인접 노드 간)
  • TCP - 전송(트랜스포트) 계층, 헤더 20~60byte, 윈도우 최대 65,535byte(2¹⁶-1)
  • UDP - 비연결형, 흐름·순서 제어 없어 빠름
  • ARQ 종류 - Stop-and-Wait(프레임 하나 보내고 ACK 받은 후 다음 전송), Go-back-N(오류난 지점부터 이후 프레임 전부 재전송), Selective-Repeat(오류난 프레임만 선택적으로 재전송), Adaptive(전송 효율에 따라 프레임 길이를 동적 조절)
  • IPv4 - 32비트, A~E 5클래스 / IPv6 - 128비트, 유니캐스트·멀티캐스트·애니캐스트 3방식(브로드캐스트 없음), 헤더 40octet 고정, IPv4보다 빠름·자동주소설정 지원
  • RIP - 거리 벡터, 최대 홉수 15, IGP / OSPF - 링크 상태(Link-State), Dijkstra 알고리즘
  • IPSec - 양방향 암호화 지원. ESP=인증+무결성+기밀성, AH=인증+무결성(기밀성 없음)
  • Well-known 포트 - HTTP=80, HTTPS=443, Telnet=23, DNS=53, SSH=22, SNMP=161, TFTP=69
  • ARP - 논리(IP)주소→물리(MAC)주소 변환
  • 네트워크 장비 - 리피터(신호 재생), 브리지/스위치(2계층, MAC), 라우터(3계층, 경로 선택)
  • MQTT - IoT 경량 발행-구독(Pub/Sub) 메시징 프로토콜(TCP/IP 기반, Broker 경유)
5과목정보시스템 구축관리

비용 산정

  • COCOMO(보헴) - Organic(조직형, 5만 라인 이하 소규모), Semi-Detached(반분리형, 30만 라인 이하 중규모), Embedded(내장형, 규모 제한 없이 하드웨어·실시간 제약 강함) UFP는 기능점수법 개념이라 COCOMO와 무관
  • LOC 기법 - 낙관치·기대치·비관치로 예측치 산출, 개발기간=총라인수/(투입인원×인당생산성)
  • Putnam 모형(Rayleigh-Norden 곡선 기반) / SLIM(Putnam 기초 자동화 도구)
  • 비용 산정 하향식 - 전문가 감정(경험자 2인 이상, 신속하나 주관적), 델파이 기법(다수 전문가 반복 수렴, 체계적) / 상향식 - LOC, 개발단계별 인월수(세부 작업 단위로 산정 후 합산) / 수학적 - COCOMO, Putnam, Function Point(공식에 대입해 자동 산정)

프로젝트 관리 기법

  • PERT - 작업 간 상호관련성·결정경로·경계시간·자원할당 제시(예정시간이 불확실한 신규 프로젝트에 적합, 낙관치·기대치·비관치 3점 추정)
  • 간트 차트 - 막대그래프로 일정 표시, 막대 길이=작업 소요 기간(인원수 아님), CPM으로부터 생성 가능
  • CPM - 임계경로(최장경로) 기반 일정 관리(소요시간이 확정적인 반복 프로젝트에 적합)
  • 위험관리(Risk Analysis) - 위험 요소를 사전에 인식·분석·예측·대비하는 활동

신기술 키워드

  • 하둡(Hadoop) - 오픈소스 분산 컴퓨팅 플랫폼, 빅데이터 저장·처리
  • MapReduce - 대용량 데이터 분산처리 프로그래밍 모델(구글 고안)
  • Sqoop - 하둡↔관계형DB 데이터 전송 도구
  • 디지털 트윈 - 물리적 자산을 소프트웨어로 가상화, 자산 최적화·사고 최소화
  • SDN - 네트워크 제어부/데이터전달부 분리해 소프트웨어로 제어
  • SAN - 광채널 스위치로 이기종 저장장치를 네트워크로 통합 / DAS - 저장장치를 직접 연결(네트워크 미개입)
  • BaaS - 블록체인 개발환경을 클라우드로 제공(직접 인프라 구축 없이 블록체인 앱 개발 가능)
  • N-Screen - PC·TV·모바일에서 콘텐츠 끊김 없이 이용
  • PaaS-TA - 국내 개방형 클라우드 컴퓨팅 플랫폼(정부 주도 개발, 특정 벤더 종속 없이 사용 가능)
  • Docker - 컨테이너 배포 자동화 오픈소스 엔진
  • 데이터 마이닝 - 대량 데이터에서 변수 간 상호관계·패턴 규명
  • Mashup - 여러 서비스를 조합해 새 서비스 생성
  • 소프트웨어 정의 스토리지(SDS) - 가상화로 스토리지 자원을 소프트웨어로 관리

보안

  • 정보보안 3대 요소 - 기밀성, 무결성, 가용성(+ 부인방지)
  • 접근통제 - DAC(임의적, 소유자 재량) / MAC(강제적, 보안등급 비교) / RBAC(역할 기반)
  • 대칭키(개인키) 암호화 - DES, SEED, AES, ARIA, IDEA - 키 교환 필요, 속도 빠름
  • 비대칭키(공개키) 암호화 - RSA - 공개키로 암호화, 개인키로 복호화, 인증·전자서명에 활용
  • 해시 알고리즘(단방향, 암호화와 다름) - MD4, MD5, SHA 시리즈, N-NASH, SNEFRU
  • Salt - 동일 패스워드도 다른 해시값으로 저장되게 하는 값(레인보우테이블 공격 방어)
  • DoS 공격 - Ping of Death(조각화된 큰 패킷), Smurf(브로드캐스트 악용), SYN Flooding(연결자원 고갈), Land(출발지=목적지 IP 위조)
  • 세션 하이재킹 탐지 - 비동기화 상태·ACK Storm·패킷 유실 증가 탐지(공격자가 정상 세션을 가로챌 때 나타나는 이상 징후)
  • IDS - 오용 탐지(Signature 기반, 알려진 패턴) vs 이상 탐지(Anomaly, 평균 상태 기준 이상행위 감지)
  • Tripwire - 파일 무결성 검사 도구 / TCP Wrapper - 접속 인가 여부 점검 접근제어 유틸리티
  • XSS(악성 스크립트 삽입) · SQL Injection(DB 조작) · 웜(Worm)(숙주 없이 스스로 전파)
  • Key Logger Attack - 키 입력 탈취 / Switch Jamming - 위조 MAC으로 스위치를 더미허브처럼 작동시킴
  • 인증(신원 증명) vs 인가(권한 부여) 구분 필수