XP - 고객의 요구 사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상 시키는 방법
Refactoring (리팩토링) - 프로그램 기능의 변경 없이 코드와 구조를 수정하는 것
→ 목표 - 가독성, 유지보수성, 확장성을 높여 소프트웨어 품질을 향상시키는 것
| 주요 기법 | 설명 |
|---|---|
| 비정형 명세 기법 | 사용자의 요구를 표현할 때 자연어를 기반으로 서술하는 기법 |
| 정형 명세 기법 | 사용자의 요구를 표현할 때 수학적 원리와 표기법으로 서술하는 기법 |
| 구성 요소 | 설명 |
|---|---|
| 사물 (Things) | UML 모델의 기본적인 추상화 요소로, 시스템에서 추상적이거나 물리적인 요소를 나타냅니다. (예: 클래스, 인터페이스, 컴포넌트, 노드 등) |
| 관계 (Relationships) | UML 구성 요소 중 사물의 의미를 확장하고 명확히 하는 요소로, 사물과 사물을 연결하여 상호작용 방식이나 구조적 연결을 표현합니다. |
| 다이어그램 (Diagrams) | 시스템의 다양한 관점을 시각적으로 표현하기 위해 사물과 관계를 특정 규칙에 따라 배치한 그림입니다. |
| 사물 유형 | 정의 |
|---|---|
| 클래스 (Class) | 공통의 속성(데이터), 연산(기능), 관계, 의미를 공유하는 객체들의 집합에 대한 청사진입니다. |
| 인터페이스 (Interface) | 기능을 모아놓은 클래스로, 추상 메서드와 상수만을 포함하는 추상 클래스입니다. 인터페이스를 구현하는 모든 클래스에 대해 특정한 메서드가 반드시 존재하도록 강제하는 역할을 합니다. |
→ 연관 (Association)--) 또는 한쪽 끝에 화살표가 있는 실선 (→).-<> 집합 (Aggregation)-<//> 포함 (Composition)실체화 (Realization / Implementation)
---->).구조적 다이어그램
행위 다이어그램
스테레오타입(Stereotype)
<> - 연결된 다른 UML 요소에 대해 포함 관계
<> - 연결된 다른 UML 요소에 대해 확장 관계
<> - 인터페이스를 정의하는 경우
<> - 예외를 정의하는 경우
<> - 생성자 역할을 수행하는 경우
소프트웨어 재사용 - 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용하는 것
소프트웨어 재공학 - 기존 시스템을 이용하여보다 나은 시스템을 구축하고, 새로운 기능을 추가해 소프트웨어 성능을 향상 시키는 것
| 기법명 | 주요 내용 |
|---|---|
| LOC 기법 (Lines Of Code) | 개발할 소프트웨어의 소스 코드 라인 수(LOC)를 예측하고, 이 라인당 비용을 곱하여 전체 비용을 산정합니다. |
| Man Month 모형 | 각 개발 단계(분석, 설계, 구현, 테스트 등)별로 필요한 인력(인원)과 기간(월)을 추정하여 총 인월수를 계산하고, 여기에 인월당 비용을 곱하여 산정합니다. |
| 수학적 산정 기법 | 과거 프로젝트의 데이터를 기반으로 수학적 모델(공식)을 만들어 소프트웨어 개발 비용을 산정합니다. |
| COCOMO 모델 | 소프트웨어 개발 규모, 복잡도, 개발 환경, 개발팀의 능력 등을 고려하여 비용을 산정하는 대표적인 수학적 모델입니다. 보헴(Boehm)이 제안했습니다. |
| Putnam (푸트남) | 소프트웨어 개발 프로젝트의 노력(인력 투입) 분포를 시간에 따라 예측하는 모델입니다. |
| 노력 분포도(Rayleigh-Norden curve)를 사용합니다. | |
| 기능 점수 (FP: Function Point) 기법 | 소프트웨어의 기능적 복잡도(입력, 출력, 조회, 파일, 외부 인터페이스 등)를 측정하고, 이 기능 점수에 가중치를 부여하여 비용을 산정합니다. |
COCOMO 모델의 종류:
| 종류 | 특징 | 적용 대상 |
|---|---|---|
| 기본형 | 소프트웨어의 크기(LOC)만을 사용하여 비용을 개략적으로 산정하는 초기 모델. | 소규모 프로젝트나 초기 단계의 간략한 비용 추정. |
| 중간형 | 기본형에 요인을 추가하여 보다 상세하게 비용을 산정합니다. | 중간 규모 프로젝트 또는 초기 설계 단계에서 좀 더 정확한 추정이 필요할 때. |
| 발전형 | 중간형에 더해 각 개발 단계별로 비용 영향 요인을 세분화하여 적용하는 가장 복잡하고 정확한 모델. | 대규모 프로젝트 또는 상세한 개발 계획 수립 단계. |
COCOMO 모델의 개발 유형:
| 개발 유형 | 특징 | 프로젝트 규모 |
|---|---|---|
| 조직형 | 개발 인력이 적고, 경험이 풍부하며 팀원 간의 협력이 원활한 소규모 또는 중간 규모의 프로젝트. | 5만 라인 (50KDSL) 이하 |
| 반분리형 | 조직형과 내장형의 중간 형태로, 중간 규모의 프로젝트에 해당. | |
| 30만 라인(300KDSI) 이하 | ||
| 내장형 | 매우 복잡하고 엄격한 제약(하드웨어, 성능, 안정성 등)이 많은 대규모 프로젝트. | 30만 라인(300KDSI) 이상 |
CMMI (능력 성숙도 통합 모델)
SPICE
| 스키마 유형 | 정의 |
|---|---|
| 개념 스키마 | 데이터베이스의 전체적인 논리적 구조 (조직의 관점) |
| 외부 스키마 | 사용자나 개발자가 보는 데이터베이스 구조 (사용자의 관점) |
| 내부 스키마 | 물리적 저장 장치에 어떻게 저장될지에 대한 정의 (시스템의 관점) |
개념적 설계 단계에서 현실 세계의 개체(Entity)와 그들 간의 관계(Relationship)를 명확하게 표현하기 위한 모델.
| 구성 요소 | UML 표기법 | 설명 |
|---|---|---|
| 사각형 | [] | 개체 타입 (Entity Type): 독립적으로 존재하는 대상 (예: 학생, 과목) |
| 마름모 | <> | 관계 타입 (Relationship Type): 개체 타입들 간의 논리적인 연관성 (예: 수강하다) |
| 타원 | O | 속성 (Attribute): 개체의 특성 또는 성질 (예: 학번, 이름, 과목명) |
| 키 유형 | 정의 |
|---|---|
| 후보 키 (Candidate Key) | 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분 집합입니다. |
| 유일성(Unique)과 최소성(Minimal)을 만족해야 합니다. | |
| 기본 키 (Primary Key) | 후보 키 중에서 릴레이션의 각 튜플을 유일하게 식별할 수 있도록 선택된 키입니다. |
| NULL 값을 가질 수 없으며(개체 무결성), 중복될 수 없습니다. | |
| 대체 키 (Alternate Key) | 후보 키가 둘 이상일 때, 기본 키로 선택되지 않은 나머지 후보 키들을 의미합니다. |
| 슈퍼 키 (Super Key) | 유일성은 만족하지만, 최소성은 만족하지 못한다. |
| 외래 키 (Foreign Key) | 다른 릴레이션의 기본 키를 참조하는 속성 또는 속성들의 집합입니다. |
| 릴레이션들 간의 관계를 설정하는 데 사용됩니다. |
데이터베이스에 저장된 데이터 값과 현실 세계의 실제 값이 일치하는 정확성, 일관성, 유효성을 의미합니다.
| 무결성 유형 | 정의 |
|---|
| 개체 무결성
(Entity Integrity) | 기본 테이블의 기본 키를 구성하는 어떤 속성도 NULL 값이나 중복 값을 가질 수 없다. |
| 참조 무결성
(Referential Integrity) | 외래 키 값은 NULL이거나 참조 릴레이션의 기본 키 값과 동일해야 한다. |
| 도메인 무결성
(Domain Integrity) | 주어진 속성 값이 정의된 도메인(속성이 가질 수 있는 값의 범위)에 속한 값이어야 한다. |
| 사용자 정의 무결성
(User-Defined Integrity) | 속성 값들이 사용자가 정의한 특정 제약 조건에 만족해야 한다. |
| 유형 | 특징 |
|---|
| 관계 대수
(Relational Algebra) | 원하는 정보를 얻기 위해 어떤 연산을 수행해야 하는지 절차적으로 명시하는 언어입니다.
(HOW) |
| 관계 해석
(Relational Calculus) | 원하는 정보가 무엇인지 비절차적으로 명시하는 언어입니다.
(WHAT) |
테이블에서 데이터의 중복이 발생하고, 이 중복으로 인해 데이터의 일관성이 저해되거나 예상치 못한 문제가 발생하는 현상입니다. 정규화(Normalization)를 통해 해결합니다.
| 이상 유형 | 정의 |
|---|
| 삽입 이상
(Insertion Anomaly) | 테이블에 데이터를 삽입할 때, 의도와는 상관없이 원하지 않는 값들(NULL 값)을 삽입해야 하거나 특정 정보가 없어서 삽입할 수 없게 되는 현상. |
| 삭제 이상
(Deletion Anomaly) | 테이블에서 한 튜플을 삭제할 때, 의도와는 상관없는 값들도 함께 삭제되어 정보 손실이 발생하는 연쇄 삭제 현상. |
| 갱신 이상
(Update Anomaly) | 테이블에서 튜플에 있는 속성 값을 갱신할 때, 일부 튜플의 정보만 갱신되어 정보에 불일치성(데이터 비일관성)이 생기는 현상. |
(Functional Dependency & Normalization)
데이터베이스의 정규화는 중복을 최소화하고 데이터의 일관성 및 무결성을 확보하기 위한 과정입니다.
| 개념 | 정의 | 설명 |
|---|---|---|
| 함수적 종속 | 오직 값이 하나만 연관되어 있을 때, Y는 X에 함수적으로 종속한다. 즉, X 값을 알면 Y 값을 항상 유일하게 결정할 수 있어야 합니다. | X가 Y를 함수적으로 결정한다. (X는 결정자, Y는 종속자) |
| 완전 함수적 종속 | 기본키(X)의 전체 속성이 특정 속성(Y)을 결정하는 경우. 기본키의 어느 부분집합도 Y를 결정할 수 없습니다. | 복합 기본키의 경우, 부분 속성만으로는 다른 속성을 결정할 수 없어야 합니다. |
| 부분 함수적 종속 | 기본키(X)의 일부 속성만으로도 특정 속성(Y)이 결정되는 경우. | 복합 기본키의 경우, 기본키의 일부가 다른 속성을 결정하는 경우입니다. 정규화 대상이 됩니다. |
| 이행 함수적 종속 | X → Y 이고 Y → Z 일 때, X → Z 가 성립되는 경우. | 중간 속성(Y)을 통해 간접적으로 종속되는 경우입니다. 정규화 대상이 됩니다. |
테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정
| 정규형 | 만족 조건 | 제거되는 이상 (Anomaly) |
|---|---|---|
| 제 1정규화 (1NF) | • 모든 속성의 도메인이 원자 값(Atomic Value)만을 갖는다. | |
| • 모든 테이블의 행은 유일한 기본 키를 가져야 한다. | 부분 함수적 종속으로 인한 이상 발생 가능 | |
| 제 2정규화 (2NF) | • 제 1정규형을 만족한다. | |
| • 기본키가 아닌 모든 속성이 기본키에 완전 함수적 종속을 만족하도록 테이블을 분해. | 부분 함수적 종속으로 인한 이상 (삽입, 삭제, 갱신 이상) | |
| 제 3정규화 (3NF) | • 제 2정규형을 만족한다. | |
| • 기본키가 아닌 모든 속성이 기본키에 이행적 함수적 종속을 없애도록 테이블을 분해하는 것 | 이행 함수적 종속으로 인한 이상 (삽입, 삭제, 갱신 이상) |
| BCNF
(Boyce-Codd 정규형) | • 제 3정규형을 만족한다.
• 모든 결정자(Determinant)가 후보키가 되도록 테이블을 분해하는 것 | 3NF에서 해결하지 못하는 복합 기본키의 부분 속성이 결정자인 경우의 이상 |
| 제 4정규화 (4NF) | • BCNF를 만족한다.
• 다중 값 종속 (다치 종속성)이 없어야 한다. | 다치 종속으로 인한 이상 (삽입, 삭제, 갱신 이상) |
| 제 5정규화 (5NF) | • 제 4정규형을 만족한다.
• 조인 종속성(Join Dependency)이 후보키를 통해서만 성립되어야 한다. | 조인 종속으로 인한 이상 |
반정규화
논리적 기능을 수행하기 위한 작업의 단위, 한꺼번에 모두 수행되어야 할 일련의 연산
트랜잭션의 4가지 특성 (ACID)
| 종류 | 정의 |
|---|---|
| 범위 분할 | 지정한 열의 값을 기준으로 분할 |
| 해시 분할 | 해시 함수를 적용한 결과 값에 따라 데이터를 분할 |
| 조합 분할 | 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할 |
| 종류 | 정의 |
|---|---|
| 순차 파일 | 레코드를 일정한 논리적 순서에 따라 저장하는 방식 |
| 직접 파일 | 레코드를 임의의 물리적 공간에 저장하는 방식 |
| 색인 파일 | 순차 파일과 직접 파일의 장점을 결합한 방식 |
클러스터링 - 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
고가용성 - 하나의 서버에 장애가 발생하면 다른 노드가 받아 처리해 서비스 중단을 방지하는 방식
재해 복구 계획에서 RTO(복구 시간 목표)와 RPO(복구 시점 목표)는 비즈니스 운영의 핵심적인 목표 지표
| 이름 | 정의 |
|---|---|
| RTO | 비상 상태 또는 업무 중단 시점으로부터 복구되어 정상적으로 가동될 때까지 소요되는 최대 허용 시간 |
| RPO | 비상 사태 또는 업무 중단 시점으로부터 데이터를 복구할 수 있는 기준점 |
| 종류 | 정의 |
|---|---|
| 임의 접근 통제(DAC) | 사용자의 신원에 따라 접근 권한을 부여하는 방식 |
| 강제 접근 통제(MAC) | 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식 |
| 역할 기반 접근 통제(RBAC) | 사용자의 역할에 따라 접근 권한을 부여하는 방식 |
| 이름 | 정의 |
|---|---|
| REDO | 트랜잭션 완료 후 데이터베이스의 버퍼에는 기록되어 있고 저장 매체에는 기록되어 있지 않을 경우 트랜잭션 내용을 다시 실행 |
| UNDO | 트랜잭션 완료 전에 시스템이 파손되었을 때 변경된 내용을 취소 |
| 종류 | 정의 |
|---|---|
| DAS | 서버와 저장장치를 전용 케이블로 직접 연결하는 방식 |
| NAS | 서버와 저장장치를 네트워크를 통해 연결하는 방식 |
| SAN | 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식 |
| 블록 단위로 관리 |
| 용어 | 설명 |
|---|---|
| XML | 특수한 목적을 갖는 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어 |
| SOAP | 네트워크 상에서 HTTP/HTTPS, SMTP 등을 이용하여 XML을 교환하기 위한 통신 프로토콜 |
| WSDL | 웹 서비스와 관련된 서식이나 프로토콜 등을 표준적인 방법으로 기술하고 게시하기 위한 언어 |
| UDDI | 인터넷에서 전 세계의 비즈니스 업체 목록에 자신의 목록을 등록하기 위한, XML기반의 규격 |
| HTML | 웹 페이지를 만들 때 사용하는 마크업 언어 |
| 인터넷에서 요청과 응답에 처리하는 프로토콜로 GET, POST 방식 사용 | |
| HTTP | 인터넷에서 웹서버와 사용자의 인터넷 브라우저 사이에 문서를 전송하기 위해 사용되는 통신 규약 |
| Hypertext | 문장이나 단어 등이 링크를 통해 서로 연결된 네트워크처럼 구성된 문서로 이미지 등을 누르면 다른 사이트로 옮겨갈 수 있도록 하이퍼링크가 걸려 있음 |
| AJAX | 클라이언트와 서버 간 자바스크립트 및 XML을 비동기 방식으로 처리하며 전체 페이지를 새로고침하지 않고도 웹페이지 일부 영역만을 업데이트할 수 있도록 하는 기술 |
| JSON | 속성-값 쌍으로 이루어진 데이터 객체를 전달하기 위해 사람이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷 |
| 용어 | 설명 |
|---|---|
| 모듈화 | 시스템의 기능들을 모듈 단위로 나누는 것 |
| 추상화 | 전체적이고 포괄적인 개념을 설계한 후 구체화시켜 나가는 것 |
| 단계적 분해 | 상위의 중요 개념으로부터 하위의 개념으로 구체화시키는 분할 기법 |
| 정보 은닉 | 모듈 내부에 포함된 절차와 자료들의 정보가 감추어져 다른 모듈이 접근하거나 변경되지 못하도록 하는 기법 |
소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체
| 패턴/개념 | 설명 |
|---|---|
| 레이어(계층형) 패턴 | 시스템을 계층으로 구분하여 구성 |
| 클라이언트-서버 패턴 | 하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성 |
| 파이프-필터 패턴 | 데이터 흐름을 필터들이 처리하고 파이프를 통해 그 다음 필터로 전달하는 방식 |
| 모델-뷰-컨트롤러 패턴 | 서브 시스템을 모델, 뷰, 컨트롤러로 구조화하는 패턴 |
| 마스터-슬레이브 패턴 | 슬레이브 컴포넌트에서 처리된 결과물을 마스터 컴포넌트로 다시 돌려받는 방식 |
| 브로커 패턴 | 사용자가 원하는 서비스와 특성을 브로커 컴포넌트에 요청하면 브로커 컴포넌트가 요청에 맞는 컴포넌트와 사용자를 연결해주는 패턴 |
| 피어-투-피어 패턴 | Peer 컴포넌트는 클라이언트, 서버 둘 다 될 수 있는 패턴 |
| 이벤트-버스 패턴 | 소스가 특정 채널에 이벤트 메시지를 발행하면 해당 채널을 구독한 리스너들이 메시지를 받아 이벤트를 처리하는 패턴 |
| 블랙 보드 패턴 | 모든 컴포넌트들이 공유 데이터 저장소와 블랙 보드 컴포넌트에 접근이 가능한 패턴 |
| 인터프리터 패턴 | 프로그램 코드의 각 라인을 수행하는 방법을 지정하고, 기호마다 클래스를 갖도록 구성된 패턴 |
각 요소들을 객체로 만든 후, 객체들을 조립해서 소프트웨어를 개발하는 기법
구성 요소
| 구성 요소 | 설명 |
|---|---|
| 객체 | 실제 세상에 존재하는 개체 (데이터와 함수를 묶어 놓은 것) |
| 클래스 | 객체를 만들기 위한 틀 또는 설계도 |
| 메시지 | 객체 간의 통신 수단 |
| 특징 | 설명 |
|---|---|
| 캡슐화 | 외부로부터의 접근을 제한하기 위해 인터페이스를 제외한 세부 내용을 은닉하는 것 |
| 상속 | 상위 클래스의 모든 속성과 연산을 하위 클래스가 전달 받아 새로운 형태의 클래스로 확장하여 사용하는 것 |
| 다형성 | 상속 받은 여러 개의 하위 객체들이 다른 형태의 특성을 갖는 객체로 이용되는 것 |
| 관계 유형 | 설명 |
|---|---|
| 연관성 (Association) | 두 개 이상의 객체들이 상호 참조하는 관계를 의미 |
| is member of
(연관화) | 2개 이상 객체가 상호 관련되어 있음을 의미 |
| is instance of
(분류화) | 동일한 형태의 특성을 갖는 객체들을 모아 하나의 클래스로 구성 |
| is part of
(집단화) | 관련 있는 객체들을 묶어 하나의 상위 객체를 구성하는 것 (전체-부분 관계) |
| is a (일반화) | 공통적인 성질들로 추상화 한 후 상위 객체를 구성하는 것 (하위 → 상위) |
| is a (특수화) | 상위 객체를 구체화하여 하위 객체를 구성하는 것 (상위 → 하위) |
럼바우
객체 모델링 - 객체 다이어그램 - E-R 다이어그램
동적 모델링 - 상태 다이어그램 - 상태도
기능 모델링 - 자료 흐름도
변경이나 확장에 유연한 시스템을 설계하기 위해 지켜야할 원칙
| 종류 | 정의 |
|---|---|
| 단일 책임 원칙(SRP) | 객체는 단 하나의 책임을 가져야한다. |
| 개방 폐쇄 원칙(OCP) | 기존의 코드를 변경하지 않고 기능을 추가할 수 있도록 설계해야 한다. |
| 리스코프 치환 원칙(LSP) | 자식 클래스는 최소한 부모 클래스의 기능을 수행 할 수 있어야 한다. |
| 인터페이스 분리 원칙(ISP) | 자신이 사용하지 않는 인터페이스는 의존 관계를 맺지 않거나 영향을 받지 않아야 한다. |
| 의존 역전 원칙(DIP) |
모듈간에 상호 의존하는 정도, 결합도가 낮을수록 모듈 간의 독립성이 높아져 유지보수 및 재사용성이 향상된다.
| 종류 | 정의 |
|---|---|
| 내용 | 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때의 결합도, 내부 변수 |
| 공통 | 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도, 전역 변수 |
| 외부 | 어떤 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조할 때의 결합도 |
| 제어 | 어떤 모듈이 다른 모듈 내부의 논리적 흐름을 제어하기 위해 제어 신호나 제어 요소를 전달하는 결합도 |
| 스탬프 | 모듈 간의 인터페이스로 배열이나 레코드 등의 구조가 전달될 때의 결합도 |
| 자료 | 한 모듈이 다른 모듈을 호출할 때 매개변수를 통해 필요한 데이터만 전달하는 방식 |
모듈의 내부 요소들이 서로 연관되어 있는 정도
| 종류 | 정의 |
|---|---|
| 기능 | 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우 |
| 순차 | 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우 |
| 교환 | 동일한 입출력을 사용하여 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우 |
| 절차 | 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우 |
| 시간 | 특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우 |
| 논리 | 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우 |
| 우연 | 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우 |
모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합
프로세스간 통신 방법
| 종류 | 정의 |
|---|---|
| 공유 메모리 | 공유 가능한 메모리를 구성하여 다수의 프로세스가 통신하는 방식 |
| 소켓 | 네트워크 소켓을 이용하여 네트워크를 경유하는 프로세스 간에 통신하는 방식 |
| 세마포 | 공유 자원에 대한 접근 제어를 통해 통신하는 방식 |
| Pipes&named Pipes | 파이프라고 불리는 선입선출 형태로 구성된 메모리를 여러 프로세스가 공유하여 통신하는 방식 |
| 메시지 큐잉 | 메시지가 발생하면 이를 전달하는 방식으로 통신하는 방식 |
모듈 간의 관계 및 인터페이스를 설계할 때 참조할 수 있는 전형적인 해결 방식
클래스나 객체의 생성과 참조 과정을 정의하는 방식
| 이름 | 정의 |
|---|---|
| 추상 팩토리 | 구체적인 클래스에 의존하지 않고 인터페이스(추상 클래스)를 통해 서로 연관, 의존하는 객체들의 조합을 만드는 인터페이스를 제공 하는 패턴 |
| 팩토리 메서드 | 객체 생성을 서브 클래스에서 처리하도록 분리하여 캡슐화한 패턴 |
| 빌더 | 작게 분리된 인스턴스를 건축 하듯이 조합하여 객체를 생성 |
| 프로토타입 | 원본 객체를 복제하는 방법으로 객체를 생성하는 경우 |
| 싱글톤 | 하나의 객체를 생성하면 객체를 어디서든 참조할 수 있지만 여러 프로세스가 동시에 참조할 수 없다. |
클래스나 객체들을 조합하여 더 큰 구조로 만드는 패턴
| 이름 | 정의 |
|---|---|
| 어댑터 | 호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변환해주는 패턴 |
| 상속을 이용하는 클래스 패턴과 위임을 이용하는 인스턴스 패턴의 두 가지 형태로 사용되는 패턴 | |
| 브리지 | 구현부에서 추상층을 분리하여, 서로가 독립적으로 확장할 수 있도록 구성하는 패턴 |
| 컴포지트 | 여러 객체를 가진 복합 객체와 단일 객체를 구분 없이 다루고자 할 때 사용하는 패턴 |
| 데코레이터 | 객체 간의 결합을 통해 능동적으로 기능들을 확장할 수 있는 패턴 |
| 퍼싸드 | 복잡한 서브 클래스들을 숨겨서 인터페이스를 구성함으로써 서브 클래스들의 기능을 간편하게 사용할 수 있도록 인터페이스를 제공 하는 패턴 |
| 플라이웨이트 | 인스턴스가 필요할 때마다 생성하는 것이 아니라 공유하여 사용함으로써 메모리를 절약하는 패턴 |
| 프록시 | 접근이 어려운 객체와 여기에 연결하려는 객체 사이에서 인터페이스 역할을 수행하는 패턴 - 중간에 대리인이 요청을 받아서 처리 |
클래스나 객체들이 서로 상호 작용하는 방법이나 책임 분배 방법을 정의하는 패턴
| 이름 | 정의 |
|---|---|
| 책임 연쇄 | 요청을 처리할 수 있는 객체가 둘 이상 존재하여 한 객체가 처리하지 못하면 다음 객체로 넘어가는 형태의 패턴 |
| 커맨드 | 요청을 객체의 형태로 캡슐화하여 재이용하거나 취소할 수 있도록 요청에 필요한 정보를 저장하거나 로그를 남기는 패턴 |
| 인터프리터 | 언어의 문법 표현을 정의하는 패턴 |
| 반복자 | 컬렉션(배열, 리스트 등) 내부구조를 노출하지 않고, 그 집합체 안에 들어 있는 모든 요소를 순차적으로 탐색할 수 있는 패턴 |
| 중재자 | 수많은 객체들 간의 복잡한 상호작용을 캡슐화하여 객체로 정의하는 패턴 |
| 메멘토 | 특정 시점에서의 객체 내부 상태를 객체화함으로써 이후 요청에 따라 객체의 해당 시점의 상태로 돌릴 수 있는 기능을 제공하는 패턴 → 객체 상태를 저장하고 복원 |
| 옵저버 | 한 객체의 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달하는 패턴 |
| 상태 | 객체의 상태에 따라 동일한 동작을 다르게 처리해야할 때 사용하는 패턴 |
| 전략 | 동일한 계열의 알고리즘들을 개별적으로 캡슐화하여 상호 교환할 수 있게 정의하는 패턴 |
| 템플릿 메서드 | 상위 클래스에서 골격을 정의하고, 하위 클래스에서 세부 처리를 구체화하는 구조 |
| 방문자 | 각 클래스들의 데이터 구조에서 처리 기능을 분리하여 별도의 클래스로 구성 |
| 객체 구조를 변경하지 않고 객체에 새로운 연산을 추가할 수 있는 패턴 |
| 종류 | 정의 |
|---|---|
| 동료 검토 | 작성한 사람, 다른 팀원이나 동료들이 문서를 읽고 피드백을 제공하는 방식 |
| 워크 스루 | 요구사항 작성자가 이해관계자 앞에서 요구사항 문서를 한 줄씩 설명하며 진행하는 비공식적인 회의 |
| 인스펙션 | 요구사항 명세서 작성자를 제외한 다른 검토 전문가들이 요구사항 명세서를 확인하면서 결함을 발견하는 형태 |
| 프로토타이핑 | 사용자의 요구사항을 정확히 파악하기 위해 실제 개발될 소프트웨어에 대한 견본품을 만들어 최종 결과물을 예측 |
운영체제와 응용 프로그램 사이에서 서비스를 제공하는 소프트웨어
| 종류 | 정의 |
|---|---|
| 데이터베이스 | 데이터베이스와 연결하기 위한 미들웨어 |
| RPC | 원격 프로시저를 로컬 프로시저처럼 호출하는 미들웨어 |
| MOM | 비동기형 메시지를 전달하는 미들웨어 |
| TP-Monitor | 트랜잭션 처리 및 감시하는 미들웨어 |
| ORB | 객체 간의 요청을 중개하는 역할, 객체 지향 미들웨어로 코바 표준 스펙을 구현 |
| WAS | 동적인 콘텐츠를 처리하기 위한 미들웨어 |
EAI
기업 내 각종 애플리케이션 및 플랫폼 간의 상호 연동이 가능하게 해주는 솔루션
Point to Point - 가장 기본적인 애플리케이션 통합 방식 1:1 연결, 변경 및 재사용이 어려움
Hub & Spoke - 단일 접점인 허브 시스템을 통해 데이터를 전송하는 중앙 집중형 방식, 확장 및 유지 보수가 용이함
Message Bus - 애플리케이션 사이에 미들웨어를 두고 처리하는 방식, 확장성이 뛰어나며 대용량 처리가 가능
Hybrid - Hub&Spoke와 Message Bus의 혼합 방식, 데이터 병목 현상을 최소화 할 수 있음
ESB - 애플리케이션 간 표준 기반의 인터페이스를 제공하는 솔루션 , 대표적으로 Message Bus
인터페이스 보안 기능
IPsec - 네트워크 계층에서 IP 패킷 단위의 데이터 변조 방지 및 은닉 기능을 제공하는 프로토콜
SSL - TCP/IP 계층과 애플리케이션 계층 사이에서 인증, 암호화, 무결성을 보장하는 프로토콜
S-HTTP - 클라이언트와 서버 간에 전송되는 모든 메시지를 암호화하는 프로토콜
| 종류 | 정의 |
|---|---|
| xUnit | 같은 테스트 코드를 여러 번 작성하지 않게 도와주고 테스트마다 예상 결과를 기억할 필요 없게 해주는 자동화된 해법을 제공하는 단위 테스트 프레임워크 |
| Java → JUnit, C++ → CppUnit, .NET → NUnit, Http → HttpUnit | |
| STAF | 서비스 호출 및 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크 |
| FitNesse | 웹 기반 테스트 케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임워크 |
| NTAF | FitNesse의 장점인 협업과 STAF의 장점인 재사용 및 확장성을 통합한 NHN의 테스트 자동화 프레임워크 |
| Selenium | 다양한 브라우저 및 개발 언어를 지원하는 웹 어플리케이션 테스트 프레임워크 |
| watir | Ruby를 사용하는 애플리케이션 테스트 프레임워크 |
APM - 애플리케이션의 성능 관리를 위해 접속, 자원 현황, 트랜잭션 수행 내역, 장애 진단 등 다양한 모니터링 기능을 제공하는 도구
| 구분 | 정의 |
|---|---|
| UI | 사용자와 시스템 간 상호작용을 돕는 장치/소프트웨어 (눈에 보이는 것) |
| UX | 사용자가 시스템/서비스 이용하며 느끼는 총체적인 경험 (느끼는 것) |
| 원칙 | 설명 |
|---|---|
| 직관성 | 누구나 쉽게 이해하고 사용할 수 있어야 함 |
| 유효성 | 사용자의 목적을 정확하고 완벽하게 달성해야 함 |
| 학습성 | 누구나 쉽게 배우고 익힐 수 있어야 함 |
| 유연성 | 사용자의 요구사항을 최대한 수용하고 실수를 최소화해야 함 |
| 종류 | 정의 |
|---|---|
| 와이어프레임 | 페이지에 개략적인 레이아웃이나 UI 요소 등에 대한 뼈대를 설계하는 도구 |
| 목업 | 와이어프레임보다 더 실제 화면과 유사하게 만든 정적인 형태의 모형 |
| 스토리보드 | 와이어프레임에 콘텐츠에 대한 설명, 페이지 간의 이동 흐름등을 추가한 문서 |
| 프로토타입 | 와이어프레임이나 스토리보드 등에 인터렉션을 적용함으로써 실제 구현된 것처럼 테스트가 가능한 동적인 형태의 모형 |
| 유스케이스 | 사용자의 요구사항을 기능 단위로 표현한 것 |
애플리케이션 테스트의 기본 원리
결함 집중(파레토 법칙) - 애플리케이션 20%에 해당하는 코드에서 전체 결함의 80%가 발견된다는 법칙
살충제 패러독스 - 동일한 테스트 케이스로 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않는 현상
오류-부재의 궤변 - 소프트웨어의 결함을 모두 제거해도 사용자의 요구사항을 만족시키지 못하면 해당 소프트웨어는 품질이 높다고 할 수 없다.
정적 테스트 - 프로그램을 실행하지 않고 명세서나 소스 코드를 대상으로 분석하는 테스트
→ 워크스루, 인스펙션, 코드 검사 등
동적 테스트 - 프로그램을 실행하여 오류를 찾는 테스트
→ 블랙박스 테스트, 화이트박스 테스트
시각에 따른 테스트
검증 테스트 - 개발자의 시각에서 제품의 생산 과정을 테스트
확인 테스트 - 사용자의 시각에서 생산된 제품의 결과를 테스트
목적에 따른 테스트
회복 테스트 - 시스템에 여러 가지 결함을 주어 실패하도록 한 후 올바르게 복구되는지를 확인하는 테스트
안전 테스트 - 시스템에 설치된 보호 도구가 불법적인 침입으로부터 시스템을 보호할 수 있는지를 확인하는 테스트
강도 테스트 - 시스템에 과도한 정보량이나 빈도 등을 부과하여 과부화 시에도 소프트웨어가 정상적으로 실행 되는지를 확인하는 테스트
성능 테스트 - 소프트웨어의 실시간 성능이나 전체적인 효율성을 진단하는 테스트, 소프트웨어의 응답 시간 처리량 등을 테스트
구조 테스트 - 소프트웨어 내부의 논리적인 경로, 소스 코드의 복잡도 등을 평가하는 테스트
회귀 테스트 - 소프트웨어의 변경 또는 수정된 코드에 새로운 결함이 없음을 확인하는 테스트
병행 테스트 - 변경된 소프트웨어와 기존 소프트웨어에 동일한 데이터를 입력하여 결과를 비교하는 테스트
화이트박스 테스트 - 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법
기초 경로 검사 - 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법
루프 검사 - 프로그램의 반복 구조에 초점을 맞춰 실시하는 테스트 기법
데이터 흐름 검사 - 프로그램에서 변수와 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
조건 검사 - 모듈 내에 있는 논리적 조건을 테스트하는 테스트 케이스 설계 기법
화이트박스 테스트 검증 기준
| 종류 | 설명 |
|---|---|
| 구문(문장) 커버리지 | 모든 코드, 구문이 한 번 이상 수행되도록 테스트 케이스를 설계 |
| 분기(결정) 커버리지 | 모든 결정 지점(if, while, for 문의 조건식)이 True/거짓의 모든 결과를 적어도 한 번씩 가지도록 테스트 설계 |
| 조건 커버러지 | 개별 조건식이 적어도 한 번은 참과 거짓의 결과를 가지도록 테스트 설계 |
| 조건/결정 커버리지 | 결정 커버리지와 조건 커버리지를 모두 만족하는 방식 |
| 모든 결정 지점이 참/거짓 모두를 가져야하고 각 개별 조건식도 참/거짓 모두 가져야한다. | |
| 변경 조건/결정 커버리지 (MC/DC) | 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식의 결과에 독립적으로 영향을 주도록 테스트 |
| 다중 조건 커버리지 | 결정 지점 내의 모든 개별 조건식을 가능한 모든 논리적 조합을 테스트. |
| 경로 커버리지 | 프로그램 내에 존재하는 가능한 모든 실행 경로를 적어도 한 번씩 테스트. |
블랙박스 테스트 - 각 기능이 완전히 작동되는 것을 입증하는 테스트
| 종류 | 설명 |
|---|---|
| 동치 분할 검사 | 프로그램의 입력 조건에 타당한 입력 자료와 타당하지 않은 자료의 개수를 균등하게 하여 테스트 케이스를 정하고, 해당 입력 자료에 맞는 결과가 출력되는지 확인하는 기법. |
| 경계값 분석 | 입력 조건의 중간값보다 경계값에서 오류가 발생될 확률이 높다는 점을 이용하여 입력 조건의 경계값을 테스트 케이스로 선정하여 검사하는 기법 |
| 원인-결과 그래프 검사 | 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법 |
| 오류 예측 검사 | 과거의 경험이나 확인자의 감각으로 테스트하는 검사 |
| 비교 검사 | 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법 |
V-Model
단위 테스트 → 통합 테스트 → 시스템 테스트 → 인수 테스트
단위 테스트 - 모듈이나 컴포넌트에 초점을 맞춰 테스트
통합 테스트 - 단위 테스트가 완료된 모듈들을 결합하여 하나의 시스템으로 완성시키는 과정에서의 테스트
시스템 테스트 - 개발된 소프트웨어가 완벽하게 수행되는가를 점검하는 테스트
인수 테스트 - 사용자의 요구사항을 충족하는지에 중점을 두고 하는 테스트
하향식 통합 테스트 - 상위 모듈에서 하위 모듈 방향을 통합하면서 테스트
깊이 우선 통합법이나 넓이 우선 통합법을 사용
Stub 사용
상향식 통합 테스트 - 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트
Driver 사용
| 종류 | 설명 |
|---|---|
| 테스트 오라클 | 테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참 값을 대입하여 비교하는 기법 |
| 참 오라클 | 모든 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하는 오라클 |
| 샘플링 오라클 | 특정 테스트 케이스의 입력 값에게만 기대하는 결과를 제공하는 오라클 |
| 휴리스틱 오라클 | 특정 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하고 나머지 입력 값에 대해서는 추정으로 처리하는 오라클 |
| 일관성 검사 오라클 | 애플리케이션 변경이 있을 때, 테스트 케이스의 수행 전과 후의 결과 값이 동일한지를 확인하는 오라클 |
클린 코드 - 누구나 쉽게 이해하고 수정 및 추가할 수 있는 단순, 명료한 코드
나쁜 코드 - 프로그램의 로직이 복잡하고 이해하기 어려운 코드
소스 코드 품질 분석 도구
DDL - CREATE, ALTER, DROP, TRUNCATE
TRUNCATE - 모든 속성 삭제
DML - SELECT, INSERT, DELETE, UPDATE
DCL - GRANT, REVOKE
DDL
CREATE TABLE 테이블명 (
ID INT NOT NULL,
NAME VARCHAR(200) NOT NULL
);
뷰 - 하나 이상의 기본 테이블로부터 유도된 가상, 논리적, 데이터 독립성을 제공
CREATE VIEW 뷰명 AS
SELECT 가져올 속성
FROM 테이블
WHERE 조건;
INDEX
데이터베이스 테이블의 검색 속도를 향상시키기 위해 사용되는 색인 구조
CREATE INDEX 인덱스명 ON 테이블(속성, 속성, 속성);
ALTER TABLE 테이블명
ADD Email varchar(255),
DROP COLUMN Phone,
ALTER ID varchar(50) NULL;
DROP TABLE 테이블/스키마 CASCADE/RESTRICT;
DI
DML
SELECT *
FROM 테이블
INSERT INTO 테이블명(속성) VALUSES 데이터
DELETE FROM 테이블명 WHERE 조건
UPDATE 테이블 SET 속성명 = 데이터 [ WHERE 조건]
UPDATE 직원
SET 부서 = '영업팀', 급여 = 600000
WHERE id = 101;
//id가 101인 직원의 부서를 영업팀으로 급여를 60000으로 변경
DCL
GRANT SELECT(권한) ON 테이블 TO 사용자
REVOKE INSERT(권한) ON 테이블 FROM 사용자
| 종류 | 설명 |
|---|---|
| 기밀성 | 시스템 내의 자원은 인가된 사용자에게만 접근이 허용 |
| 무결성 | 시스템 내의 정보는 오직 인가된 사용자만 수정할 수 있음 |
| 가용성 | 인가 받은 사용자는 시스템 내의 정보와 자원을 언제라도 사용할 수 있음 |
| 인증 | 시스템 내의 정보와 자원을 사용하려는 사용자가 합법적인 사용자 인지를 확인하는 모든 행위 |
| 부인 방지 | 데이터 송수신한 자가 송수신 사실을 부인할 수 없도록 송수신 증거를 제공 |
대칭키 암호화 기법(=개인 키) - 암호화와 복호화에 동일한 암호 키를 사용하는 암호화 방식
공개키 암호화 기법 (=비대칭 키) - 암 호화할 때 사용하는 공개키는 사용자에게 공개하고, 암호화할 때의 비밀 키는 관리자가 비밀리에 관리
해시키 암호화 기법 - 임의의 길이의 입력 데이터나 고정된 길이의 값이나 키로 변환하는 것
| 알고리즘 | 설명 | 주요 특징 |
|---|---|---|
| LFSR | 시프트 레지스터와, 레지스터 내의 특정 비트에 대해 XOR을 수행하여 새로운 입력 비트를 생성하고 이를 되먹임 | • 시프트 레지스터 XOR 연산 |
| RC4 | 256바이트 크기의 상태 배열을 조작하여 키 스트림을 생성 | • 간단하고 빠른 스트림 암호 |
| TKIP | 무선랜 보안에 사용되는 WEP을 보완한 데이터 보안 프로토콜 | • WEP의 보안 취약점 개선 |
| • 임시 키 무결성 프로토콜 (Temporal Key Integrity Protocol) |
| 알고리즘 | 설명 | 블록 크기 | 키 길이 | 라운드 수 | 특징 및 비고 |
|---|---|---|---|---|---|
| DES | 블록 크기 64비트, 키 길이 56비트, 16회 라운드를 수행 | 64비트 | 56비트 | 16회 | • 과거 미국 표준 암호 |
| • 현재는 키 길이의 한계로 안전하지 않음 | |||||
| AES | DES의 한계를 극복하고 발표된 새로운 표준 블록 암호 | 128비트 | 128, 192, 256비트 | 가변 | • 현재 가장 널리 사용되고 안전한 블록 암호 표준 |
| SEED | KISA(한국인터넷진흥원)에서 개발한 블록 암호화 알고리즘 | 128비트 | 128, 256비트 | 가변 | • 국내 암호화 표준 |
| • 빠른 속도와 높은 보안성 제공 | |||||
| ARIA | 국가정보원 + 산학연합회가 개발한 블록 암호화 알고리즘 | 128비트 | 128, 192, 256비트 | 가변 | • 국내 암호화 표준 |
| • IoT 환경 등 경량 환경에 적합 | |||||
| IDEA | (IPES) 블록 크기 64비트, 키 길이 128비트, 세 가지 다른 대수 그룹 연산을 혼합 | 64비트 | 128비트 | 8.5회 | • 세 가지 다른 대수 그룹 연산을 혼합 |
| Skipjack | 클리퍼 칩이라는 IC 칩에 내장, 블록 크기는 64비트, 키 길이는 80비트 | 64비트 | 80비트 | 32회 | • 미국 정부가 개발한 비밀 블록 암호 (논란) |
| • 현재는 사용 비권장 |
| 알고리즘 | 설명 | 기반 문제 | 특징 및 비고 |
|---|---|---|---|
| RSA | 큰 숫자를 소인수 분해하기 어렵다는 수학적 난이도에 기반하여 만듦 | 큰 수의 소인수 분해 문제 | • 공개키 암호의 대표 주자 |
| • 전자서명, 키 교환 등에 사용 | |||
| ECC | 이산대수 문제를 타원 곡선으로 옮겨 효율성을 높인 알고리즘 | 타원 곡선 상의 이산대수 문제 | • RSA에 비해 더 작은 키 길이로 유사한 보안 수준 제공 |
| • 모바일 등 자원 제한적인 환경에 유리 |
| 알고리즘 | 설명 | 출력 크기 | 특징 및 비고 |
|---|---|---|---|
| SHA | 미국 국가 안보국(NSA)이 설계한 해시 함수군 (SHA-1, SHA-2, SHA-3 등) | 가변 | • 데이터 무결성 검증, 전자서명 등에 널리 사용 |
| • SHA-1은 취약점 발견으로 사용 비권장, SHA-256/512 등 SHA-2 계열 및 SHA-3이 현재 주로 사용 | |||
| MD4 | 블록 크기가 512비트이며, 출력 길이는 128비트 | 128비트 | • Ron Rivest가 설계 |
| • 현재는 심각한 충돌 취약점으로 사용 비권장 | |||
| N-NASH | 일본의 NTT에서 발표한 해시 함수 | - | • (추가 정보 필요 - 현재는 잘 사용되지 않는 것으로 보임) |
| 공격 유형 | 설명 | 특징 및 원리 |
|---|---|---|
| Ping of Death | 패킷의 크기를 인터넷 프로토콜(IP) 허용 범위 이상으로 전송하여 네트워크를 마비시키는 서비스 거부 공격 방법 | • IP 프로토콜의 패킷 크기 제한(65,535바이트)을 악용 |
| • 비정상적으로 큰 ICMP 패킷을 전송하여 수신 시스템의 버퍼 오버플로우나 충돌 유발 | ||
| 스머핑(Smurf) | IP 브로드캐스트와 ICMP(Ping) 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로써 네트워크를 불능 상태로 만드는 공격 | • 공격 대상 IP를 출발지 주소로 위조한 ICMP Echo Request(Ping) 패킷을 브로드캐스트 주소로 전송 |
• 네트워크 내의 수많은 호스트들이 위조된 출발지 주소(공격 대상)로 ICMP Echo Reply(Ping 응답)을 보냄
• 공격 대상은 수많은 응답 패킷으로 인해 서비스 거부 발생 |
| SYN Flooding | TCP 3-way-handshaking 과정을 의도적으로 중단시킴으로써 시스템이 다운되도록 하는 공격 방법 | • TCP 연결 설정(SYN -> SYN/ACK -> ACK) 과정 악용
• 공격자가 SYN 패킷을 보내고 SYN/ACK를 받지만, 마지막 ACK를 보내지 않아 서버의 연결 대기 큐(SYN Queue)를 가득 채움
• 새로운 정상적인 연결 요청을 처리하지 못하게 되어 서비스 거부 발생 |
| LAND Attack | 패킷을 전송할 때 송신 IP 주소와 수신 IP 주소를 모두 공격 대상의 IP 주소로 하여 자신에 대해 무한히 응답하게 하는 공격 | • TCP SYN 패킷의 출발지 IP와 목적지 IP를 모두 공격 대상의 IP로 위조
• 서버는 자기 자신에게 패킷을 보내고 응답을 받으며 무한 루프에 빠지거나 자원 고갈 |
| Tear Drop 공격 | IP 패킷의 재조합 과정에서 잘못된 Fragment Offset 정보로 인해 수신 시스템이 문제를 발생하도록 만드는 공격 | |
| 공격 유형 / 도구 | 설명 | 주요 특징 및 공격 방식 |
|---|---|---|
| Trin00 | 가장 초기 형태의 DDoS 공격 데몬(도구) 중 하나 | • UDP Flooding 공격 수행 |
• Master/Agent 구조
• 최초의 널리 알려진 DDoS 도구 중 하나 |
| TFN (Tribal Flood Network) | Trin00보다 발전된 형태의 DDoS 공격 도구 | • 다양한 공격 유형 수행: UDP Flooding, TCP SYN Flooding 공격, 스머핑(Smurf) 공격 등
• 명령 및 제어(C2) 통신: 마스터와 에이전트 간의 통신이 암호화되거나 위장되어 탐지 및 추적이 어려워짐
• 백도어 기능: 감염된 시스템에 백도어를 설치하여 공격자가 원격에서 제어할 수 있는 기능 제공 |
| TFN2K | TFN의 확장 및 개선 버전 | • 더욱 강력한 기능: TFN의 모든 기능을 포함하며, 공격 회피 및 탐지 우회 기능이 강화됨
• 분산된 명령: 마스터와 에이전트 간의 통신이 더욱 은밀해지고, 여러 통신 채널(예: ICMP, UDP)을 사용하여 탐지를 어렵게 함
• 무작위 포트 사용: 공격 시 사용하는 포트를 무작위로 변경하여 방화벽 등의 방어 시스템 우회 시도
• 에이전트 간 통신 기능: 에이전트들끼리 서로 정보를 교환하거나 명령을 전달하는 기능이 추가되어 더욱 강력한 봇넷 구성 가능 |
| 용어 | 정의 |
|---|---|
| 세션 하이재킹 | 서버와 클라이언트 사이의 세션 정보를 가로채 서버에 무단으로 접근하는 공격 기법. TCP 3 Way Handshake 과정에 끼어들어 동기화된 시퀀스 번호를 가로챔. |
| ARP 스푸핑 | ARP의 취약점을 이용한 공격 기법으로, 자신의 물리적 주소(MAC)를 공격 대상의 것으로 변조하여 공격 대상에게 도달해야 하는 데이터 패킷을 가로채거나 방해함. |
| 스미싱 (Smishing) | 문자 메시지(SMS)를 이용해 사용자의 개인 신용 정보를 빼내는 사기 수법. |
| 사회 공학 | 컴퓨터 보안에 있어 인간 상호 작용의 신뢰를 바탕으로 사람들을 속여 보안 절차를 깨뜨리기 위한 비기술적 시스템 침입 수단. |
| 다크 데이터 | 특정 목적을 가지고 데이터를 수집하였으나, 이후 활용되지 않고 저장만 되어 있는 대량의 데이터를 의미. |
| 타이포스쿼팅 | 네티즌들이 사이트를 접속할 때 주소를 잘못 입력하거나 철자를 빠뜨리는 실수를 이용하기 위해 이와 유사한 유명 도메인을 미리 등록하는 행위. |
| 스피어 피싱 | 특정 대상을 선정한 후 그 대상에게 일반적인 이메일로 위장한 메일을 지속적으로 발송하여, 본문 링크나 첨부된 파일을 클릭하도록 유도해 개인 정보를 탈취하는 공격. |
| APT (지능형 지속 위협) | 다양한 IT 기술과 방식들을 이용해 조직적으로 특정 기업이나 조직 네트워크에 침투해 활동 거점을 마련한 뒤, 때를 기다려 보안을 무력화시키고 정보를 수집하여 외부로 빼돌리는 형태의 공격. |
| 무작위 대입 공격 | 암호화된 문서의 암호 키를 찾아내기 위해 적용 가능한 모든 값을 대입하여 공격하는 방식. (Brute Force Attack) |
| 큐싱 (Qshing) | QR 코드를 통해 악성 앱의 다운로드를 유도하거나 악성 프로그램을 설치하도록 하는 금융 사기 기법. |
| SQL 삽입 공격 | 애플리케이션의 보안 취약점을 이용해 악의적인 SQL 코드(명령문)를 주입하여 데이터베이스를 비정상적으로 조작하거나 데이터를 탈취하는 공격 기법 |
| XSS (크로스 사이트 스크립팅) | 웹 페이지의 내용을 사용자 브라우저에 표현하기 위해 사용되는 스크립트의 취약점을 악용하여 악성 스크립트를 주입하는 해킹 기법. |
| 스니핑 (Sniffing) | 네트워크 중간에서 남의 패킷 정보를 도청하는 해킹 유형. |
| 워터링 홀 | 목표 조직이 자주 방문하는 웹 사이트를 사전에 감염시켜 목표 조직의 일원이 웹 사이트에 방문했을 때 악성 코드에 감염되게 하는 웹 기반 공격. |
| 좀비 PC | 악성 코드에 감염되어 다른 프로그램이나 컴퓨터를 조종하도록 만들어진 컴퓨터. |
| C&C 서버 | 해커가 원격지에서 감염된 좀비 PC에 명령을 내리고 악성 코드를 제어하기 위한 용도로 사용하는 서버. (Command & Control Server) |
| 봇넷 (Botnet) | 악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 형태. |
| 웜 (Worm) | 네트워크를 통해 연속적으로 자신을 복제하여 시스템의 부하를 높여 시스템을 다운시키는 바이러스. |
| 제로 데이 공격 | 보안 취약점이 발견되었을 때, 발견된 취약점의 존재 자체가 널리 공표되기도 전에 해당 취약점을 통하여 이루어지는 보안 공격. |
| 키 로거 공격 | 컴퓨터 사용자의 키보드 움직임을 탐지해 ID, 패스워드, 계좌번호, 카드 번호 등과 같은 개인 정보를 몰래 빼가는 해킹 공격. |
| 랜섬웨어 | 인터넷 사용자의 컴퓨터에 잠입해 내부 문서나 파일 등을 암호화해 사용자가 열지 못하게 하는 프로그램. |
| 백도어 (Backdoor) | 시스템 설계자가 서비스 기술자나 유지 보수 프로그램 작성자의 액세스 편의를 위해 시스템 보안을 제거하여 만들어 놓은 비밀 통로. |
| 트로이 목마 | 사용자나 시스템을 속여 정상적인 프로그램인 것처럼 위장하여 실행되도록 유도하는 악성 프로그램. |
| 파밍 | 사용자가 정상적인 웹사이트 주소를 입력해도 가짜 웹사이트로 접속하게 유도하여 개인 정보(금융 정보)를 탈취하는 수법 |
| 이블 트윈 | 공격자가 합법적인 Wi-Fi 핫스팟과 동일한 이름의 가짜 Wi-Fi 핫스팟을 만들어 사용자의 연결을 가로채는 공격 |
| 이름 | 정의 |
|---|---|
| NAC (Network Access Control) | 네트워크에 접근하는 장치들을 인증하고 접근 권한을 관리하는 보안 솔루션. |
| AAA | 인증(Authentication): 접근을 시도하는 가입자 또는 단말에 대한 식별 및 신분을 검증. |
권한 부여(Authorization): 검증된 가입자나 단말에게 어떤 수준의 권한과 서비스를 허용.
계정 관리(Accounting): 리소스 사용에 대한 정보를 수집하고 관리하는 서비스. |
| 정보 보호 관리 체계 (ISMS) | 정보 자산을 안전하게 보호하기 위한 보호 절차와 대책. |
| 침입 탐지 시스템 (IDS) | 컴퓨터 시스템의 비정상적인 사용, 오용, 남용 등을 실시간으로 탐지하는 시스템. |
| 침입 방지 시스템 (IPS) | 비정상적인 트래픽을 능동적으로 차단하고 격리하는 보안 시스템. |
| DLP (Data Loss Prevention) | 내부 정보의 외부 유출을 방지하는 보안 솔루션. |
| 웹 방화벽 | 웹 기반 공격을 방어할 목적으로 만들어진 웹 서버에 특화된 방화벽. |
| VPN (Virtual Private Network) | 공중 네트워크와 암호화 기술을 이용하여 사용자가 마치 자신의 전용 회선을 사용하는 것처럼 해주는 보안 솔루션. |
| SIEM (Security Information and Event Management) | 로그 및 보안 이벤트를 통합하여 관리하는 보안 솔루션. |
| SSH (Secure Shell) | 다른 컴퓨터에 로그인, 원격 명령 실행, 파일 복사 등을 수행할 수 있도록 다양한 기능을 지원하는 프로토콜 또는 이를 이용한 응용 프로그램 (22번 포트 사용). |
| 템퍼 프루핑 (Tamper-Proofing) | 소프트웨어의 위변조가 발생할 경우 소프트웨어를 오작동하게 만들어 악용을 방지하는 기술 (예: 워터마크 기술 활용). |
| OAuth (Open Authorization) | 사용자 대신, 웹사이트에 대한 접근 권한을 부여하는 개방형 표준 프로토콜로, 사용자가 자신의 비밀번호를 제공하지 않고도, 다른 서비스가 자신의 특정 정보에 접근하도록 허용. |
| Rootkit | 시스템 침입 후 침입 사실을 숨긴 채 차후의 침입을 위한 백도어, 트로이 목마 설치, 원격 접근, 내부 사용 흔적 삭제, 관리자 권한 획득 등 불법적인 해킹에 사용되는 기능을 제공하는 프로그램의 모음이자 해킹 도구 |
| 이름 | 정의 |
|---|---|
| 메시 네트워크 | 기존 네트워크 방식의 한계를 넘어 대규모 디바이스 연결, 자동 복구 등을 목표로 하는 차세대 네트워크 기술 |
| UWB | 초광대역 무선 통신 기술 |
| 피코넷(Piconet) | 블루투스, UWB 같은 단거리 무선 기술을 이용한 소규모 무선 네트워크 |
| 애드 훅 네트워크 | 중앙 라우터나 액세스 지점없이 무선 통신이 가능한 장치들이 스스로 직접 연결되어 형성되는 분산형 네트워크 |
| 노드들에 의해 자율적으로 구성되는 기반 구조가 없는 네트워크로 구성 및 유지를 위해 기지국이나 액세스 포인트와 같은 기반 장치를 필요로 하지 않는 네트워크 | |
| USN | 센서로 정보를 수집하고 무선으로 전달하는 네트워크 |
| M2M 사물 통신 | 기계와 기계 간의 무선 통신 |
| 와이선(WI-SUN) | 장거리, 저전력 무선 통신 기술, 스마트 그리드와 같은 IoT 서비스에 사용 |
| NDN (Named Data Networking) | 데이터의 위치가 아닌 콘텐츠 자체의 이름을 기반으로 데이터를 전송하는 미래 인터넷 기술 |
| 지그비(Zigbee) | 저속 전송 속도를 갖는 홈오토메이션 및 데이터 네트워크를 위한 표준 기술 |
| 스마트 그리드 | 기존의 전력망에 정보통신기술(ICT)을 접목하여 전력 공급자와 소비자가 양방향으로 실시간 정보를 교환하고 에너지 효율을 최적화하는 차세대 지능형 전력망 시스템 |
| 이름 | 정의 |
|---|---|
| 소프트웨어 정의 데이터 센터 (SDDC) | 데이터 센터의 모든 자원을 가상화하여 소프트웨어로 관리/제어하는 방식 |
| 클라우드 컴퓨팅 | 각종 컴퓨터 자원을 중앙 컴퓨터에 두고 인터넷 기능을 갖는 단말기로 언제 어디서나 인터넷을 통해 컴퓨터 작업을 수행할 수 있는 가상화 환경 |
| 그리드 컴퓨팅 | 지리적으로 분산된 컴퓨터 자원을 연결하여 하나의 고성능 시스템처럼 활용하는 기술 |
| 모바일 클라우드 컴퓨팅 | 모바일 기기에서 클라우드 서비스를 활용하여 정보와 자원을 공유하는 기술 |
| 인터 클라우드 컴퓨팅 | 여러 클라우드 서비스 제공자들의 클라우드를 연동하여 자원을 공유하는 기술 |
| 종류 | 설명 |
|---|---|
| IaaS | 사용자가 필요한 컴퓨팅 인프라를 가상화하여 제공받는 서비스 |
| PaaS | 애플리케이션 개발 및 배포에 필요한 플랫폼을 서비스 형태로 제공 |
| SaaS | 완성된 소프트웨어를 서비스 형태로 제공 |
| 이름 | 정의 |
|---|---|
| LOD | Linked Data와 Open Data를 결합한 용어로, 웹 상에서 서로 연결되고 개방된 데이터의 집합 |
| 웹상에 존재하는 데이터를 개별 URL로 식별하고, 각 URL 링크 정보를 부여함으로써 상호 연결된 웹을 지향하는 아키텍처 | |
| SSO | 한 번의 로그인으로 여러 사이트나 서비스에 접근할 수 있게 해주는 시스템 |
| 종류 | 설명 |
|---|---|
| UNIX | 데니스 리치, 트리 구조 |
| LINUX | 리누스 토발즈, 오픈 소스 |
| MINIX | 교육용으로 개발한 유닉스와 유사한 운영체제 |
| 알고리즘 | 정의 |
|---|---|
| OPT (Optimal Page Replacement) | 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체 |
| FIFO (First In First Out) | 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체 |
| LRU (Least Recently Used) | 최근에 가장 오랫동안 사용하지 않은 페이지를 교체 |
| LFU (Least Frequently Used) | 사용 빈도가 가장 적은 페이지를 교체 |
| NUR (Not Used Recently) | 최근에 사용하지 않은 페이지를 교체 |
| SCR (Second Chance Replacement) | 가장 오랫동안 주 기억 장치에 있었던 페이지 중 자주 사용되는 페이지의 교체를 방지 |
| 알고리즘 | 정의 | 선점/비선점 |
|---|---|---|
| FCFS | 준비 상태 큐에 도착한 순서대로 CPU에 할당 | 비선점 |
| SJF | 준비 상태 큐에서 실행 시간이 가장 짧은 프로세스를 먼저 CPU에 할당 | 비선점 |
| HRN | 대기 시간과 서비스 시간을 이용하여 우선 순위를 계산하여 우선순위가 높은 것부터 CPU에 할당 | 비선점 |
| RR | 시간 할당량 동안만 실행한 후 다음 프로세스를 CPU에 할당 | 선점 |
| SRT | 현재 실행중인 프로세스의 남은 시간과 새로 도착한 프로세스의 실행 시간을 비교하여 가장 짧은 실행 시간을 요구하는 프로세스를 CPU에 할당 | 선점 |
HRN 우선 순위
| 구분 | IPv4 | IPv6 |
|---|---|---|
| 주소 길이 | 8비트씩 4부분으로 구성 → 총 32비트 | 16비트씩 8부분으로 구성 → 총 128비트 |
| 개발 배경 | - | IPv4의 주소 부족 문제 해결을 위해 개발 |
| 속도 | - | IPv4에 비해 빠름 |
| 보안 | - | 인증성, 기밀성, 데이터 무결성 기능을 기본으로 제공하여 보안 문제 해결 |
| 통신 방식 | 유니캐스트(1:1) 통신 |
멀티캐스트(1:N) 통신
브로드캐스트(1:N) 통신 | 유니캐스트(1:1) 통신
멀티캐스트(1:N) 통신
애니캐스트(1:1) 통신 |
OSI(Open Systems Interconnection) 참조 모델은 네트워크 통신 과정을 7개의 계층으로 나눈 표준
| 계층 | 주요 역할 및 기능 | 주요 프로토콜 / 장비 | 전송 단위 |
|---|---|---|---|
| 1계층: 물리 (Physical) | 전송에 필요한 두 장치 간의 실제 접속과 절단 등 기계적, 전기적, 기능적, 절차적 특성에 대한 규칙을 정의• 데이터의 비트 전송을 담당합니다. | RS-232C, X.21 등 | |
| 리피터, 허브 | 비트 (Bit) | ||
| 2계층: 데이터링크 (Data Link) | 두 개의 인접한 계층(시스템)들 간에 신뢰성 있고 효율적인 정보 전송을 할 수 있도록 시스템 간 연결 설정, 유지 및 종료를 담당 |
• 송수신 속도 차이를 해결하기 위한 흐름 제어
• 프레임 시작과 끝을 구분하는 프레임 동기화
• 오류 검출과 회복을 위한 순서 제어 | 랜카드, 브리지, 스위치 | 프레임 (Frame) |
| 3계층: 네트워크 (Network) | 개방 시스템들 간의 네트워크 연결을 관리하는 기능과 데이터 교환 및 중계하는 기능
• 라우팅 기능을 통해 최적의 경로를 선택합니다. | 라우터, IP(Internet Protocol) | 패킷 (Packet) |
| 4계층: 전송 (Transport) | 논리적 안정과 균일한 데이터 전송 서비스를 제공함으로써 종단 간(End-to-End)에 투명한 데이터 전송을 가능하게 함
• 데이터의 분할, 재조립, 오류 제어 등을 수행합니다. | TCP, UDP | 세그먼트 (Segment) |
| 계층 | 주요 역할 및 기능 | 전송 단위 |
|---|---|---|
| 5계층: 세션 (Session) | 송수신 측 간의 관련성을 유지하고 대화 제어를 담당 | |
| • 인증 상태나 세션의 유효성을 위해 토큰을 사용합니다. | 데이터 | |
| 6계층: 표현 (Presentation) | 응용 계층과 세션 계층으로부터 받은 데이터를 세션 계층과 응용 계층에 보내기 전에 통신에 적당한 형태로 변환(인코딩, 암호화, 압축 등)합니다. | 데이터 |
| 7계층: 응용 (Application) | 사용자가 OSI 환경에 접근할 수 있도록 서비스를 제공합니다. 응용 프로세스 간의 정보 교환을 담당합니다. | 데이터 |
| 라우터 | LAN과 LAN 연결 기능에 데이터 전송의 최적 경로를 선택하는 기능이 추가된 장치 |
|---|---|
| 리피터 | 거리가 증가할 수록 감소하는 디지털 신호의 장거리 전송을 위해 수신한 신호를 재생시키거나 출력 전압을 높여 전송하는 장치 |
| 허브 | 사무실이나 가까운 거리의 컴퓨터들을 연결하는 장치로 회선을 통합하여 관리 |
| 브리지 | LAN과 LAN을 연결하거나 LAN 안에서 컴퓨터 그룹을 연결하는 장치 |
| 브리지를 이용한 서브넷 구성시 전송 가능한 회선수 → n(n-1)/2 개 | |
| 게이트웨이 | LAN에서 다른 네트워크에 데이터를 보내거나 받는 출입구 역할 |
| 구분 | 정의 |
|---|---|
| 프로토콜 | 서로 다른 기기들 간의 데이터 교환을 원활하게 수행할 수 있도록 표준화시켜 놓은 통신 규약. |
| 기본 요소 | 구문 (Syntax): 데이터의 형식, 부호화, 신호 레벨 등을 정의. |
의미 (Semantics): 전송되는 데이터 또는 제어 정보의 의미를 정의.
시간 (Timing): 언제 데이터를 전송할지, 얼마나 빨리 전송할지, 어떤 순서로 전송할지 등을 정의. |
| 구분 | 정의 |
|---|---|
| TCP/IP | 서로 다른 기종의 컴퓨터들이 데이터를 주고받을 수 있도록 하는 표준 프로토콜 |
| TCP | • 전송 계층 |
• 가상 회선 방식: 데이터를 전송하기전 송수신자 사이에 연결 경로를 설정하고 모든 패킷이 순서대로 전송되는 방식
• 패킷의 다중화, 순서, 오류, 흐름 제어 |
| IP | • 네트워크 계층
• 데이터그램 방식: 데이터를 독립적인 패킷 단위로 나누어 전송하며, 각 패킷이 사전에 경로를 설정하지 않고 독립적으로 전송되는 방식
• 패킷의 분해/조립, 주소 지정, 경로 선택 기능 제공 |
ARP - IP 주소 → MAC 주소
RARP - MAC 주소 → IP 주소
| 배치 형태 | 정의 |
|---|---|
| 성형 | 중앙에 주 컴퓨터가 있고, 이를 중심으로 모든 단말 장치들이 개별적으로 연결되는 중앙 집중식 네트워크 구성 형태 |
| 링형 | 단말 장치들이 서로 이웃하는 것끼리 연결시켜 원형을 구성하는 형태 |
| 버스형 | 한 개의 주 통신 회선(버스)에 여러 대의 단말 장치가 선형으로 연결되어 있는 형태 |
| 망형 | 네트워크 내에 모든 지점의 컴퓨터와 단말 장치를 서로 직접 연결한 형태 |
LAN - 회사, 학교 등에서 비교적 가까운 거리에 있는 컴퓨터, 프린터 등과 같은 자원을 연결하여 구성
WAN - 국가와 국가 혹은 대륙과 대륙 등과 같이 멀리 떨어진 사이트들을 연결하여 구성
NAT - IP 패킷에서 외부의 공인 IP 주소와 포트 주소에 해당하는 내부 IP 주소를 재기록하여 라우터를 통해 네트워크 트래픽을 주고 받는 기술
송신 측과 수신 측 간의 데이터 전송 경로 중에서 최적의 경로를 결정하는 기능
하나의 자율 시스템(AS) 내부에서 라우팅에 사용되는 프로토콜
| 프로토콜 | 설명 | 특징 |
|---|---|---|
| RIP | • 거리 벡터 라우팅 프로토콜 | |
| • 벨만-포드 알고리즘 사용 | • 소규모 동종의 네트워크 | |
| • 최대 홉 수를 15로 제한 | ||
| OSPF | • RIP 단점을 보안 |
• 링크 상태 라우팅 프로토콜
• 다익스트라(Dijkstra) 알고리즘 사용 | • 대규모 네트워크에 사용
• 계층적 구조 |
서로 다른 자율 시스템 (AS) 간의 라우팅, 즉 게이트웨이 간의 라우팅에 사용되는 프로토콜
| 프로토콜 | 설명 | 특징 |
|---|---|---|
| BGP | • 자율 시스템간의 라우팅 프로토콜 |
•EGP 단점을 보완
•AS가 다른 AS에게 도달 가능한 네트워크 정보를 교환하도록 설계 | • 정책 기반 라우팅
•경로 벡터 라우팅
•TCP 연결(Port 179) |
| 이름 | 정의 |
|---|---|
| 인공지능 | 인간의 두뇌와 같이 컴퓨터 스스로 추론하고 지능적인 작업을 수행하는 시스템 |
| 뉴럴 링크 | 일론 머스크가 뇌와 결합하는 기술을 개발하기 위해 설립한 회사 |
| 전문가 시스템 | 특정 분야 전문가의 지식을 모아 고도의 업무를 지원하는 컴퓨터 응용 프로그램 |
| 증강 현실(AR) | 실제 촬영 화면에 가상의 정보를 부가하여 보여주는 기술 |
| 블록체인 | P2P 네트워크를 이용하여 온라인 금융 거래 정보를 네트워크 참여자의 네트워크 장비에 분산 저장하는 기술 |
| 분산 원장 기술
(DLT) | 중앙 관리자나 중앙 데이터 저장소 없이 P2P 망 내의 참여자들에게 모든 거래 목록이 분산 저장되고 갱신되는 디지털 원장. (예: 블록체인) |
| 양자 암호 키 분배 | 양자 통신을 위해 비밀 키를 안전하게 배분하고 관리하는 기술 |
| 프라이버시 강화 기술 | 개인정보 침해 위험을 관리하기 위한 핵심 기술 |
| 그레이웨어 | 사용자 입장에서 유용할 수도 있고 악의적일 수도 있는 애드웨어, 트랙웨어, 기타 악성 코드나 악성 공유웨어. |
| 이름 | 정의 |
|---|---|
| 매시업 | 웹에서 제공하는 정보 및 서비스를 이용하여 새로운 소프트웨어나 서비스, 데이터베이스 등을 만드는 기술 |
| 리치 인터넷 애플리케이션 | 플래시 애니메이션 기술과 웹 애플리케이션 기술을 통합하여 기존 HTML보다 역동적이고 인터랙티브한 웹페이지를 제공하는 기술 |
| 시맨틱 웹 | 컴퓨터가 사람을 대신하여 정보를 읽고 이해하고 가공하여 새로운 정보를 만들어낼 수 있도록 의미를 가진 차세대 지능형 웹. |
| 증발품 | 판매 또는 배포 계획은 발표되었으나 실제로 고객에게 판매되거나 배포되지 않고 있는 소프트웨어 |
| SOA | 기업의 SW 인프라인 정보시스템을 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중심으로 구축하는 정보 기술 아키텍처. |
| 느슨한 결합 | |
| 디지털 트윈 | 현실 속의 사물, 시스템, 프로세스를 소프트웨어로 가상화한 모델 |
여러 개의 하드 디스크로 디스크 배열을 구성하여 파일을 구성하고 있는 데이터 블록들을 서로 다른 디스크들에 분산 저장할 경우, 그 블록들을 여러 디스크에서 동시에 읽거나 쓸 수 있어 속도가 매우 향상된다.
| 이름 | 방식 | 특징 |
|---|---|---|
| RAID 0 | 스트라이프 (작은 블록) 분산 저장 | 디스크 개수 만큼 읽기/쓰기 |
| RAID 1 | 미러링 (동시에 2개 이상 저장) | |
| RAID 5 | 스트라이프 (작은 블록) 분산 저장 | 오류 검출을 위한 패리티 저장 |
| RAID 6 | 이중 패리티 추가 |
| 이름 | 정의 |
|---|---|
| N-Screen | N개의 서로 다른 단말기(스마트폰, pc, TV 등)에서 동일한 콘텐츠를 자유롭게 이용할 수 있는 서비스 |
| 컴패니언 스크린 | TV 방송 시청 시 방송 내용을 공유하며 추가적인 기능을 수행할 수 있는 스마트폰, 태블릿 PC 등을 의미 |
| 엠디스크
(M-Disc) | 한 번의 기록만으로 자료를 영구 보관할 수 있는 광 저장장치 (DVD/Blu-ray) |
| 트러스트 존 기술 | 하나의 프로세서 내에 일반 애플리케이션을 처리하는 일반 구역과 보안이 필요한 애플리케이션을 처리하는 보안 구역으로 분할하여 관리하는 하드웨어 기반의 보안 기술(ARM에서 개발) |
| 빅데이터 | 기존의 관리 방법이나 분석 체계로는 처리하기 어려운 막대한 양의 정형 또는 비정형 데이터 집합 |
| 브로드 데이터 | 다양한 채널에서 소비자와 상호작용을 통해 생성된 것으로, 기업 마케팅에 있어 효율적이고 다양한 데이터이며 이전에 사용하지 않거나 알지 못했던 새로운 데이터나 기존 데이터에 새로운 가치가 더해진 데이터 |
| 메타 데이터 | 일련의 데이터를 정의하고 설명해주는 데이터. (데이터에 대한 데이터) |
| 하둡 | 오픈 소스를 기반으로 한 분산 컴퓨팅 플랫폼으로, 대규모 데이터를 저장하고 처리하는데 사용 |
| 타조 | 아파치 하둡 기반의 분산 데이터 웨어하우스 프로젝트, SQL 기반으로 빅데이터를 처리할 수 있게 해준다. |
| 맵리듀스 | 대용량 데이터를 분산 처리하기 위한 목적으로 개발된 프로그래밍 모델 (하둡의 핵심 처리 엔진) |
| 데이터 마이닝 | 대량의 데이터를 분석하여 데이터에 내재된 변수 사이의 상호 관계를 규명하여 일정한 패턴을 찾아내는 기법 |
| OLAP | 다차원으로 이루어진 데이터로부터 통계적인 요약 정보를 분석하여 의사결정에 활용하는 방식 |
| DRM | 저작권자가 배포한 디지털 콘텐츠가 저작권자가 의도한 용도로만 사용되도록 디지털 콘텐츠 관리 및 보호하는 기술 |
| 유형 | 설명 |
|---|
| 전진 오류 수정
(FEC) | 데이터 전송 과정에서 발생한 오류를 검출하여 검출된 오류를 재전송 요구 없이 스스로 수정하는 방식 |
| 후진 오류 수정
(BEC) | 데이터 전송 과정에서 오류가 발생하면 송신 측에 재전송을 요구하는 방식 |
FEC 방식
| 유형 | 설명 |
|---|---|
| 해밍 코드 방식 | 수신측에서 오류가 발생한 비트를 찾아 재전송을 요구하지 않고 자신이 직접 오류를 수정하는 방식으로 1비트의 오류 수정이 가능 |
| 상승 코드 방식 | 여러 개 비트의 오류가 있더라도 한곗값, 순차적 디코딩을 이용하여 모두 수정할 수 있는 방식 |
BEC 방식
| 유형 | 설명 |
|---|---|
| 패리티 검사 | 7~8개의 비트로 구성되는 전송 문자에 패리티 비트를 추가하여 오류를 검출하는 방식 |
| CRC | 다항식을 통해 산출된 값을 토대로 오류를 검사하는 방식으로 집단 오류를 해결하기 위한 방식 |
| 블록합 검사 | 프레임의 모든 문자로부터 계산되는 잉여 패리티 비트들을 사용하는 이차원 패리티 검사 방식 |
| ARQ | 신뢰성 있는 데이터 전달을 위해, 재전송을 기반으로 하는 에러제어 방식 |
| 종류 | 정의 |
|---|---|
| 연기 갱신 기법 | 트랜잭션이 성공적으로 완료될 때까지 데이터베이스에 대한 실질적 갱신을 연기하는 방법 |
| Redo만 사용 가능 | |
| 즉각 갱신 기법 | 트랜잭션이 데이터를 갱신하면 트랜잭션이 부분 완료되기 전이라도 즉시 실제 데이터베이스에 반영하는 방법 |
| Redo와 Undo 모두 사용 가능 |
동시에 실행되는 트랜잭션 간의 상호 작용을 제어하는것
| 개념/특징 | 설명 |
|---|---|
| 로킹(Locking) | 트랜잭션들이 특정 로킹 단위를 액세스하기 전에 Lock을 요청하여, Lock이 허락되어야만 해당 로킹 단위를 액세스할 수 있도록 하는 기법 |
| 같은 자원을 액세스하는 다중 트랜잭션 환경에서 DB의 일관성과 무결성을 유지하기 위해 트랜잭션의 순차적 진행을 보장하는 직렬화 기법 | |
| 로킹 단위 | 한꺼번에 로킹할 수 있는 객체의 크기. |
| 데이터베이스, 파일, 레코드, 필드 등이 로킹 단위가 될 수 있습니다. |
| 특징 | 로킹 단위가 클 때 | 로킹 단위가 작을 때 |
|---|---|---|
| 로크 수 | 적음 | 많음 |
| 관리 오버헤드 | 쉽다 | 어렵다 |
| 병행성 수준 | 낮음(동시 처리 감소) | 높음(동시 처리 증가) |
서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상
교착 상태 발생의 필요 충분 조건