정보처리기사 이론

すんす·2025년 9월 4일

XP - 고객의 요구 사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상 시키는 방법

Refactoring (리팩토링) - 프로그램 기능의 변경 없이 코드와 구조를 수정하는 것

→ 목표 - 가독성, 유지보수성, 확장성을 높여 소프트웨어 품질을 향상시키는 것

요구사항 명세

주요 기법설명
비정형 명세 기법사용자의 요구를 표현할 때 자연어를 기반으로 서술하는 기법
정형 명세 기법사용자의 요구를 표현할 때 수학적 원리와 표기법으로 서술하는 기법

UML

UML 구성 요소

구성 요소설명
사물 (Things)UML 모델의 기본적인 추상화 요소로, 시스템에서 추상적이거나 물리적인 요소를 나타냅니다. (예: 클래스, 인터페이스, 컴포넌트, 노드 등)
관계 (Relationships)UML 구성 요소 중 사물의 의미를 확장하고 명확히 하는 요소로, 사물과 사물을 연결하여 상호작용 방식이나 구조적 연결을 표현합니다.
다이어그램 (Diagrams)시스템의 다양한 관점을 시각적으로 표현하기 위해 사물과 관계를 특정 규칙에 따라 배치한 그림입니다.

핵심 사물 (Things)

사물 유형정의
클래스 (Class)공통의 속성(데이터), 연산(기능), 관계, 의미를 공유하는 객체들의 집합에 대한 청사진입니다.
인터페이스 (Interface)기능을 모아놓은 클래스로, 추상 메서드와 상수만을 포함하는 추상 클래스입니다. 인터페이스를 구현하는 모든 클래스에 대해 특정한 메서드가 반드시 존재하도록 강제하는 역할을 합니다.

연관 (Association)

  • UML 표준: 화살표가 없는 일반적인 실선 (--) 또는 한쪽 끝에 화살표가 있는 실선 ().
    • 화살표가 없는 실선: 양방향 연관 (둘 다 서로를 알고 있음)
    • 화살표가 있는 실선: 단방향 연관 (화살표가 시작하는 쪽이 화살표가 향하는 쪽을 알고 있음)

-<> 집합 (Aggregation)

  • UML 표준: 비어있는 다이아몬드(◇)가 한쪽 끝에 붙은 실선.
    • 의미: "has-a" 관계

-<//> 포함 (Composition)

  • UML 표준: 채워진(검정색) 다이아몬드(◆)가 한쪽 끝에 붙은 실선.
    • 의미: 집합 관계와 마찬가지로 "has-a" 관계

일반화 (Generalization)

  • UML 표준: 비어있는 삼각형(△)이 상위 클래스(부모 클래스) 쪽을 향하는 실선.

image.png

실체화 (Realization / Implementation)

image.png

의존 (Dependency)

  • UML 표준: 점선 화살표 (---->).

구조적 다이어그램

  • 클래스 다이어그램
  • 객체 다이어그램
  • 컴포넌트 다이어그램
  • 배치 다이어그램
  • 복합체 구조 다이어그램
  • 패키지 다이어그램

행위 다이어그램

  • Use case 다이어그램
  • 순차 다이어그램
  • 커뮤니케이션 다이어그램
  • 상태 다이어그램
  • 활동 다이어그램
  • 상호 작용 개요 다이어그램
  • 타이밍 다이어그램

스테레오타입(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

  • 소프트웨어의 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준

데이터 베이스

데이터베이스 스키마

스키마 유형정의
개념 스키마데이터베이스의 전체적인 논리적 구조 (조직의 관점)
외부 스키마사용자나 개발자가 보는 데이터베이스 구조 (사용자의 관점)
내부 스키마물리적 저장 장치에 어떻게 저장될지에 대한 정의 (시스템의 관점)

데이터베이스 설계 순서

  1. 요구 조건 분석 (Requirement Analysis):
    • 데이터베이스의 필요한 용도를 파악하고, 사용자 및 시스템의 요구사항을 수집, 분석합니다.
  2. 개념적 설계 (Conceptual Design):
    • 현실 세계에 대한 인식을 추상적 개념(개념 스키마)으로 표현합니다.
    • E-R 모델(개체-관계 모델)과 같은 도구를 사용하여 데이터의 개체와 관계를 식별하고 다이어그램으로 나타냅니다.
  3. 논리적 설계 (Logical Design):
    • 개 념적 설계에서 나온 모델을 특정 DBMS가 지원하는 논리적 자료 구조로 변환시키는 과정입니다.
  4. 물리적 설계 (Physical Design):
    • 논리적 구조로 표현한 데이터를 물리적 구조의 데이터로 변환하는 과정입니다.
  5. 구현 (Implementation):
    • 물리적 설계 결과를 바탕으로 DDL(Data Definition Language)을 사용하여 실제 데이터베이스를 생성하고, 데이터 적재 및 응용 프로그램 개발을 수행합니다.

데이터 모델 (Data Model)

  • 연산 (Operations): 데이터에 접근하고 조작하는 방법.
  • 구조 (Structure): 데이터의 논리적인 구성 또는 형식.
  • 제약 조건 (Constraints): 데이터가 가져야 하는 무결성 규칙.

E-R 모델 (Entity-Relationship Model)

개념적 설계 단계에서 현실 세계의 개체(Entity)와 그들 간의 관계(Relationship)를 명확하게 표현하기 위한 모델.

구성 요소UML 표기법설명
사각형[]개체 타입 (Entity Type): 독립적으로 존재하는 대상 (예: 학생, 과목)
마름모<>관계 타입 (Relationship Type): 개체 타입들 간의 논리적인 연관성 (예: 수강하다)
타원O속성 (Attribute): 개체의 특성 또는 성질 (예: 학번, 이름, 과목명)

키 (Keys)

키 유형정의
후보 키 (Candidate Key)속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분 집합입니다.
유일성(Unique)과 최소성(Minimal)을 만족해야 합니다.
기본 키 (Primary Key)후보 키 중에서 릴레이션의 각 튜플을 유일하게 식별할 수 있도록 선택된 키입니다.
NULL 값을 가질 수 없으며(개체 무결성), 중복될 수 없습니다.
대체 키 (Alternate Key)후보 키가 둘 이상일 때, 기본 키로 선택되지 않은 나머지 후보 키들을 의미합니다.
슈퍼 키 (Super Key)유일성은 만족하지만, 최소성은 만족하지 못한다.
외래 키 (Foreign Key)다른 릴레이션의 기본 키를 참조하는 속성 또는 속성들의 집합입니다.
릴레이션들 간의 관계를 설정하는 데 사용됩니다.

무결성 (Integrity)

데이터베이스에 저장된 데이터 값과 현실 세계의 실제 값이 일치하는 정확성, 일관성, 유효성을 의미합니다.

무결성 유형정의

| 개체 무결성
(Entity Integrity)
| 기본 테이블의 기본 키를 구성하는 어떤 속성도 NULL 값이나 중복 값을 가질 수 없다. |
| 참조 무결성
(Referential Integrity)
| 외래 키 값은 NULL이거나 참조 릴레이션의 기본 키 값과 동일해야 한다. |
| 도메인 무결성
(Domain Integrity)
| 주어진 속성 값이 정의된 도메인(속성이 가질 수 있는 값의 범위)에 속한 값이어야 한다. |
| 사용자 정의 무결성
(User-Defined Integrity)
| 속성 값들이 사용자가 정의한 특정 제약 조건에 만족해야 한다. |

관계 데이터 모델 언어

유형특징

| 관계 대수
(Relational Algebra)
| 원하는 정보를 얻기 위해 어떤 연산을 수행해야 하는지 절차적으로 명시하는 언어입니다.
(HOW) |
| 관계 해석
(Relational Calculus)
| 원하는 정보가 무엇인지 비절차적으로 명시하는 언어입니다.
(WHAT) |

순수 관계 연산자 (Pure Relational Operations)

  • 시그마 (σ) - Select (선택): 릴레이션에서 수평적 부분 집합을 추출합니다. 특정 조건을 만족하는 튜플(행)들을 선택합니다.
  • 파이 (π) - Project (투영): 릴레이션에서 수직적 부분 집합을 추출합니다. 특정 속성(열)들을 선택합니다.
  • 조인 (⋈) - Join (결합): 두 릴레이션을 공통 속성을 기준으로 결합하여 새로운 릴레이션을 만듭니다.
  • 나누기 (÷) - Division (나눗셈): 특정 조건을 만족하는 튜플의 부분 집합을 추출합니다. (복잡한 질의에 사용)

일반 집합 연산자 (General Set Operations)

  • 합집합 (UNION, ∪): 두 릴레이션의 모든 튜플을 합칩니다. (중복 제거)
  • 교집합 (INTERSECTION, ∩): 두 릴레이션에 공통으로 존재하는 튜플만 추출합니다.
  • 차집합 (DIFFERENCE, -): 한 릴레이션에서 다른 릴레이션에 존재하는 튜플을 제외합니다.
  • 교차 곱 (CARTESIAN PRODUCT, X): 두 릴레이션의 모든 튜플 조합을 생성합니다. (결과 행 = 첫 릴레이션 행 수 × 둘째 릴레이션 행 수)

이상 (Anomaly)

테이블에서 데이터의 중복이 발생하고, 이 중복으로 인해 데이터의 일관성이 저해되거나 예상치 못한 문제가 발생하는 현상입니다. 정규화(Normalization)를 통해 해결합니다.

이상 유형정의

| 삽입 이상
(Insertion Anomaly)
| 테이블에 데이터를 삽입할 때, 의도와는 상관없이 원하지 않는 값들(NULL 값)을 삽입해야 하거나 특정 정보가 없어서 삽입할 수 없게 되는 현상. |
| 삭제 이상
(Deletion Anomaly)
| 테이블에서 한 튜플을 삭제할 때, 의도와는 상관없는 값들도 함께 삭제되어 정보 손실이 발생하는 연쇄 삭제 현상. |
| 갱신 이상
(Update Anomaly)
| 테이블에서 튜플에 있는 속성 값을 갱신할 때, 일부 튜플의 정보만 갱신되어 정보에 불일치성(데이터 비일관성)이 생기는 현상. |

함수적 종속성 및 정규화

(Functional Dependency & Normalization)

데이터베이스의 정규화는 중복을 최소화하고 데이터의 일관성 및 무결성을 확보하기 위한 과정입니다.


함수적 종속성 (Functional Dependency)

개념정의설명
함수적 종속오직 값이 하나만 연관되어 있을 때, Y는 X에 함수적으로 종속한다. 즉, X 값을 알면 Y 값을 항상 유일하게 결정할 수 있어야 합니다.X가 Y를 함수적으로 결정한다. (X는 결정자, Y는 종속자)
완전 함수적 종속기본키(X)의 전체 속성이 특정 속성(Y)을 결정하는 경우. 기본키의 어느 부분집합도 Y를 결정할 수 없습니다.복합 기본키의 경우, 부분 속성만으로는 다른 속성을 결정할 수 없어야 합니다.
부분 함수적 종속기본키(X)의 일부 속성만으로도 특정 속성(Y)이 결정되는 경우.복합 기본키의 경우, 기본키의 일부가 다른 속성을 결정하는 경우입니다. 정규화 대상이 됩니다.
이행 함수적 종속X → Y 이고 Y → Z 일 때, X → Z 가 성립되는 경우.중간 속성(Y)을 통해 간접적으로 종속되는 경우입니다. 정규화 대상이 됩니다.

정규화 (Normalization)


테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정

정규화 단계 (도부이결다조)

정규형만족 조건제거되는 이상 (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)

  • 원자성(Atomicity) - 트랜잭션에 포함된 작업은 전부 수행되거나 전혀 수행되지 않아야 한다.
  • 일관성(Consistency) - 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환된다.
  • 격리성(Isolation) - 트랜잭션 실행 중에 생성하는 연산의 중간 결과는 다른 트랜잭션이 접근할 수 없다.
  • 영속성(Durability) - 트랜잭션이 성공적으로 완료되면 결과는 영구적으로 반영되어야 한다.

파티션 분할

종류정의
범위 분할지정한 열의 값을 기준으로 분할
해시 분할해시 함수를 적용한 결과 값에 따라 데이터를 분할
조합 분할범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할

파일 구조

종류정의
순차 파일레코드를 일정한 논리적 순서에 따라 저장하는 방식
직접 파일레코드를 임의의 물리적 공간에 저장하는 방식
색인 파일순차 파일과 직접 파일의 장점을 결합한 방식

클러스터링 - 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술

고가용성 - 하나의 서버에 장애가 발생하면 다른 노드가 받아 처리해 서비스 중단을 방지하는 방식

RTO 와 RPO

재해 복구 계획에서 RTO(복구 시간 목표)와 RPO(복구 시점 목표)는 비즈니스 운영의 핵심적인 목표 지표

이름정의
RTO비상 상태 또는 업무 중단 시점으로부터 복구되어 정상적으로 가동될 때까지 소요되는 최대 허용 시간
RPO비상 사태 또는 업무 중단 시점으로부터 데이터를 복구할 수 있는 기준점

접근 통제

종류정의
임의 접근 통제(DAC)사용자의 신원에 따라 접근 권한을 부여하는 방식
강제 접근 통제(MAC)주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
역할 기반 접근 통제(RBAC)사용자의 역할에 따라 접근 권한을 부여하는 방식

DB 복구 알고리즘

이름정의
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)

결합도

모듈간에 상호 의존하는 정도, 결합도가 낮을수록 모듈 간의 독립성이 높아져 유지보수 및 재사용성이 향상된다.


종류정의
내용한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때의 결합도, 내부 변수
공통공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도, 전역 변수
외부어떤 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조할 때의 결합도
제어어떤 모듈이 다른 모듈 내부의 논리적 흐름을 제어하기 위해 제어 신호나 제어 요소를 전달하는 결합도
스탬프모듈 간의 인터페이스로 배열이나 레코드 등의 구조가 전달될 때의 결합도
자료한 모듈이 다른 모듈을 호출할 때 매개변수를 통해 필요한 데이터만 전달하는 방식

응집도

모듈의 내부 요소들이 서로 연관되어 있는 정도


종류정의
기능모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우
순차모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우
교환동일한 입출력을 사용하여 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우
절차모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우
시간특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우
논리유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우
우연모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우

IPC

모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합

프로세스간 통신 방법


종류정의
공유 메모리공유 가능한 메모리를 구성하여 다수의 프로세스가 통신하는 방식
소켓네트워크 소켓을 이용하여 네트워크를 경유하는 프로세스 간에 통신하는 방식
세마포공유 자원에 대한 접근 제어를 통해 통신하는 방식
Pipes&named Pipes파이프라고 불리는 선입선출 형태로 구성된 메모리를 여러 프로세스가 공유하여 통신하는 방식
메시지 큐잉메시지가 발생하면 이를 전달하는 방식으로 통신하는 방식

디자인 패턴

모듈 간의 관계 및 인터페이스를 설계할 때 참조할 수 있는 전형적인 해결 방식

생성 패턴

클래스나 객체의 생성과 참조 과정을 정의하는 방식

이름정의
추상 팩토리구체적인 클래스에 의존하지 않고 인터페이스(추상 클래스)를 통해 서로 연관, 의존하는 객체들의 조합을 만드는 인터페이스를 제공 하는 패턴
팩토리 메서드객체 생성을 서브 클래스에서 처리하도록 분리하여 캡슐화한 패턴
빌더작게 분리된 인스턴스를 건축 하듯이 조합하여 객체를 생성
프로토타입원본 객체를 복제하는 방법으로 객체를 생성하는 경우
싱글톤하나의 객체를 생성하면 객체를 어디서든 참조할 수 있지만 여러 프로세스가 동시에 참조할 수 없다.

구조 패턴

클래스나 객체들을 조합하여 더 큰 구조로 만드는 패턴

이름정의
어댑터호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변환해주는 패턴
상속을 이용하는 클래스 패턴과 위임을 이용하는 인스턴스 패턴의 두 가지 형태로 사용되는 패턴
브리지구현부에서 추상층을 분리하여, 서로가 독립적으로 확장할 수 있도록 구성하는 패턴
컴포지트여러 객체를 가진 복합 객체와 단일 객체를 구분 없이 다루고자 할 때 사용하는 패턴
데코레이터객체 간의 결합을 통해 능동적으로 기능들을 확장할 수 있는 패턴
퍼싸드복잡한 서브 클래스들을 숨겨서 인터페이스를 구성함으로써 서브 클래스들의 기능을 간편하게 사용할 수 있도록 인터페이스를 제공 하는 패턴
플라이웨이트인스턴스가 필요할 때마다 생성하는 것이 아니라 공유하여 사용함으로써 메모리를 절약하는 패턴
프록시접근이 어려운 객체와 여기에 연결하려는 객체 사이에서 인터페이스 역할을 수행하는 패턴 - 중간에 대리인이 요청을 받아서 처리

행위 패턴

클래스나 객체들이 서로 상호 작용하는 방법이나 책임 분배 방법을 정의하는 패턴

이름정의
책임 연쇄요청을 처리할 수 있는 객체가 둘 이상 존재하여 한 객체가 처리하지 못하면 다음 객체로 넘어가는 형태의 패턴
커맨드요청을 객체의 형태로 캡슐화하여 재이용하거나 취소할 수 있도록 요청에 필요한 정보를 저장하거나 로그를 남기는 패턴
인터프리터언어의 문법 표현을 정의하는 패턴
반복자컬렉션(배열, 리스트 등) 내부구조를 노출하지 않고, 그 집합체 안에 들어 있는 모든 요소를 순차적으로 탐색할 수 있는 패턴
중재자수많은 객체들 간의 복잡한 상호작용을 캡슐화하여 객체로 정의하는 패턴
메멘토특정 시점에서의 객체 내부 상태를 객체화함으로써 이후 요청에 따라 객체의 해당 시점의 상태로 돌릴 수 있는 기능을 제공하는 패턴 → 객체 상태를 저장하고 복원
옵저버한 객체의 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달하는 패턴
상태객체의 상태에 따라 동일한 동작을 다르게 처리해야할 때 사용하는 패턴
전략동일한 계열의 알고리즘들을 개별적으로 캡슐화하여 상호 교환할 수 있게 정의하는 패턴
템플릿 메서드상위 클래스에서 골격을 정의하고, 하위 클래스에서 세부 처리를 구체화하는 구조
방문자각 클래스들의 데이터 구조에서 처리 기능을 분리하여 별도의 클래스로 구성
객체 구조를 변경하지 않고 객체에 새로운 연산을 추가할 수 있는 패턴

요구사항 검토

종류정의
동료 검토작성한 사람, 다른 팀원이나 동료들이 문서를 읽고 피드백을 제공하는 방식
워크 스루요구사항 작성자가 이해관계자 앞에서 요구사항 문서를 한 줄씩 설명하며 진행하는 비공식적인 회의
인스펙션요구사항 명세서 작성자를 제외한 다른 검토 전문가들이 요구사항 명세서를 확인하면서 결함을 발견하는 형태
프로토타이핑사용자의 요구사항을 정확히 파악하기 위해 실제 개발될 소프트웨어에 대한 견본품을 만들어 최종 결과물을 예측

미들웨어

운영체제와 응용 프로그램 사이에서 서비스를 제공하는 소프트웨어


종류정의
데이터베이스데이터베이스와 연결하기 위한 미들웨어
RPC원격 프로시저를 로컬 프로시저처럼 호출하는 미들웨어
MOM비동기형 메시지를 전달하는 미들웨어
TP-Monitor트랜잭션 처리 및 감시하는 미들웨어
ORB객체 간의 요청을 중개하는 역할, 객체 지향 미들웨어로 코바 표준 스펙을 구현
WAS동적인 콘텐츠를 처리하기 위한 미들웨어

모듈 연계

EAI

기업 내 각종 애플리케이션 및 플랫폼 간의 상호 연동이 가능하게 해주는 솔루션


image.png

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웹 기반 테스트 케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임워크
NTAFFitNesse의 장점인 협업과 STAF의 장점인 재사용 및 확장성을 통합한 NHN의 테스트 자동화 프레임워크
Selenium다양한 브라우저 및 개발 언어를 지원하는 웹 어플리케이션 테스트 프레임워크
watirRuby를 사용하는 애플리케이션 테스트 프레임워크

APM - 애플리케이션의 성능 관리를 위해 접속, 자원 현황, 트랜잭션 수행 내역, 장애 진단 등 다양한 모니터링 기능을 제공하는 도구

UI (User Interface) & UX (User Experience) 개요

구분정의
UI사용자와 시스템 간 상호작용을 돕는 장치/소프트웨어 (눈에 보이는 것)
UX사용자가 시스템/서비스 이용하며 느끼는 총체적인 경험 (느끼는 것)

UI의 종류

  • CLI (Command Line Interface): 명령어 입력 방식 (예: 터미널)
  • GUI (Graphical User Interface): 그래픽 요소 기반 (예: 윈도우, 앱 화면)
  • NUI (Natural User Interface): 자연스러운 행동 기반 (예: 터치, 음성, 제스처)

UI의 4가지 기본 원칙

원칙설명
직관성누구나 쉽게 이해하고 사용할 수 있어야 함
유효성사용자의 목적을 정확하고 완벽하게 달성해야 함
학습성누구나 쉽게 배우고 익힐 수 있어야 함
유연성사용자의 요구사항을 최대한 수용하고 실수를 최소화해야 함

UI 설계 도구

종류정의
와이어프레임페이지에 개략적인 레이아웃이나 UI 요소 등에 대한 뼈대를 설계하는 도구
목업와이어프레임보다 더 실제 화면과 유사하게 만든 정적인 형태의 모형
스토리보드와이어프레임에 콘텐츠에 대한 설명, 페이지 간의 이동 흐름등을 추가한 문서
프로토타입와이어프레임이나 스토리보드 등에 인터렉션을 적용함으로써 실제 구현된 것처럼 테스트가 가능한 동적인 형태의 모형
유스케이스사용자의 요구사항을 기능 단위로 표현한 것

애플리케이션 테스트의 기본 원리

결함 집중(파레토 법칙) - 애플리케이션 20%에 해당하는 코드에서 전체 결함의 80%가 발견된다는 법칙

살충제 패러독스 - 동일한 테스트 케이스로 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않는 현상

오류-부재의 궤변 - 소프트웨어의 결함을 모두 제거해도 사용자의 요구사항을 만족시키지 못하면 해당 소프트웨어는 품질이 높다고 할 수 없다.

정적 테스트 - 프로그램을 실행하지 않고 명세서나 소스 코드를 대상으로 분석하는 테스트

→ 워크스루, 인스펙션, 코드 검사 등

동적 테스트 - 프로그램을 실행하여 오류를 찾는 테스트

→ 블랙박스 테스트, 화이트박스 테스트

시각에 따른 테스트

검증 테스트 - 개발자의 시각에서 제품의 생산 과정을 테스트

확인 테스트 - 사용자의 시각에서 생산된 제품의 결과를 테스트

목적에 따른 테스트

회복 테스트 - 시스템에 여러 가지 결함을 주어 실패하도록 한 후 올바르게 복구되는지를 확인하는 테스트

안전 테스트 - 시스템에 설치된 보호 도구가 불법적인 침입으로부터 시스템을 보호할 수 있는지를 확인하는 테스트

강도 테스트 - 시스템에 과도한 정보량이나 빈도 등을 부과하여 과부화 시에도 소프트웨어가 정상적으로 실행 되는지를 확인하는 테스트

성능 테스트 - 소프트웨어의 실시간 성능이나 전체적인 효율성을 진단하는 테스트, 소프트웨어의 응답 시간 처리량 등을 테스트

구조 테스트 - 소프트웨어 내부의 논리적인 경로, 소스 코드의 복잡도 등을 평가하는 테스트

회귀 테스트 - 소프트웨어의 변경 또는 수정된 코드에 새로운 결함이 없음을 확인하는 테스트

병행 테스트 - 변경된 소프트웨어와 기존 소프트웨어에 동일한 데이터를 입력하여 결과를 비교하는 테스트

화이트박스 테스트 - 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법

기초 경로 검사 - 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법

루프 검사 - 프로그램의 반복 구조에 초점을 맞춰 실시하는 테스트 기법

데이터 흐름 검사 - 프로그램에서 변수와 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법

조건 검사 - 모듈 내에 있는 논리적 조건을 테스트하는 테스트 케이스 설계 기법

화이트박스 테스트 검증 기준

종류설명
구문(문장) 커버리지모든 코드, 구문이 한 번 이상 수행되도록 테스트 케이스를 설계
분기(결정) 커버리지모든 결정 지점(if, while, for 문의 조건식)이 True/거짓의 모든 결과를 적어도 한 번씩 가지도록 테스트 설계
조건 커버러지개별 조건식이 적어도 한 번은 참과 거짓의 결과를 가지도록 테스트 설계
조건/결정 커버리지결정 커버리지와 조건 커버리지를 모두 만족하는 방식
모든 결정 지점이 참/거짓 모두를 가져야하고 각 개별 조건식도 참/거짓 모두 가져야한다.
변경 조건/결정 커버리지 (MC/DC)개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식의 결과에 독립적으로 영향을 주도록 테스트
다중 조건 커버리지결정 지점 내의 모든 개별 조건식을 가능한 모든 논리적 조합을 테스트.
경로 커버리지프로그램 내에 존재하는 가능한 모든 실행 경로를 적어도 한 번씩 테스트.

블랙박스 테스트 - 각 기능이 완전히 작동되는 것을 입증하는 테스트

종류설명
동치 분할 검사프로그램의 입력 조건에 타당한 입력 자료와 타당하지 않은 자료의 개수를 균등하게 하여 테스트 케이스를 정하고, 해당 입력 자료에 맞는 결과가 출력되는지 확인하는 기법.
경계값 분석입력 조건의 중간값보다 경계값에서 오류가 발생될 확률이 높다는 점을 이용하여 입력 조건의 경계값을 테스트 케이스로 선정하여 검사하는 기법
원인-결과 그래프 검사입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법
오류 예측 검사과거의 경험이나 확인자의 감각으로 테스트하는 검사
비교 검사여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법

V-Model

단위 테스트 → 통합 테스트 → 시스템 테스트 → 인수 테스트

단위 테스트 - 모듈이나 컴포넌트에 초점을 맞춰 테스트

통합 테스트 - 단위 테스트가 완료된 모듈들을 결합하여 하나의 시스템으로 완성시키는 과정에서의 테스트

시스템 테스트 - 개발된 소프트웨어가 완벽하게 수행되는가를 점검하는 테스트

인수 테스트 - 사용자의 요구사항을 충족하는지에 중점을 두고 하는 테스트

  • 알파 테스트 - 사용자가 개발자 앞에서 행하는 테스트 기법, 개발의 막바지, 내부 점검
  • 베타 테스트 - 한명의 사용자가 여러명의 사용자 앞에서 행하는 테스트, 출시 직전 또는 직후

하향식 통합 테스트 - 상위 모듈에서 하위 모듈 방향을 통합하면서 테스트

깊이 우선 통합법이나 넓이 우선 통합법을 사용

Stub 사용

상향식 통합 테스트 - 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트

Driver 사용

테스트 오라클

종류설명
테스트 오라클테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참 값을 대입하여 비교하는 기법
참 오라클모든 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하는 오라클
샘플링 오라클특정 테스트 케이스의 입력 값에게만 기대하는 결과를 제공하는 오라클
휴리스틱 오라클특정 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하고 나머지 입력 값에 대해서는 추정으로 처리하는 오라클
일관성 검사 오라클애플리케이션 변경이 있을 때, 테스트 케이스의 수행 전과 후의 결과 값이 동일한지를 확인하는 오라클

클린 코드 - 누구나 쉽게 이해하고 수정 및 추가할 수 있는 단순, 명료한 코드

나쁜 코드 - 프로그램의 로직이 복잡하고 이해하기 어려운 코드

  • 스파게티 코드 - 코드의 로직이 서로 복잡하게 얽혀 있는 코드
  • 외계인 코드 - 아주 오래되거나 참고 문서 또는 개발자가 없어 유지 보수 작업이 어려운 코드

소스 코드 품질 분석 도구

  • 정적 분석 도구 - 작성한 소스 코드를 실행하지 않고 코딩 표준이나 코딩 스타일, 결함 등을 확인하는 코드 분석 도구 종류 - pmd, cppcheck, SonarQube, checkstyle, ccm, cobertuna 등
  • 동적 분석 도구 - 작성한 소스 코드를 실행하여 코드에 존재하는 메모리 누수, 스레드 결함 등을 분석하는 도구 종류 - Avalanche, Valgrind 등

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, RC4, TKIP
  • 블록 암호화 방식 - 한번에 하나의 데이터 블록을 암호화하는 방식
    • DES, SEED, AES, ARIA, IDEA, Skipjack, SEED

공개키 암호화 기법 (=비대칭 키) - 암 호화할 때 사용하는 공개키는 사용자에게 공개하고, 암호화할 때의 비밀 키는 관리자가 비밀리에 관리

  • 종류 - RSA, ECC

해시키 암호화 기법 - 임의의 길이의 입력 데이터나 고정된 길이의 값이나 키로 변환하는 것

  • 종류 - SHA, MD5, N-NASH

개인키(대칭키) 암호화 - 스트림 암호 방식

알고리즘설명주요 특징
LFSR시프트 레지스터와, 레지스터 내의 특정 비트에 대해 XOR을 수행하여 새로운 입력 비트를 생성하고 이를 되먹임• 시프트 레지스터 XOR 연산
RC4256바이트 크기의 상태 배열을 조작하여 키 스트림을 생성• 간단하고 빠른 스트림 암호
TKIP무선랜 보안에 사용되는 WEP을 보완한 데이터 보안 프로토콜• WEP의 보안 취약점 개선
• 임시 키 무결성 프로토콜 (Temporal Key Integrity Protocol)

개인키(대칭키) 암호화 - 블록 암호 방식

알고리즘설명블록 크기키 길이라운드 수특징 및 비고
DES블록 크기 64비트, 키 길이 56비트, 16회 라운드를 수행64비트56비트16회• 과거 미국 표준 암호
• 현재는 키 길이의 한계로 안전하지 않음
AESDES의 한계를 극복하고 발표된 새로운 표준 블록 암호128비트128, 192, 256비트가변• 현재 가장 널리 사용되고 안전한 블록 암호 표준
SEEDKISA(한국인터넷진흥원)에서 개발한 블록 암호화 알고리즘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에서 발표한 해시 함수-• (추가 정보 필요 - 현재는 잘 사용되지 않는 것으로 보임)

DoS(서비스 거부) 공격 유형

공격 유형설명특징 및 원리
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 정보로 인해 수신 시스템이 문제를 발생하도록 만드는 공격 | |

DDoS (분산 서비스 거부) 공격 및 공격 도구

공격 유형 / 도구설명주요 특징 및 공격 방식
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완성된 소프트웨어를 서비스 형태로 제공

정보 관리 및 인증 기술

이름정의
LODLinked 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 우선 순위

image.png

메모리 관리

  • Locality (구역성) - 프로세스가 실행되는 동안 주 기억 장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질.
    • 시간 구역성 - 프로세스가 실행되면서 하나의 페이지를 일정 시간 동안 집중적으로 액세스하는 현상
    • 공간 구역성 - 프로세스 실행 시 일정 위치의 페이지를 집중적으로 액세스 하는 현상
  • Working set - 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
  • 쓰레싱 - 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상

프로세스 관리

  • PCB - 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳

IP 주소 체계: IPv4 vs IPv6

구분IPv4IPv6
주소 길이8비트씩 4부분으로 구성 → 총 32비트16비트씩 8부분으로 구성 → 총 128비트
개발 배경-IPv4의 주소 부족 문제 해결을 위해 개발
속도-IPv4에 비해 빠름
보안-인증성, 기밀성, 데이터 무결성 기능을 기본으로 제공하여 보안 문제 해결
통신 방식유니캐스트(1:1) 통신

멀티캐스트(1:N) 통신
브로드캐스트(1:N) 통신 | 유니캐스트(1:1) 통신
멀티캐스트(1:N) 통신
애니캐스트(1:1) 통신 |

OSI 참조 모델

OSI(Open Systems Interconnection) 참조 모델은 네트워크 통신 과정을 7개의 계층으로 나눈 표준

하위 계층 (Lower Layers)

계층주요 역할 및 기능주요 프로토콜 / 장비전송 단위
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) |

상위 계층 (Upper Layers)

계층주요 역할 및 기능전송 단위
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 주소

네트워크 토폴리지

배치 형태정의
성형중앙에 주 컴퓨터가 있고, 이를 중심으로 모든 단말 장치들이 개별적으로 연결되는 중앙 집중식 네트워크 구성 형태
링형단말 장치들이 서로 이웃하는 것끼리 연결시켜 원형을 구성하는 형태
버스형한 개의 주 통신 회선(버스)에 여러 대의 단말 장치가 선형으로 연결되어 있는 형태
망형네트워크 내에 모든 지점의 컴퓨터와 단말 장치를 서로 직접 연결한 형태

image.png

네트워크의 분류

LAN - 회사, 학교 등에서 비교적 가까운 거리에 있는 컴퓨터, 프린터 등과 같은 자원을 연결하여 구성

WAN - 국가와 국가 혹은 대륙과 대륙 등과 같이 멀리 떨어진 사이트들을 연결하여 구성

NAT - IP 패킷에서 외부의 공인 IP 주소와 포트 주소에 해당하는 내부 IP 주소를 재기록하여 라우터를 통해 네트워크 트래픽을 주고 받는 기술

경로 제어 프로토콜

송신 측과 수신 측 간의 데이터 전송 경로 중에서 최적의 경로를 결정하는 기능

내부 게이트웨이 프로토콜 (IGP)

하나의 자율 시스템(AS) 내부에서 라우팅에 사용되는 프로토콜

프로토콜설명특징
RIP• 거리 벡터 라우팅 프로토콜
• 벨만-포드 알고리즘 사용• 소규모 동종의 네트워크
• 최대 홉 수를 15로 제한
OSPF• RIP 단점을 보안

• 링크 상태 라우팅 프로토콜
• 다익스트라(Dijkstra) 알고리즘 사용 | • 대규모 네트워크에 사용
• 계층적 구조 |

외부 게이트웨이 프로토콜 (EGP)

서로 다른 자율 시스템 (AS) 간의 라우팅, 즉 게이트웨이 간의 라우팅에 사용되는 프로토콜

프로토콜설명특징
BGP• 자율 시스템간의 라우팅 프로토콜

•EGP 단점을 보완
•AS가 다른 AS에게 도달 가능한 네트워크 정보를 교환하도록 설계 | • 정책 기반 라우팅
•경로 벡터 라우팅
•TCP 연결(Port 179) |

인공지능 및 가상/분산 관련 기술

이름정의
인공지능인간의 두뇌와 같이 컴퓨터 스스로 추론하고 지능적인 작업을 수행하는 시스템
뉴럴 링크일론 머스크가 뇌와 결합하는 기술을 개발하기 위해 설립한 회사
전문가 시스템특정 분야 전문가의 지식을 모아 고도의 업무를 지원하는 컴퓨터 응용 프로그램
증강 현실(AR)실제 촬영 화면에 가상의 정보를 부가하여 보여주는 기술
블록체인P2P 네트워크를 이용하여 온라인 금융 거래 정보를 네트워크 참여자의 네트워크 장비에 분산 저장하는 기술

| 분산 원장 기술
(DLT) | 중앙 관리자나 중앙 데이터 저장소 없이 P2P 망 내의 참여자들에게 모든 거래 목록이 분산 저장되고 갱신되는 디지털 원장. (예: 블록체인) |
| 양자 암호 키 분배 | 양자 통신을 위해 비밀 키를 안전하게 배분하고 관리하는 기술 |
| 프라이버시 강화 기술 | 개인정보 침해 위험을 관리하기 위한 핵심 기술 |
| 그레이웨어 | 사용자 입장에서 유용할 수도 있고 악의적일 수도 있는 애드웨어, 트랙웨어, 기타 악성 코드나 악성 공유웨어. |

웹 및 소프트웨어 개발/아키텍처

이름정의
매시업웹에서 제공하는 정보 및 서비스를 이용하여 새로운 소프트웨어나 서비스, 데이터베이스 등을 만드는 기술
리치 인터넷 애플리케이션플래시 애니메이션 기술과 웹 애플리케이션 기술을 통합하여 기존 HTML보다 역동적이고 인터랙티브한 웹페이지를 제공하는 기술
시맨틱 웹컴퓨터가 사람을 대신하여 정보를 읽고 이해하고 가공하여 새로운 정보를 만들어낼 수 있도록 의미를 가진 차세대 지능형 웹.
증발품판매 또는 배포 계획은 발표되었으나 실제로 고객에게 판매되거나 배포되지 않고 있는 소프트웨어
SOA기업의 SW 인프라인 정보시스템을 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중심으로 구축하는 정보 기술 아키텍처.
느슨한 결합
디지털 트윈현실 속의 사물, 시스템, 프로세스를 소프트웨어로 가상화한 모델

RAID

여러 개의 하드 디스크로 디스크 배열을 구성하여 파일을 구성하고 있는 데이터 블록들을 서로 다른 디스크들에 분산 저장할 경우, 그 블록들을 여러 디스크에서 동시에 읽거나 쓸 수 있어 속도가 매우 향상된다.

이름방식특징
RAID 0스트라이프 (작은 블록) 분산 저장디스크 개수 만큼 읽기/쓰기
RAID 1미러링 (동시에 2개 이상 저장)
RAID 5스트라이프 (작은 블록) 분산 저장오류 검출을 위한 패리티 저장
RAID 6이중 패리티 추가

디지털 기술/데이터 활용

이름정의
N-ScreenN개의 서로 다른 단말기(스마트폰, 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의 일관성과 무결성을 유지하기 위해 트랜잭션의 순차적 진행을 보장하는 직렬화 기법
로킹 단위한꺼번에 로킹할 수 있는 객체의 크기.
데이터베이스, 파일, 레코드, 필드 등이 로킹 단위가 될 수 있습니다.
특징로킹 단위가 클 때로킹 단위가 작을 때
로크 수적음많음
관리 오버헤드쉽다어렵다
병행성 수준낮음(동시 처리 감소)높음(동시 처리 증가)

교착 상태

서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상


교착 상태 발생의 필요 충분 조건

0개의 댓글