포스트

정보처리기사 실기 / 최종 요약


시험 직전 최종 요약

주로 나오는 것만 (그래도 많네…)


C

  • NULL = \0
  • #define (전역 변수)
  • ‘*’ 은 저장된 값 지정(포인터) / ‘&’ 은 주소값 지정
  • 배열의 i번째 주소 = 배열+i == &배열[i];
  • 배열의 i번째 값 = *(배열+i) == *배열[i] == 배열[i];
  • 구조체에 포인터로 접근 시 ‘->’ 사용
  • ^ : 두 값을 비트로 연산하여 서로 다르면 1, 같으면 0
  • ~ : +-를 반대로 변경 후 -1


파이썬

  • 세미콜론 X, 들여쓰기로
  • 주석은 #


쿼리 문법

  • 컬럼 추가/수정/삭제 : ALTER ADD/MODIFY/DROP
  • 인덱스 : 명령어 INDEX 인덱스명 ON 테이블명(컬럼명)
  • 슬렉트 프롬 / 인절트 인투 / 업데이트 셋 / 딜리트 프롬
  • 조인 온
  • 그온투 / 리온프
  • ORDER BY 컬럼명 DESC/ASC
  • GROUP BY 컬럼명 having [조건]
  • min() / max() / count() / avg()

DDL

  • 테이블 생성 : CREATE TABLE 테이블명 (컬럼명 데이터 타입 [제약조건], …);
  • 테이블 삭제 : DROP TABLE 테이블명;
  • 컬럼 추가 : ALTER TABLE 테이블명 ADD 컬럼명 데이터타입 [제약조건];
  • 컬럼 수정 : ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입 [제약조건];
  • 컬럼 삭제 : ALTER TABLE 테이블명 DROP 컬럼명 데이터타입 [제약조건];
  • 테이블 내 데이터 삭제 : TRUNCATE TABLE 테이블명;
  • 뷰 생성 : CREATE VIEW 뷰이름 AS 조회쿼리;
  • 뷰 교체 : CREATE OR REPLACE VIEW 뷰이름 AS 조회쿼리;
  • 뷰 삭제 : DROP VIEW 뷰이름;
  • 인덱스 생성 : CREATE [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명, …);
  • 인덱스 수정 : ALTER [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명, …);
  • 인덱스 삭제 : DROP INDEX 인덱스명;

DML
[슬렉트 프롬 | 인절트 인투 | 업데이트 셋 | 딜리트 프롬]

  • 조회 : SELECT 속성명, … FROM 테이블명, … [WHERE 조건] [GROUP BY 속성명, …] [HAVING 그룹에_대한_조건] [ORDER BY 속성 [ASCDESC]];
  • 삽입 : INSERT INTO 테이블명(속성명1, …) VALUES(데이터1, …);
  • 변경 : UPDATE 테이블명 SET 속성명 = 데이터, … [WHERE 조건];
  • 삭제 : DELETE FROM 테이블명 WHERE 조건;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
조건
WHERE 컬럼명 BETWEEN 값1 AND 값2
// <> = !=
WHERE 컬럼명 IN(값1, 값2, ...) : 컬럼이 IN 안에 포함된 경우
WHERE 컬럼명 NOT IN(값1, 값2, ...) : 컬럼이 IN안에 포함되어 있지 않은 경우
WHERE 컬렴명 LIKE [%문자% | [문자]% | [문자^] | _]
WHERE 컬럼명 [IS NULL | IS NOT NULL]
WHERE 컬럼명 조건1 [AND | OR] 조건2
WHERE 컬럼명 NOT 조건


조인
SELECT A.컬럼1, ..., B.컬럼1, ... 
FROM 테이블1 A JOIN 테이블2 B
ON 조인조건
[WHERE 검색조건];

DCL
[그온트 리온프]

  • 권한 부여 : GRANT 권한 ON 테이블 TO 유저;
  • 권한 취소 : REVOKE 권한 ON 테이블 FROM 유저;

트랜잭션 특성
[ACID]

  • 원자성(Atomicity) : 연산 전체 성공 혹은 하나라도 실패하면 전체 실패
  • 일관성(Consistency) : 트랜잭션 성공 시 DB 일관된 상태 유지
  • 고립성(Isolation) : 트랜잭션 실행 중 서로 영향을 미치지 않아야함
  • 영속성(Durability) : 트랜잭션 성공 시 결과는 DB에 영구 저장되어야함


병행 제어 기법 종류
[낙타로다]

  • 낙관적 검증(Optimistic Validation) : 트랜잭션이 검증 수행하지 않고 일단 수행 후 종료, 종료 시 검증 후 저장
  • 타임 스탬프 순서(Time Stamp Ordering) : 트랜잭션 실행 전 타임 스탬프 부여, 시간에 따라 작업 수행
  • 로킹(Locking) : 하나의 트랜잭션 실행 중 다른 트랜잭션 접근 못하도록 상호배제 기능 제공
  • 다중버전 동시성 제어(MVCC; Multi Version Concurrency Control) : 트랜잭션의 타임스탬프와 접근하려는 데이터의 타임스탬프 비교


회복 기법
[리언지즉체그]

  • REDO : 완료 기록 있는 트랜잭션 재작업
  • UNDO : 완료 기록 없는 트랜잭션 변경사항 취소
  • 지연 갱신 회복 기법(Deferred Update) : 트랜잭션 완료 전까지 DB 기록 안함
  • 즉각 갱신 회복 기법(Immediate Update) : 트랜잭션 수행 중 갱신 결과 바로 DB 반영
  • 체크 포인트 회복 기법(Checkpoint Recovery) : 검사점 이후 처리된 트랜잭션만 이전 상태로 복원
  • 그림자 페이징 회복 기법(Shadow Paging Recovery) : 트랜잭션 수행 시 복제본 생성, 장애 시 복제본으로 복구


스키마 : 데이터베이스의 구조, 제약조건 등의 정보를 담고 있는 기본 구조
[외개내]

  • 외부 스키마 : 서브 스키마, 사용자나 개발자 관점 논리 구조
  • 개념 스키마 : DB 전체 논리 구조
  • 내부 스키마 : 물리적 저장 장치 관점 구조


절차형 SQL 종류
[프사트]

  • 프로시저 : 일련의 쿼리들을 하나의 함수처럼 실행하기 위한 쿼리 집합
  • 사용자 정의 함수 : SQL 수행 결과를 단일 값으로 반환할 수 있는 절차형 SQL
  • 트리거 : 삽입, 삭제, 갱신 등의 이벤트 발생 시 관련 작업 자동 수행되는 사용자 정의 프로시저


일반 집합 연산자
[합교차카]

  • 합집합 : ∪
  • 교집합 : ∩
  • 차집합 : -
  • 카티션 프로덕트 : X


순수 관계 연산자
[셀프조디]

  • 셀렉트 : σ
  • 프로젝트 : π
  • 조인 : ⋈
  • 디비전 : ÷


관계 해석 : 프레디킷 해석(Predicate Calculus) 기반


논리 데이터 모델링 속성
[개속관]

  • 개체 : 관리할 대상이 되는 실체
  • 속성 : 관리할 정보의 구체적 항목
  • 관계 : 개체 간의 대응 관계


이상 현상
[삽삭갱]

  • 삽입 이상 : 저장 시 불필요한 세부정보 입력해야 하는 경우
  • 삭제 이상 : 삭제 시 원치 않는 다른 정보 같이 삭제되는 경우
  • 갱신 이상 : 중복 데이터 중 특정 부분만 수정되어 중복 값이 모순


정규화 단계
[도부이결다조]

  • 1 정규형 : 도메인은 원자값으로만
  • 2 정규형 : 부분 함수 종속 제거
  • 3 정규형 : 이행 함수 종속 제거
  • BCNF : 결정자 후보 키가 아닌 함수 종속 제거
  • 4 정규형 : 다중 값 종속 제거
  • 5 정규형 : 조인 종속 제거


데이터베이스 무결성 종류
[개참속사키]

  • 개체 무결성 : 한 엔티티에서 같은 PK 값을 가질 수 없거나 NULL을 허용할 수 없음
  • 참조 무결성 : 외래키가 참조하는 다른 개체의 기본키에 해당하는 값이 기본키나 NULL이어야함
  • 속성 무결성 : 속성 값은 기본값, NULL 여부, 도메인이 지정된 규칙을 준수해야함
  • 사용자 정의 무결성 : 사용자의 의미적 요구사항 준수
  • 키 무결성 : 한 릴레이션에 같은 키값 허용 불가


키 종류
[키외대후슈]

  • 기본키 : 테이블 각 튜플 고유 식별
  • 외래키 : 테이블 간 참조 무결성
  • 대체키 : 후보키 중 기본키가 아닌 키
  • 후보키 : 테이블에서 각 튜플 구별 기준, 유일성-최소성 만족
  • 슈퍼키 : 유일성 만족, 최소성 만족하지 않음


Linux/Unix 파일 접근 권한 관리

  • User, Group, Other 순
  • 읽기/쓰기/실행 = 4/2/1
  • 파일명 맨 뒤


선점형 스케줄링
[라S다다]

  • 라운드-로빈 : 시간 할당량을 정해놓고, 시간 내 처리 못할 경우 대기 큐 가장 뒤로 보냄
  • SRT(Shortest Remaining Time first) : 대기 큐에 수행 시간이 짧은 프로세스가 선점
  • 다단계 큐 : 여러 큐를 이용해 각각 독립적인 스케줄링을 가짐
  • 다단계 피드백 큐 : FIFO + RR, 여러 큐에 특성에 따라 서로 다른 시간 할당량 부여


비선점형 스케줄링
[우기흔FS]

  • 우선순위 : 프로세스별 우선순위에 따라 CPU 할당
  • 기한부 : 정해진 시간 내 프로세스가 완료되도록 계획
  • HRN : 응답률이 높은 프로세스를 선택해 할당
  • FCFS : 대기 큐에 먼저 도착한 순서에 따라 선택
  • SJF(Shortest Job First) : 수행시간이 가장 짧은 프로세스에게 할당


교착 상태 발생 조건
[상점비환]

  • 상호배제(Mutual Exclusive) : 프로세스가 자원을 배타적으로 점유하여 다른 프로세스가 자원을 사용할 수 없는 상태
  • 점유-대기(Hold & Wait) : 한 프로세스가 자원을 점유하고 있으면서 다른 자원 요청하여 대기하는 상태
  • 비선점(Non Preemption) : 한 프로세스가 점유한 자원에 대해 다른 프로세스가 선점 불가, 점유한 프로세스만 해제 가능
  • 환형대기(Circular Wait) : 두 개 이상의 프로세스 간 자원의 점유와 대기가 원형 형태로


OSI 7 계층 : ISO에서 개발한 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 표현
[계층 : 물데네 전세표 응]
[단위 : 빝프패세데~]

  • 순서대로 1~7, (프로토콜) 전송단위
  • 물리 계층 : 전기 신호 변환 (RS-232C) 비트
  • 데이터링크 계층 : 오류 제어, 회선 제어, 흐름 제어 (이더넷) 프레임
  • 네트워크 계층 : 데이터 전송 최적화 경로 제공 (IP / ICMP) 패킷
  • 전송 계층 : 신뢰성 있는 통신 보장 (TCP / UDP) 세그먼트
  • 세션 계층 : 연결 접속 및 동기제어 (SSH / TLS) 데이터
  • 표현 계층 : 데이터 형식 설정과 부호교환, 암/복호화 (JPEG / MPEG) 데이터
  • 응용 계층 : 사용자와 네트워크 간 연결, 데이터 생성 (HTTP / FTP) 데이터


데이터링크 계층 프로토콜

  • HDLC : 점대점
  • PPP : 통신 노드 간 연결
  • Frame Relay : 간략화, 프레임의 중계 기능, 다중화 기능만 수행
  • ATM : 바이트 셀, 비동기식 시분할 다중화 방식


네트워크 계층 프로토콜

  • IP : 패킷 단위 통신
  • ARP : ip 주소를 MAC 주소로 변환
  • RARP : MAC 주소로 ip 주소 요청
  • ICMP : 오류 정보 전송 목적
  • IGMP : 멀티캐스트 실시간 전송
  • 라우팅 : 최적 경로 설정


IPv4 : 32Bit 주소 체계, 8비트 4부분 / 멀티캐스트, 유니캐스트, 브로드캐스트


IPv6 : 128Bit 주소 체계, 16비트 8부분 / 멀티캐스트, 유니캐스트, 애니캐스트


IPv4 -> IPv6 전환 방법

  • 듀얼 스택(Dual Stack) : IPv4, IPv6 모두 탑재
  • 터널링(Tunneling) : 인접한 IPv4 망에 터널 만들고 캡슐화
  • 주소 변환


라우팅 프로토콜 종류
[아이집 이집 비집]

  • IGP : 시스템 내 라우팅에 사용 [립 오스프]
    • RIP : 거리-벡터, 소규모
    • OSPF : RIP 단점 보완, 최단 경로로 라우팅, 대규모
  • EGP : 게이트웨이 간 라우팅
  • BGP : EGP 단점 보완, 초기 전체 데이터 로딩 후 변경된 정보만 교환


전송 계층 프로토콜

  • TCP : 신뢰성 보장, 연결 지향, 흐름 제어, 혼잡 제어
  • UDP : 비신뢰성, 비순서화, 실시간, 단순 헤더


애드혹 네트워크(Ad-hoc) : 재난 및 군사 현장, 모바일 호스만 이용하여 구성


보안의 구성요소
[기무가]

  • 기밀성(Confidentiality) : 인가된 사용자만 접근 가능
  • 무결성(Integrity) : 인가된 사용자만 수정 가능
  • 가용성(Availability) : 인가된 사용자는 권한 내에서 접근 가능


DoS 공격 종류
[신유스 죽랜 티봉보]

  • SYN Flooding : ACK 발송 안함, SYN 패킷만 보내 점유
  • UDP Flooding : 대량의 UDP 패킷 생성 후 임의 포트로 전달, ICMP 생성하게 해서 지속 자원 고갈
  • 스머프 : 출발지를 공격 대상 IP로, 네트워크 전체에 ICMP ECHO 패킷 직접 브로드캐스팅
  • 죽음의 핑 : ICMP 패킷을 크게 만들어 다수 IP 단편화 발생, 오버플로우 발생시킴
  • 랜드어택 : 출발지와 목적지가 같은 패킷 주소, 수신자가 자기자신에게 응답
  • 티어 드롭 : Fragment Offset
  • 봉크 : 패킷 분할, 처음 패킷 1번으로, 이후 모두 1번으로
  • 보잉크 : 처음 패킷 1번으로, 중간에 패킷 시퀀스 번호를 비정상적인 상태로 송신


애플리케이션 공격
[겟 헤포리 헐해]

  • HTTP GET Flooding : 과도한 Get 메시지 사용
  • Slow Http Header Dos(=slowloris) : get 요청, 헤더 정보 조작, 웹 서버가 온전한 헤더가 올 때까지 기다리게 함
  • 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 캐시 정보 조작으로 의도치 않은 주소로 접속하게 유도
  • 스턱스넷 : 독일 지멘스사 SCADA 시스템을 목표로 제작된 악성코드
  • 크리덴셜 스터핑 : 다른 곳에서 유출된 로그인 정보를 다른 곳에 무작위 대입


공격 대응 용어

  • 사이버 킬체인 : 록히드 마틴, 공격형 방위시스템, APT 공격의 방어 모델
  • 트러스트존 : APM 사, 독립적 보안 구역 따로 두어 중요한 정보 보호
  • 허니팟 : 의도적으로 설치해 둔 취약점, 노출시켜 유인
  • 핑거프린팅 : 저작권 정보와 구매자 정보를 콘텐츠에 삽입, 불법 배포자 추적
  • 워터마킹 : 디지털 콘텐츠에 저작자 정보 삽입
  • 이상금융거래탐지시스템(FDS; Fraud Detection System) : 전자금융거래에 사용되는 정보 종합 분석 후 이상 발생 탐지, 차단
  • 사이버 위협정보 분석 공유시스템(C-TAS; Cyber Threats Analysis 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 구문을 삽입, 실행시켜 정보 탈취 혹은 조작


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 : 쿼리의 참/거짓 결과를 통해 공격


화이트박스 테스트 (동적) : 프로그램 내부 구조와 동작 검사
[구조결 조결 변조결 다기제데루]

  • 구문 커버리지(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모델에서 아래에서 위로

  • 단위 테스트 : 최소 단위인 모듈, 컴포넌트, 서브루틴 등을 테스트
  • 통합 테스트 : 모듈 간 인터페이스, 컴포넌트 상호작용 등을 테스트
  • 시스템 테스트 : 통합된 단위 시스템 검증
  • 인수 테스트 : 계약상 요구사항을 만족하는지 확인


테스트 하네스 : 단위 테스트를 지원하기 위한 코드와 데이터
[상드 하스 목]

  • 테스트 드라이버 : 상향식 통합 테스트, 모듈 테스트 수행 후의 결과 도출 시험용 모듈
  • 테스트 스텁 : 하향식 통합 테스트, 일시적으로 필요한 조건만 가지고 임시 제공되는 시험용 모듈
  • 목 오브젝트 : 행위를 조건부로 사전 입력, 예정된 행위 수행하는 가짜 객체


소프트웨어 개발 방법론 종류
[구정객 컴애제]

  • 구조적 : 전체 시스템을 기능에 따라 나누어 개발, 분할과 정복 방식 (나씨-슈나이더만 차트)
  • 정보공학 : 정보시스템 개발에 필요한 관리 절차와 작업 기법 체계화
  • 객체지향 : 객체 단위로 시스템 분석 및 설계
  • 컴포넌트 : 컴포넌트를 조립해서 하나의 새로운 프로그램 작성
  • 애자일 : 절차보다 사람 중심, 변화 유연, 신속 대응, 효율적
  • 제품 계열 : 공통 기능 정의 개발


객체지향 설계 원칙
[SOLID]

  • SRP (단일 책임 원칙) : 하나의 클래스는 하나의 책임만
  • OCP (개방 폐쇄 원칙) : 확장에는 열려 있고, 변경에는 닫혀있어야
  • LSP (리스코프 치환 원칙) : 하위 클래스는 상위 클래스로 교체 가능해야 함
  • ISP (인터페이스 분리 원칙) : 사용하지 않는 인터페이스 구현하지 말아야 함
  • DIP (의존 역전 원칙) : 사용 관계 변경 없이 추상을 매개로 메시지 주고 받음


비용산정 모형 종류
[엘맨코푸기]

  • LoC : 원시 코드라인 수의 낙관치, 중간치, 비관치 측정 후 예측치 구해 비용 산정
  • Man Month : 한 사람이 1개월 동안 할 수 있는 일의 양 기준 산정
  • COCOMO : 보헴, 프로그램 규모에 따라 비용 산정 (Organic (5만 라인)) < Semi-detached (30만 라인) < Embedded)
  • Putnam : Rayleigh-Norden 곡선, 개발주기 단계 별로 요구할 인력 분포
  • 기능점수(FP) : 요구 기능을 증가시키는 인자별로 가중치 부여


아키텍처 패턴
[계클파브엠]

  • 계층화 패턴 : 시스템을 계층으로 구분, 서로 마주보는 계층에서만 상호작용
  • 클라이언트-서버 패턴 : 하나의 서버 + 다수의 클라이언트, 사용자는 클라이언트와만 상호작용
  • 파이프-필터 패턴 : 데이터 스트림, 하나의 서브시스템이 처리, 결과를 다음 서브시스템에게 전달
  • 브로커 패턴 : 사용자가 요청하면, 브로커가 적합한 컴포넌트를 연결
  • MVC 패턴 : 모델, 뷰, 컨트롤러 3개의 서브시스템으로 구조화


디자인 패턴 종류
[생구행]

생성 패턴
[팩프빌싱추]

  • 팩토리 메서드 : 상위 클래스에서 인터페이스 정의, 서브 클래스가 실제 객체 생성
  • 프로토타입 : 원형 객체를 복사하여 생성
  • 빌더 : 객체를 조립하여 생성, 생성 방법, 구현 방법 구분, 동일한 객체 다른 결과 가능
  • 싱글톤 : 클래스 내 객체가 하나 뿐임을 보장, 동시 참조 불가
  • 추상 팩토리 : 구체적인 클래스에 의존하지 않고, 연관된 객체 그룹으로 생성

구조 패턴
[파플컴프브어데]

  • Facade : 복잡한 시스템에 단순한 인터페이스 제공
  • Flyweight : 클래스 경량화, 메모리 절약
  • 컴포지트 : 객체 관계를 파일 트리 구조로 구성
  • 프록시 : 실제 객체에 대한 대리 객체
  • 브릿지 : 구현부에서 추상층을 분리, 기능과 구현 연결
  • 어댑터 : 호환되지 않는 인터페이스들을 연결
  • 데코레이터 : 객체 결합을 통해 기능 확장

행위 패턴 [미인템 옵비커 이체 스스메]

  • Mediator : 객체 사이에 중재자를 두어 의존성 줄임
  • Interpreter : 여러 언어 구문을 해석할 수 있게 함
  • 템플릿 메서드 : 상위 클래스에서 기능 정의, 하위 클래스에서 세부 구체화
  • 옵저버 : 객체를 지켜보고 있다가, 상태가 변하면 그 객체에 의존하는 다른 객체에 변화 상태 전달
  • 비지터 : 처리 기능을 별도로 분리함
  • 커맨드 : 요청을 객체로 캡슐화, 요청에 맞는 서브 클래스 실행
  • Iterator : 접근이 잦은 객체에 대해 동일한 인터페이스 사용하도록 함
  • chain of responsibility : 한 객체가 요청을 처리하지 못하면, 다른 객체로 넘어가 처리
  • state : 객체의 상태를 캡슐화, 이를 참조해 동작을 다르게 처리
  • strategy : 동일한 계열의 알고리즘을 캡슐화, 전략 선택 사용
  • 메멘토 : 특정 시점의 객체 내부 상태를 객체화, 해당 시점을 되돌리는 기능 제공


UI 설계 원칙
[직유학유]

  • 직관성 : 누구나 쉽게 이해, 사용 가능
  • 유효성 : 정확, 완벽 사용자 목표 달성
  • 학습성 : 초보, 숙련 모두 쉽게 배우고 사용
  • 유연성 : 요구사항 최대한 수용, 실수 방지


UML 다이어그램

정적 [클객 컴배 복패]

  • 클래스 : 클래스 간 관계 표현
  • 객체 : 객체 간 관계 표현
  • 컴포넌트 : 컴포넌트 간 관계 표현
  • 배치 : 물리적 요소의 위치 표현
  • 복합체 구조 : 복합 구조인 경우 내부 표현
  • 패키지 : 패키지 간 관계 표현

동적 [유시커 상활타]

  • 유스케이스 : 사용자 관점에서 표현
  • 시퀀스 : 시간적 개념 중심으로 메시지 표현
  • 커뮤니케이션 : 객체들이 주고 받는 메시지와 상호작용 표현
  • 상태 : 객체 상태와 상태변화 표현
  • 활동 : 시스템이 수행하는 활동 표현
  • 타이밍 : 객체 상태 변화와 시간 제약 표현


웹 서비스 유형
[소떠유]

  • SOAP (Simple Object Access Protocol) : HTTP/S, SMTP 등 사용, XML 기반 메시지 교환 프로토콜
  • WSDL (Web Service Description Language) : 웹 서비스명, 제공 위치 등 정보가 기술된 XML 형식 언어
  • UDDI (Universal Description, Discovery & Integration): WSDL의 등록, 검색을 위한 저장소


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) : 값만 전달, 자료 요소로만 구성
이 블로그는 저작권자의 CC BY 4.0 라이센스를 따릅니다.