트랜잭션(*ACID)
: 인가받지 않은 사용자로부터 데이터를 보장하기 위해 DBMS가 가져야 하는 특성이자. 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위이다.
- 원자성(Atomicity): 연산 전체가가 모두 정상적으로 실행되거나 취소 되어야 함
- 일관성(Consistency): 수행 전과 수행 완료 후의 상태가 같아야 함
- 격리성(Isolation): 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 함
- 영속성(Durability): 성공이 완료 된 결과는 영속적으로 데이터베이스에 저장
트랜잭션의 상태 변화(*활부완신철)
- 활동 상태
- 부분 완료 상태
- 완료 상태
- 실패 상태
- 철회 상태
트랜잭션 제어언어 TCL(*커롤체)
- 커밋;COMMIT(트랜잭션 확정): 트랜잭션을 메모리에 영구적으로 저장
- 롤백;ROLLBACK(트랜잭션 취소): 트랜잭션 내역을 저장 무효화시키는 명령어
- 체크포인트;CHECKHPOINT(저장 시기 결정): 롤백을 위한 시점을 지정하는 명령어
병행제어(일관성) (*로낙타다2)
: 여러 트랜잭션을 수행할 때 , 데이터베이스 일관성 유지를 위해 상호작용을 제어하는 기법
- 로킹: 동시 접근하지 못하도록 상호배제 기능을 제공
- 낙관적 검증: 어떠한 검증도 수행하지 않고 일단 트랜잭션 수행
- 타임 스탬프 순서: 트랜잭션 실행전에 타임스탬프를 부여하여 시간에 따라 수행
- 다중버전 동시성 제어: 타임스탬프를 비교하여 직렬가능성이 보장되는 버전 선택
- 2PC: 데이터베이스 동시성 제어 기술 중 하나, 두 단계로 분리하여 제어
데이터베이스 고립화 수준(격리성)
- Read Uncommitted
- Read Committed
- Repeatable Read
- Serializable Read
 회복 기법(영속성)
 : 트랜잭션을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업
- REDO: 비정상적으로 종료되었을 때 작업을 재작업 하는 기법
- UNDO: 시작은 있지만 완료에 대한 기록이 없는 트랜잭션들이 작업한 변경 내용들을 모두 취소하는 기법
 회복 기법 종류(*회로체그)
- 로그기반 회복기법: 지연갱신 회법 / 즉각 갱신 회복 기법 
- 체크 포인트 회복기법: 장애 발생 시 검사점 이후에 처리된 트랜잭션에 대해서만 복원
- 그림자 페이징 회복기법: 트랜잭션 수행시 복제본을 생성하여 장애시 이를 이용해 복구
개발환경 구축의 개념
: 개발환경 구성 시 구현될 시스템 요구사항의 명확한 이해가 필요하다.
개발도구와 서버의 선정이 이루어져야 하고, 개발에 사용되는 도구들의 사용 편의성과 성능, 라이선스를 확인한다.
개발도구의 분류(*빌구테형)
- 빌드 도구: 작성한 코드의 빌드 및 배포 수행
- 구현 도구: 코드 작성과 디버깅, 수정
- 형상관리 도구: 산출물에 대한 버전 관리
- 테스트 도구: 기능 검증과 전체의 품질을 높이기 위함\
하드웨어 개발환경
- 웹 서버(Web Server): HTTP,HTTPS, 정적 컨텐츠
- 웹 애플리케이션 서버(WAS;Web Application Server): 동적 컨텐츠
- 데이터 서버(Database Server)
- 파일 서버(File Server): HDD, SSD
소프트웨어 개발환경
형상관리 목적
: 프로젝트 생명주기 동안 제품의 무결성과 변경에 대한 추적성을 확보할수 있다.
형상관리의 절차(*식통감기)
소프트웨어 형상관리 도구 유형(*공클분)
- 공유 폴더 방식(RCS, SCCS)
- 클라이언트 방식(CVS,SVN): 중앙에 버전 관리 시스템을 항시 동작시킴
- 분산저장소 방식(Git): 로컬 저장소와 원격 저장소로 분리되어 분산 저장
RCS(Revision Control System)
: 소스 파일의 수정을 한 사람만으로 제한
CVS(Concurrent Versions System)
: 가장 오래된 형상 관리 도구, 중앙 집중형 서버 저장소를 두고 클라이언트가 접속 버전관리
SVN(Subversion)
: 중앙 집중형 클라이언트-서버 방식 CVS 단점 보완
백업 개념
: 중요한 데이터나 정보를 안전하게 보관하기 위한 데이터를 복제하는 기법
백업의 유형(*전차증)
- 전체 백업
- 차등 백업: 마지막 전체 백업 이후 변경된 모든 데이터 백업
- 증분 백업: 정해진 시간을 기준으로 그 이후에 변경된 파일만 백업
재사용
- 재공학(Re-Engineering): 재활용하는 소프트웨어 재사용 기법
- 재개발(Re-Development): 기존 시스템 내용을 참조하여 완전히 새로운 시스템을 개발
모듈
: 그 자체로 하나의 완전한 기능을 수행할수 있는 독립된 실체이다.
독립성이 높은 모듈일수록 다른 모듈에게 영향을 미치지 않고, 독립성은 결합도는 약하고 응집도는 높을수록 높다.
모듈화(Modularization)
: 소프트웨어의 성능을 향상시키거나 복잡한 시스템의 수정, 재사용, 유지관리 등이 용이하도록 기능 단위의 모듈로 분해하는 설계 및 구현 방법
응집도(Cohesion): 모듈 내부 구성요소 간의 연관 정도
(*우논시절통순기)
- 우연적 응집도(Coincidental Cohesion): 모듈 내부의 각 구성요소가 연관이 없을 경우
- 논리적 응집도(Logical Cohesion): 유사한 성격을 갖는 요소들이 한 모듈에서 처리될 때
- 시간적 응집도(Temporal Cohesion): 특정 시간에 처리되어야 하는 활동들을 처리할 때
- 절차적 응집도(Procedural Cohesion): 다수의 관련 기능을 가질때 기능을 순차적으로 수행
- 통신적 응집도(Communication Cohesion): 동일한 입출력을 사용하여 다른 기능을 수행
- 순차적 응집도(Sequential Cohesion): 한 활동으로부터 나온 출력값을 다른 활동이 사용
- 기능적 응집도(Functional Cohesion): 모든 기능이 단일한 목적을 위해 수행되는 경우
결합도(Coupling): 모듈 내부가 아닌 외부의 모듈과의 연관도 또는 모듈 간의 상호의존성
(*내공외제스자)
- 내용 결합도(Content Coupling): 다른 모듈 내부의 변수와 기능을 다른 모듈에서 사용
- 공통 결합도(Common Coupling): 모듈 밖 전역변수 참조, 공통 데이터 영역 사용할때
- 외부 결합도(External Coupling): 외부에서 도입된 데이터를 공유할 경우의 결합도, 외부 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조할때
- 제어 결합도(Control Coupling): 다른 모듈의 내부 논리조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우
- 스탬프 결합도(Stamp Coupling): 두 모듈이 동일한 자료구조를 조회하는 경우의 결합도
- 자료 결합도(Data Coupling): 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호작용이 일어나는 경우의 결합도, 한 모듈의 내용을 변경하더라도 다른 모듈에는 영향을 미치지 않는 상태
모듈 테스트 종류
- jUnit: 자바 프로그래밍 언어용 단위 테스트 도구
- CppUnit: C++로 구현한 단위 테스트 도구
- HttpUnit: 웹 브라우저 없이 웹사이트 테스트를 수행하는 단위 테스트 도구
배치 프로그램: 사용자와의 상호 작용 없이 일련의 작업들을 작업단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리 하는 방법
- 이벤트 배치: 사전에 정의해 둔 조건 충족 시 자동으로 실행
- 온디맨드 배치: 사용자의 명시적 요구가 있을 때 마다 실행
- 정기 배치: 정해진 시점에 정기적으로 실행
배치 스케줄러: 일괄 처리를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구
- 스프링 배치(Spring Batch): 프레임워크의 3대 요소를 모두 사용할수 있는 대용량 처리를 제공
- 쿼츠 스케줄러(Quartz Scheduler): 스프링 프레임워크에 플러그인되어 수행하는 작업과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈 소스 기반 스케줄러
크론 표현식
분/시/일/월/요일/명령어
SW 개발 보안의 개념
: 소스 코드 등에 존재하는 보안 취약점을 제거하고, 보안을 고려하여 기능을 설계 및 구현하는 등 소프트웨어 개발 과정에서 지켜야 할 일련의 보안 활동을 말한다.
SW 개발 보안의 구성요소(*기무가)
- 기밀성(Confidentiality): 인가된 사용자에 대해서만 자원 접근이 가능
- 무결성(Integrity): 인가된 사용자에 대해서만 자원 수정이 가능
- 가용성(Availability): 인가된 사용자는 권한 범위 내에서 언제든 자원 접근이 가능
SW 개발 보안 용어(*자위취위)
DoS 공격
: 시스템을 악의적으로 공격해서 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격이다. 수많은 접속시도, TCP연결을 소진시킨다
DoS 공격의 종류
- SYN 플러딩: SYN패킷만 보내 다른 사용자가 서버를 사용 불가능하게 함
- UDP 플러딩: 대량의 UDP패킷을 만들어 ICMP생성하게 해 지속해서 자원을 고갈시킴
- 스머프/스머핑: 출발지 주소를 공격 대상 IP로 설정하여 ICMP Echo 패킷을 브로드캐스팅
- 즉음의 핑(PoD;Ping of Death): ICMP패킷을 아주 크게 만들어 버퍼 오버플로우 발생
- 랜드어택(Land Attack): 출발지 IP와 목적지 IP를 같은 패킷주소로 만듬, 무한루프
- 티어드롭(Tear Drop): 재조합 과정에서 오류 발생 기능을 마비시킴
- 봉크: 똑같은 번호로 전송돼서 오류를 일으킴
- 보잉크: 패킷 시퀀스 번호를 비정상적인 상태로 보내서 부하를 일으킴
DDos 공격
: DoS의 또 다른 형태로 여러 대의 공격자를 분산 배치하여 동시에 동작하게 함으로써 특정 사이트를 공격하는 기법이다.
DDos의 공격 구성요소(*HAMAD)- Handler(핸들러)
- Agent(에이전트)
- Master(마스터)
- Attacker(공격자)
- Daemon(데몬 프로그램)
DRDoS 공격
: 공격자는 출발지 IP를 공격대상IP로 위조하여 다수의 반사 서버로 요청정보를 전송, 공격 대상자는 반사 서버로부터 다량의 응답을 받아서 서비스 거부가 되는 공격이다.
세션 하이재킹(Session Hijacking)
: 케빈 미트닉이 사용했던 공격 방법 중 하나로 TCP의 세션 관리 취약점을 이용한 공격기법
애플리케이션 공격
- HTTP GET 플러딩: 과도한 GET메시지를 이용하여 웹 서버의 과부하 유발
- Slowloris: 웹 서버와 연결상태를 장시간 지속시키고 연결 자원을 모두 소진
- RUDY Attack: 비정상적으로 크게 설정하여 계속 연결상태를 유지시키는 공격(99999...)
- Slow Read Attack: TCP윈도 크기를 낮게 설정하여 서버로 전달
- Hulk Dos: 주소를 지속적으로 변경하면서 다량으로 GET요청을 발생시킴
- Hash Dos: 해시테이블에서 해시 충돌이 발생하도록
네트워크 공격
- 
스니핑(Sniffing)
 : 공격대상에게 직접 공격을 하지 않고 데이터만 몰래 들여다보는
 
- 
네트워크 스내퍼,스니퍼(Scanner,Sniffer)
 : 구성의 취약점을 파악해 공격자가 취약점을 탐색하는 공격 도구
 
- 
패스워드 크래킹
 : 사전 크래킹/무차별 크래킹/패스워드 하이브리드 공격/레인보우 테이블
 
- 
IP 스푸핑
 : 인증된 IP어드레스로 위조하여 타깃에 전송하는 공격
 
- 
ARP 스푸핑
 : MAC주소를 자신의 MAC주소로 위조, 나가는 패킷을 스니핑
 
- 
ICMP Redirect 공격
 : 메시지를 공격자가 원하는 형태로 만들어 패킷을 스니핑하는 기법
 
- 
트로이 목마
 : 겉보기에는 정상적이지만 실행하면 악성코드 실행
 
버퍼 오버플로(Buffer Overflow) 공격
: 메모리에 할당된 버퍼 크기를 초과하는 양의 데이터를 입력하여 이로 인해 프로세스의 흐름을 변경시켜서 악성 코드르 실행시키는 공격기법이다.
- 스택 버퍼 오버플로: 스택 영역에서 발생
- 힙 버퍼 오버플로: 동적으로 할당되는 힙 영역에서 발생
- 버퍼 오버플로 공격 대응 방안
- 스택가드 활용
- 스택쉴드 활용
- ASLR 활용
- 안전한 함수 활용
백도어(Backdoor)
: 정상적인 인증 절차를 우회하는 기법
서버 인증의 개념
: 다중 사용자 시스템과 망 운영 시스템에서 접속자의 로그인 정보를 확인하는 보안 절차
인증 기술의 유형(*지소생특)
서버 접근 통제
서버 접근 통제의 유형
- DAC(임의적 접근 통제): 신분 기반 접근 통제 정책
- MAC(강제적 접근 통제): 규칙 기반 접근 통제 정책
- RBAC(역할 기반 접근 통제): 중앙 관리자가 사용자와 시스템의 상호관계를 통제하며 조직 내 맡은 역할에 기초하여 자원에 대한 접근을 제한
접근 통제 보호 모델(*벨기비무)
- 벨-라파듈라 모델(BLP): 미 국방부 지원 보안 모델, 기밀성을 강조, MAC기반
- 비바 모델: 위 모델의 단점을 보완한 무결성을 보장하는 최초의 모델
3A(Authentication, Authorization, Accounting)
- 인증: 단말에 대한 식별 및 신분을 검증
- 권한부여: 어떤 수준의 권한과 서비스를 허용
- 계정관리: 정보를 수집하고 관리하는 서비스
인증 관련 기술
- SSO(Single Sign on): 커버로스에서 사용되는 기술, 한번의 인증 여러 커뮤펕 자원 사용
- 커버로스: MIT 프로젝트에서 개발, 클라이언트/서버 모델에서 동작, 대칭 키 암호기법
- OAuth: 사용자가 비밀번호를 제공하지 않고 다른 웹사이트나 애플리케이션의 접근 권한을 부여할수 있게 하는 개방형 표준기술
암호 알고리즘 방식
- 양방향 암호 방식(대칭키, 비대칭키)
- 일방향 암호 방식(해시 암호 방식)
양방향 암호 방식
- 
대칭 키 암호 방식: 암호화와 복호화에 같은 암호 키를 쓰는 알고리즘
 ▶ 블록 암호 방식: DES, AES, SEED
 ▶ 스트림 암호 방식: RC4
 
- 
비 대칭 키 암호 방식: 공개 키와 개인 키 존재
 ▶ RSA, ECC, ElGamal, 디피-헬만
 
일방향 암호 방식: 임의 길이의 정보를 입력받아, 고정된 길이의 암호문을 출력하는 암호방식
▶ MAC(Message Authentication Code): 메시지 인증 코드, 무결성과 송신자의 인증 보장
▶ MDC(Modification Detection Code): 키를 사용하지 않는 변경 감지 코드
대칭 키 암호화 알고리즘
DES(Data Encryption Standard)
: 블록 크기는 64bit, 미국의 연방 표준국(NIST)에서 발표한 대칭 키 기반의 블록 암호화 알고리즘
AES(Advanced Encryption Standard)
: 블록 크기는 키 길이에 따라 128/192/256 비트, 라운드 수는 10,12,14 로 구성
SEED
: 한국인터넷진흥원이 개발한 암호화 알고리즘, 블록 크기 키 길이에 따라 128/256 비트
ARIA(Academy, Research Institute, Agency)
: 국가정보원과 산학연구협회가 개발, 블록 크기는 128/192/256
IDEA(International Data Encryption Algorithm)
: DES 대체하기 위해 스위스 연방기술에서 개발
LFSR(Linear Feedback Shift Register)
: 시프트 레지스터의 일종으로 스트림 암호화 알고리즘
Skipjack
: 미 국가안보국에서 개발한 칩에 내장된 블록 알고리즘
비 대칭 키 암호화 알고리즘
- DH(디피-헬만)
 : 최초의 공개키 알고리즘, 이산대수의 계산이 어려운 문제를 기본 원리로 하고 있음
- RSA(Rivest-Shamir-Adleman)
 : MIT 수학교수가 고안 소인수 분해하는 수학적 알고리즘 이용
- ECC(Elliptic Curve Cryptography)
 : 유한체 위에서 정의된 타원곡선 군에서의 이산대수의 문제에 기초한 공개키
- ELGamal
 : 이산대수의 계산이 어려운 문제를 기본원리로 하고 있으며 RSA와 유사하게 전자서명과 데이터 암 복호화에 함께 사용가능
해시(Hash) 암호화 알고리즘
- MD5: MD4를 개선한 알고리즘 무결성 검사에 사용
- SHA-1: NSA에서 미 정부 표준으로 지정되었고 DSA에서 사용
- SHA-256/384/512: SHA의 한 종류, AES에 대응하도록 출력 길이를 늘인 알고리즘
- HAS-160: 국내 표준 서명 알고리즘을 위하여 개발된 해시 함수, MD5+SHA1
- HAVAL: 메시지를 1024비트 블록으로 나누고,,,출력하는 해시 알고리즘
데이터베이스 암호화 기법(*애플티하)
- API방식
- Plug-in 방식: 모듈이 디비 서버에 설치된 방식
- TDE방식: 커널에 자체적으로 암복호화 기능 실행
- Hybrid방식
안전한 전송을 위한 데이터 암호화 전송
- 
PPTP(Point to Point Tunnel Protocol)
 : PPP에 기초하여 두 대의 컴퓨터가 직렬 인터페이스를 이용할 때 사용
 
- 
L2F(Layer 2 Fowarding)
 : 시스코사에서 개발한 프로토콜 하나의 터널에 여러 개의 연결 지원, UDP사용
 
- 
L2TP(Layer 2 Tunneling Protocol)
 : L2F와 PPTP의 결합한 방법 호환성이 뛰어난 프로토콜이다, IPSEC기술과 함께 사용한다.
 
- 
IPSEC(Internet Protocol Security)
 : 무결성과 인증을 보장하는 인증 헤더(AH)와 기밀성을 보장하는 암호화(ESP)를 이용하였다.
 
- 
SSL/TLS(Secure Socket Layer/Transport Layer Security)
 : 전송계층과 응용계층 사이에서 클라이언트와 서버간의 웹 데이터 암호화, 무결성을 보장
 
- 
S-HTTP(Secure Hypertext Transfer Protocol)
 : 웹상에서 네트워크 트래픽을 암호화하는 주요 방법 중 하나, 클라이언트와 서버 간에 전송되는 모든 메시지를 각각 암호화하여 전송하는 기술
 
SW 개발 보안 적용 사례
- BSIMM- Open SAMM
- Seven TouchPoints
- MS SDL
- OWASP CLASP
SW 개발 보안 구현
시큐어 코딩 가이드
- 입력데이터 검증 및 표현
- 보안 기능
- 시간 및 상태
- 에러 처리
- 코드 오류
- 캡슐화
- API오용
입력 데이터 검증 및 표현
: 입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목들
- XSS: 검증되지 않은 외부 입력 데이터가 포함된 웹페이지가 전송되는 경우
- 사이트 간 요청 위조(CSRF): 자신의 의지와는 무관하게 공격자가 의도한 행위를 할때
- SQL삽입(Injection): 악의적인 SQL구문을 삽입
XSS(Cross Site Scripting)
- Stored XSS: 악성 스크립트 포함된 페이지를 읽어 봄과 동시에 악성 스크립트 실행
- Reflected XSS: 악성 URL을 이메일로 보내 클릭하면 피해자로 공격스트립트가 반사
- DOM(Document Object Model XSS)
네트워크 보안 솔루션
- 방화벽(Firewall): 기업 내부,외부 간 트래픽을 모니터링 하여 접근 허용,차단
- 웹 방화벽(WAF;Web Application Firewall): 웹 애플리케이션 보안에 특화된 장비
- 네트워크 접근 제어(NAC;Network Access Control)
 : 단말기가 내부 네트워크에 접속을 시도할때 이를 제어하고 통제
- 침입 탐지 시스템(IDS;Intrusion Detection System)
 : 비인가 사용자에 의한 자원접근과 보안정책 위반 침입을 실시간으로 탐지
- 침임 방지 시스템(IPS;Intrusion Prevention System)
 : 공격이나 침입을 실시간으로 차단하고 조치를 능동적으로  실시하는 시스템
- 무선 침입 방지 시스템(WIPS;Wireless Intrusion System)
 : 인가되지 않은 무선 단말기의 접속을 자동으로 탐지 및 차단
- 통합 보안 시스템(UTM;Unified Threat Management)
 : 다양한 보안 장비의 기능을 하나의 장비로 통합하여 제공하는 시스템
- 가상 사설망(VPN): 공중망에 기술을 활용하여 마치 전용망을 사용하는 효과를 가지는 기술
- SIEM(Security Information and Event Management)
 : 기업에서 생성되는 테라바이트의 데이터와 장비들을 통해 빠르게 위협을 판단 대응하는 관제 솔루션
- ESM(Enterprise Security Management)
 : 전사적 통합 보안 관리 시스템,서로 다른 기종의 보안 장비들을 통합 관리
 시스템 보안 솔루션
- 스팸 차단 솔루션
- 보안 운영체제
콘텐츠 유출 방지 보안 솔루션
- 보안 USB
- 데이터 유출 방지(DLP;Data Loss Prevention)
- 디지털 저작권 관리(DRM;Digital Right Management)
비즈니스 연속성 계획(BCP;Business Continuity Plan)
: 각종 재해, 장애, 재난으로부터 위기관리를 기반으로 재해복구, 업무복구 및 재개, 비상계획을 통해 비즈니스 연속성을 보장하는 체계이다.
- BIA(Business Impact Analysis): 시간 흐름에 따른 영향도 및 손실평가를 조사하는 분석
- RTO(Recovery Time Objective): 업무가 복구되어 다시 가동될때까지의 시간
- RPO(Recovery Point Objective): 복귀되어 다시 정상가동될때 데이터의 손실 허용 시점
- DRP(Disaster Recovery Plan): 재난으로 운영이 불가능한 경우 재난 복구 계획
- DRS(Disaster Recovery System): 지속적인 관리체계가 통합된 재해복구센터
DRS의 유형
- Mirror Site: 재해 발생 시 복구까지의 소요시간 즉시
- Hot Site:  재해 발생 시 복구까지의 소요시간 4시간 이내
- Warm Site: 재해 발생 시 복구까지의 소요시간 수일~수주 
- Cold Site: 재해 발생 시 복구까지의 소요시간 수주~수개월
1) 소프트웨어 테스트의 이해
소프트웨어 테스트 개념
: 개발된 응용 애플리케이션이나 시스템이 사용자가 요구하는 기능과 성능, 사용성, 안정성 등을 만족하는지 확인하고, 노출되지 않은 숨어있는 소프트웨어의 결함을 찾아내는 활동.
소프트웨어 테스트의 원리
*결완초집 살정오
- 결함 존재 증명: 테스트는 결함이 존재함
- 완벽 테스팅은 불가능: 완벽한 테스트가 어려움
- 초기 집중: 초기에 집중안하면 스노우볼 굴러감
- 결함 집중: 적은 수의 모듈에서 대다수 결함이 발견된다는 원리
- 살충제 패러독스: 동일한 테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못함
- 정황 의존성: 성격에 맞게 테스트를 수행해야 함
- 오류-부재의 궤변: 요구사항을 충족시키지 못하면 결함 없어도 품질 높다고 볼 수 없음
소프트웨어 테스트 산출물
- 테스트 계획서
- 테스트 베이시스
- 테스트 케이스
- 테스트 슈트
- 테스트  시나리오
- 테스트 스크립트
- 테스트 결과서
2) 소프트웨어 테스트 유형
프로그램 실행에 따른 분류
- 
정적 테스트: 테스트 대상을 실행하지 않고 구조를 분석하여 논리성을 검증
 ex) 리뷰, 정적 분석
 
- 
동적 테스트: 소프트웨어를 실행하는 방식으로 테스트를 수행하여 결함을 검출
 ex) 화이트박스 테스트, 블랙박스 테스트, 경험기반 테스트
 3) 정적 테스트
 
- 
리뷰(Review)
 : 소프트웨어의 다양한 산출물에 존재하는 결함을 검출하거나 프로젝트의 진행상황을 점검하기 위한 활동, 전문가가 수행한다.
 *동워인
 
- 
동료 검토(Peer Review): 동료 2~3명이 진행 
- 
인스펙션(Inspection): 다른 전문가 또는 팀이 검사 
- 
워크 스루(Walk Throughts): 회의 전에 검토자료를 배포해서 사전 검토 
- 
정적 분석(Static Analysis)
 : 자동화된 도구를 이용하여 산출물의 결함을 검출하거나 복잡도를 측정한다.
 (코딩 표준 부합, 코드 복잡도 계산, 자료 흐름 분석 등등...)
 
4) 동적 테스트
- 화이트 박스 테스트(구조 기반 테스트)
 : 각 응용 프로그램의 내부 구조와 동작을 검사하는 소프트웨어 테스트
테스트 커버리지
: 프로그램의 테스트 수행 정도를 나타내는 값
*기라코
- 기능 기반 커버리지
- 라인 커버리지
- 코드 커버리지
화이트 박스 테스트 유형
*구결조 조변다 기제데루
테스트 시각에 따른 분류
테스트 목적에 따른 분류
*회안구 구회병
- 회복 테스트
- 안전 테스트
- 성능 테스트 	 ----> 	  (부하 테스트, 강도 테스트, 스파이크 테스트, 내구성 테스트)
- 구조 테스트
- 회귀 테스트
- 병행 테스트
5) 테스트 케이스
테스트 케이스
: 특정 요구사항에 준수하는 지를 확인하기 위해 개발된 입력값, 실행 조건, 예상된 결과의 집합이다.
6) 테스트 오라클
테스트 오라클
: 테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참값을 입력하여 비교하는 기법
*참샘휴일
- 참(True)오라클: 모든 입력값에 대하어 기대하는 결과를 생성, 오류를 모두 검출할수 있음
- 샘플링(Sampling)오라클: 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공
- 휴리스틱(Heuristic)오라클: 샘플링 오라클을 개선한 것,나머지 값들은 휴리스틱으로 처리
- 일관성 검사(Consistent)오라클: 변경이 있을 때 전과 후의 결괏값이 동일한지 확인
2-1) 테스트 레벨
테스트 레벨 종류
*단통시인
- 단위 테스트: 사용자 요구사항에 대한 단위 모듈
- 통합 테스트: 단위 테스트를 통과한 모듈 사이의 인터페이스, 통합된 컴포넌트 간의 상호작용을 검증하는 테스트 단계(상향식, 하향식 테스트)
- 시스템 테스트: 시스템에서 정상적으로 수행되는지를 검증(기능, 비기능 요구사항 테스트)
- 인수 테스트: 계약상의 요구사항이 만족되었는지 확인하기 위한 단계(알파, 베타 테스트)
애플리케이션 테스트 수행
단위 테스트(Unit Test): 개별적인 모듈을 테스트한다.
수행도구
- 테스트 드라이버: 필요 테스트를 인자를 통해 넘겨주고, 테스트 완료 후 그 결과값을 받는 역할을 하는 가상의 모듈, 하위 모둘을 호출하는 상위 모듈의 역할
- 테스트 스텁: 일시적으로 필요한 조건만을 가지고 임시로 제공되는 시험용 모듈, 상위 모듈에 의해 호출되는 하위 모듈의 역할
통합 테스트: 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 체계적인 기법
- 하향식 통합 테스트(스텁)
- 상향식 통합 테스트(드라이버)
- 빅뱅 통합 테스트: 모든 모듈 동시 통합,드라이버/스텁 없이 실제 모듈로 테스트
- 샌드위치 통합 테스트: 상향식+하향식, 큰규모의 통합 테스트, 병렬 테스트 가능
테스트 자동화: 반복적인 테스트 작업을 스크립트 형태로 구현, 쉽고 효율적인 테스트 수행
- 정적 분석 도구: 애플리케이션을 실행하지 않고 분석하는 도구
- 성능 테스트 도구: 가상의 사용자, 테스트를 수행함으로써 성능 목표를 달성했는지 확인
테스트 하네스(Test Harness): 시스템 모듈의 테스트를 위해 테스트를 자동화하거나 제어하기 위한 코드 및 도구의 집합
- 테스트 드라이버
- 테스트 스텁
- 테스트 슈트: 테스트 케이스의 집핳
- 테스트 케이스
- 테스트 시나리오
- 테스트 스크립트: 자동화된 테스트 실행 절차에 대한 명세
- 목 오브젝트: 사용자의 행위를 조건부로 사전에 입력해 두면, 그 상황에 예정된 행위 수행
애플리케이션 성능 분석
애플리케이션 성능 측정 지표(*처응경자)
배드 코드: 다른 개발자가 로직을 이해하기 어렵게 작성된 코드
- 스파게티 코드: 작동은 정상, 작동을 파악하기 어려운 코드
- 외계인 코드: 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 코드
클린코드(*가단의중추)
- 가독성
- 단순성
- 의존성 최소
- 중복성 제거
- 추상화
리팩토링
- 유지 보수성 향상
- 유연한 시스템
- 생산성 향상
- 품질 향상
소스 코드 품질분석 개념
메모리 관리 기법
배치 기법
- 최초 적합(First Fit)
- 최적 적합(Best Fit)
- 최악 적합(Worst Fit)
할당 기법
- 연속 할당 기법
- 분산 할당 기법
 ▶ 페이징 기법: 프로세스를 일정하게 분할하여 주기억장치의 분산된 공간에 적재 후 실행
 ▶ 세그먼테이션 기법: 가변적인 크기의 블록으로 나누고 메모리를 할당
 ▶ 페이징/세그먼테이션 기법
교체 기법
- FIFO(First in First Out): 먼저 들어와 가장 오래 있던 페이지를 교체(선입선출)
- LRU(Least Recently Used): 가장 오랬동안 사용되지 않은 페이지를 선택하여 교체
- LFU(Least Frequently Used): 사용된 횟수를 확인하여 가장 적은 페이지 교체
- OPT(Optiaml Replacement): 앞으로 가장 오랫동안 사용하지 않을 페이지 교체
- NUR(Not Used Recently): 최근의 사용 여부를 확인하기 위해서 비트 사용
- SCR(Second Chance Replacement): 페이지마다 참조비트를 두고 FIFO 기법을 이용
메모리 단편화: 분할된 주기억장치에 프로세스를 할당, 반납 과정에서 사용되지 못하고 낭비되는 기억장치가 발생하는 현상
스레싱: 어떤 프로세스가 계속적으로 페이지 부재가 발생하여 프로세스의 실제 처리 시간 보다 페이지 교체 시간이 더 많아지는 현상이다
해결방안
- 워킹 세트: 많이 참조하는 페이지들의 집합을 주기억장치 공간에 계속 상주
- 페이지 부재 빈도(PFP): 페이지 부재율의 상한과 하한을 정해서 예측하고 조절하는 기법
지역성(Locality)
: 프로세스가 실행되는 동안 주기억 장치를 참조할 때 일부 페이지만 집중적으로 참조
프로세스: CPU에 의해 처리되는 프로그램
(*생준 실대완)
- 생성(Create)상태
- 준비(Ready)상태
- 실행(Running)상태
- 대기(Waiting)상태
- 완료(Complete)상태
프로세스 스케줄링
- 선점형 스케줄링: 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU점유
 ▶ SRT: 가장 짧은 시간이 소요되는 프로세스를 먼저 수행
 ▶ 다단계 큐(MLQ): 여러 종류 그룹으로 분할
 ▶ 다단계피드백 큐(MLFQ): FCFS와 RR스케줄링 기법을 혼합한 방식
 ▶ RR(라운드로빈): 같은 시간을 할당 그후 처리 못하면 준비 큐 리스트의 뒤로 보냄
- 비선점형 스케줄링: 한 프로세스가 CPU할당 받으면 다른 프로세스는 끝날때까지 기다림.
 ▶ 우선순위: 프로세스 별로 우선순위가 주어지고, 우선수위에 따라 CPU할당
 ▶ 기한부: 요청에 명시된 시간 내 처리를 보장하는 기법
 ▶ HRN(Highest response Ratio Next): 대기 중인 프로세스 중 현재 응답률이 가장 높은것을 선택하는 기법 (우선순위 = (대기시간+서비스시간)/서비스시간 )
 ▶ FCFS: 준비 큐에 도착한 순서에 따라 CPU를 할당하는 스케줄링 기법
 ▶ SJF: 모든 프로세스에 대해 같은 크기의 시간 할당, 처리 못하면 준비 큐 리스트 가장 뒤로 보냄
프로세스 관리 – 교착상태
교착상태: 다중프로세싱 환경에서 두 개 이상의 프로세스가 특정 자원할당을 무한정 대기하는 상태이다.
발생 조건
해결 방법
디스크 스케줄링(Disk Scheduling)
: 사용할 데이터가 디스크상의 여러 곳에 저장되어 있을 경우, 데이터를 액세스하기 위해 디스크 헤드를 움직이는 경로를 결정하는 기법이다.
- FCFS: 디스크 대기 큐에 가장 먼저 들어온 트랙에 대한 요청을 먼저 디스크
- SSTF:탐색거리가 가장 짧은 트랙에 대한 요청을 먼저 서비스하는 기법
- SCAN: 진행 방향이 결정되면 탐색 거리가 짧은 순서에 따라 그 방향의 모든 요청을 서비스, 끝까지 이동한 후 역방향의 요청사항을 서비스하는 기법
- C-SCAN: 항상 바깥쪽에서 안쪽으로 움직이며 가장 짧은 탐색 거리를 갖는 요청을 서비스
- LOOK: SCAN을 기초로 사용하는 기법, 진행방향으로 더 이상의 요청이 없으면 역방향으로
- N-STEP: SCAN을 기초로하고 진행 도중 도착한 요청들은 한꺼번에 모아서 다음의 반대 진행 방향으로 진행 할때 서비스하는 기법
- SLTF: 섹터 큐잉, 회전 지연시간 최적화를 위해 구현된 기법
네트워크: 원하는 정보를 원하는 수신자 또는 기기에 정확하게 전송하기 위한 기반 인프라
OSI 7계층(*물데네전세표응)
- 물리 계층: 0과 1의 비트 정보를 회선에 보내기 위한 전기적 신호로 변환
- 데이터링크 계층: 인접 시스템 간 데이터 전송, 전송 오류 제어
- 네트워크 계층: 단말기 간 데이터 전송을 위한 최적화된 경로 제공
- 전송 계층: 프로세스 간의 연결, 신뢰성 있는 통신 보장
- 세션 계층: 송수신간의 논리적인 연결
- 표현 계층: 데이터 형식 설정, 부호교환, 암복호화
- 응용 계층: 사용자와 네트워크 간 응용서비스 연결
통신망
네트워크 장비
- 1계층 장비: 허브, 리피터
- 2계층 장비: 브리지, L2스위치, NIC, 스위칭 허브
 *스위치 장비의 주요 기술요소: VLAN, STP
- 3계층 장비: 라우터, 게이트웨이, L3스위치, 유무선 인터넷 공유기, 망(백본)스위칭 허브
- 4계층 장비: L4스위치
프로토콜(Protocol): 서로 다른 시스템이나 기기들 간의 데이터 교환을 원활히 하기 위한 표준화된 통신규약, 기술적 은어
프로토콜의 기본 3요소(*구의타)
- 구문(Syntax)
- 의미 (Semantic)
- 타이밍(Timing)
네트워크 프로토콜: 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다.
데이터 링크 계층(2계층)
: 회선제어, 흐름제어, 오류제어 기능을 수행하는 계층
- HDLC(High-level Data Link Control): 점대점 방식, 다중방식 통신에 사용, ISO에서 표준화한 동기식 비트 중심 프로토콜
- PPP(Point-to-Point Protocol): 두 통신 노드 간의 직접적인 연결을 위해 일반적으로 사용
- 프레임 릴레이: 처리를 간략화하여 데이터 처리속도의 향상 및 전송지연 감소시킨 고속기술
- ATM(Asynchronous Transfer Mode): 53바이트 셀 단위로 전달하는 비동기식 시분할 다중화 방식의 패킷형 전송 기술
*HDLC
프레임 구조
HDLC 동작 모드
- NRM(정규 응답 모드): 점대점이나 멀티포인트 불균형 링크 구성에 사용
- ARM(비동기 응답 모드): 보조국도 전송 개시할 필요가 있는 특수한 경우에반 사용
- ABM(비동기 균형 모드): 균형 링크 구성에 사용, 각국이 주국이자 보조국으로 서로 대등
데이터 링크 계층의 오류 제어
- 전진(순방향 오류 제어)
 : FEC방식으로 데이터 전송과정에서 발생한 오류를 검출하여 재전송없이 스스로 수정
 ▶ 해밍코드 방식
 ▶ 상승코드(부호) 방식
- 후진(역방향 오류 제어)
 : BEC방식으로 데이터 전송과정에서 오류가 발생하면 송신측에 재전송을 요구하는 방식
 ▶ 패리티 검사: 7~8개의 비트에 패리티 비트 추가
 ▶ CRC(순환잉여 검사): 다항식을 통해 산출된 값을 통해 오류를 검사하는 방식
 ▶ 블록합 검사: 이차원 패리티 검사 방식
 ▶ 자동반복 요청 방식(ARQ): 신뢰성 있는 데이터 전달, 재전송 기반 에러제어 방식
 (Stop-and-Wait ARQ 방식/GO-back-N ARQ 방식/Selective Repeat ARQ방식)
네트워크 계층(3계층)
: 다양한 길이의 패킷을 네트워크들을 통해 전달, 서비스 품질을 위한 수단을 제공
네트워크 계층 프로토콜
- IP: 송수신 간의 패킷 단위, 통신 프로토콜
- ARP: IP네트워크상에서 IP주소를 MAC주소(물리주소)로 변환하는 프로토콜
- RARP: IP호스트가 MAC주소는 알지만 IP주소는 모를 때 IP주소를 요청하는 역순주소결정
- ICMP: 전송 오류가 발생하는 경우에 오류정보를 전송하는 목적으로 사용하는 프로토콜
- IGMP: 호스트 컴퓨터와 인접 라우터가 멀티캐스트 그룹 멤버십을 구성하는데 사용함
- 라우팅 프로토콜: 데이터 전송을 위해 여러 경로중 최적의 경로를 설정해주는 프로토콜
- NAT: 사설 네트워크에 속한 IP를 공인 IP주소로 바꿔주는 네트워크 주소 변환 기술
IPv4: 인터넷에서 사용되는 패킷 교환 네트워크상에서 데이터를 교환하기 위한 32비트 주소체계를 갖는 네트워크 계층의 프로토콜이다.
주소체계
- A클래스: 0~127(0)
- B클래스: 128~192(10)
- C클래스: 192~223(110)
- D클래스
- E클래스
서브네팅: IP주소 고갈문제를 해결하기 위해 원본 네트워크를 여러 개의 네트워크로 분리
(네트워크 ID + 호스트 ID)
- FLSM 방식: 서브넷의 길이를 고정적으로 사용
- VLSM 방식: 서브넷의 길이를 가변적을 사용
IPv4에서 IPv6으로 전환 방법
- 듀얼 스택
- 터널링
- 주소 변환(게이트웨이 관점)
IP통신 방식
- 멀티캐스트 프로토콜(=멀티 캐스트 라우팅 프로토콜 + IGMP)
- 유니캐스트 프로토콜
- 브로드캐스트 프로토콜
- 애니캐스트 프로토콜
라우팅 프로토콜
: 데이터 전송을 위해 목적지까지 갈 수 있는 여러 경로 중 최적의 경로를 설정해준다
- 내부 라우팅 프로토콜(IGP): RIP,IGRP,OSPF,EIGRP
- 외부 라우팅 프로토콜(EGP): BGP....
RIP(Routing Information Protocol): 거리벡터 알고리즘에 기초하여 개발된 프로토콜
특징
- 벨만-포드 알고리즘 사용
- 15홉 제한
- UDP사용
- 30초마다 정보공유
OSPF(Open Shortest Path First): 규모가 크고 복잡한 TCP/IP에서 RIP의 단점을 개선하기 위해 자신을 기준으로 링크상태 알고리즘을 적용하여 최단 경로를 찾는 프로토콜
특징
- 다익스트라 알고리즘 사용
- 라우팅 메트릭 지정
- AS분할 사용
- 홉 카운트 무제한
- 멀티캐스팅 지원
BGP(Border Gateway Protocol): AS간에 경로 정보를 교환하기 위한 프로토콜
특징
- ISP사업자들 상호 간에 주로 사용되는 라우팅 프로토콜
- 라우팅 비용이 많이 들고 라우팅 테이블의 크기가 커서 메모리 사용량이 많다.
라우팅 알고리즘
- 거리 벡터 알고리즘: 인접 라우터와 정보를 공유하여 목적지까지의 거리와 방향을 결정하는 알고리즘, 벨만-포드 알고리즘 사용
- 링크 상태 알고리즘: 모든 라우터에 전달하여 최단 경로 트리르 구성하는 알고리즘, 다익스트라 알고리즘 사용
전송 계층(4계층)
: 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해주면서 종단 간으 ㅣ사용자들에게 신뢰성 있는 데이터를 전달하는 계층
- TCP(Transmission Control Protocol): 프로그램 간에 일련의 옥텟을 안정적으로 교환
 특징
 ▶ 신뢰성 보장
 ▶ 연결 지향적 특징
 ▶ 흐름 제어
 ▶ 혼잡 제어
- UDP(User Datagram Protocol): 데이터그램 서비스를 제공하는 전송 계층의 프로토콜
 특징
 ▶ 비신뢰성
 ▶ 순서화되지 않은 데이터그램 서비스 제공
 ▶ 실시간 응용 및 멀티캐스팅 가능
 ▶ 단순 헤더
세션 계층(5계층): 응용 프로그램 간의 대화를 유지하기 위한 구조를 제공하고, 이를 처리하기 위해 프로세스 들의 논리적인 연결을 담당하는 계층
- RPC(Remote Procedure Call): 원격 프로시저 호출, 코딩 없이 다른 주소 공간에서 실행
- NetBIOS: 응용계층의 프로그램에게 API를 제공하여 상호 통신 가능하게 함
표현 계층(6계층)
: 애플리케이션이 다루는 정보를 통신에 알맞은 형태로 만들거나, 하위 계층에서 온 데이터를 사용자가 이해할 수 있는 형태로 만드는 역할을 담당하는 계층
- JPEG: 이미지를 위해 만들어진 표준 규격
- MPEG: 멀티미디어를 위해 만들어진 표준 규격
응용 계층(7계층)
: 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행하는 역할을 담당
- HTTP: 텍스트 기반의 통신규약, 하이퍼텍스트를 빠르게 교환
- FTP: 파일을 전송하기 위한 프로토콜
- SMTP: 인터넷에서 이메일을 보내기위해 이용되는 프로토콜
- POP3: 원격 서버로부터 TCP/IP연결을 통해 이메일을 가져오는 프로토콜(동기화X)
- IMAP: 원격 서버로부터 TCP/IP연결을 통해 이메일을 가져오는 프로토콜(동기화O)
- Telnet: 인터넷이나 로컬에서 네트워크 연결에 사용되는 프로토콜
- SSH: Telnet 보다 강력한 보안을 제공하는 원격접속 프로토콜(인증,암호화,압축,무결성)
- SNMP: TCP/IP의 네트워크 관리 프로토콜
- DNS: 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꿔거나 반대의 변환 수행
- DHCP: IP관리를 쉽게 하기 위한 프로토콜 
- HTTPS: HTTP의 보안이 강화된 프로토콜, SSL/TLS 프로토콜을 통해 암호화
 패킷 교환 방식(Packet Switching)
 : 컴퓨터 네트워크와 통신의 방식 중 하나로 작은 블록의 패킷으로 데이터를 전송하며 데이터를 전송하는 동안만 네트워크 자원을 사용하도록 하는 통신 방식
- X.25: 통신을 원하는 두 단말장치가 패킷 교환망을 통해 패킷을 전달하는 프로토콜w가상회선 방식: 논리적인 통신 경로를 미리 설정하는 방식(연결형)
애드 혹 네트워크(Ad-hoc Network)
: 노드들에 의해 자율적으로 구성되는 기반 구조가 없는 네트워크
네트워크 설치 구조
- 버스형 구조: 하나의 네트워크 회선에 여러 대의 노드가 멀티포인트로 연결된 구조
- 트리형 구조: 각 노드가 계층적으로 연결되어 있는 구성 형태 나뭇가지 구조
- 링형 구조: 모든 노드가 하나의 링에 순차적으로 연결되는 형태
- 성형 구조(Star): 각 단말 노드가 허브라는 네트워크 장비에 점 대 점으로 연결되어 있는 구성 형태이다.
다중화기(MultiFlexer)
: 하나의 회선을 통해 일정한 시간이나 주파수로 나누어서 전송하게 하는 장비
- FDM(주파수 분할 다중화): 하나의 주파수 대역폭을 다수의 작은 대역폭으로 분할, 전송
- TDM(시간 분할 다중화): 회선의 대역폭을 일정 시간으로 분할하여 전송
- CDM(코드 분할 다중화): 다수의 사용자가 서로 다른 코드를 사용함 동일한 주파수로 다수 접속해서 전송
개발 인프라 구축
: 소프트웨어 개발 프로세스를 지원하고 향상시키기 위해 필요한 기반이나 환경을 구축하는 과정
- 온프레미스 방식: 인트라넷망만을 활용하여 개발환경 구축
- 클라우드 방식: 회사들의 서비스를 임대하여 개발환경을 구축
- 하이브리드 방식: 위 두개 방식을 혼용하는 방식
개발환경 인프라 구축 장비
스토리지 시스템
- DAS: 호스트 버스 어댑터에 직접 연결하는 스토리지
- NAS: 서버와 저장 장치를 네트워크로 연결하여 구성하는 스토리지
- SAN: 서버와 스토리지를 저장 전용 네트워크로 상호 구성하여 관리하는 스토리지
 RAID
- RAID 0: 패리티가 없는 스트라이핑된 세트로 구성되는 방식 
- RAID 1: 피리티가 없는 미러링된 세트로 구성되는 방식
가상화의 종류
가상화 기술요소
- 컴퓨팅 가상화
- 스토리지 가상화
- I/O 가상화
- 컨테이너
- 분산처리 기술
- 네트워크 가상화
클라우드 컴퓨팅
: 인터넷을 통해 가상화된 컴퓨터 시스템 리소스를 제공하고, 정보를 자신의 컴퓨터가 아닌 클라우드에 연결된 다른 컴퓨터로 처리하는 기술
- 사설 클라우드
- 공용 클라우드
- 하이브리드 클라우드
클라우드 서비스 유형
- 인프라형 서비스(IaaS): 시스템 자원을 클라우드로 제공하는 서비스
- 플랫폼형 서비스(PaaS): 애플리케이션을 개발,실행,관리할수 있는 플랫폼을 제공
- 소프트웨어형 서비스(Saas): 소프트웨어 관련 데이터는 중앙에 호스팅 되고 사용자는 웹 브라우저 등의 클라이언트를 통해 접속하여 소프트웨어를 서비스 형태로 이용하는 서비스 
디지털 저작권 관리(DRM; Digital Right Management)
: 암호화 기술을 이용하여 허가되지 않은 사용자로부터 디지털 콘테츠를 안전하게 보호
템퍼 프루핑(Tamper-Proofing)
: 소프트웨어, 시스템을 외부에서의 악의적인 조작으로부터 보호하는 보안기술
- 해시함수
- 워터마크
- 핑거프린트
- 소프트웨어 원본 비교
- 프로그램 체킹
- 실행코드 난독화