협약에 의한 설계(Design by Contract)
- 클래스에 대한 여러 가정을 공유하도록 명세한 것을 협약에 의한 설계(Design by Contract)라 함.
- 소프트웨어 컴포넌트에 대한 정확한 인터페이스 명세를 위하여 선행조건, 결과조건, 불변조건을 나타내는 설계 방법.
협약에 의한 설계의 세 가지 타입
선행조건(precondition)
- 오퍼레이션이 호출되기 전에 참이 되어야 할 조건
결과조건(postcondition)
불변조건(invariant)
- 클래스 내부가 실행되는 동안 항상 만족하여야 하는 조건(예: 리스트에 있는 노드가 항상 오름차순으로 되어야 함)
행위(Behavioral) 다이어그램
- 유스케이스(UseCase) 다이어그램
- 시퀀스(Sequence) 다이어그램
- 커뮤니케이션(Communication) 다이어그램
- 상태(State) 다이어그램
- 활동(Activity) 다이어그램
- 상호작용 개요(Interaction Overview) 다이어그램
- 타이밍(Timing) 다이어그램
일반화 관계
- 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현함
- 일반적인 개념을 상위(부모), 구체적인 개념을 하위(자식)이라고 함
- 하위 사물에서 상위 사물인 쪽으로 속이 빈 화살표를 연결함
자료 사전 표기법
= : 자료의 정의
+ : 자료의 연결
() : 자료의 생략
[] : 자료의 선택
{} : 자료의 반복
** : 자료의 설명(주석)
선택정렬
- 선택정렬은 가장 작은 값을 찾아 첫번째 값과 교환합니다.
- 이후 정렬된 값을 제외한 나머지 인덱스 중 가장 작은 값을 찾아 정렬되지않은 인덱스 중 가장 처음 값과 자리를 교환해 나아갑니다.
물리데이터 저장소의 파티션 설계에서 파티션 유형
범위 분할(Range Partitioning)
해시 분할(Hash Partitioning)
- 해시 함수를 적용한 결과 값에 따라 데이터 분할
조합 분할(Composite Partitioning)
- 범위 분할 후 해시 함수를 적용하여 다시 분할
리스트 파티셔닝
인수 테스트(Acceptance Test) 종류
- 사용자 인수 테스트
- 운영상의 인수 테스트
- 계약 인수 테스트
- 규정 인수 테스트
- 알파 테스트
- 베타 테스트
트리의 차수
- 전체 트리 중에서 가장 많은 차수
- 최상단은 루트로 차수로 포함되지 않음
뷰(View)
- 하나 이상의 테이블로부터 유도되는 가상 테이블
- 논리적 독립성이 제공
- 특정사용자가 볼 필요가 없는 다른열들을 배제하고 뷰를 만든 후 해당 사용자에게 뷰에 대한 권한을 할당하면 테이블 전체에 대한 권한을 부여하지 않아도 됨
- 자체적으로 인덱스를 가지지 않음
분산데이터베이스 투명성(6가지)
분할 투명성(Division Transparency)
- 하나의 논리적 Relation이 여러 단편으로 분할되어 각 단편의 사본이 여러 site에 저장
위치 투명성(Location Transparency)
- 사용하려는 데이터의 저장 장소 명시 불필요. 위치정보가 시스템 카탈로그에 유지되어야 함
지역사상 투명성
- 지역DBMS와 물리적 DB사이의 Mapping 보장. 각 지역시스템 이름과 무관한 이름 사용 가능
중복 투명성(Replication Transparency)
- DB 객체가 여러 site에 중복 되어 있는지 알 필요가 없는 성질
장애 투명성(Failure Transparency)
- 구성요소(DBMS 등)의 장애에 무관한 트랜잭션의 원자성 유지
병행 투명성(Concurrency Transparency)
- 다수 트랜잭션 동시 수행시 결과의 일관성 유지, Time Stamp, 2PL 구현
회복(Recovery)이란
- 트랜잭션 도중에 손상된 데이터베이스를 이전 상태로 복귀하는 작업
- 트랙잭션의 연산을 수행할 때 데이터베이스를 변경하기 전에 로그 데이터를 생성합니다.
- 취소(Undo) 연산으로 이미 데이터베이스에 쓰여진 것도 수정할 수 있습니다.
장애의 유형
- 트랜잭션의 연산을 수행하여 데이터를 갱신할 때 실제 데이터 베이스에 반영하는 기법
- 갱신한 모든 내용을 로그(Log)에 보관합니다.
- 회복 작업을 위해 취소(Undo)와 재시도(Redo) 모두 사용할 수 있습니다.
연기 갱신 기법(Deffered Updatae)
- 트랜잭션을 완료할 때까지 데이터베이스에 갱신을 연기하는 기법
- 트랜잭션 수행으로 갱신할 내용은 로그(Log)에 보관합니다.
- 트랜잭션이 부분 완료 시점에 Log의 기록을 실제 데이터 베이스에 반영합니다.
- 트랜잭션 수행 중에 장애가 발생하여 Rollback하여도 취소(Undo)할 필요가 없습니다.
- 재시도(Redo) 작업을 통해 최근의 정상적인 데이터베이스로 회복한 후에 트랜잭션을 재실행할 수 있습니다.
검사점 기법(Check Point)
- 트랜잭션 중간에 검사점을 로그에 보관하여 트랜잭션 전체를 취소하지 않고 검사점까지 취소할 수 있는 기법
그림자 페이지 대체 기법(Shadow Paging)-로그가 필요없음
- 트랜잭션의 연산으로 갱신할 필요가 있을 때 복사본인 그림자 페이지를 보관하는 기법
- 트랜잭션을 취소할 때 그림자 페이지를 이용하여 회복.
- 로그(Log), 취소(Undo), 재시도(Redo)할 필요가 없습니다.
정규화 작업
- 1NF
- 2NF
- 기본 키가 아닌 모든 속성이 기본 키에 대해 완전 함수적 종속을 만족하는 정규형
- 3NF
- 기본 키가 아닌 모든 속성이 기본 키에 대해 이행적 종속을 만족 안하는 정규형
- BCNF
- 4NF
- 다치 종속 A->B가 성립하는 경우 A에 함수적 종속 관계를 만족하는 정규형
- 5NF
- 모든 조인 종속이 후보 키를 통해서만 성립되는 정규형
순수 관계 연산자
- select
- project
- join
- division
일반 집합 연산자
소프트웨어 취약점
FTP 바운스 공격(네트워크 공격)
SQL 삽입(웹 공격)
디렉토리 접근공격(웹 공격)
- 웹 루트 디렉토리 외부에 저장된 파일 또는 디렉토리에 접근하는 공격 방법
버퍼 오버플로(어플리케이션 공격)
- 메모리를 다루는 데 오류가 발생하여 잘못된 동작을 하는 프로그램 취약점
HRN 방식의 우선순위 산정 공식
- (대기시간+서비스시간)/서비스 시간 (값이 클 수록 우선순위가 높다.)
- 위 계산식의 값이 클수록 우선순위가 높은 것임. 값이 큰 순서대로 실행
파이썬 슬라이스
- [:]
- [start:]
- [:end]
- [start : end]
- [start : end : step]
- step만큼 문자를 건너뛰면서, 위와 동일하게 추출
디지털 트윈(digital twin)
- 물리적인 사물과 컴퓨터에 동일하게 표현되는 가상의 모델로 실제 물리적인 자산 대신 소프트웨어로 가상화함으로써 실제 자산의 특성에 대한 정확한 정보를 얻을 수 있고, 자산 최적화, 돌발사고 최소화, 생산성 증가 등 설계부터 제조, 서비스에 이르는 모든 과정의 효율성을 향상시킬 수 있는 모델
- 미국 제너럴 일렉영(GE)이 주창한 개념으로, 컴퓨터에 현실 속 사물의 쌍둥이를 가상화하여 만들고, 현실에서 발생할 수 있는 상황을 컴퓨터로 시뮬레이션함으로써 결과를 미리 예측하는 기술
Quantum Key Distribution
Digital Rights Management
Grayware
- 바이러스, 트로잔등 악성프로그램과는 다르게 사용자 동의를 받아 설치하는 프로그램
- (ex 원격제어 프로그램, 애드웨어 등)
Mashup
- 웹에서 제공하는 정보 및 서비스를 이용하여 새로운 소프트웨어나 서비스, 데이터베이스 등을 만드는 기술
Putnam
- 소프트웨어 생명주기 전 과정 동안 사용될 곡선의 노력 분포를 가정해주는 모형
- Rayleigh-Norden 곡선의 노력 분포도를 기초로 한다.
SLIM
- Putnam 기법 모형을 기초로 개발된 자동화 추정 도구
훈남(Putnam)이 노력(노력분포도)해서 슬림(SLIM)해졌네
Mesh Network
- 기존 무선 랜의 한계 극복을 위해 등장하였으며, 대규모 디바이스의 네트워크 생성에 최적화되어 차세대 이동통신, 홈네트워킹, 공공 안전 등의 특수목적을 위한 새로운 방식의 네트워크 기술
Software Defined Perimeter
Virtual Private Network
Local Area Network
DDoS는
- 네트워크 취약점이 있는 호스트들을 탐색한 후 이를 호스트들에 분산 서비스 공격용 툴을 설치하여 에이전트(agent)로 만든 후 DDoS공격에 이용
분산 서비스 공격용 툴의 종류
1.Trin00
2.TFN(Tribe Flooding Network)
3.TFN2K
4.Stacheldraht
Secure shell
- 네트워크 상의 다른 컴퓨터에서 제어 가능한 프로그램 또는 해당 프로토콜
Nimda
Deadlock
합성 중심(Composition-Based)
- 전자 칩과 같은 소프트웨어 부품, 즉 블록(모듈)을 만들어서 끼워 맞추어 소프트웨어를 완성시키는 방법으로, 블록 구성 방법이라고도 한다.
생성 중심(Generation-Based)
- 추상화 형태로 쓰여진 명세를 구체화하여 프로그램을 만드는 방법으로, 패턴 구성 방법이라고도 한다.
CLASP - Comprehensive, Lightweight Application Security Process.
- 소프트웨어 개발 생명주기(SDLC) 초기단계에 보안강화를 목적으로 하는 정형화된 프로세스로써, 활동중심·역할기반의 프로세스로 구성된 집합체로, 이미 운영중인 시스템에 적용하기 적합합니다.
CWE - Common Weakness Enumeration.
- 주요 보안 취약점, 보안 문제를 정리하는 프로젝트입니다.
Seven Touchpoints
- 소프트웨어 개발 생명주기(SDLC)의 각 단계에 관련된 7가지의 보안 강화 활동을 개발자에게 집중적으로 관리하도록 요구하여 실무적으로 검증된 개발보안 방법론입니다.
RPC(Remot Procedure Call)
- 응용 프로그램이 프로시저를 사용하여 원격 프로시저를 마치 로컬 프로시저처럼 호출하는 미들웨어
ORB(Object Request Broker)
- 객체 지향 미들웨어로 코바(CORBA) 표준 스펙을 구현함
- 최근에는 TP-Monitor의 장점인 트랜잭션 처리와 모니터링 등을 추가로 구현한 제품도 있음
IPSec
- 네트워크 계층에서 IP 패킷 단위의 데이터 변조 방지 및 은닉 기능 제공
SSL
- TCP/IP 계층과 애플리케이션 계층 사이에서 인증, 암호화, 무결성을 보장하는 프로토콜
S-HTTP
- 클라이언트와 서버 간 전송되는 모든 메시지를 암호화하는 프로토콜
SMTP(Simple Mail Transfer Protocol)
- 전자 우편을 교환하는 서비스를 제공하는 프로토콜
McCabe의 cyclomatic 수
V(G) = Edge - Node + 2
Edge = 6 (화살표)
Node = 4 (동그라미)
V(G) = 6 - 4 + 2 = 4
< 이진 트리 운행법 >
- Preorder 운행 : Root → Left → Right 순으로 운행
- Inorder 운행 : Left → Root → Right 순으로 운행
- Postorder 운행 : Left → Right → Root 순으로 운행
Divide and Conquer(분할 정복 알고리즘)
- 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결하는 알고리즘
Greedy(탐욕 알고리즘)
- 현재 시점에서 가장 최적의 방법을 선택하는 알고리즘
brute force 알고리즘 (완전탐색 알고리즘
- 모든 조합을 시도하여 문제의 답을 찾는 알고리즘
백트래킹(backtracking)이란?
- 해를 찾는 도중 해가 아니어서 막히면, 되돌아가서 다시 해를 찾아가는 기법을 말합니다. 최적화 문제와 결정 문제를 푸는 방법
로킹 꿀팁
- 로킹 단위가 크면 나머지가 다 작아짐.
- 로킹 단위가 작으면 나머지가 다 커짐
배치 프로그램의 필수 요소로
- 대용량 데이터, 자동화, 견고성, 안정성, 성능
기능점수(Functional Point)모형에서 비용산정에 이용되는 요소
- 자료 입력(입력 양식)
- 정보 출력(출력 보고서)
- 명령어(사용자 질의수)
- 데이터 파일
- 필요한 외부 루틴과의 인터페이스
블록 암호화 방식
스트림 암호화 방식
임계 경로
- 작업의 시작 및 종료 구간이 동시에 이루어질 때 가장 오래 걸리는 경로