Web Server와 Web Application Server의 차이프로세스의 종류메모리가 고갈되면 일어나는 현상MSA장점단점인덱스(index)인덱스 자료구조DB락디자인 패턴 GoF(Gang of Four)생성패턴Singleton Pattern(싱글톤 패턴)구조패턴퀵 정렬(Quick sort)OOP의 5가지 설계 원칙애자일 방법론XP(eXtreme Programming)스크럼린소프트웨어 아키텍처 패턴계층화 패턴클라이언트-서버 패턴파이프-필터 패커 패턴브로커 패턴MVC 패턴비용산정 모형 종류LoC(Lines of Code)모형Man Month 모형COCOMO 모형 푸드남 모형기능점수 모형일정관리 모델 종류UI 설계원칙UI 종류요구사항요구사항 개발 프로세스요구사항 검토 방법객체 지향 분석법론OOSE(Object Oriented Software Engineering) -야콥슨OMT(Object Modeling Technology) - 럼바우소프트웨어 생명 주기하향식 설계 : 절차 지향(순차적)상향식 설계 : 객체 지향다이어그램액터란 ?화이트 박스 vs 블랙박스화이트박스 테스트블랙박스 테스트정렬스텁드라이버스택과 큐인수테스트트리트리순회DRM(Digital Rights Management) 디지털 저작권 관리데어터베이스 기초 개념DDL : 데이터 정의어DML : 데이터에 변형을 가하는 명령어DCL : 데이터 제어어SQL 명령어후보키 vs 슈퍼키로킹정규화트랜잭션무결성관계 대수 연산결합도와 응집도결합도응집도페이지 교체 알고리즘내부단편화CMM(Capability Maturity Model)모델RIP vs OSPFRIP(Routing Information Protocol)OSPF암호화 알고리즘정보보안 3대요소UML(Unified Modeling Language)관계스테레오 타입DACMACRBAC성능 테스트 유형화이트박스 테스트블랙박스 테스트V-모델IaaSPaaSSaaS회복 기법UndoRedo
Web Server와 Web Application Server의 차이
- Web Server은 정적인 컨텐츠를 제공해주는 소프트웨어
- Web Application Server은 동적인 컨텐츠를 주로 제공해주는 소프트웨어
프로세스의 종류
- 데몬 프로세스
- 커널에 의해 실행되고 특정 서비스를 제공
- 부모 프로세스
- 다른 프로세스를 만들며, init을 제외한 모든 프로세스는 부모 프로세스를 가지고 있다.
- 자식 프로세스
- 부모 프로세스에 의해 만들어지는 프로세스, 자식 프로세스는 종료 시 부모 프로세스에게 종료 결과를 전달하고 종료
- 고아 프로세스
- 자식 프로세스보다 부모 프로세스가 먼저 종료되었을 때 해당 자식 프로세스는 고아 프로세스가 되어 init 프로세스가 관리
- 좀비 프로세스
- 자식 프로세스의 종료 신호를 부모 프로세스가 처리하지 못할 경우, 자식 프로세스는 좀비 프로세스가 된다.
메모리가 고갈되면 일어나는 현상
메모리가 고갈되었지만 프로세스를 실행해야하기 때문에 swap이 활발해집니다.
CPU이용률이 하락되고 OS는 CPU 이용률이 낮으므로 오히려 새로운 프로세스를 추가하게 되는 쓰레싱 현상이 나타남
이를 해소하지 못하면 Out of Memory 상태로 판단해 중요도가 낮은 프로세스를 강제로 종료하게 됨
MSA
MicroService Architecture은 모든 시스템의 구성요소가 한 프로젝트에 통합되어 있는 모놀리식 아키텍쳐의 한계점을 극복하고자 등장
장점
- 일부 서비스에 장애가 발생하여도 전체 서비스에 장애가 발생하지 않는다.
- 각각의 서비스들은 서로 다른 언어와 프레임워크로 구성 가능
- 서비스의 확장 용이
단점
- 서비스가 분리되어 있어 테스팅이나 트랜잭션 처리 등이 어려움
- 서비스간에 API로 통신하기 때문에 그에 따른 비용이 발생
- 서비스간의 호출이 연속적이기 때문에 디버깅 및 에러 트레이싱이 어렵다.
인덱스(index)
추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조이다.
인덱스 자료구조
- 해시 테이블
- 컬럼의 값으로 생성된 해시를 기반으로 인덱스를 구현
- 시간복잡도가 O(1)이라 검색이 매우 빠르다
- 부등호와 같은 연속적인 데이터를 위한 순차 검색이 불가능
- B + Tree
- 자식 노드가 2개 이상인 B-Tree를 개선시킨 자료 구조
- BTree의 리프노드들을 LinkedList로 연결하여 순차 검색을 용이하게 함
- 해시 테이블보다 나쁜 O(log2n)의 시간복잡도를 갖지만 해시테이블보다 흔하게 사용
DB락
여러개의 트랜잭션들이 하나의 데이터로 동시에 접근하려고 할 때 제어해주는 도구
공유락
(LS, Shared Lock) : 트랜잭션이 읽기를 할 때 사용하는 락, 데이터를 읽을 수 있지만 쓸 수 없음
베타락
(LX, Exclusive Lock) : 트랜잭션이 읽고 쓰기를 할 때 사용하는 락, 데이터를 읽고 쓸 수 있음
디자인 패턴 GoF(Gang of Four)
자주 발생하는 문제를 해결하기 위한 반복적인 해결방법
생성패턴
추상 팩토리(Abstarct Factory) : 연관 관계 그룹 생성 후 추상적 표현
빌더(Builder) : 조립,객체 생성
팩토리메서드(Factory Method) : 객체 생성을 서브클래스에서 결정해서 생성
프로토타입(Prototype) : 원본 객체 복제해서 생성
Singleton Pattern(싱글톤 패턴)
애플리케이션에서 인스턴스를 하나만 만들어 사용하기 위한 패턴
커넥션 풀, 스레드 풀, 디바이스 설정 객체 드으이 경우 인스턴스를 여러 개 만들게 되면 자원을 낭비하게 되거나 버그를 발생시킬수 있으므로 오직 하나만 생성하고 그 인스턴스를 사용하도록 하는 것
구조패턴
- 어댑터 : 비호환 인터페이스에 호환성 부여할 수 있는 구조로 구성
브릿지
: 독립적 확장이 가능하게 구조 구성
- 컴포지트 : 복합, 단일 객체 구분없이 사용할 수 있게 구조 구성
- 데코레이터 : 상속 없이 확장할 수 있는 구조 구성
- 퍼사드 : 상위 인터페이스 구성 후 서브클래스 기능 사용할 수 있게 구조 구성
- 플라이웨잇 : 인스턴스 공유 및 메모리 절약할 수 있게 구조 구성
프록시
: 접근이 힘든 객체를 연결하는 인터페이스 역할할 수 있게 구조 구성
퀵 정렬(Quick sort)
특정한 값을 기준으로 큰 숫자와 작은 숫자를 구분하자
- 분할 정복 알고리즘으로 평균속도가 O(N*NlogN)이다.
- 기준값을 피봇이라고 부른다.
OOP의 5가지 설계 원칙
SRP(Single Responsiblity Principle, 단일 책임 원칙)
: 클래스는 단 하나의 목적을 가져야하며, 클래스를 변경하는 이유는 단 하나의 이유여야한다.
OCP(Open-Closed Principle, 리스코프 치환 원칙)
: 상위 타입의 객체를 하위 타입으로 바꾸어도 프로그램은 일관되게 동작해야 한다.
LSP(Liskov Subsitution Principle, 인터페이스 분리 원칙)
: 클라이언트는 이용하지 않는 메소드에 의존하지 않도록 인터페이스를 분리해야 한다.
DIP(Dependency Inversion Principle, 의존 역전 법칙)
: 클라이언트는 추상화(인터페이스)에 의존해야 하며, 구체화(구현된 클래스)에 의존해서는 안된다.
애자일 방법론
고객 요구사항 변화에 중심을 둔 개발 방법론
XP(eXtreme Programming)
- 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론
- 1~3주의 반복 개발주기
- XP의 5가지 가치
- 용기
- 단순성
- 의사소통
- 피드백
- 존중
- XP의 12가지 기본원리
- 짝 프로그래밍
- 공동 코드 소유
- 지속적인 통합
- 계획 세우기
- 작은 릴리즈
- 메타포어
- 간단한 디자인
- 테스트 기반 개발
- 리팩토링
- 40시간 작업
- 고객 상주
- 코드 표준
스크럼
- 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리중심 방법론
- 백로그
- 제품과 프로젝트에 대한 요구사항
- 스프린트
- 2~4주의 짧은 개발 기간으로 반복적 수행으로 개발품질 향상
- 스크럼 미팅
- 스크럼 마스터
- 스프린트 회고
- 번 다운 차트
- 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트
린
- 도요타의 린 시스템 품질깁법을 소프트웨어 개발 프로세스에 적용해서 낭비요소를 제거하여 품질을 향상시킨 방법론
- JIT, 칸반보드 사용
- 7가지 원칙 : 낭비제거, 품질 내재화, 지식 창출, 늦은 확정, 빠른 인도, 사람 존중, 전체 최적화
소프트웨어 아키텍처 패턴
계층화 패턴
- 시스템을 계층으로 구분
- 서로 마주보는 계층에서만 상호작용 발생
클라이언트-서버 패턴
- 하나의 서버 + 다수의 클라이언트
- 사용자는 클라이언트와만 상호작용
파이프-필터 패커 패턴
- 데이터 스트림을 처리하는 시스템에서 사용
- 하나의 서브시스템이 데이터를 받아 처리하고, 그 결과를 다음 서브 시스템에게 넘겨줌
브로커 패턴
- 사용자가 요청하면 브로커가 적합한 컴포넌트를 연결하는 방식
- 원격 서비스 호출에 응답하는 컴포넌트가 여럿일때 적합
MVC 패턴
- 모델 : 핵심 기능과데이터 보관
- 뷰 : 사용자에게 정보 표시
- 컨트롤러 : 사용자의 입력 처리
비용산정 모형 종류
LoC(Lines of Code)모형
- 소프트웨어 각 기능의 원시 코드 라인 수의 낙관치, 중간치, 비관치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 방식
- 측정이 쉽고 이해하기 쉬워 많이 이용
- 예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용을 산정
Man Month 모형
- 한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 프로젝트 비용을 산정하는 방식
COCOMO 모형
- 5만 라인 이하 : Oranic, 조직형
- 30만 라인 이하 : Semi-Detached, 반 분리형
- 30만 라인 이상 : Embeded, 임베디드형
푸드남 모형
- 소프트웨어 개발주기의 단계별로 요구할 인력의 분포를 가정하는 방식
- 생명주기 예측 모형
기능점수 모형
- 요구 기능을 증가시키는 인자별로 가중치를 부여하고, 요인별 가중치를 합산하여 총 기능의 점수를 계산하여 비용을 산정하는 방식
일정관리 모델 종류
- 주 공정법(CPM)
- 여러 작업의 수행 순서가 얽혀 있는 프로젝트의 일정을 계산하는 기법
- 제약사항을 배제한 상태로 프로젝트의 시작과 끝을 나타내는 노드와 노드 간을 연결을 통해 공정을 계산하기 위한 액티비티 표기법
- PERT
- 일의 순서를 계획적으로 정리하기 위한 수렴 기법
- 중요 연쇄 프로젝트 관리(CCPM)
- 주 공정 연쇄법으로 자원제약사항을 고려하여 일정을 작성하는 기법
UI 설계원칙
- 직관성
- 유효성
- 학습성
- 유연성
UI 종류
CLI
(Command Line Interface) : 텍스트로만 이루어진거
GUI
(Graphic User Interface) : 우리가 흔히 쓰는 마우스를 이용해 그래픽을 클릭하는 UI
NUI
(Natural User Interface) : 말과 행동으로 동작하는 UI
VUI
(Voice User Interface) : 음성으로 동작
OUI
(Organic User Interface) : 사물과 사용자가 상호작용
요구사항
- 기능적 요구사항 : 필요한 요구사항들 (ex : 조회/저장/삭제)
- 비기능적 요구사항 : 보조적인 지표 (ex: 화면이 3초 이내에 꺼져야한다)
요구사항 개발 프로세스
도출/추출 → 분석 → 명세 → 확인/검토(검증)
요구사항 검토 방법
동료 검토
(Peer Review) : 요구사항 명세서 작성자가 명세서 내용을 직접 설명하고 동료가 이를 들으면서 결함 발견
워크 스루
(Walk Through) : 검토 회의 전 요구사항 명세서를 미리 배포해 사전 검토 후 짧은 회의로 결함 발견
인스펙션
(Inspection) : 명세서 작성자를 제외한 다른 전문가들이 명세서를 확인하면서 결함을 발견 (계획-사전 교육-준비-인스펙션 회의-수정-후속조치)
객체 지향 분석법론
OOSE(Object Oriented Software Engineering) -야콥슨
- 유스케이스에 의한 접근 방법으로 유스케이스를 모든 모델의 근간으로 활용되는 방법론
- 분석, 설계, 구현 단계로 구성
- 기능적 요구사항 중심의 시스템
OMT(Object Modeling Technology) - 럼바우
객체 모델링
(Object Modeling) : 객체 다이어그램, 시스템에서 요구하는 객체를 찾고 객체들 간의 관계를 정희하며 가장 중요하며 선행되어야함
동적 모델링
(Dynamic Modeling) : 상태 다이어그램, 시간의 흐름에 따라 객체들 사이의 제어 흐름, 동작 순서 등의 동적인 행위 표현
기능 모델링
(Functional Modeling) : 자료 흐름도(DFD), 프로세스들의 자료 흐름 중심으로 처리 과정 표현
소프트웨어 생명 주기
폭포수 모델
: 고전적으로 전통적인 모델, 순차적인 개발이 특징, 이전 단계를 다시 보기 어려움
나선형 모델
: 위험 분석 및 위험 최소화가 목적, [계획→위험분석→개발및검증→고객평가과정] 같은 과정을여러번 반복
프로토타입
: 견본/시제품을 통해 최종 결과 예측, 인터페이스 중심, 요구사항 변경 용이
HIPO
(Hirechy Input Process Output) : 하향식 설계이며 가시적, 총체적, 세부적 다이어그램으로 구성
하향식 설계 : 절차 지향(순차적)
상향식 설계 : 객체 지향
다이어그램
구조, 정적 다이어그램 종류 : 클래스, 객체, 컴포넌트, 배치, 패키지
행위, 동적 다어어그램 종류 : 유스케이스, 순차, 상태, 활동, 타이밍
유스케이스 다이어그램
: 사용자 요구를 분석순차 다이어그램
: 시스템, 객체들이 주고 받는 메시지 표현액터란 ?
시스템과 상호작용하는 사람이나 다른 시스템에 의한 역할
사용자 액터
: 기능을 요구하는 대상이나 시스템의 수행결과를 통보받는 사용자
시스템 액터
: 본 시스템과 데이터를 주고 받는 연동 시스템
화이트 박스 vs 블랙박스
화이트박스 테스트
내부 소스코드를 볼 수 있는 테스트
- 기초 경로 검사 : 설계나 코드 기초로 흐름도 작성 후 경로 실행 검사
- 제어 구조 검사 : 논리적 조건 테스트/프로그램 반복 구조 검사, 변수 사용 검사
- 프로그램 구조 고려
블랙박스 테스트
- 경계값 분석
- 동치분할검사
- 원일-결과 그래프 검사, 오류 예측 검사
- 프로그램 구조 고려 안함
정렬
버블 정렬
: 한번 실행 시 마다 가장 큰 값이 맨뒤로 이동, O(n2)선택 정렬
: 가장 작은 값 선택해서 정렬 안된 가장 왼쪽 값과 변경, O(N log n)스텁
하향식, 결과를 테스트할 모듈에 넘겨는 역할
드라이버
상향식, 테스트 완료 후 그 결과 값을 받는 역할
스택과 큐
스택
: LIFO
(Last In First Out), 한쪽에서 삽입과 삭제큐
: FIFO
(First In First Out), 각각의 한쪽 끝에서 삽입과 삭제인수테스트
알파 테스트
: 개발자 앞에서 사용자가 행하는 테스트(통제된 환경)베타 테스트
: 사용자가 여러 사용자 앞에서 행하는 테스트(통제된 환경X)트리
데이터를 계층화 시킨 자료 구조
- 단말 노드 : 자식이 없는 노드
- 차수 : 바로 다음 레벨 자식 노;드의 개수 중 가장 큰 값
트리순회
- 중위 순회 : 왼쪽 - 루트 - 오른쪽
- 전위 순회 : 루트 - 왼쪽 - 오른쪽
- 후위 순회 : 왼쪽 - 오른쪽 - 루트
DRM(Digital Rights Management) 디지털 저작권 관리
- 디지털 무단 사용을 막고 제공자의 권리, 이익을 보호해주는 기술 및 서비스
- 불법 복제와 변조 방지
- 키 관리 및 라이선스 발급 관리
데어터베이스 기초 개념
- 릴레이션 = 테이블
- 속성 = 릴레이션의 열
- 차수 = 속성의 수(합연산)
- 튜플 = 릴레이션의 행
- 카디널리티 = 튜플의 수(곱연산)
DDL : 데이터 정의어
- CREATE
- ALTER
- DROP
DML : 데이터에 변형을 가하는 명령어
- SELECT
- INSERT
- UPDATE
- DELETE
DCL : 데이터 제어어
- GRANT : 권한부여
- REVOKE : 권한 회수
- COMMIT : 결과반영
- ROLLBACK : 결과 되돌리기
SQL 명령어
- DISDINCT : 중복제거
- CASECADE : 부모 항목 값 삭제 시 자식들도 같이 삭제
- BETWEEN AND : 서로 짝
- UPDATE SET : 서로 짝
후보키 vs 슈퍼키
후보키
: 유일성과 최소성 모두 만족하는 키
슈퍼키
: 유일성은 만족하지만 최소성은 만족하지 못하는 키
로킹
트랜잭션이 접근하는 동안 데이터를 잠궈 다른 트랜잭션이 접근하지 못하도록 보호
- 로킹 단위가 커지면 그 외 모든게 작아지고(로크 수, 병행성, 오버헤드, 공유 등) 관리가 수월
정규화
비정규 릴레이션 → 제1정규형 → 제2정규형 → 제3정규형 → BCNF(보이스/코드 정규형) → 제4정규형 → 제5정규형
- 비정규 → 제1정규 : 도메인이 원자값
- 제1정규 → 제2정규 : 부분적 함수 종속 제거
- 제2정규 → 제3정규 : 이행적 함수 종속 제거
- 제3정규 → BCNF : 결정자이면서 후보키가 아닌 것 제거
- BCNF → 제4정규 : 다치 종속 제거
- 제4정규 → 제5정규 : 조인 종속성
트랜잭션
원자성(Automicity)
: 트랜잭션 연산은 데이터에스는 모두 반영되거나 전혀 반영되지 않아야한다.
일관성(Consistency)
: 트랜잭션이 그 시행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환
영속성(Durability)
: 완료된 트랜잭션 결과는 시스템이 고장나더라도 영구적으로 반영
격리성(Isolation)
: 트랜잭션이 실행 중 다른 트랜잭션의 접근이 불가
무결성
개체 무결성
: 어떤 속성도 null 값이나 중복값을 가질 수 없다.
참조 무결성
: 외래키 값은 null이거나 참조 릴레이션이 기본키 값과 동일
도메인 무결성
: 주어진 속성값이 정의된 도메인에 속한 값이어야함
관계 대수 연산
관계대수 : 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해 어떻게 유도하는가를 기술하는 절차적 언어
결합도와 응집도
응집도가 높은건 좋지만 결합도가 높으면 의존성이 높아져 안 좋음
결합도
모듈 간의 공유
내용결합도 - 공통결합도 - 외부결합도 - 제어결합도 - 스탬프결합도 - 자료결합도(데이터)
내공부 제스자(약해지는 순서) → 내공부 제스잘(내 공부 제가 스스로 잘해요)
응집도
모듈 내부의 공유
우연적응집도 - 논리적응집도 - 시간적응집도 - 절차적응집도 - 통신적응집도 - 순차적응집도 - 기능적응집도
우논시절 통순기(강해지는 순서) → 우리 놀던시절 통순대 기억나?
페이지 교체 알고리즘
FIFO
(First In First Out) : 가장 먼저 들어온 것부터 교체(가장 많이 쓰인 페이지 교체)
LRU
(Least Recently Used) : 가장 오래 사용되지 않은 것 교체
내부단편화
- best-fit기준 : 요구치보다 작지 않으면서 가장 핏한거 사용
- worst-fit기준 : 무조건 큰거 사용
CMM(Capability Maturity Model)모델
소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델
- 초기단계 : 시작하는 단계
- 반복단계 : 프로세스대로 반복 가능한 단계
- 정의단계 : 절차가 정립된 단계
- 관리단계 : 평가할 수 있는 단계, 잘못된 점 분석 가능
- 최적화단계 : 방법이 가장 적절하다고 생각 할 수 있는 단계
RIP vs OSPF
RIP(Routing Information Protocol)
- 거리벡터 라우팅 프로토콜
- 벨만포드 알고리즘
- 최대 15홉
- 소규모망 적합, 속도가 느리며 주기적 업데이트
OSPF
- 링크상태 라우팅 프로토콜
- 다익스트라 알고리즘
- 홉수 제한 X
- 대규모 적합, 속도 빠르고 변화가 있을 때만 업데이트
암호화 알고리즘
- 단방향 암호화 - HASH
- 양방향 암호화 - 개인키 - 블록 암호화 - DES, SEED, AES, ARIA
- 양방향 암호화 - 개인키 - 스트림 암호화 - LFSR, RC4
- 양방향 암호화 - 공개키(비대칭) - RSA, 암호화는 공개키로, 복호화는 비밀키로
정보보안 3대요소
- 기밀성 : 허가 받은 사람만 열람 가능
- 무결성 : 허가 받은 사람만 수정 가능
- 가용성 : 필요할때 사용 가능
UML(Unified Modeling Language)
- 사물
- 관계
- 다이어그램
관계
- 연관(-)
- 집합(◇)
- 포함(◆)
- 일반화(-▷)
- 의존(—>)
- 실체화(—▷) {관계}
스테레오 타입
UML 기본요소 + 새로운 요소를 더한 확장 매커니즘
<< >>
(길러멧) 기호 사용
<<include>>
: 어떤 시점에 반드시 다른 유스케이스를 실행<<extend>>
: 어떤 시점에 다른 유스케이스를 실행할 수 있고 아닐 수도 있음<<abstract>>
: 추상 클래스<<interface>>
: 모든 메서드와 상수가 추상인 클래스<<entity>>
: 정보 또는 행위를 표현하는 클래스<<boundary>>
: 상호작용을 담당하는 클래스<<control>>
: 로직 및 제어를 담당하는 클래스DAC
- 접근 결정 : 신분
- 권한 부여 : 데이터 소유자
- ACL(Access Control List)로 자원에 권한 부여
MAC
- 접근 결정 : 권한(등급)
- 권한 부여 : 시스템
RBAC
- 접근 결정 : 역할
- 권한 부여 : 중앙관리자
성능 테스트 유형
- 부하 테스트 : 부하를 점점 늘려 임계점을 찾는 테스트
- 스트레스 테스트 : 임계점 이상의 부하를 가해 비정상적인 상황에서의 성능을 측정
- 스파크 테스트 : 짧은 시간 내 많은 사용자가 몰릴 때 반응 테스트
- 내구성 테스트 : 오랜 시간 동안 높은 부하를 가해 성능 테스트
화이트박스 테스트
모듈 내부구조, 놀리 경로를 테스트
- 구문 커버리지
- 모든 명령문을 한 번 이상 수행
- 결정 커버리지
- 결정 포인트 내 전체 조건식도 참/거짓을 한번씩, 개별 조건식도 참/거짓을 한번씩 수
- 조건 커버리지
- 결정 포인트 내 개별 조건식이 참/거짓을 한번씩 수행
- 조건/결정 커버리지
- 결정 포인트 내 전체 조건식 참/거짓을 한번씩 수행
- 변경 조건/결정 커버리지
- 결정 포인트 내 개별 조건식이 다른 개별 조건식의 영향을 받지 않고, 전체 조건식에 독립적으로 영향을 주도록 수행
- 다중 조건 커버리지
- 모든 개별 조건식의 가능한 조합을 백퍼센트 보장
- 기본 경로 커버리지
- 맥케이브의 순환복잡도를 기반으로, 수행 가능한 모든 경로를 테스트
- 제어 흐름 테스트
- 제어 구조를 그래프로 나타내어 테스트
- 데이터 흐름 테스트
- 제어 흐름 그래프에 데이터 사용 현황을 추가한 그래프를 통해 테스트
블랙박스 테스트
요구사항 명세를 보며 기능 위주 테스트
- 상태 전이 테스트
- 이벤트에 의해 객체 상태로 전이되는 경우의 수를 측정
- 원인-결과 그래프 테스트
- 그래프를 통해 입력값 간의 관계 및 출력에 미치는 영향을 분석해, 효율성이 높은 TC를 선택해 테스트
- 동치 분할 테스트
- 입력 데이터 영역을 유효값/무효값으로 그룹핑해 대표값 TC를 도출해 테스트
- 경곗값 분석 테스트
- 최솟값을 바로 위나 아래와 같이 입력 데이터의 극한 한계를 테스트
- 비교 테스트
- 여러 버전의 프로그램에 같은 입력값을 넣어 결과를 비교
- 분류 트리 테스트
- 트리 구조로 분석 및 표현하여 테스트
- 페어와이즈 테스트
- 테스트 데이터값을 최소 한번씩 조합
- 유스케이스 테스트
- 프로세스 흐름 기반으로 테스트 수행
- 결과 테이블 테스트
- 요구사항을 테이블로 구성해 원인-결과를 조합해 I테스트
V-모델
애플리케이션 테스트와 소프트웨어 개발 단계를 연결하여 표현한 것
단계 : 단위테스트 → 통합테스트 → 시스템테스트 → 인수테스트
IaaS
인프라형 서비스
서버, 스토리지 같은 자원을 클라우드로 제공
PaaS
플랫폼형 서비스
인프라를 관리하는 복잡함 없이, 애플리케이션 개발에 필요한 플랫폼을 클라우드로 제공
SaaS
소프트웨어형 서비스
사용자에게 제공하는 소프트웨어와 관련 데이터를 클라우드로 제공
회복 기법
트랜잭션을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 전의 정상적인 상태로 복구
- 로그 기반 회복 기법
- 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영, 장애 발생시 로그를 참고하여 되돌림
- Rollback시 Redo, Undo가 모두 실행되며, 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영
- 지연갱신 회복 기법
- 트랜잭션이 완료 전에는 로그에만 기록, 장애 발생시 로그 폐기
- 체크포인트 회복 기법
- 장애 발생 시, 체크포인트 이전으로 복원
- 그림자 페이징 회복 기법
- 트랜잭션 수행 시 복제본 생성하여, 장애 발생시 이를 이용해 복구
Undo
작업을 취소하여 트랜잭션을 이전 상태로 되돌리는것
Redo
오류가 발생하기 전까지의 사항을 로그로 기록해 놓고, 이전 상태로 되돌아간 후, 실패가 발생하기 전까지의 과정을 그대로 따라가는 현상