결함관리 : 테스트 수행 후 발생한 결함들이 다시 발생하는 것을 방지하기 위해 결함을 추적하고 관리하는 활동.
결함관리(상용)도구 : HP QC, IBM Clear Quest, JIRA
테스트 자동화 도구의 유형
정적 분석 도구, 테스트 실행 도구, 성능 테스트 도구, 테스트 통제 도구, 테스트 하네스 도구
테스트 자동화 도구
QTP(HP의 기능적 테스팅 툴), Rational Robot(IBM의 툴), Selenium(모든 종류의 웹 브라우저들을
지원.)
통합테스트
하향식 통합(Top-Down)
검사 제어 소프트웨어 : 스텁
주 모듈을 드라이버로 사용하고, 주 모듈의 하위 모듈들을 스텁으로 대신한다 ->
깊이 우선 또는 너비 우선 등의 통합 방식에 따라 하위 스텁들을 실제 모듈과 대체한다 ->
각 모듈이 통합될 때마다 테스트를 실시한다. ->
테스트를 통과할 때마다 또 다른 스텁이 실제 모듈로 대체된다 ->
새로운 오류가 발생하지 않음을 보장하기 위해 회귀테스트를 실시한다.
장점
하위 모듈 테스트가 끝난 상위 모듈을 이용하므로 테스트 환경이 실제 가동 환경과 유사하다.
주요 기능을 조기에 테스트할 수 있다.
처음부터 독립된 소프트웨어 구조이다.
단점 : 병행 작업이 어렵고, 스텁이 필요하다.
회귀테스트(Regression Test)
변경된 소프트웨어 컴포넌트에 초점을 맞춘 테스트
상향식 통합(Bottom-Up)
검사 제어 소프트웨어 : 드라이버
하위 모듈은 소프트웨어의 부수적 기능을 수행하는 클러스터로 조합한다. ->
각 클러스터의 테스트를 위한 테스트 케이스 입/출력을 조정하도록 드라이버를 개발한다 ->
각 클러스터를 테스트한다. ->
드라이버를 제거하고 클러스터는 위로 이동하며, 소프트웨어 구조를 상향식으로 만들어간다. ->
최종 드라이버 대신 주프로그램을 대체시키고, 전체적인 소프트웨어 구조를 완성
장점
초기 단계부터 병행작업이 가능하다.
불필요한 개발을 피할 수 있다.
철저한 모듈 단위의 테스트가 가능하다.
단점 : 인터페이스의 테스트가 가정에 의해 이루어지며, 마지막 단게까지 독립된 소프트웨어 형태를
갖지 못한다.
애플리케이션의 성능을 측정하기 위한 지표
처리량(Throughput) : 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션의 수
응답시간(Response Time) : 애플리케이션에 요청을 전달한 시간부터 응답이 도착할 때 까지 걸린 시간.
경과시간(Turnaround Time) : 사용자가 요구를 입력한 시점부터 트랜잭션 처리 후 출력이 완료될
때까지 걸리는 시간
자원사용률(Resource Usage) : 애플리케이션이 트랜잭션을 처리하는 동안에 사용하는 CPU사용량,
메모리 사용량, 네트워크 사용량.
성능 테스트 도구
JMeter : HTTP, FTP, LDAP 등 다양한 프로토콜을 지원하는 안전성, 확장성, 부하, 기능 테스트 도구.
LoadUI : HTTP, JDBC 등 주로 웹 서비스를 대상으로 서버 모니터링을 지원하는 UI를 강화한 부하
테스트 도구
OpenSTA : HTTP, HTTPS를 지원하는 부하 테스트 및 생산품 모니터링 도구
성능 테스트 종류
부하 테스트(Load Test) : 부하를 순차적으로 증가. 임계점 찾아냄.
스트레스 테스트(Stress Test) : 임계점 이상
스파이크 테스트(Spike Test) : 갑자기 부하가 증가했을 때, 정상 작동되는지 테스트
내구성 테스트(Stability Test) : 긴 시간 동안 테스트.
리팩토링(Refactoring)
겉으로 보이는 동작의 변화 없이 내부 구조를 변경하는 것으로, 프로그램의 가치가 상승할 수 있다.
코드스멜을 고치고 다듬는 과정.
목적
소프트웨어의 디자인을 개선.
소프트웨어를 이해하기 쉽게 만든다.
버그를 찾는 데 도움을 준다.
프로그램을 빨리 작성할 수 있게 도와준다.
소스 코드 품질 분석 도구
정적 분석 도구 : 소스코드의 실행 없이 코드 자체만으로 코드를 분석하는 도구.
cppcheck, pmd, checkstyle
동적 분석 도구 : 프로그램을 실행하여 코드를 분석하는 도구
Valgrind, Avalanche
DDL
데이터를 담을 수 있는 객체를 생성하는 언어이며 스키마, 도메인, 테이블, 뷰, 인덱스가 하나의 객체가
될 수 있다.
정의된 내용은 메타 데이터가 되며, 시스템 카탈로그(System Catalog)에 저장된다.
시스템카탈로그 : 시스템 자신이 필요로 하는 스키마 및 여러 가지 객체에 관한 정보를 포함하고 있는
시스템 데이터베이스.
CREATE
스키마정의
CREATE SCHEMA 스키마이름 AUTHORIZATION 사용자id
도메인정의
CREATE DOMAIN 도메인이름 도메인타입
인데스정의
CREATE [UNIQUE] INDEX 인덱스이름
ON 테이블이름({열이름[ASC | DESC]})
테이블 정의
CREATE TABLE 테이블명(
{열이름 데이터타입 [NOT NULL][DEFAULT 기본값]}
[PRIMARY KEY (열이름)]
{[UNIQUE(열이름)]}
{[FOREIGN KEY(열이름) REFERENCES 기본테이블(열이름)]}
[ON DELETE 옵션]
[ON UPDATE 옵션]
)
ALTER
ALTER TABLE 테이블이름 ADD 열이름 데이터타입;
ALTER TABLE 테이블이름 ALTER 열이름 SET DEFAULT값;
ALTER TABLE 테이블이름 DROP 열이름 CASCADE;
DROP
DML
데이터베이스 내의 원하는 데이터를 검색, 수정, 삽입, 삭제할 수 있다.
SELECT, INSERT, DELETE, UPDATE
DCL
EX)
GRANT CONNECT, RESOURCE TO JEONGWOO;
GRANT SELECT ON EMP TO JEONGWOO[PUBLIC][WITH GRANT|ADMIN OPTION]
GRANT|ADMIN OPTION은 둘 다 실행 권한을 받은 사용자가 다시 다른 사용자에게 실행권한을 부여해 줄
수 있게 해주는 Option이다.
WITH GRANT OPTION : ROVOKE 시 다른 사용자에게 부여된 권한도 함께 회수.
WITH ADMIN OPTION : ROVOKE 시 다른 사용자에게 부여한 권한은 함께 회수되지 않는다.
REVOKE CONNECT, RESOURCE FROM JEONGWOO;
REVOKE SELECT ON EMP FROM JEONGWOO;
뷰
하나 이상의 테이블로부터 유도되어 만들어진 가상 테이블.
뷰의 특징
뷰가 정의된 기본 테이블이 제거(변경)되면, 뷰도 자동으로 제거(변경)된다.
외부스키마는 뷰와 기본 테이블의 정의로 구성된다.
뷰에 대한 검색은 기본 테이블과 거의 동일하다.
DBA는 보안 측면에서 뷰를 활욜할 수 있다.
뷰는 CREATE문에 의해 정의되며, SYSVIEWS에 저장된다.
한 번 정의된 뷰는 변경할 수 없으며, 삭제한 후에 다시 생성해야 한다.
뷰의 정의는 ALTER문을 이용하여 변경할 수 없다.
뷰를 제거할 때는 DROP문을 사용한다.
뷰의 갱신에는 제약이 있지만 수정하는 뷰가 기본키를 가지고 있다면 수정이 가능하다.
뷰의 장점
논리적 독립성을 제공한다.
데이터접근제어로 보안 가능하다.
사용자의 데이터관리를 간단하게 한다.
하나의 테이블로 여러개의 상이한 뷰를 정의할 수 있다.
뷰의 단점
독자적인 인덱스를 가질 수 없다.
정의를 변경할 수 없다.
삽입, 삭제, 갱신 연산에 많은 제약이 따른다.
뷰의 생성
CREATE VIEW 뷰이름[(열이름리스트)]
AS SELECT문
[WITH CHECK OPTION]
WITH CHECK OPTION은 이뷰에 대한 갱신이나 삽입 연산이 실행될 때 뷰 정의 조건을 위배하면
실행을 거절한다는 것을 명세.
내장 SQL
응용 프로그램 속에 내장해서 사용하는 SQL
내장 SQL 특징
EXEC SQL을 앞에 붙인다.
콜론(:)을 앞에 붙인다.
호스트 언어들은 한 번에 하나의 레코드만 취급한다(커서의 필요성)
내포된 질의어를 처리하기 위해서는 프리프로세서(전처리기, DML예비 컴파일러)가 필요하다.
커서(Cursor)
검색 결과 테이블의 튜플을 순서대로 지시한다.
커서는 응용 프로그램의 삽입SQL에만 사용되는 새로운 객체이다.
단일 검색문과 삽입, 삭제, 갱신문은 커서가 필요하지 않다.
커서관련 문장
DECLARE : 커서와 관련된 SQL문을 정의한다.
OPEN : 커서를 개방(실행 가능)한다.
FETCH : 커서를 가리키는 결과 테이블의 한 튜플을 호스트 변수로 가져온다.
CLOSE : 커서를 폐쇄(작업 종료)한다.
트랜잭션
데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위.
트랜잭션의 성질
원자성(Atomicity) : 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지
않아야 한다.
일관성(Consistency) : 데이터베이스 상태는 트랜잭션 수행 전과 트랜잭션 수행 후가 같아야 한다.
격리성(Isolation) : 연산의 중간 결과에 다른 트랜잭션이나 작업이 접근할 수 없다.
영속성(Durability) : 트랜잭션의 실행을 성공적으로 끝내면 그 결과를 어떠한 경우에라도
보장받는다.
트랜잭션의 원자성과 관련된 연산
COMMIT : 트랜잭션을 완료하여 데이터 변경 사항을 최종 반영한다.
ROLLBACK : 데이터 변경 사항을 이전 상태로 되돌리는 명령어 이다.
트랜잭션의 상태
활동(Active), 부분완료(Partially Committed, 트랜잭션이 마지막 명령문을 실행한 직후의
상태), 장애(Failed), 철회(Aborted), 완료(Committed)
회복
여러 가지 장애로 인해 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업.
(덤프와 로그 이용)
회복의 기본 원리 : 정복의 중복
복사 및 덤프 : 아카이브(저장소)
로그(Log) : 갱신된 속성의 옛 값, 새 값
UNDO : 장애 발생 시 모든 실행을 취소하여 장애 발생 전의 상태로 복귀한다.
시스템 고장 시 회복기법
지연갱신 회복기법
트랜잭션이 부분 완료될 때까지 모든 Output연산이 지연된다.(REDO만 사용)
즉시갱신 회복기법
트랜잭션 실행 중에 발생하는 변경 내용을 데이터베이스에 즉시 반영하는 방법
(REDO와 UNDO를 모두 이용)
체크포인트
로그를 그대로 유지하면서 일정 시간 간격으로 만들어 놓는것.
체크포인트 이전에 COMMIT된 트랜잭션은 아무런 작업도 하지 않는다.
체크포인트 이후에 COMMIT된 트랜잭션은 REDO 작업을 수행한다.
COMMIT 없는 트랜잭션은 체크포인트와 상관없이 전부 UNDO 연산을 수행한다.
그림자페이징 기법
특정 로그 파일을 두지 않는다.
현재 테이블과 현재 테이블의 복사본인 그림자 테이블을 유지한다.
병행제어
병행제어를 안할 때의 문제점
갱신분실(Lost Update) : 일련의 갱신 작업 시 일부 갱신 사실이 반영되지 않는다.
모순성(Inconsistence) : 두 개의 트랜잭션이 병행 수행될 때 원치 않는 자료를 이용함으로써
발생하는 문제
연쇄복귀(Cascading Rollback) : 병행수행되던 트랜잭션 중 어느 하나에 문제가 생겨
Rollback하는 경우 다른 트랜잭션도 함께 Rollback되는 현상.
주요 병행 제어 방법
기본 로킹 방법
lock과 unlock연산을 통해 트랜잭션의 데이터 아이템을 제어.
직렬 가능성 보장 X
2단계 로킹
확장(lock 수행), 축소(unlock 수행)
직렬 가능성 보장 O
직렬가능성 : 트랜잭션들을 병행 처리한 결과가 트랜잭션들을 순차적으로(직렬로) 수행한 결과와
같아지는 것.
트리거
데이터베이스 시스템에서 삽입, 갱신, 삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로
수행되는 절차형SQL이다.
ECA규칙(Event-Condition-Action)이라고 부른다.
트리거타입
로우(Row) 및 문장(Statement)
로우 : 테이블에 삽입, 삭제, 갱신 발생하는 로우마다 트리거의 내용 실행
문장 : 로우의 개수와 상관없이 문장 단위로 한 번만 실행되는 타입
BEFORE 및 AFTER
BEFORE : 조건 문장이 실행되기 전에 트리거의 내용이 실행되는 타입
AFTER : 조건 문장이 실행된 후 트리거의 내용이 실행되는 타입.
트리거는 두 종류의 타입 중 각각 하나씩을 가질 수 있다.
인덱스
데이터베이스에서 데이터를 신속하게 탐색할 수 있도록 만든 데이터 구조.
인덱스 파일 구조는 <값, 주소> 쌍으로 구성되는 데이터 구조를 활용하여 데이터에 접근하는 방식으로,
자기디스크에서 주로 활용.
인덱스의 종류
기본인덱스
탐색키가 데이터 파일의 기본 키인 인덱스를 기본인덱스라고함.
희소 인덱스로 유지할 수 있다.
클러스터링 인덱스
범의 질의에 유용하다. 범위의 시작 값에 해당하는 인덱스 엔트리를 먼저 찾는다.
보조 인덱스
일반적으로 밀집인덱스.
같은 수의 레코드들에 접근할 때 보조인덱스를 통하면 기본 인덱스를 통하는 경우보다 디스크
접근 횟수가 증가할 수 있다.
CRUD분석
데이터베이스 테이블에 변화를 주는 트랜잭션의 CRUD연산에 대해 CRUD매트릭스를 작성하여 분석하는 것.
연산 우선순위 : C>D>U>R
CREATE(=INSERT),READ(=SELECT),UPDATE(=UPDATE),DELETE(=DELETE)
ETL(Extraction Transformation Loading)
데이터 이동 및 변환 절차와 관련된 용어이며, 추출, 변환, 적재로 구성
질이의 처리 단계
고급질의어 -> 검사기/파서 -> 내부 형태 질의문 -> 질의어최적기(질의어 최적화함)-> 질의문 계획 ->
질의어 코드 생성기 -> 질의문실행코드 -> 런타임 데이터베이스 처리기 -> 질의어 결과
데이터웨어하우스
의사결정 지원을 위한 주제지향의 통합적이고 영속적이면서 시간에 따라 변하는 값이 유지되는
데이터의 집합.
특징
복잡한 분석, 지식발견, 의사결정 지원을 위한 데이터의 접근을 제공
판독전용(Read Only)으로 사용
의사결정 과정에서 필요한 정보를 빠르고 정화하게 얻도록 도움을 준다.
OLAP(Online Analytical Processing)
대규모의 다차원 데이터를 동적으로 온라인에서 분석하고 통합하고 보고서를 만드는 과정.
대규모 레코드를 대상으로 시장 분석, 판매 동향 분석 등을 수행.(복잡한 트랜잭션 처리 응용)
롤 업(Roll up) : 세부적인 데이터로부터 더 큰 단위로 통합하는 연산
드릴다운(Drill down) : 큰 단위에서 세부적인 단위의 데이터로 옮겨가는 연산
피벗팅(Pivoting) : 크로스 테이블에서 차원 변경을 위해 사용되는 연산
슬라이싱(Slicing) : 데이터 큐브의 한 조각을 볼 수 있게 하는 연산
다이싱(Dicing) : 고정된 다차원 값에 대한 연산.
OLTP(Online Transaction Processing)
단순 레코드를 위주로 한 은행 계좌처리, 항공 예약 처리등의 단순 트랜잭션 처리 응용.
데이터마이닝
대량의 데이터로부터 관련된 정보를 발견하는 과정.
연관 규칙
연관규칙은 지지도와 신뢰도가 같이 수반될 때 연관성 법칙으로서의 의미가 제대로 파악될 수 있다.
지지도 (A n B) / 전체
신뢰도 (A n B) / A
빅테이터
3V : 규모(Volume), 속도(Velocity), 다양성(Variety)
정보보호의 개념
기밀성, 무결성, 가용성, 인증성, 부인방지를 보장하기 위해 기술적,물리적,관리적 보호대책을
강구하는 것.
정보보호의 목표
기밀성(Confidentiality) : 시스템 내의 정보와 자원은 인가된(Authorized) 사용자만 접근할 수
있도록 보장
무결성(Integrity) : 접근권한이 없는 사용자에 의해 정보가 변경되지 않도록 정보와 정보처리 방법의
완전성과 정확성을 보호하는 것
가용성(Availability) : 정보와 정보시스템을 인가받은 사람이 사용하려고 할 때 언제든지 사용할 수
있도록 보장.
정보보호의 주요 개념
자산(Assets) : 조직이 보호해야 할 대상
위협(Threats) : 손실이나 손상의 원인이 될 가능성을 제공하는 환경의 집합(도둑)
취약성(Vulnerability) : 약점(빈틈)
위험 : 원하지 않는 사건이 발생해 손실 또는 부정적인 영향을 미칠 가능성
영향(Impact) : 사고에 의해서 자산에 미치는 결과
보호대책(Safeguards) : 취약점을 감소시키며 원하지 않는 사고를 탐지.
해커 관련 용어
화이트햇(white hat), 블랙햇, 그레이햇
정보보호 목표 사항을 위협하는 공격 유형
변조(Modification) : 원래의 데이터를 다른 내용으로 바꾸는 행위. 무결성을 위협한다.
가로채기(Interception) : 정보를 몰래 열람 또는 도청하는 행위. 기밀성을 위협
차단(Interruption) : 정보의 흐름을 차단. 가용성을 위협
위장(Fabrication) : 마치 다른 송신자로부터 정보가 수신된 것처럼 꾸미는 것.
업무연속성관리
재해 상황이라는 극한 상황에 초점을 두어 정보 서비스의 가용성을 보장하려는 관리 활동
재해 복구 계획(DRP, Disaster Recovery Planning)
보관된 데이터들에 피해가 발생했을 때, 해당 부분을 복구하여 피해를 최소화함으로써 업무에
지장이 없도록, 계획을 사전에 준비하는 것.
테스트 계획
Checklist : 계획서 및 절차서 점검
Structured Walk-Through : 관리자들이 모여 계획 논의
Simulation : 복구 절차를 모의 테스트.
Parallel Test : 재난 복구 절차의 전체적인 테스트.
Full-Interruption Test : 실제 재난이 발생할 때와 동일한 테스트 수행.
업무 연속성 관리(BCM, Business Continuity Management)
업무 연속성 계획의 개발 및 유지보수를 위한 일련의 관리 과정
업무 연속성 계획(BCP, Business Continuity Planning)
재난 발생 시 비즈니스의 연속성을 유지하기 위한 계획
업무 영향 분석(BIA, Business Impact Analysis)
재해발생으로부터 정상적인 업무가 중단된 경우에 조직 및 기업에 잠재적으로 미치는 여향 및
정량적 피해규모를 규명.
RTO(Recovery Time Objective, 목표복구시간) : 목표로하는 업무별 복구 시간으로
영향받는 업무의 중요도에 따라 결정
RSO(Recovery Scope Objective, 목표복구범위)
한계복구시간(CRT-Critical Recovery Time, MTD-Maximum Tolerable Downtime)
기업 생존에 치명적인 손상을 입히기 전에 이전의 업무를 재개해야 하는 목표 시간.
접근통제
기밀성, 무결성, 가용성을 확보하는 가장 중요한 통제 방안은 정보에 대하여 인가된 사람에게만 접근을
허용하는 접근통제이다.
기본적인 기능
식별과 인증 : 요청한 사람이 누구인지 식별(Identification), 제시한 신분과 같은 사람인지를
인증(Authentication)
접근권한 : 권한을 부여하는 권한통제(Authorization)기능
감사기록 : 접속과 접속거부에 관한 기록인 시스템 로그 기능
접근통제의 구성요소
주체(Subject) : 행위자
객체(Object) : 제공자, 아이템
접근(Access) : 주체의 활동.
평가유형(AAA서버)
인증(Authentication), 권한부여(Authorization), 계정관리(Accounting)
식별과 인증
식별은 시스템에게 주체의 식별자를 요청하는 과정으로 각 시스템의 사용자는 시스템이 확인할 수 있는
유일한 식별자를 갖는다.(지식, 소유, 존재, 행위)
개체인증
개체의 신원을 증명하기 위한 일련의 과정을 말하는데, 여기서 개체는 일반적으로 사람이나 기기이다.
(아이디/패스워드, 해시된패스워드, 솔트사용)
생채인식기술(Biometrics)
보편성 : 누구에가나 있는 특성이어야 한다
유일성 : 개인을 구별할 수 있는 고유한 것이어야 한다
영속성 : 시간과 환경의 변화에도 변경이 불가능한 것이어야 한다
정량성 : 형상의 획득이 용이하고 정량화가 될 수 있어야 한다
접근통제정책
식별 및 인증된 사용자가 허가된 범위 내에서 시스템 내부의 정보에 대한 접근을 허용하는 기술적
방법을 접근 통제라고 한다.
임의적 접근 통제(DAC, Discretionary Access Control)(신원기반)
접근하고자 하는 주체의 신분에 따라 접근 권한을 부여한다.
강제적 접근 통제(MAC, Mandatory Access Control)
주체가 객체에 접근할 때 관리자에 의해 사전에 규정된 규칙을 비교하여 접근 권한을 부여한다.
(규칙기반.)
역활 기반 접근 통제(RBAC, Role Based Access Control)
주체와 객체 사이에 역활을 부여하여 임의적, 강제적 접근 통제 약점을 보완한 방식.
주체의 인사이동이 잦을 때 적합하다.(역활기반)
접근통제 보안모델
벨 라파듈라(Bell-Lapadula)모델
군사용 보안 구조의 요구사항을 충족하기 위해 설계된 모델.
MAC기법이며, 기밀성에 중점
No Read Up, No Write Down
비바(BIBA)모델
무결성을 강조한 모델
No Read Down, No Write Up
클락-윌슨(Clack and Wilson) 모델
무결성을 강조한 모델로 상업적 모델에 염두.