정보처리기사 실기 / 요약
중요 과목 내용 전체
중요도 낮은 과목은 묶어서 핵심만
DB (SQL 응용 + 데이터 입출력 구현)
트랜잭션
- DB 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업 단위
트랜잭션 특성
[ACID]
- 원자성(Atomicity) : 연산 전체 성공 혹은 하나라도 실패하면 전체 실패
- 일관성(Consistency) : 트랜잭션 성공 시 DB 일관된 상태 유지
- 고립성(Isolation) : 트랜잭션 실행 중 서로 영향을 미치지 않아야함
- 영속성(Durability) : 트랜잭션 성공 시 결과는 DB에 영구 저장되어야함
트랜잭션 상태 변화
[활부완실철]
- 활동 상태(Active) : 초기 상태, 트랜잭션 실행 중
- 부분 완료 상태(Partially Committed) : 마지막 명령문 실행 후
- 완료 상태(Committed) : 트랜잭션 성공 후
- 실패 상태(Failed) : 정상 실행 불가
- 철회 상태(Aborted) : 트랜잭션 취소 후 DB가 시작 전 상태로 환원
트랜잭션 제어어 (TCL;Transaction Control Language)
[커롤체]
- 커밋(Commit) : 트랜잭션 확정
- 롤백(Rollback) : 트랜잭션 취소
- 체크포인트(Checkpoint) : 저장 시기 설정
병행 제어
- 다수 사용자 환경에서 여러 트랜잭션 수행 시, DB 일관성 유지를 위해 상호작용을 제어
병행 제어 미보장 문제점
[갱연모현]
- 갱신 손실
- 연쇄복귀
- 모순성
- 현황 파악오류
병행 제어 기법 종류
[낙타로다]
- 낙관적 검증(Optimistic Validation) : 트랜잭션이 검증 수행하지 않고 일단 수행 후 종료, 종료 시 검증 후 저장
- 타임 스탬프 순서(Time Stamp Ordering) : 트랜잭션 실행 전 타임 스탬프 부여, 시간에 따라 작업 수행
- 로킹(Locking) : 하나의 트랜잭션 실행 중 다른 트랜잭션 접근 못하도록 상호배제 기능 제공
- 다중버전 동시성 제어(MVCC; Multi Version Concurrency Control) : 트랜잭션의 타임스탬프와 접근하려는 데이터의 타임스탬프 비교
DB 고립화 수준
[언커리시]
- Read Uncommitted : 한 트랜잭션에서 연산 중인 데이터를 다른 트랜잭션이 읽는 것 허용
- Read Committed : 한 트랜잭션에서 연산 수행 중 완료까지 읽기 제한
- Repeatable Read : 선행 트랜잭션이 데이터 읽을 때 완료까지 갱신/삭제 제한
- Serializable Read : 선행 트랜잭션이 데이터 순차적 읽을 때, 해당 영역 전체 제한
회복 기법
[리언로체그]
- REDO : 완료 기록 있는 트랜잭션 재작업
- UNDO : 완료 기록 없는 트랜잭션 변경사항 취소
- 로그 기반 회복 기법
- 지연 갱신 회복 기법(Deferred Update) : 트랜잭션 완료 전까지 DB 기록 안함
- 즉각 갱신 회복 기법(Immediate Update) : 트랜잭션 수행 중 갱신 결과 바로 DB 반영
- 체크 포인트 회복 기법(Checkpoint Recovery) : 검사점 이후 처리된 트랜잭션만 이전 상태로 복원
- 그림자 페이징 회복 기법(Shadow Paging Recovery) : 트랜잭션 수행 시 복제본 생성, 장애 시 복제본으로 복구
데이터 정의어(DDL; Data Define Language)
[크올드트]
- CREATE
- ALTER
- DROP
- TRUNCATE
데이터 조작어(DML; Data Manipulation Language)
[슬인업딜]
- SELECT
- INSERT
- UPDATE
- DELETE
데이터 제어어(DCL; Data Control Language)
[그리]
- GRANT
- REVOKE
DDL 대상
[도스테뷰인]
- 도메인 : 하나의 속성이 가질 수 있는 원자값들의 집합
- 스키마 [외개내] : 데이터베이스의 구조, 제약조건 등의 정보를 담고 있는 기본 구조
- 외부 스키마 : 서브 스키마, 사용자나 개발자 관점 논리 구조
- 개념 스키마 : DB 전체 논리 구조
- 내부 스키마 : 물리적 저장 장치 관점 구조
- 테이블 : 릴레이션 혹은 엔티티, 필드들로 구성된 데이터 집합체
- 뷰 : 하나 이상의 물리 테이블에서 유도되는 가상 테이블, 단순 질의 가능
- 인덱스 : 검색 연산의 최적화를 위해 DB 내 값에 대한 주소 정보로 구성된 자료구조
인덱스 종류
[순해비함단결클]
- 순서 인덱스 : B-Tree 알고리즘
- 해시 인덱스 : 해시 함수에 의해 직접 데이터에 키값 접근
- 비트맵 인덱스 : 각 컬럼에 적은 개수 값이 저장된 경우
- 함수기반 인덱스 : 수식이나 함수 적용으로 만듬
- 단일 인덱스 : 하나의 컬럼으로만 구성
- 결합 인덱스 : 두 개 이상의 컬럼으로 구성
- 클러스터드 인덱스 : 기본 키 기준 레코드 묶어서 저장
절차형 SQL : 절차 지향적인 프로그램이 가능하도록 하는 트랜잭션 언어
절차형 SQL 종류
[프사트]
- 프로시저 : 일련의 쿼리들을 하나의 함수처럼 실행하기 위한 쿼리 집합
- 사용자 정의 함수 : SQL 수행 결과를 단일 값으로 반환할 수 있는 절차형 SQL
- 트리거 : 삽입, 삭제, 갱신 등의 이벤트 발생 시 관련 작업 자동 수행되는 사용자 정의 프로시저
SQL 최적화
[튜옵]
- 튜닝(쿼리 성능 개선) : SQL 실행 계획 분석, 수정을 통해 프로시저 성능 개선
- 옵티마이저 : SQL을 빠르고 효율적으로 수행할 최적 경로 생성해주는 DBMS 내부 핵심엔진
옵티마이저 유형 [규비]
- 규칙기반 옵티마이저(PBO) : 통계 정보 없이 사전 등록 규칙에 따라 질의 실행 계획 선택
- 비용기반 옵티마이저(CBO) : 통계 정보로부터 모든 접근 경로 고려 후 질의 실행 계획 선택
논리 데이터 모델 : 업무 모델링 표기법으로 형상화 후 이해하기 쉽게 표현하는 프로세스
논리 데이터 모델 종류
[관계네]
- 관계 데이터 모델 : 논리 구조가 2차원 테이블 형태로 구성된 모델
- 계층 데이터 모델 : 논리 구조가 트리 형태로 구성된 모델
- 네트워크 데이터 모델 : CODASYL DBTG 모델
관계 데이터 모델 : 데이터를 행과 열로 구성된 2차원 테이블 형태로 구성
관계 데이터 모델 구성요소
- 릴레이션(Relation) : 테이블
- 튜플(Tuple) : 행
- 속성(Attribute) : 열
- 카디널리티(Cardinality) : 튜플의 수
- 디그리(Degree) : 애트리뷰트의 수
- 스키마(Schema) : DB 구조, 제약조건 등 정보를 담고 있는 기본 구조
- 인스턴스(Instance) : 정의된 스키마에 따라 생성된 테이블에 실저장된 데이터 집합
관계 대수 : 관계형 DB에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 언어
일반 집합 연산자
[합교차카]
- 합집합 : ∪
- 교집합 : ∩
- 차집합 : -
- 카티션 프로덕트 : X
순수 관계 연산자
[셀프조디]
- 셀렉트 : σ
- 프로젝트 : π
- 조인 : ⋈
- 디비전 : ÷
관계 해석 : 프레디킷 해석 기반
논리 데이터 모델링 속성
[개속관]
- 개체 : 관리할 대상이 되는 실체
- 속성 : 관리할 정보의 구체적 항목
- 관계 : 개체 간의 대응 관계
정규화 : 데이터 모델에서 중복성 제거, 일관성과 정확성 유지를 위해 무손실 분해 과정
이상 현상
[삽삭갱]
- 삽입 이상 : 저장 시 불필요한 세부정보 입력해야 하는 경우
- 삭제 이상 : 삭제 시 원치 않는 다른 정보 같이 삭제되는 경우
- 갱신 이상 : 중복 데이터 중 특정 부분만 수정되어 중복 값이 모순
정규화 단계
[도부이결다조]
- 1 정규형 : 도메인은 원자값으로만
- 2 정규형 : 부분 함수 종속 제거
- 3 정규형 : 이행 함수 종속 제거
- BCNF : 결정자 후보 키가 아닌 함수 종속 제거
- 4 정규형 : 다중 값 종속 제거
- 5 정규형 : 조인 종속 제거
반 정규화 : 정규화된 엔티티, 속성, 관계에 대해 성능 향상과 단순화를 위해 중복, 통합, 분리 수행 데이터 모델링 기법
데이터베이스 무결성(DB Integrity) : 데이터베이스에 저장된 값과 그것이 표현하는 실제 값이 일치
데이터베이스 무결성 종류
[개참속사키]
- 개체 무결성 : 한 엔티티에서 같은 PK 값을 가질 수 없거나 NULL을 허용할 수 없음
- 참조 무결성 : 외래키가 참조하는 다른 개체의 기본키에 해당하는 값이 기본키나 NULL이어야함
- 속성 무결성 : 속성 값은 기본값, NULL 여부, 도메인이 지정된 규칙을 준수해야함
- 사용자 정의 무결성 : 사용자의 의미적 요구사항 준수
- 키 무결성 : 한 릴레이션에 같은 키값 허용 불가
키 : DB에서 조건을 만족하는 튜플을 찾거나 정렬할 때 다른 튜플과 구별할 수 있는 기준
키 종류
[키외대후슈]
- 기본키 : 테이블 각 튜플 고유 식별
- 외래키 : 테이블 간 참조 무결성
- 대체키 : 후보키 중 기본키가 아닌 키
- 후보키 : 테이블에서 각 튜플 구별 기준
- 슈퍼키 : 유일성 만족, 최소성 만족하지 않음
파티셔닝 : 테이블 또는 인덱스 데이터를 파티션 단위로 나누어 저장
파티셔닝 유형
[레해리컴라]
- 레인지 파티셔닝 : 연속적인 숫자나 날짜 기준으로 하는 파티셔닝 기법
- 해시 파티셔닝 : 파티션 키의 해시 함수 값에 의한 파티셔닝 기법
- 리스트 파티셔닝 : 특정 파티션에 저장 될 데이터에 대한 명시적 제어 가능
- 컴포지트 파티셔닝 : 레인지, 해시, 리스트 중 2개 이상 결합
- 라운드-로빈 : 회전하면서 새로운 행을 파티션에 할당
DB 특성
[실계동내]
- 실시간 접근성 : 쿼리에 대해 실시간 응답
- 계속적인 변화 : 항상 최신 유지
- 동시 공용 : 다수 사용자 동시 접근
- 내용 참조 : 주소나 위치가 아닌 요구 내용으로 데이터 참조
DB 종류
[파관계네]
- 파일 시스템 : 파일에 이름 부여하고 저장, 검색을 위해 논리적으로 어디에 위치해야 하는지 정한 뒤 관리
- 관계형 데이터베이스 관리시스템(RDBMS) : 테이블 일부 상하 관계로 표시하여 상관관계 정리
- 계층형 데이터베이스 관리시스템(HDBMS) : 상하 종속적인 관계로 계층화하여 관리
- 네트워크 데이터베이스 관리시스템(NDBMS) : 데이터 구조를 네트워크 상의 망 형태로 표현
DBMS : 데이터 관리 복잡성 해결, 데이터 CRUD 등 지원 소프트웨어
DBMS 특징
[일회보무효]
- 데이터 일관성 : 조작 후 데이터 변함없음
- 데이터 회복성 : 장애 발생 시 복구되어야 함
- 데이터 보안성 : 불법 노출, 변경으로부터 보호
- 데이터 무결성 : 통일한 내용에 서로 다른 데이터 저장 불가
- 데이터 효율성 : 응답 시간, 공간 최적화
DBMS 유형
[키컬도그]
- Key-Value Store : 메모리 기반 성능 우선 시스템 및 빅데이터 처리
- Column Family Data Store : 키 안에 조합으로 된 여러 개의 필드 가짐
- Document Store : 문서라는 타입 사용
- Graph Store : 시맨틱 웹, 온톨로지 분야에서 사용, 그래프 표현
빅데이터 : 주어진 비용, 시간 내에 처리 가능한 데이터 범위를 넘어 수십 PB 크기의 비정형 데이터
NOSQL : 고정된 테이블 스키마가 필요하지 않고 연산 불가, 수평 확장 가능 DBMS
데이터 마이닝 : 대규모 저장된 데이터 안에서 체계적이고 자동적으로 규칙이나 패턴 찾아내는 기술
응용 SW 기초 기술 활용
운영체제 : 사용자가 컴퓨터 하드웨어를 쉽게 사용할 수 있도록 인터페이스 제공
OS 특징
[편인스자제]
- 사용자 편리성 제공 : 한정된 시스템 자원 효과적 사용
- 인터페이스 기능 담당 : 컴퓨터와 사용자 연결
- 스케줄링 담당 : 다중 사용자, 다중 프로그램 환경에서 자원 분배 스케줄링 담당
- 자원 관리 : CPU, 메모리, 기억장치, 입출력 등의 자원 관리
- 제어 기능 : 입출력 장치와 사용자 프로그램 제어
OS 쉘 : 사용자 입력 명령어 읽고 필요한 시스템 기능 실행하는 명령어 해석기
OS 커널 : OS 핵심 기능 모여 있는 프로그램
Unix : 데니스 리치, 켄 톰슨 등이 함께 벨 연구소를 통해 만든 C언어로 구현되어 있는 OS
Linux : Unix 기반 오픈소스 OS
Mac : Unix 기반 GUI OS
Android : Linux 기반 휴대용 장치 OS
Linux/Unix 파일 접근 권한 관리
- User, Group, Other 순
- 읽기/쓰기/실행 = 4/2/1
메모리 관리 기법
[반배할교]
- 반입 기법(언제) : 주기억장치에 적재할 다음 프로세스 반입 시기 결정
- 배치 기법(어디에) : 디스크에 있는 프로세스를 주기억장치의 어느 위치에 저장할 것인지 결정
- 할당 기법(어떻게) : 실행해야 할 프로세스를 주기억장치에 어떤 방법으로 할당할 것인지 결정
- 교체 기법(누구를) : 재배치 기법으로 주기억장치에 있는 프로세스 중 어떤 프로세스를 제거할 것인지 결정
반입 기법
[요예]
- 요구 반입 : 요구가 있을 시 반입
- 예상 반입 : 예측하여 반입
배치 기법
[초적악]
- 최초 배치 : 첫 번째 분할에 배치
- 최적 배치 : 비슷한 공간에 배치
- 최악 배치 : 가장 큰 공간에 배치
할당 기법
[연단다 분페세]
- 연속 할당 : 연속해서 배치(단일 분할, 다중 분할)
- 분산 할당 : 프로세스를 조각내서 배치(페이징(같은 크기로), 세그멘테이션(가변적 크기로))
교체 기법
[피루푸오누스]
- FIFO : 가장 먼저 들어온 페이지 교체
- LRU : 가장 오랫동안 사용되지 않은 페이지 교체
- LFU : 참조 횟수가 적은 페이지 교체
- OPT : 앞으로 사용될 가능성이 적은 페이지 교체
- NUR : 최근까지 사용되지 않은 페이지 교체
- SCR : 가장 먼저 들어왔지만 자주 사용되는 페이지의 교체를 막음
메모리 단편화 : 분할된 주기억장치에 프로세스 할당, 반납 과정에서 사용되지 못하고 낭비되는 기억장치가 발생하는 현상
- 내부 단편화 : 적재하고 남는 공간 발생
- 외부 단편화 : 작아서 사용 못하는 공간 발생
지역성 : 프로세스가 실행 중에 주기억장치를 참조할 때 일부 페이지만 집중 참조하는 특성
[시공순]
- 시간(Temporal) 지역성 : 최근 사용되었던 장소들이 집중적으로 액세스
- 공간(Spatial) 지역성 : 특정 위치의 페이지를 집중 액세스
- 순차(Sequential) 지역성 : 데이터가 순차적으로 액세스
프로세스 : CPU에 의해 처리되는 프로그램, 실행 중인 프로그램
프로세스 상태
[생준실대완]
- 생성 상태 : 프로세스 생성
- 준비 상태 : CPU 할당 받을 수 있음
- 실행 상태 : CPU 할당 받고 동작 중
- 대기 상태 : 입출력 처리 완료까지 대기 리스트
- 완료 상태 : 완전히 수행 종료
프로세스 상태 전이
[디타블웨]
- 디스패치 : Ready List에서 프로세스 선정 후 CPU 할당 (준비 -> 실행)
- 타이머 런 아웃 : 할당 시간 초과, PCB에 저장 후 준비 상태로 전이 (실행 -> 준비)
- 블록 : 입출력 발생 (실행 -> 대기)
- 웨이크업 : 입출력 종료 (대기 -> 준비)
PCB(Process Control Block) : OS가 프로세스 관리를 위해 필요한 내용을 담고 있는 자료 구조
프로세스 스케줄링 : CPU를 사용하려고 하는 프로세스 사이의 우선순위 관리 작업
선점형 스케줄링
[라S다다]
- 라운드-로빈 : 시간 할당량을 정해놓고, 시간 내 처리 못할 경우 대기 큐 가장 뒤로 보냄
- SRT(Shortest Remaining Time first) : 대기 큐에 수행 시간이 짧은 프로세스가 선점
- 다단계 큐 : 여러 큐를 이용해 각각 독립적인 스케줄링을 가짐
- 다단계 피드백 큐 : FIFO + RR, 여러 큐에 특성에 따라 서로 다른 시간 할당량 부여
비선점형 스케줄링
[우기흔FS]
- 우선순위 : 프로세스별 우선순위에 따라 CPU 할당
- 기한부 : 정해진 시간 내 프로세스가 완료되도록 계획
- HRN : 응답률이 높은 프로세스를 선택해 할당
- FCFS : 대기 큐에 먼저 도착한 순서에 따라 선택
- SJF(Shortest Job First) : 수행시간이 가장 짧은 프로세스에게 할당
디스크 스케줄링
[F스스씨룩엔스]
- FCFS : 대기 큐에 먼저 들어온 순서로
- SSTF(Shortest Seek Time First) : 탐색거리가 가장 짧은 순서로
- SCAN : 탐색 거리 짧은 순서로 먼저 처리하고 역방향 요청 사항 처리
- C-SCAN : 항상 바깥쪽에서 안쪽으로 가장 짧은 탐색거리 먼저 처리
- LOOK : SCAN 바탕 진행 방향에서 요청 없으면 역방향 진행
- N-STEP SCAN : SCAN 바탕으로 진행 시작 시 대기 요청 처리, 도중 도착한 요청은 한꺼번에 다음에 처리
- SLTF : 섹터 큐잉
교착 상태 : 다중 프로세싱 환경에서 두 개 이상의 프로세스가 특정 자원할당을 무한정 대기하는 상태
교착 상태 발생 조건
[상점비환]
- 상호배제(Mutual Exclusive) : 프로세스가 자원을 배타적으로 점유하여 다른 프로세스가 자원을 사용할 수 없는 상태
- 점유-대기(Hold & Wait) : 한 프로세스가 자원을 점유하고 있으면서 다른 자원 요청하여 대기하는 상태
- 비선점(Non Preemption) : 한 프로세스가 점유한 자원에 대해 다른 프로세스가 선점 불가, 점유한 프로세스만 해제 가능
- 환형대기(Circular Wait) : 두 개 이상의 프로세스 간 자원의 점유와 대기가 원형 형태로
교착상태 해결 방법
[예회발복]
- 예방 : 상호배제를 제외한 나머지 교착상태 발생 조건 부정
- 회피 : 안전한 상태 유지
- 발견 : 시스템 상태 감시 알고리즘 통해 교착 상태 검사
- 복구 : 교착상태 없어질 때까지 프로세스 순차 종료
가상화 : 물리적인 리소스를 하나로 보이게 하거나 하나의 물리적 리소스를 여러개로 보이게 하는 기술
가상화 종류
[플리]
- 플랫폼 가상화 : 하드웨어 플랫폼 위에 실행되는 호스트 프로그램이 게스트 프로그램을 만들어 독립 환경처럼 보여줌
- 리소스 가상화 : 게스트 소프트웨어 위에서 사용자는 독립된 하드웨어에서 실행되는 것처럼 활용
가상화 기술요소
[컴스I컨분네]
- 컴퓨팅 가상화 : 물리적 리소스 가상화 후 논리적 단위로 리소스 활용
- 스토리지 가상화 : 스토리지와 서버 사이에 SW/HW 계층 추가, 스토리지를 논리적으로 제어 및 활용
- I/O 가상화 : 서버와 I/O 디바이스 사이의 미들웨어 계층, 자원을 물리적 분리 후 케이블과 스위치 구성 단순화
- 컨테이너 : 컨테이너화된 애플리케이션들이 단일 운영체제 상에서 실행되도록 지원
- 분산처리 기술 : 여러 대의 컴퓨터 계산 및 저장 능력을 이용하여 커다란 계산이나 대용량 데이터 처리, 저장
- 네트워크 가상화 : 물리적으로 떨어져 있는 다양한 장비 연결
클라우드 컴퓨팅 : 인터넷을 통해 가상화된 컴퓨터 시스템 리소스 제공, 클라우드에 연결된 다른 컴퓨터로 처리
클라우드 컴퓨팅 분류
[사공하]
- 사설 클라우드 : 기업, 조직 내부에서 보유하고 있는 컴퓨팅 자원 활용하여 내부 구축 운영
- 공용 클라우드 : 클라우드 서비스 제공 업체에서 다중 사용자를 위한 서비스 제공
- 하이브리드 클라우드 : 사설 + 공용
클라우드 컴퓨팅 유형
[IPS]
- IaaS(Infrastructure as a Service) : 스토리지, 애플리케이션에 대해 제어권을 가짐
- PaaS(Platform as a Service) : OS, 애플리케이션, 호스팅 환경 구성 제어권 가짐
- SaaS(Software as a Service) : 주문형 소프트웨어
- 관리 영역 낮음 -> 높음
프로토콜 : 톰 마릴, 메시지 전달, 도착 확인, 도착 안했을 경우 재전송하는 은어를 용어로
프로토콜 3 요소
[구의시]
- 구문 (Syntax)
- 의미 (Semantic)
- 시간 (Timing)
OSI 7 계층 : ISO에서 개발한 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 표현
[계층 : 물데네 전세표 응]
[단위 : 빝프패세데~]
- 순서대로 1~7, (프로토콜) 전송단위
- 물리 계층 : 전기 신호 변환 (RS-232C) 비트
- 데이터링크 계층 : 오류 제어, 회선 제어, 흐름 제어 (이더넷) 프레임
- 네트워크 계층 : 데이터 전송 최적화 경로 제공 (IP / ICMP) 패킷
- 전송 계층 : 신뢰성 있는 통신 보장 (TCP / UDP) 세그먼트
- 세션 계층 : 연결 접속 및 동기제어 (SSH / TLS) 데이터
- 표현 계층 : 데이터 형식 설정과 부호교환, 암/복호화 (JPEG / MPEG) 데이터
- 응용 계층 : 사용자와 네트워크 간 연결, 데이터 생성 (HTTP / FTP) 데이터
네트워크 장비
- 물리 계층
- 허브 : 여러 대 컴퓨터 연결하여 네트워크로 보내거나 하나의 네트워크로 수신된 정보를 여러 대의 컴퓨터로 보냄
- 리티퍼 : 디지털 신호 증폭
- 데이터링크 계층
- L2 스위치 : 목적지 MAC 주소 기반, 빠르게 데이터 전송
- 브릿지 : LAN과 LAN 연결
- NIC(Network Interface Card) : 외부 네트워크와 빠른 통신
- 스위칭 허브 : 스위치 기능을 가진 허브
- 네트워크 계층
- L3 스위치 : 3계층에서 동작하는 스위치
- 라우터 : 최적 경로 지정, 경로에 따라 전송
- 게이트웨이 : 다른 통신망에 접속
- 공유기 : 하나의 라인을 여러 컴퓨터가 공유
- 망 스위칭 허브 : 광역 네트워크 커버
데이터링크 계층 프로토콜
- HDLC : 점대점
- PPP : 통신 노드 간 연결
- Frame Relay : 간략화, 프레임의 중계 기능, 다중화 기능만 수행
- ATM : 바이트 셀, 비동기식 시분할 다중화 방식
네트워크 계층 프로토콜
- IP : 패킷 단위 통신
- ARP : ip 주소를 MAC 주소로 변환
- RARP : MAC 주소로 ip 주소 요청
- ICMP : 오류 정보 전송 목적
- IGMP : 멀티캐스트 실시간 전송
- 라우팅 : 최적 경로 설정
서브넷 마스크 : IP 주소에서 네트워크와 호스트 구분
IPv4 : 32Bit 주소 체계, 8비트 4부분 / 멀티캐스트, 유니캐스트, 브로드캐스트
IPv6 : 128Bit 주소 체계, 16비트 8부분 / 멀티캐스트, 유니캐스트, 애니캐스트
멀티캐스트 : 같은 데이터를 그룹 수신자들에게 동시 전송
유니캐스트 : 식별된 고유 주소 목적지에 1대1로 전송
브로드캐스트 : 같은 서브 네트워크 모든 수신자에게 전송
애니캐스트 : 잠재적 수신자 그룹 안에서 가장 가까운 노드 연결 전송
IPv4 -> IPv6 전환 방법
- 듀얼 스택(Dual Stack) : IPv4, IPv6 모두 탑재
- 터널링(Tunneling) : 인접한 IPv4 망에 터널 만들고 캡슐화
- 주소 변환
라우팅 프로토콜 종류
[아이집 이집 비집]
- IGP : 시스템 내 라우팅에 사용 [립 오스프]
- RIP : 거리-벡터, 소규모
- OSPF : RIP 단점 보완, 최단 경로로 라우팅, 대규모
- EGP : 게이트웨이 간 라우팅
- BGP : EGP 단점 보완, 초기 전체 데이터 로딩 후 변경된 정보만 교환
전송 계층 프로토콜
- TCP : 신뢰성 보장, 연결 지향, 흐름 제어, 혼잡 제어
- UDP : 비신뢰성, 비순서화, 실시간, 단순 헤더
세션 계층 프로토콜
- RPC : 원격 프로시저 호출
- NetBIOS : 응용계층의 애플리케이션에 API 제공
- SSH : 보안 쉘, 원격 호스트 접근
- SSL/TLS : 안전한 데이터 전송, 보안
표현 계층 프로토콜
- JPEG : 이미지 표준 규격
- MPEG : 멀티미디어 표준 규격
응용 계층 프로토콜
- HTTP : 텍스트 기반, 데이터 주고받음
- FTP : 서버-클라이언트 간 파일 전송
- SMTP : 이메일 전송 / 25 포트
- IMAP : 이메일 수신 (메일 서버)
- POP3 : 이메일 수신 (로컬 PC)
- Telnet : 네트워크 연결
패킷 스위칭 : 패킷으로 데이터 전송, 전송하는 동안만 자원 사용
- X.25 : 고정된 대역폭
- Frame Relay : 유연한 대역폭
- ATM : 광대역
서킷 스위칭 : 특정 연결을 만들어 독점적으로 사용해 통신
애드혹 네트워크(Ad-hoc) : 재난 및 군사 현장, 모바일 호스만 이용하여 구성
개발환경 인프라 구성 방식
[온클하]
- 온프레미스 방식 : 외부 인터넷망 차단 상태에서 인트라넷 활용 개발환경 구축
- 클라우드 방식 : 클라우드 공급 업체들의 서비스 임대하여 개발환경 구축
- 하이브리드 방식 : 온프레미스 + 클라우드
스토리지 시스템 유형
[다나산]
- DAS(Direct Attached Storage) : 데이터 저장 장치를 호스트 버스 어댑터에 직접 연결
- NAS(Network Attached Storage) : 서버와 저장 장치를 네트워크로 연결, 구성
- SAN(Storage Area Network) : 서버와 스토리지를 저장 장치 전용 네트워크로 상호 구성
소프트웨어 개발 보안 구축
보안의 구성요소
[기무가]
- 기밀성(Confidentiality) : 인가된 사용자만 접근 가능
- 무결성(Integrity) : 인가된 사용자만 수정 가능
- 가용성(Availability) : 인가된 사용자는 권한 내에서 접근 가능
DoS : 시스템 자원을 부족하게 하여 공격
DoS 공격 종류
[신유스 죽랜 티봉보]
- SYN Flooding : ACK 발송 안함, SYN 패킷만 보내 점유
- UDP Flooding : 대량의 UDP 패킷 생성 후 임의 포트로 전달, ICMP 생성하게 해서 지속 자원 고갈
- 스머프 : 출발지를 공격 대상 IP로, 네트워크 전체에 ICMP ECHO 패킷 직접 브로드캐스팅
- 죽음의 핑 : ICMP 패킷을 크게 만들어 다수 IP 단편화 발생, 오버플로우 발생시킴
- 랜드어택 : 출발지와 목적지가 같은 패킷 주소, 수신자가 자기자신에게 응답
- 티어 드롭 : IP 패킷 재조합 과정에서 잘못된 Fragment Offset 정보로 수신 장애
- 봉크 : 패킷 분할, 처음 패킷 1번으로, 이후 모두 1번으로
- 보잉크 : 처음 패킷 1번으로, 중간에 패킷 시퀀스 번호를 비정상적인 상태로 송신
DDoS 공격 : 여러 대의 공격자를 분산 배치하여 동시 동작 공격
DDoS 공격 구성요소
[핸에마공데]
- 핸들러 : 마스터 시스템의 역할 수행
- 에이전트 : 공격 대상에게 직접 공격
- 마스터 : 공격자에게서 명령 받음
- 공격자 : 공격 주도 해커 컴퓨터
- 데몬 프로그램 : 에이전트 역할 수행 프로그램
DRDos 공격 : 공격 대상이 반사 서버로부터 다량의 응답을 받도록 하는 공격
세션 하이재킹 : 케빈 미트닉, 패킷을 스니핑하여 시퀀스 넘버 획득, 비동기 상태로 강제 전환, 획득한 시퀀스 넘버 사용
애플리케이션 공격
[겟 헤포리 헐해]
- HTTP GET Flooding : 과도한 Get 메시지 사용
- Slow Http Header Dos(=slowloris) : 헤더 정보 조작, 웹 서버가 온전한 헤더가 올 때까지 기다리게 함
- Slow Http Post Dos(=RUDY Attack) : Content-Length를 비정상적으로 크게 메시지 바디 소량으로 보내 연결 지속
- Slow Http Read Dos : TCP 윈도와 데이터 처리율 감소, 다량의 HTTP 요청 전송
- Hulk DoS : URL을 계속 변경하면서 다량의 GET 요청 보냄
- Hash DoS : 웹 서버 해시 테이블에 해시 충돌을 일으킴
네트워크 공격
[스네패트iai]
- 스니핑 : 직접 공격하지 않고 데이터만 몰래 들여다보는 수동적 공격
- 네트워크 스캐너(=스니퍼) : 공격자가 네트워크 취약점을 탐색하는 도구
- 패스워드 크래킹 [사무패레]
- 사전 크래킹 : ID/PW 가능성이 있는 단어 대입
- 무차별 크래킹 : PW 가능성이 있는 문자 무작위 대입
- 패스워드 하이브리드 공격 : 사전 + 무차별
- 레인보우 테이블 공격 : 해시 값을 테이블에서 검색하여 PW 찾아냄
- 트로이 목마 : 겉으로는 정상적이나 실행하면 악성코드
- IP 스푸핑 : 공격자의 패킷 헤더를 호스트 IP 주소로 위조하여 타깃에 전송
- ARP 스푸핑 : MAC 주소를 위조하여 패킷을 스니핑
- ICMP Redirect 공격 : 패킷 흐름 변경, ICMP Redirect 메시지를 위조하여 패킷을 스니핑
시스템 보안 위협
[버백포레키루]
- 버퍼 오버플로우 공격 : 메모리의 버퍼 크기를 초과하는 데이터 입력해 프로세스 흐름 변경 공격
- 스택 버퍼 오버플로우 : 스택 영역 버퍼 오버플로우
- 힙 버퍼 오버플로우 : 힙 영역 버퍼 오버플로우
- 백도어 : 정상적인 인증 절차 우회
- 포맷 스트링 공격 : 포맷 스트링을 인자로 하는 함수의 취약점 공격
- 레이스 컨디션 공격 : 공유자원 동시 접근 비정상 결과, 프로세스가 임시 파일 생성 시, 실행 중 끼어들어 임시파일을 심볼릭 링크하는 공격
- 키로거 공격 : 키보드 움직임 탐지 저장, 개인 정보 빼감
- 루트킷 : 악성 소프트웨어 모음
버퍼 오버플로우 공격 대응
[가쉴ASLR]
- 스택가드 : 카나리를 미리 삽입해두고, 버퍼 오버플로우 발생 시 카나리값 체크, 복귀주소 호출 안함
- 스택쉴드 : 함수 시작 시 복귀주소를 특수 스택에 저장, 종료 시 비교
- ASLR(Address Space Layout Randomization) : 주소 공간 배치 난수화
주요 공격 용어
- 스피어 피싱 : 특정 대상 선정 후, 그 대상에게 이메일 지속 발송, 링크 클릭 유도
- 스미싱 : SMS+Fishing, 문자메시지를 위장
- 큐싱 : 큐알 코드+Fishing, 큐알 코드를 통해 악성 앱 받도록 유도
- 봇넷 : 악성 프로그램에 감염된 컴퓨터들이 네트워크로 연결된 형태
- APT 공격 : 특정 대상을 목표로 한 지능적/지속적 맞춤형 공격
- 공급망 공격 : 개발사 코드를 수정하거나 배포 서버에 접근 후 파일 변경
- 제로데이 공격 : 보안 취약점이 공표되기 전에 공격
- 웜 : 스스로 복제하여 전파하는 악성 SW
- 악성 봇 : 해커의 명령으로 원격 제어되는 프로그램
- 랜섬웨어 : 암호화 후 복호화를 위해 돈 요구
- 이블 트윈 : WIFI 위장 후 정보 탈취
- 사회공학 : 심리와 행동을 이용, 정보 탈취
- 타이포스쿼팅 : 사이트 접속 시 주소 실수하는 경우 이용, URL 하이재킹
- 부 채널 공격 : 전력 소비와 같은 물리적 특성을 측정해 정보 탈취
- 드라이브 바이 다운로드 : 악성 스크립트를 웹 서버에 설치 후, 멀웨어 서버로 연결해 감염
- 워터링홀 : 특정인을 표적으로 자주 방문하는 사이트에 악성코드 심어 공격
- 비지니스 스캠 : 기업 이메일 계정 도용
- 하트 블리드 : 하트비트의 확장 모듈 취약점 이용 공격
- 크라임웨어 : 정보 탈취로 금적적 이익 등 범죄 목적 악성코드
- 토르 네트워크 : 암호화 기법으로 데이터 전송, 익명으로 사용 가능 네트워크
- MITM 공격 : 통신 내용 도청 및 조작
- DNS 스푸핑 : DNS Lookup 조작, DNS 캐시 정보 조작으로 의도치 않은 주소로 접속하게 유도
- 포트 스캐닝 : 침입 전 어떤 포트가 활성화되어 있는지 확인
- 디렉토리 리스팅 : 웹 서버 인덱스 기능 활성화 시, 서버 내 모든 디렉토리 확인 가능한 취약점
- 리버스 쉘 : 타깃 서버가 클라이언트로 접속하게 하고, 클라이언트에서 서버의 쉘을 획득하는 공격
- 익스 플로잇 : SW/HW의 버그나 취약점을 악용하는 행위
- 스턱스넷 : 독일 지멘스사 SCADA 시스템을 목표로 제작된 악성코드
- 크리덴셜 스터핑 : 다른 곳에서 유출된 로그인 정보를 다른 곳에 무작위 대입
공격 대응 용어
- 사이버 킬체인 : 록히드 마틴, 공격형 방위시스템, APT 공격의 방어 모델
- 트러스트존 : APM 사, 독립적 보안 구역 따로 두어 중요한 정보 보호
- 허니팟 : 의도적으로 설치해 둔 취약점, 노출시켜 유인
- OWASP TOP 10 : 웹 애플리케이션의 10가지 보안 취약점에 대한 가이드
- 핑거프린팅 : 저작권 정보와 구매자 정보를 콘텐츠에 삽입, 불법 배포자 추적
- 워터마킹 : 디지털 콘텐츠에 저작자 정보 삽입
- 이상금융거래탐지시스템(FDS; Fraud Detection System) : 전자금융거래에 사용되는 정보 종합 분석 후 이상 발생 탐지, 차단
- CC(Common Criteria) : 정보 기술의 보안 기능과 보증에 대한 평가 기준
- 사이버 위협정보 분석 공유시스템(C-TAS; Cyber Threats Analysis System) : 사이버 위협정보를 체계적 수립 후 자동화된 정보공유 시스템
- 장착형 인증 모듈(PAM; Pluggable Authentication Module) : 리눅스 시스템 내에서 사용되는 인증을 위한 라이브러리
- CVE(Common Vulnerabilities and Exposures) : MITRE 사, 공개적인 보안 취약점 표준화한 식별자 목록
- CWE(Common Weakness Enumeration) : MITRE 사, 공통적으로 발생하는 약점 분류 목록
- ISMS(Information Security Management System) : 정보보호 관리체계
- PIMS(Personal Security Management System) : 기업이 보호조치 체계를 구축했는지 여부 점검, 평가하는 인증제도
- TKIP(Temporal Key Integrity Protocol) : 임시 키 무결성 프로토콜, 안전하지 않은 WEB 암호화 표준을 대체
서버 접근 통제 유형
[닥막 알박]
- DAC(임의적 접근통제) : 주체나 신분 근거, 데이터 소유자가 권한 부여
- MAC(강제적 접근통제) : 권한 근거, 시스템이 권한 부여
- RBAC(역할기반 접근통제) : 역할 근거, 중앙관리자가 권한 부여
3A
- Authentication : 인증, 신원 인정
- Authorization : 인가, 접근 허용
- Accounting : 책임추적, 행동 추적, 기록
인증 관련 기술
[스커]
- SSO : 한 번의 인증으로 여러 자원 사용 가능
- 커버로스(Kerberos) : MIT의 Athena 프로젝트
접근 통제 보호 모델
[비비]
- BLP(벨-라파듈라 모델) : 노리업, 노라다 (No Read Up, No Write Down)
- 비바 : 노리다, 노라업 (No Read Down, No Write Up)
암호화 알고리즘 방식
[대비해]
- 대칭 키 암호 방식 : 암복호화에 같은 키 사용
- 비대칭 키 암호 방식 : 공개키, 공캐기 누구나, 비밀키 소유자만
- 해시 암호 방식 : 임의의 정보 입력, 고정된 길이 암호문
대칭 키 암호 방식
[데에시아 I엘스]
- DES : 블록 크기 64비트, 키 길이 56비트, 16라운드
- AES : 블로 크기 128비트, 키 길이에 따라 128 ,192, 256비트
- SEED : KISA 개발, 128비트 비밀키로부터 생성된 64비트 라운드 키 사용, 총 16회 라운드
- ARIA : 국정원, 산학연구협회 개발, 경량 환경 효율성 향상을 위함
- IDEA : 스위스 연방, 128비트, 64비트 평문을 8라운드, DES 대체
- LFSR : 선형 함수로 계산되는 스트림 암호화 알고리즘
- Skipjack : NSA, Fortezza Card, 음성 암호화
비대칭 키 암호 방식
[르디EE]
- RSA : MIT 교수 세명, 소인수 분해
- 디피-헬만 : 최초의 공개키, 이산대수의 어려움
- ECC : 타원 곡선 암호
- ElGamal : 전자서명, 이산대수의 어려움
해시 암호 방식
[엠샤샤하하]
- MD5 : 무결성 검사에 사용
- SHA-1 : NSA, 160비트 해시값
- SHA-256/384/512 : 256비트 해시값
- HAS-160 : KCDSA를 위해 개발
- HAVAL : 메시지 다이제스트 출력
암호화 전송
- IPSec : 3계층 보안 프로토콜, 헤더 + 암호화
- SSL/TLS : 4계층, 7계층 사이에서 클라이언트-서버 간 웹 데이터 암호화
- S-HTTP : 웹상 네트워크 트래픽 암호화, 모든 메시지 암호화
입력 데이터 검증 및 표현 취약점
[X씨S]
- XSS : 검증되지 않은 외부 입력데이터가 포함된 웹 페이지 열람할 때, 부적절한 스크립트 실행 공격
- CSRF : 사용자 자신의 의지와 무관하게, 공격자가 의도한 행위를 요청하게 하는 공격
- SQL Injection : 악의적인 SQL 구문을 삽입, 실행시켜 정보 탈취 혹은 조작
XSS 공격 유형
[스리돔]
- Stored XSS : 방문자들이 악성 스크립트 포함 페이지를 읽어봄과 동시에 감염
- Reflected XSS : 악성 URL 클릭 시 공격 스크립트 반사
- DOM XSS : DOM 기반 XSS 취약점 있는 브라우저 대상
SQL Injection 공격 유형
[폼유스 매에블]
- Form SQL Injection : HTML Form 기반, 쿼리문 조건 조작 인증 우회
- Union SQL Injection : UNION 연산자 사용, 쿼리 결과 결합 공격
- Stored Procedure SQL Injection : 저장 프로시저 사용 공격
- Mass SQL Injection : 한 번의 공격으로 대량 DB 값 변조
- Error-Based SQL Injection : 에러 값 기반으로 점진적 정보 탈취
- Blind SQL Injection : 쿼리의 참/거짓 결과를 통해 공격
보안 솔루션
- 방화벽 : 내-외부 트래픽을 모니터링하여 접근을 허용/차단하는 시스템
- 웹 방화벽 : 웹 애플리케이션 특화, XSS나 SQL 삽입을 탐지/차단 시스템
- 네트워크 접근 제어(NAC) : 내부 네트워크 접속 시도시 통제
- 침입 탐지 시스템(IDS) : 비인가 사용자의 침입 실시간 탐지
- 침입 방지 시스템(IPS) : 공격/침입 실시간 차단
- 무선 침입 방지 시스템(WIPS) : 비인가 무선 단말기 접속 차단
- 통합 보안 시스템(UTM) : 다양한 보안 장비 기능 통합 제공
- 가상사설망(VPN) : 공중망 사용 시 전용망 사용처럼 보안 효과
콘텐츠 유출 방지 보안 솔루션
[데디]
- 데이터 유출 방지(DLP) : 중요 자료가 외부로 나가는 것 탐지/차단
- 디지털 저작권 관리(DRM) : 디지털 저작물에 대한 보호/관리
비지니스 연속성 계획(BCP) : 각종 재해, 재난으로부터 위기관리 기반으로 복구 등을 통해 비지니스 연속성 보장
애플리케이션 테스트 관리
테스트 기본 원칙
[결완초결 살정오]
- 결함 존재 증명 : 결함 존재 밝힘
- 완벽 테스팅 불가능 : 완벽하게 테스팅하는 시도 불필요
- 초기 집중 : (요르돈 법칙=스노우볼) 초기부터 테스트하면 기간 단축, 재작업을 줄임
- 결함 집중 : 적은 수의 모듈에서 대다수의 결함 발견
- 살충제 패러독스 : 동일한 테스트 케이스에 의한 반복 테스트는 새로운 버그 못 찾음
- 정황 의존성 : 소프트웨어 성격에 맞게 테스트
- 오류-부재의 궤변 : 요구사항 충족 안되면 결함 없어도 품질 낮음
테스트 산출물
[계베케 슈시스결]
- 테스트 계획서 : 테스트 수행을 계획 문서
- 테스트 베이시스 : 테스트 설계 기준 문서
- 테스트 케이스 : 테스트 항목의 명세서
- 테스트 슈트 : 실행환경 구분, 테스트 케이스의 집합
- 테스트 시나리오 : 테스트 되어야 할 기능, 특징, 상황을 작성한 문서
- 테스트 스크립트 : 테스트 실행 순서 작성 문서
- 테스트 결과서 : 결과 문서
동적 테스트 : 소프트웨어 실행하는 방식
정적 테스트 : 실행하지 않고 구조 분석, 검중
테스트 커버리지 : 테스트 수행 정도를 나타냄, 테스트 범위 측정하는 품질 측정 기준
테스트 커버리지 유형
[기라코]
- 기능 기반 커버리지 : 전체 기능을 모수로 설정, 테스트 수행된 기능 수 측정
- 라인 기반 커버리지 : 라인 수를 모수로 설정, 시나리오가 수행한 라인 수 측정
- 코드 기반 커버리지 : 구문, 조건, 결정 등 구조 코드 측정
화이트박스 테스트 (동적) : 프로그램 내부 구조와 동작 검사
[구조결 조결 변조결 다기제데루]
- 구문 커버리지(Statement) : 모든 명령문 적어도 한 번 실행
- 조건 커버리지(Condition) : 개별 조건식 적어도 한 번은 참과 거짓 결과 수행
- 결정 커버리지(Decision) : 전체 조건식 적어도 한 번은 참과 거짓 결과 수행
- 조건/결정 커버리지 : 전체/개별 조건식 적어도 한 번은 참과 거짓 결과 수행
- 변경 조건/결정 커버리지(Modified) : 개별 조건식이 다른 개별 조건식에 영향 받지 않고 전체 조건식에 독립적으로 영향
- 다중 조건 커버리지 : 모든 개별 조건식의 모든 가능한 조합 보장
- 기본 경로 커버리지 : 수행 가능한 모든 경로 테스트 (맥케이브 순환 복잡도)
- 제어 흐름 커버리지 : 제어 구조를 그래프 형태로 나타내어 내부 로직 테스트
- 데이터 흐름 커버리지 : 제어 흐름 그래프에 데이터 사용현황 추가
- 루프 테스트 : 반복 구조에 초점
블랙박스 테스트 (동적) : 요구사항 명세를 보면서 수행
[동경결 상유분 페원비오]
- 동등분할 테스트(Equivalence Partitioning) : 입력 데이터를 유효값/무효값으로 그룹핑하고 대푯값 도출
- 경곗값 분석 테스트(Boundary Value Analysis) : 최솟값을 바로 위나 아래와 같이 입력 데이터의 극한 한계를 테스트
- 결정 테이블 테스트(Decision Table) : 요구사항을 테이블로 구성, 원인-결과 조합 테스트
- 상태 전이 테스트(State Transition) : 이벤트에 의해 객체 상태가 전이되는 경우의 수 측정
- 유스케이스 테스트 : 유스케이스로 모델링 시, 프로세스 흐름 기반 테스트
- 분류 트리 테스트(Classification Tree Method) : 트리 구조로 분석 및 표현
- 페어와이즈 테스트(Pairwise) : 테스트 데이터 값을 최소 한 번씩 조합
- 원인-결과 그래프 테스트(Cause-Effect) : 그래프를 통해 입력값 간의 관계 및 출력에 미치는 영향 분석
- 비교 테스트(Comparison) : 여러 버전의 프로그램에 같은 입력값을 넣고 결과 비교
- 오류 추정 테스트(Error Guessing) : 개발자가 범할 수 있는 실수 추정, 결함 검출되도록 설계 후 테스트
정적 테스트
[동인워]
- 동료 검토(Peer Review) : 2 ~ 3명이 진행하는 리뷰, 작성자 설명, 관계자 결함 발견
- 인스펙션 : 전문가 또는 팀이 검사
- 워크스루 : 회워 전에 자료 배포 후 검토 후 짧은 시간 회의
테스트 목적에 따른 분류
[회안성 구회병]
- 회복 테스트 : 고의로 실패 유도한 뒤 정상 복귀 테스트
- 안전 테스트 : 보안 결함 점검
- 성능 테스트 : 요구에 대한 반응 속도 측정
- 구조 테스트 : 논리 경로, 소스코드 복잡도 측정
- 회귀 테스트 : 오류 제거 후, 수정에 의해 유입된 오류 없는지 테스트
- 병행 테스트 : 변경 시스템과 기존 시스템에 동일한 데이터 입력 후 결괏값 비교
성능 테스트 유형
[부스스내]
- 부하 테스트 : 부하를 늘려 임계점 찾는 테스트
- 스트레스 테스트 : 임계점 이상 부하를 가해 비정상적인 상황에서 성능 측정
- 스파이크 테스트 : 짧은 시간 내 많은 사용자 몰릴 때 반응 테스트
- 내구성 테스트 : 오랜 시간 동안 높은 부하를 가해 테스트
테스트 오라클
[참샘휴일]
- 참 오라클 : 모든 입력값에 대해 기대 결과 생성, 발생된 오류 모두 검출
- 샘플링 오라클 : 특정 몇 개 입력 값의 기대 결과만 생성
- 휴리스틱 오라클 : 몇 개 입력 값에 대해 정확한 결과 제공, 나머지는 휴리스틱(추정) 처리
- 일관성 검사 오라클 : 변경이 있을 때, 수행 전후 결괏값 동일한지 확인
테스트 레벨 종류
[단통시인] : V모델에서 아래에서 위로
- 단위 테스트 : 최소 단위인 모듈, 컴포넌트, 서브루틴 등을 테스트
- 통합 테스트 : 모듈 간 인터페이스, 컴포넌트 상호작용 등을 테스트
- 시스템 테스트 : 통합된 단위 시스템 검증
- 인수 테스트 : 계약상 요구사항을 만족하는지 확인
테스트 하네스 : 단위 테스트를 지원하기 위한 코드와 데이터
[상드 하스 목]
- 테스트 드라이버 : 상향식 통합 테스트, 모듈 테스트 수행 후의 결과 도출 시험용 모듈
- 테스트 스텁 : 하향식 통합 테스트, 일시적으로 필요한 조건만 가지고 임시 제공되는 시험용 모듈
- 목 오브젝트 : 행위를 조건부로 사전 입력, 예정된 행위 수행하는 가짜 객체
나머지 전체 과목
소프트웨어 생명주기 모델 종류
[폭프나반]
- 폭포수 모델 : 고전적, 각 단계 확실히 마무리 후 다음 단계
- 프로토타이핑 모델 : 주요 기능을 프로토타입으로 구현, 피드백 반영
- 나선형 모델 : 시스템 개발 시 위험 최소화, 점진적 개발
- 반복적 모델 : 병렬적 개발 후 통합, 반복적 개발
소프트웨어 개발 방법론 종류
[구정객 컴애제]
- 구조적 : 전체 시스템을 기능에 따라 나누어 개발, 분할과 정복 방식 (나씨-슈나이더만 차트)
- 정보공학 : 정보시스템 개발에 필요한 관리 절차와 작업 기법 체계화
- 객체지향 : 객체 단위로 시스템 분석 및 설계
- 컴포넌트 : 컴포넌트를 조립해서 하나의 새로운 프로그램 작성
- 애자일 : 절차보다 사람 중심, 변화 유연, 신속 대응, 효율적
- 제품 계열 : 공통 기능 정의 개발
애자일 유형
[엑린스]
- XP : 1~3주 반복, 의사소통 개선, 즉각 피드백
- 린 : 도요타 린 시스템, 낭비 요소 제거
- 스크럼 : 2~4주 단위, 정해진 시간/장소에서 짧은 시간 개발
객체지향 설계 원칙
[SOLID]
- SRP (단일 책임 원칙) : 하나의 클래스는 하나의 책임만
- OCP (개방 폐쇄 원칙) : 확장에는 열려 있고, 변경에는 닫혀있어야
- LSP (리스코프 치환 원칙) : 하위 클래스는 상위 클래스로 교체 가능해야 함
- ISP (인터페이스 분리 원칙) : 사용하지 않는 인터페이스 구현하지 말아야 함
- DIP (의존 역전 원칙) : 사용 관계 변경 없이 추상을 매개로 메시지 주고 받음
비용산정 모형 종류
[엘맨코푸기]
- LoC : 원시 코드라인 수의 낙관치, 중간치, 비관치 측정 후 예측치 구해 비용 산정
- Man Month : 한 사람이 1개월 동안 할 수 있는 일의 양 기준 산정
- COCOMO : 보헴, 프로그램 규모에 따라 비용 산정 (Organic (5만 라인)) < Semi-detached (30만 라인) < Embedded)
- Putnam : Rayleigh-Norden 곡선, 개발주기 단계 별로 요구할 인력 분포
- 기능점수(FP) : 요구 기능을 증가시키는 인자별로 가중치 부여
일정관리 모델 종류
[씨씨펄]
- CPM (주 공정법) : 여러 작업의 수행 순서가 얽혀 있는 프로젝트의 일정 계산
- CCPM (중요 연쇄 프로젝트 관리) : 주 공정 연쇄, 자원제약사항 고려 일정 작성
- PERT : 일의 순서를 계획적으로 정리하기 위한 수렴 기법
아키텍처 패턴
[계클파브엠]
- 계층화 패턴 : 시스템을 계층으로 구분, 서로 마주보는 계층에서만 상호작용
- 클라이언트-서버 패턴 : 하나의 서버 + 다수의 클라이언트, 사용자는 클라이언트와만 상호작용
- 파이프-필터 패턴 : 데이터 스트림, 하나의 서브시스템이 처리, 결과를 다음 서브시스템에게 전달
- 브로커 패턴 : 사용자가 요청하면, 브로커가 적합한 컴포넌트를 연결
- MVC 패턴 : 모델, 뷰, 컨트롤러 3개의 서브시스템으로 구조화
디자인 패턴 종류
[생구행]
생성 패턴
[팩프빌싱추]
- 팩토리 메서드 : 상위 클래스에서 인터페이스 정의, 서브 클래스가 실제 객체 생성
- 프로토타입 : 원형 객체를 복사하여 생성
- 빌더 : 객체를 조립하여 생성, 생성 방법, 구현 방법 구분, 동일한 객체 다른 결과 가능
- 싱글톤 : 클래스 내 객체가 하나 뿐임을 보장, 동시 참조 불가
- 추상 팩토리 : 구체적인 클래스에 의존하지 않고, 연관된 객체 그룹으로 생성
구조 패턴
[파플컴프브어데]
- Facade : 복잡한 시스템에 단순한 인터페이스 제공
- Flyweight : 클래스 경량화, 메모리 절약
- 컴포지트 : 객체 관계를 파일 트리 구조로 구성
- 프록시 : 실제 객체에 대한 대리 객체
- 브릿지 : 구현부에서 추상층을 분리, 기능과 구현 연결
- 어댑터 : 호환되지 않는 인터페이스들을 연결
- 데코레이터 : 객체 결합을 통해 기능 확장
행위 패턴 [미인템 옵비커 이체 스스메]
- Mediator : 객체 사이에 중재자를 두어 의존성 줄임
- Interpreter : 여러 언어 구문을 해석할 수 있게 함
- 템플릿 메서드 : 오버라이딩, 상위 클래스에서 기능 정의, 하위 클래스에서 세부 구체화
- 옵저버 : 객체를 지켜보고 있다가, 상태가 변하면 그 객체에 의존하는 다른 객체에 변화 상태 전달
- 비지터 : 처리 기능을 별도로 분리함
- 커맨드 : 요청을 객체로 캡슐화, 요청에 맞는 서브 클래스 실행
- Iterator : 접근이 잦은 객체에 대해 동일한 인터페이스 사용하도록 함
- chain of responsibility : 한 객체가 요청을 처리하지 못하면, 다른 객체로 넘어가 처리
- state : 객체의 상태를 캡슐화, 이를 참조해 동작을 다르게 처리
- strategy : 동일한 계열의 알고리즘을 캡슐화, 전략 선택 사용
- 메멘토 : 특정 시점의 객체 내부 상태를 객체화, 해당 시점을 되돌리는 기능 제공
UI 설계 원칙
[직유학유]
- 직관성 : 누구나 쉽게 이해, 사용 가능
- 유효성 : 정확, 완벽 사용자 목표 달성
- 학습성 : 초보, 숙련 모두 쉽게 배우고 사용
- 유연성 : 요구사항 최대한 수용, 실수 방지
UI 품질 요구사항
[기신사 효유이]
- 기능성 : 요구사항 정확히 만족하여 기능함?
- 신뢰성 : 오류가 없거나 있더라도 괜찮?
- 사용성 : 쓰기 편함?
- 효율성 : 한정된 자원을 효율적으로 씀?
- 유지보수성 : 개선 및 확장 쉬움?
- 이식성 : 다른 환경에도 적응 잘함?
UML 다이어그램
정적 [클객 컴배 복패]
- 클래스 : 클래스 간 관계 표현
- 객체 : 객체 간 관계 표현
- 컴포넌트 : 컴포넌트 간 관계 표현
- 배치 : 물리적 요소의 위치 표현
- 복합체 구조 : 복합 구조인 경우 내부 표현
- 패키지 : 패키지 간 관계 표현
동적 [유시커 상활타]
- 유스케이스 : 사용자 관점에서 표현
- 시퀀스 : 시간적 개념 중심으로 메시지 표현
- 커뮤니케이션 : 객체들이 주고 받는 메시지와 상호작용 표현
- 상태 : 객체 상태와 상태변화 표현
- 활동 : 시스템이 수행하는 활동 표현
- 타이밍 : 객체 상태 변화와 시간 제약 표현
웹 서비스 유형
[소떠유]
- SOAP (Simple Object Access Protocol) : HTTP/S, SMTP 등 사용, XML 기반 메시지 교환 프로토콜
- WSDL (Web Service Description Language) : 웹 서비스명, 제공 위치 등 정보가 기술된 XML 형식 언어
- UDDI (Universal Description, Discovery & Integration): WSDL의 등록, 검색을 위한 저장소
IPC 방식 : 운영체제에서 프로세스 간 서로 데이터 주고받기 위한 통신 기술
IPC 주요 기법
[메공소세]
- 메세지 큐 : 프로세스 간 통신, 메시지 또는 패킷 단위로 동작
- 공유 메모리 : 한 프로세스의 일부분을 다른 프로세스와 공유
- 소켓 : 클라이언트-서버 프로세스 사이에 통신 가능하게 함
- 세마포어 : 프로세스 사이의 동기를 맞추는 기능 제공
EAI : 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간 연계 돕는 솔루션
EAI 구축 유형
[포허메하]
- 포인트 투 포인트 : 가장 기초, 1:1 단순 통합법
- 허브 앤 스포크 : 중앙 집중형, 단일 접점 허브 시스템을 통해 데이터 전송
- 메시지 버스 : 미들웨어 통합 방식, 애플리케이션 사이에 버스를 두어 연계
- 하이브리드 : 그룹 내부는 허브앤스포크, 그룹 간은 메시지 버스
ESB : (느슨) 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간을 하나의 시스템으로 관리, 운영할 수 있도록 서비스 중심의 통합 지향 아키텍처
인터페이스 기능 구현 기술
[제엑에레]
- JSON : 개방형 표준 포맷, 속성-값 쌍으로 이루어진 데이터 오브젝트를 전달하기 위함
- XML : HTML 보완 마크업 언어, 특수한 포맷
- AJAX : 자바스크립트를 사용, 웹 서버-클라이언트 간 비동기적 XML 데이터 교환, 조작하기 위한 웹 기술
- REST : 분산 하이퍼미디어 환경에서 자원의 존재/상태 정보를 표준화된 HTTP 메서드로 주고 받는 웹 아키텍처
소프트웨어 형상 관리 도구
[씨스알 빝깃클]
- CVS : 서버-클라 구조, 다수의 인원이 동시 OS 접근 가능
- SVN : 중앙 집중형, 하나의 서버에서 소스를 쉽게 관리
- RCS : 파일 잠금, 소스 파일의 수정을 한 사람만으로 제한
- Bitkeeper : 중앙 통제, 대규모 프로젝트에서 빠른 속도
- Git : 분산형 버전 관리 시스템
- Clear Case : 복수 서버, 복수 클라이언트 구조
소프트웨어 모듈 응집도 유형 (Cohesion)
[기순통절시논우] : 위에서 아래로 높음 -> 낮음
- 기능적 응집도 (Functional) : 모든 기능이 단일 목적을 위해 수행
- 순차적 응집도 (Sequential) : 출력 결과를 다른 요소가 입력 데이터로 사용
- 통신적 응집도 (Communication) : 동일한 입출력을 사용해 각자 다른 기능 수행
- 절차적 응집도 (Procedural) : 모듈의 기능이 여러 개 일때, 구성요소들이 순차적으로 수행
- 시간적 응집도 (Temporal) : 특정 시간에 함께 처리되는 관계일 때
- 논리적 응집도 (Logical) : 유사하거나 특정 형태로 분류되는 요소들이 함께 있는 정도
- 우연적 응집도 (Coincidental) : 서로 연관이 없을 경우
소프트웨어 모듈 결합도 유형
[내공외제스자] : 위에서 아래로 낮음 -> 높음
- 내용 결합도 (Content) : 다른 모듈의 변수나 기능을 직접 참조하는 경우
- 공통 결합도 (Common) : 모듈 밖 전역 변수 참고하고 갱신
- 외부 결합도 (External) : 선언한 데이터를 외부에서 참조
- 제어 결합도 (Control) : 제어 요소 전달
- 스탬프 결합도 (Stamp) : 배열 등, 자료 구조가 전달될 때
- 자료 결합도 (Data) : 값만 전달, 자료 요소로만 구성
배치 프로그램 : 사용자와 상호작용 없이, 일련의 작업들을 묶어 일괄적으로 처리하는 방법
배치 프로그램 유형
[이온정]
- 이벤트 배치 : 사전에 정의된 조건이 충족될 때 실행
- 온디맨드 배치 : 사용자의 요구가 있을 때 실행
- 정기 배치 : 정해진 시점에 실행
배치 스케줄러 : 배치를 위해 반복적인 작업 지원 도구
배치 스케줄러 종류
[스쿼]
- 스프링 배치 : 스프링 프레임워크에서 사용하는 스케줄러
- 쿼츠 스케줄러 : Job과 Trigger를 분리하는 오픈 소스 스케줄러