정처기 실기 준비

김예진·2024년 4월 15일
0

애플리케이션 테스트 케이스 설계

1. 애플리케이션 테스트 케이스 작성

(1) 소프트웨어 테스트의 이해

소프트웨어 테스트란?

개발된 응용 애플리케이션이나 시스템이 사용자가 요구하는 기능과 성능, 사용성, 안정성 등을 만족하는지 확인하고 노출되지 않은 숨어있는 소프트웨어의 결함을 찾아내는 활동

필요성

  1. 오류 발견 관점
    : 프로그램에 잠재된 오류를 발견하고 이를 수정하여 올바른 프로그램을 개발하기 위해 필요
  2. 오류 예방 관점
    : 프로그램 실행 전에 동료 검토, 워크 스루, 인스펙션 등을 통해 오류를 사전에 발견하는 예방 차원의 필요
  3. 품질 향상 관점
    : 사용자의 요구사항 및 기대 수준을 만족하도록 반복적인 테스트를 거쳐 제품의 신뢰도를 향상하는 품질 보증을 위해 필요

소프트웨어 테스트 원리 [결 완 초 집 살 정 오]

  1. 결합 존재 증명
  • 결함이 존재함을 밝히는 활동
  • 결함이 없다는 것을 증명할 수는 없음
  • 결함을 줄이는 활동
  1. 완벽 테스팅은 불가능
  • 완벽하게 테스팅하려는 시도는 불필요한 시간과 자원낭비
  • 무한 경로(한 프로그램 내의 내부 조건은 무수히 많을 수 있음), 무한 입력값(입력이 가질 수 있는 모든 값의 조합이 무수히 많음)으로 인한 테스트 어려움
  1. 초기 집중
  • 조기 테스트 설계 시 장점 : 테스팅 결과를 단시간에 알 수 있고, 테스팅 기간 단축, 재작업을 줄여 개발 기간 단축 및 결함 예방
  • SW개발 초기 체계적인 분석 및 설계가 수행되지 못하면 그 결과가 프로젝트 후반에 영향을 미치게 되어 비용이 커진다는 요르돈의 법칙 적용
  1. 결함 집중
  • 적은 수의 모듈에서 대다수의 결함이 발견됨
  • 소프트웨어 테스트에서 오류의 80%는 전체 모듈의 20% 내에서 발견
  • 파레토 법칙의 내용은 80:20 법칙 적용
  1. 살충제 페러독스
  • 동일한 테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못함
  • 테스트 케이스의 정기적 리뷰와 개선 및 다른 시각에서의 접근이 필요
  1. 정황 의존성
  • 소프트웨어의 성격에 맞게 테스트 실시
  • 정황과 비즈니스 도메인에 따라 테스트를 다르게 수행
  1. 오류-부재의 궤변
  • 요구사항을 충족시켜주지 못한다면, 결함이 없다고 해도 품질이 높다고 볼 수 없음




데이터 마이닝

  • 대규모로 저장된 데이터 안에서 체계적이고 자동적으로 통계적 규칙이나 패턴을 찾아내는 기술
  • 대규모 데이터에서 의미 있는 패턴을 파악하거나 예측하여 의사결정에 활용하는 기법
  • 데이터의 숨겨진 정보를 찾아내어 이를 기반으로 서비스와 제품에 도입하는 과정
  • 통계분석은 가설이나 가정에 따른 분석, 검증을 하지만 데이터 마이닝은 수리 알고리즘을 활용하여 대규모 데이터에서 의미 있는 정보를 찾아낸다.
  • 텍스트 마이닝, 웹 마이닝 과 함계 다양한 분야에서 활용

데이터 마이닝 절차

  1. 목적 설정
    • 데이터 마이닝을 통해 얻고자 하는 명확한 목적 설정
    • 목적에 따라 사용할 모델과 필요 데이터 정의
  2. 데이터 준비
    • 거래정보, 웹로그 데이터, 고객 정보, 데이터 사용량, 소셜 데이터 등 다양한 데이터 활용
    • 사전에 운영 데이터 접근에 따른 부하 고려
    • 필요시 작업 서버에 저장하여 운영에 지장이 없도록 데이터 준비
    • 데이터 정제를 통해 데이터의 품질을 보장하고 필요시 데이터 추가등을 통해 충분한 양의 데이터 확보
  3. 가공
    • 모델링 목적에 따라 목적 변수 정의
    • 필요한 데이터를 데이터 마이닝 소프트웨어에 적용할 수 있는 형식으로 가공 처리
  4. 마이닝 기법 적용
    • 1단계의 명확한 목적에 맞도록 데이터 마이닝 기법을 적용하여 정보 추출
  5. 정보 검증
    • 데이터 마이닝으로 추출된 정보 검증
    • 테스트 데이터와 과거 데이터를 활용하여 최적의 모델 산정
    • 데이터 마이닝 결과의 업무 적용 보고서 작성 및 활용

데이터 마이닝 주요 기법

분류 규칙

: 과거 데이터로부터 특성을 찾아내어 분류모형을 만들어 이를 토대로 새로운 레코드의 결과 값을 예측하는 기법

  • 마케팅, 고객 신용평가 모형에 활용
    ex) 우수 소객의 분류 모형 구축으로 마케팅 활용

연관 규칙

: 데이터 안에 존재하는 항목들 간의 종속관계를 찾아내는 기법

  • 제품이나 서비스의 교차판매, 매장 진열, 사기 적발 등 다양한 분야에서 활동
    ex) 넥타이 구매고객의 절반이상이 셔츠를 구매한다는 정보 분석을 통해 상품진열

연속 규칙

: 연관 규칙에 시간 관련 정보가 포함된 형태의 기법

  • 개인별 트랜잭션 이력 데이터를 시계열적으로 분석하여 트랜잭션의 향후 발생 가능성 예측
    ex) A 품목을 구매한 회원이 B 품목을 구매할 확률은 75%

데이터 군집화

: 정보가 없는 상태에서 데이터를 분류하는 기법

  • 대상 레코드들을 유사한 특성을 지닌 몇 개의 소그룹으로 분할하는 작업으로 작업의 특성이 분류규칙과 유사
  • 분석대상에 결괏값이 없으며, 판촉활동이나 이벤트 대상을 선정하는 데 활용
    ex) 고객의 지역/연령/성별에 따른 차벼롸 홍보전략




프로토콜

  • 서로 다른 시스템이나 기기들 간의 데이터 교환을 원활히 하기위한 표준화된 통신규약
  • 톰 마릴은 컴퓨터가 메시지를 전달하고, 메시지가 제대로 도착했는지 확인하며, 도착하지 않았을 경우 메시지를 재전송하는 일련의 방법을 '기술적 은어'를 뜻하는 프로토콜이라고 정의

일반적인 기능

  • 데이터 처리 기능
  • 제어기능
  • 관리적 기능

기본 3요소

  1. 구문 (Syntax)
    : 시스템 간의 정보 전송을 위한 데이터 형식, 코딩, 신호 레벨 등의 규정
  2. 의미 (Semantic)
    : 시스템 간의 정보 전송을 위한 제어 정보로 조정과 에러 처리를 위한 규정
  3. 타이밍 (Timing)
    : 시스템 간의 정보 전송을 위한 속도 조절과 순서 관리 규정




인터페이스 기능 구현 기술

JSON

"속성-값 쌍"또는 "키-값 쌍" 으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포멧

  • AJAX에서 많이 사용되고 XML을 대체하는 주요 데이터 포맷
  • 언어 독립형 데이터 포맷으로 다양한 데이터 프로그래밍 언어에서 사용됨
  • 사람이 읽고 쓰기에 용이하며 기계가 분석하고 생성하기에 용이함

장점

  • XML보다 가볍고 빠름
  • 자료 종류에 큰 제한이 없음
  • Javascript코드 안에서 객체 접근이 쉬움

XML

HTML의 단점을 보완한 인터넷 언어로, SGML의 복잡한 단접을 개선한 특수한 목적을 갖는 마크업 언어

  • 송/수신 시스템 간 데이터 연계의 편의성을 위해서 전송되는 데이터 구조를 동일한 형태로 정의
  • 인간과 기계가 모두 이해할 수 있는 텍스트 형태로 마크업 포맷을 정의하기 위한 메타언어
  • 사용자가 직접 문서의 태그를 정의할 수 있으며 다른 사용자가 정의한 태그를 사용할 수 있음

AJAX

자바스크립트를 사용하여 웹 서버와 클라이언트 간 비동기적 으로 XML데이터를 교환하고 조작하기 위한 웹 기술

  • 브라우저가 가지고 있는 XMLHttpRequest객체를 이용해서 전체 페이지를 새로 로드하지 않고 필요한 일부 페이지의 데이터만을 로드하는 기법
  • HTML만으로는 어려운 다양한 작업을 웹 페이지에서 구현해서 이용자가 웹 페이지와 자유롭게 상호 작용할 수 있도록 구현하는 기법

주요 기술

  • XMLHttpRequest
    : 비동기 통신을 담당하는 자바스크립트 객체
  • JavaScript
    : 객체 기반의 스크립트 프로그래밍 언어
  • XML
    : HTML의 단점을 보완한 인터넷 언어
  • DOM
    : XML문서를 트리 구조의 형태로 접근할 수 있게 해주는 API
  • XSLT
    : XML문서를 다른 XML 문서로 변환하는데 사용하는 XML기반 언어
  • HTML
    : WWW문서를 표현하는 표준화된 마크업 언어
  • CSS
    : 마크업 언어가 실제 표시되는 방법을 기술하는 언어

REST

웹과 같은 분산 하이퍼미디어 환경에서 자원의 존재/상태 정보를 표준화된 HTTP 메서드로 주고받는 웹 아키텍처

  • 리소스(자원), 메서드(처리), 메시지 3가지 요소로 구성




프로세스 스케줄링

CPU를 사용하려고 하는 프로세스들 사이의 우선순위를 관리하는 작업

  • 처리율과 CPU이용률을 증가시키고 오버헤드, 응답시간, 반환시간, 대기시간을 최소화시키기 위한 기법
  • 특정 프로세스가 적합하게 실행되도록 프로세스 스케줄링에 의해 프로세스 사이에서 CPU 교체가 일어남

주요 용어

서비스 시간

: 프로세스가 결과를 산출하기까지 소요되는 시간

응답시간 (Response Time)

: 프로세스들이 입력되어 서비스를 요청하고, 반응하기 시작할 때까지 소요되는 시간

반환시간 (Turnaround Time)

: 프로세스들이 입력되어 수행하고 결과를 산출하기까지 소요되는 시간
반환시간 = 대기시간 + 수행시간

대기시간

: 프로세스가 프로세서에서 할당되기까지 큐에 대기하는 시간

  • 프로세스가 도착 즉시 프로세서에 할당되면 대기시간은 '0'이 됨

평균 대기시간

: 프로세스가 대기 큐에서 대기하는 평균 시간

  • 대기시간이 '0'인 프로세스도 평균 대기시간에 합산하여 결과 도출

종료시간

: 요구되는 Processing Time을 모두 수행하고 종료된 시간

시간 할당량 (Time Quantum or Time Slice)

: 한 프로세스가 프로세서를 독점하는 것을 방지하기 위해 서비스되는 시간할당량

응답량

(대기시간 + 서비스 시간) / 서비스 기간

  • HRN(Highest Responce ratio Next) 스케줄링에서 사용
  • HRN 스케줄에서 응답률이 높으면 우선순위가 높다고 판단



선점형 스케줄링 (Preemptive Scheduling)

: 하나의 프로세스가 CPU를 차지하고 있을 떄, 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유하는 스케줄링 방식

장점단점
- 비교적 빠른 응답
- 대화식 시분할 시스템에 적합
- 높은 우선수위 프로세스들이 들어오는 경우 오버헤드 초래
  • 실시간 응답 환경 , Deadline응답 환경에서 활용

라운드 로빈 (RR / Round Robin)

  1. 프로세스는 같은 크기의 CPU시간을 할당 (시간 할당량)
  2. 프로세스가 할당된 시간 내에 처리 완료를 못하면 준비 큐 리스트의 가장 뒤로
  3. CPU는 대기 중인 다음 프로세스로 넘어간다.
  • 균등한 CPU 점유시간
  • 시분할 시스템을 사용

SRT (Shortest Remaining Time First)

  1. 가장 짧은 시간이 소요되는 프로세스를 먼저 수행
  2. 남은 처리시간이 더 짧다고 판단되는 프로세스가 준비 큐에 생기면 언제라도 프로세스가 선점
  • 비선점 방식의 스케줄링 기법에 선점방식을 도입한 기법
  • 짧은 수행 시간 프로세스를 우선 수행

다단계 큐 (MLQ / Multi Level Queue)

  1. 작업들을 여러 종류 그룹으로 분할
  2. 여러 개의 큐를 이용하여 상위단계 작업에 의한 하위단계 작업이 선점
  • 각 큐는 자신만의 독자적인 스케줄링을 가짐 (독립된 스케줄링 큐)

다단계 피드백 큐 (MLFQ / Multi Level Feedback Queue)

  1. 새로운 프로세스는 높은 우선순위, 프로세스의 실행시간이 길어질수록 점점 낮은 우선순위 큐로 이동
  2. 라운드 로빈 방식을 적용
  • FCFS(FIFO) + 라운드 로빈 기법
  • 입출력 위주와 CPU위주인 프로세스의 특성에 따라 큐마다 서로 다른 CPU 시간 할당량을 부여
  • 마지막 단계는 RR처리



비선점형 스케줄링 (Non Preemptive Scheduling)

: 한 프로세스가 CPU를 할당받으면 작업 종료 후 CPU 반환 시까지 다른 프로세스는 CPU 점유가 불가능한 스케줄링 방식

장점단점
- 응답시간 예상이 용이
- 모든 프로세스에 대한 요구를 공정하게 처리
- 짧은 작업을 수행하는 프로세스가 긴 작업 종료 시까지 대기
  • 처리시간 편차가 적은 특정 프로세스 환경에서 활용

우선순위 (Priority)

  • 프로세스별로 우선순위가 주어지고 우선순위에 따라 CPU를 할당하는 스케줄링 기법
  • 동일 순위는 FCFS(FIFO)
  • 주요 / 긴급 프로세스에 대한 우선 처리
  • 설정, 자원 상황 등에 따른 우선순위 선정

기한부 (Deadline)

  • 작업들이 명시된 시간이나 기한 내에 완료되도록 계획하는 스케줄링 기법
  • 요청에 명시된 시간 내 처리를 보장

FCFS (First Come First Service) / FIFO

  • 프로세스가 대기 큐에 도착한 순서에 따라 CPU를 할당하는 스케줄링 기법

SJF (Shortest Job First)

  • 프로세스가 도착하는 시점에 따라 그 당시 가장 작은 서비스 시간을 갖는 프로세스가 종료 시까지 자원을 점유하는 스케줄링 기법
  • 준비 큐 작업 중 가장 짧은 작업부터 수행, 평균 대기 시간 최고
  • CPU 요구 시간이 긴 작업과 짧은 작업 간의 불평등이 심하여 CPU 요구시간이 긴 프로세스는 기아 현상 발생

HRN (Highest Response Ration Next)

  • 대기 중인 프로세스 중 현재 응답률이 가장 높은 것을 선택하는 스케줄링 기법
  • SJF의 약점인 기아 현상을 보완한 기법으로 긴 작업과 짧은 작업 간의 불평등 완화
    HRN의 우선순위 = (대기시간 + 서비스 시간 ) / 서비스 시간



DDL (데이터 정의어)

테이블과 같은 데이터 구조를 정의하는 데 사용되는 명령어들로 특정 구조를 생성, 변경, 삭제, 이름을 바꾸는 데이터 구조와 관련된 명령어들

대상

도메인

: 하나의 속성이 가질 수 있는 원자값들의 집합

  • 속성의 데이터 타입과 크기, 제약조건 등의 정보

스키마

: 데이터베이스의 구조, 제약조건 등의 정보를 담고 있는 기본적인 구조

  • 외부 스키마, 개념 스키마, 내부 스키마

테이블

: 데이터 저장 공간

: 하나 이상의 물리 테이블에서 유도되는 가상의 테이블

인덱스

: 검색을 빠르게 하기 위한 데이터 구조

  • 테이블에 대한 조회 속도를 높여 주는 자료 구소
  • 체이블의 특정 레코드 위치를 알려 주는 용도로 사용



WHERE절 조건

비교

  • =
    : 값이 같은 경우 조회
  • <>, !=
    : 값이 다른 경우 조회
  • <, <=, >, >=
    : 비교 연산에 해당하는 데이터 조회

범위

  • BETWEEN
    : 칼럼 BETWEEN 값1 AND 값2 에서 값1보다 크거나 같고, 값2보다 작거나 같은 데이터 조회

집합

  • IN
    : 칼럼 IN (값1, 값2 ..) 에서 칼럼이 IN 안에 포함된 경우의 데이터 조회
  • NOT IN
    : 칼럼 NOT IN (값1, 값2 ..) 에서 칼럼이 IN 안에 포함되어 있지 않은 경우의 데이터 조회

패턴

  • LIKE
    : 칼럼 LIKE 패턴 에서 칼럼이 패턴에 포함된 경우의 데이터 조회
패턴설명
%0개 이상의 문자열과 일치
[ ]1개의 문자와 일치
[^]1개의 문자와 불일치
_특정 위치의 1개의 문자와 일치

NULL

  • IS NULL
    : IS NULL 에서 컬럼이 NULL인 데이터 조회
  • IS NOT NULL
    : IS NOT NULL 에서 컬럼이 NULL이 아닌 데이터 조회

복합조건

  • AND
    : 2조건 모두를 반족하는 데이터 조회
  • OR
    : 2 조건 중 하나를 만족하는 데이터 조회
  • NOT
    : 조건에 해당하지 않는 데이터 조회



트랜잭션

인가받지 않은 사용자로부터 데이터를 보장하기 위해 DBMS가 가져야 하는 특성이자 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위

특성

원자성 (Atomicity)

: 트랜잭셩을 구성하는 연산 전체가 모두 정상적으로 실행되거나 모두 취소되어야 하는 성질

  • 트랜잭션의 연산 전체가 성공 또는 실패 (All or North-ing)되어야 하는 성질
  • Commit / ROllback
  • 회복성 보장

일관성 (Consistency)

: 시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 수행 완료 후의 상태가 같아야 하는 성질

  • 무결성 제약조건
  • 동시성 제어

격리성=고립성 (Isolation)

: 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 한다는 성질

  • 데이터베이스의 고립화 수준
    - Read Uncommitted
    - Read Cpmmitted
    - Repeatable Read
    - Serializable Read

영속성 (Durability)

: 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장되어야 하는 성질

  • 회복기법



트랜잭션의 상태 변화

  1. 활동 상태 (Active)
    : 초기 상태, 트랜잭션이 실행 중일 때 가지는 상태

  2. 부분 완료 상태 (Partially Committed)
    : 마지막 명령문이 실행된 후에 가지는 상태

  3. 완료 상태 (Committed)
    : 트랜잭션이 성공적으로 완료된 후 가지는 상태

  4. 실패 상태 (Failed)
    : 정상적인 실행이 더 이상 진행될 수 없을 때 가지는 상태

  5. 철회 상태 (Aborted)
    : 트랜잭션이 취소되고 데이터베이스가 트랜잭션 시작 전 상태로 환원된 상태



TCL (트랜잭션 제어언어)

COMMIT

: 트랜잭션을 메모리에 영구적으로 저장하는 명령어

ROLLBACK

: 트랜잭션 내역을 저장 무효화시키는 명령어

CHECKPOINT

: ROLLBCK을 위한 시점을 지정하는 명령어




병행 제어

다수 사용자 환경에서 여러 트랜잭션을 수행할 때 데이터베이스 일관성 유지를 위해 상호 작용을 제어하는 기법

병행 제어 기법의 종류

로킹

: 하나의 트랜잭션을 실행하는 동안 특정 데이터 항목에 대해서 다른 트랜잭션이 동시에 접근하지 목하도록 상호배제기능을 제공

  • 데이터베이스, 파일, 레코드는 로킹 단위가 된다.
  • 로킹 단위가 작아지면 데이터베이스 공유도와 로킹 오버헤드 증가

낙관적 검증

: 트랜잭션이 어떠한 검증도 수행하지 않고 일단 트랜잭션을 수행하고 트랜잭션 종료 시 검증을 수행하여 데이터베이스에 반영하는 기법

타임 스탬프 순서

: 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트래잭션이 실행을 시작하기 전에 타임스탬프를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법

다중버전 동시성 제어

: 트랜잭션의 타임스탬프와 접근하려는 데이터의 타임스탬프를 비교하여 직렬가능성이 보장되는 적절한 버전을 선택하여 접근하도록 하는 기법




회복 기법

트랜잭션을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업

회복 기법 종류

REDO

: 데이터베이스가 비정상적으로 종료되었을 때 디스크에 저장된 로그를 분석하여 트랜잭셔의 시작와 Commit에 대한 기록이 있는 트랜잭션들의 작업을 재작업하는 기법

  • 데이터베이스 내용 자체가 손상된 경우 가장 최근의 복제본을 적제한 후 이후 일어난 변경만을 로그를 이용하여 재실행함으로써 데이터베이스를 복원하는 기법

UNDO

: 데이터베이스가 비정상적으로 종료되었을 때 디스크에 저장된 로그를 분석하여 트랜잭션의 시작은 있지만 Commit기록이 없는 트랜잭션들이 작업한 변경 내용들을 모두 취소하는 기법

  • 데이터베이스 내용 자체는 손상되지 않았지만 변경 중이거나 변경된 내용에 대한 신뢰성을 잃어버린 경우 모든 변경 내용을 취소하여 복원하는 기법



DoS공격

  • 시스템을 악의적으로 공격해서 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격
  • 특정 서버에게 수많은 접속 시도를 만들어 다른 이용자가 정상적으로 서비스 이용을 하지 못하게 하거나 서버의 TCP 연결을 소진시키는 등의 공격
  • 1대의 공격자 컴퓨터에서 타킷 시스템에 악성 패킷을 보내는 방식으로 공격

종류

SYN 플러딩 (SYN Flooding)

  • TCP 프로토콜의 구조적인 문제를 이용한 공격
  • 서버의 동시 가용 사용자 수를 SYN패킷만 보내 점유하여 다른 사용자가 서버를 사용 불가능하게 하는 공격
  • 공격자는 ACK를 발송하지 않고 계속 새로운 연결 요청을 하게 되어 서버는 자원할당을 해지하지 않고 자원만 소비하여 고갈됨

UDP 플러딩 (UDP Flooding)

  • 대량의 UDP패킷을 만들어 임의의 포트 번호로 전송하여 응답 메시지(ICMP)를 생성하게 하여 지속해서 자원을 고갈시키는 공격
  • ICMP 패킷은 변조되어 공격자에게 전달되지 않아 대기함

스머프 (Smurf) / 스머핑 (Smurfing)

  • 출발지 주소를 공격 대상의 IP로 설정하여 네트워크 전체에게 ICMP Echo패킷을 직접 브로드캐스팅하여 마비시키는 공격
  • 바운스 사이트라고 불리는 제3의 사이트를 이용해 공격

죽음의 핑 (PoD / Ping Of Death)

  • ICMP 패킷을 정상적인 크기보다 아주 크게 만들어 전송하면 다수의 IP 단편화가 발생해 처리하는 과정에서 많은 부하가 발생하거나 오버플로우가 발생하여 정상적인 서비스를 하지 못하도록 하는 공격기법

랜드 어택 (Land Attack)

  • 출발지IP와 목적지IP를 같은 패킷 주소로 만들어 보냄으로써 수신자가 자기 자신에게 응답을 보내게 하여 시스템의 가용성을 침해하는 공격기법

티어 드롭 (Tear Drop)

  • IP패킷의 재조합 과정에서 잘못된 Fragment Offset 정보로 인해 수신시스템이 문제를 발생하도록 만드는 DoS 공격
  • 공격자는 IP Fragment Offset 값을 서로 중첩되도록 조작하여 전송하고 이를 수신한 시스템이 재조합하는 과정에서 오류가 발생, 시스템의 기능을 마비시키는 공격방식

봉크 (Bonk)

  • 패킷을 분할하여 보낼 때 처음 패킷을 1번으로 보낸 후 다음 패킷을 보낼 때도 순서번호를 모두 1번으로 조작하여 전송하는 DoS 공격
  • 똑같은 번호로 전송돼서 오류를 일으킴

보잉크 (Boink)

  • 처음 패킷을 1번으로 보낸 후 다음 패킷을 nn번.. 등으로 중간에 패킷 시퀀스 번호를 비정상적인 상태로 보내서 부하를 일으키게 하는 공격기법




DDoS공격

  • DoS의 또 다른 형태로 여러 대의 공격자를 분산 배치하여 동시에 동작하게 함으로써 특정 사이트를 공격하는 기법
  • 해커들이 취약한 인터넷 시스템에 대한 액세스가 이뤄지면 침입한 시스템에 소프트웨어를 설치하고 이를 실행시켜 원격에서 공격을 개시
  • DoS와 다르게 공격을 하도록 지시한다.
  • 수많은 감염 호스트를 통해 공격을 감행한다.

공격 구성요소

  • 핸들러 (Handler)
    : 마스터 시스템의 역할을 수행하는 프로그램
  • 에이전트 (Agent)
    : 공격 대상에 직접 공격을 가하는 시스템
  • 마스터 (Master)
    : 공격자에게서 직접 명령을 받는 시스템 / 여러 대의 에이전트를 관리하는 역할
  • 공격자 (Attacker)
    : 공격을 주도하는 해커의 컴퓨터
  • 데몬 프로그램 (Daemon)
    : 에이전트 시스템의 역할을 수행하는 프로그램



공격 대응 방안

차단 정책 업데이트

: 공격 규모를 확인하여 가용성이 침해될 수 있는 지점을 확인 및 데이터 기반 차단 정책 업데이트

좀비 PC IP확보

: 공격자는 대부분 Source IP를 위조하므로 IP 위변조 여부를 확인하는 절차 필요

보안 솔루션 운영

: 방화벽, 침입 탐지 시스템 등의 보안 솔루션 운영

홈페이지 보안 관리

: 홈페이지에 대한 모의해킹 등을 후ㅐㅇ하여 보안 유지

시스템 패티

: 시스템에 존재하는 취약점을 패치를 통해 해결



종류

대역폭 소진 공격 (3~4계층)

  • UDP/ICMP Traffic Flooding
  • TCP Traffic Flooding
  • IP Flooding

서비스 마비 공격 (7계층)

  • HTTP Traffic
  • HTTP Header/Option Spoofing
  • Other L7 Service Flooding




세션 하이재킹

케빈 미트닉이 사용했던 공격 방법 중 하나로 TCP의 세션 관리 취약점을 이용한 공격기법

  • TCP Sequence Number의 보안상 취약점으로 발생
  • Victim과 Server 사이의 패킷을 스니핑하여 Sequence Number를 획득하고 공격자는 데이터 전송 중인 Victim과 Server 사이를 비동ㄱ디화 상태로 강제적으로 만들고 스니핑하여 획득한 Client Sequence Number를 이용하여 공격하는 방식
  • 비동기화 상태로 패킷이 유실되어 재전송 패킷이 증가한다.
  • 세션 하이재킹을 통해 ACK Storm 증가, 네트워크 부하 증가 현상이 발생한다.

세션 하이재킹의 탐지 방법

  • 비동기화 상태 탐지
  • ACK 패킷 비율 모니터링
  • 특정 세션에서 패킷 유실 및 재전송이 증가되는 것을 탐지
  • 기대하지 않은 접속의 리셋 탐지




네트워크 공격

스니핑 (Sniffing)

: 공격대상에게 직접 공격을 하지 않고 데이터만 몰래 들여다보는 수동적 공격 기법

네트워크 스캐너 (Scanner), 스니퍼(Sniffer)

: 네트워크 하드웨어 및 소프트웨어 구성의 취약점 파악을 위해 공격자가 취약점을 탐색하는 공격 도구

패스워드 크래킹 (Password Cracking)

: 사전 크래킹 공격, 무차별 크래킹 공격, 패스워드 하이브리드 공격, 레인보우 테이블 공격 활용

IP스푸핑 (IP Spoofing)

: 침입자가 인증된 컴퓨팅 시스템인 것처럼 속여서 타킷 시스템의 정보를 빼내기 위해서 본인의 패킷 헤더를 인증된 호스트의 IP 주소로 위조하여 타깃에 전송하는 공격기법

ARP스푸핑 (ARP Spoofing)

: 공격자가 특정 호스트의 MAC 주소를 자신의 MAC 주소로 위조한 ARP Reply를 만들어 희생자에게 지속적으로 전송하여 희생자의 ARP Cache Table에 특정 호스트의 MAC 정보를 공격자의 MAC 정보로 변경, 희생자로부터 특정 호스트로 나가는 패킷을 공격자가 스니핑하는 공격기법

ICMP Redirect 공격

: 3계층에서 스니핑 시스템을 네트워크에 존재하는 또 다른 라우터라고 알림으로써 패킷의 흐름을 바꾸는 공격기법

  • ICMP Redirect 메시지를 공격자가 원하는 형태로 만들어서 특정 목적지로 가는 패킷을 공격자가 스니핑하는 공격기법

트로이 목마 (Trojan Horses)

: 악성 루틴이 숨어 있는 프로그램으로 겉보기에는 정상적인 프로그램으로 보이지만 실행하면 악성 코드를 실행하는 프로그램




보안 관련 용어

스피어피싱 (Spear Phising)

: 사회공학의 한 기법으로 특정 대상을 선정한 후 그 대상에게 일반적인 이메일로 위장한 메일을 지속적으로 발송하여 발송 메일의 본문 링크나 첨부된 파일을 클릭하도록 유도하여 사용자의 개인정보를 탈취하는 공격

스미싱 (Smishing)

: 문자메시지를 이용하여 신뢰할 수 있는 사람 또는 기업이 보낸 것처럼 가장하여 개인 비밀정보를 요구하거나 휴대폰 소액 결제를 유도하는 피싱 공격 (사이버 사기)

큐싱 (Qshing)

: 스마트폰을 이용하여 금융 업무를 처리하는 사용자에게 인증 등이 필요한 것처럼 속여 QR코드를 통해 악성 앱을 내려받도록 유도, 금융 정보 등을 빼내는 피싱 공격 (사이버 사기)

  • 최근 제로페이 확산에 따라 피해 증가

봇넷 (Botnet)

: 악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 형태

ART 공격 (Advanced Persistent Threat)

: 특정 타깃을 목표로 하여 다양한 수단을 통한 지속적이고 지능적인 맞춤형 공격기법

  • 특수목적의 조직이 하나의 표적에 대해 다양한 IT기술을 이용하여 지속적으로 정보를 수집하고 취약점을 분석하여 피해를 주는 공격기법

공급망 공격 (Supply Chain Attack)

: 소프트웨어 개발사의 네트워크에 침투하여 소스 코드의 수정 등을 통해 악의적인 코드를 삽입하거나 배포 서버에 접근하여 악의적인 파일로 변경하는 방식을 통해 사용자 PC에 소프트웨어를 설치 또는 업데이트 시에 자동적으로 감염되도록 하는 공격기법

제로데이 공격 (Zero Day Attack)

: 보안 취약점이 발견되어 널리 공표되기 전에 해당 취약점을 악용하여 이루어지는 보안 공격기법

  • 공격의 신속성을 의미하는 것으로 일반적으로 컴퓨터에서 취약점이 발견되면 제작자나 개발자가 보완하는 패치를 배포하고 이를 다운받지만 이 공격을 대응책이 공표되기 전에 공격이 이루어져 대처 방법이 없음

웜 (Worm)

: 스스로를 복제하여 네트워크 등의 연결을 통하여 전파하는 악성 소프트웨어 컴퓨터 프로그램

  • 컴퓨터 바이러스와 비슷하지만 바이러스와 달리 독자적으로 실행되며 다른 실행 프로그램이 필요하지 않음

악성 봇 (Malicious Bot)

: 스스로 실행되지 못하고 해커의 명령에 의해 원격에서 제어 또는 실행이 가능한 프로그램 혹은 코드

  • 주로 취약점이나 백도어 등을 이용하여 전파되며 스팸 메일 전송이나 DDoS에 악용
  • 사용자들에게 잘 알려진 '좀비 PC'는 악성 봇에 의해 감염된 PC

사이버 킬체인 (Cyer Kill Chain)

: 공격형 방위시스템으로 지능적, 지속적 사이버 공격에 대해 7단ㄴ계 프로세스별 공격분석 및 대응을 체계화한 ART 공격 방어 분석 모델

랜섬웨어 (Ransomware)

: 악성 코드의 한 종류로 감염된 시스템의 파일들을 암호화하여 복호화할 수 없도록 하고 피해자로 하여금 암호화된 파일을 인질처럼 잡고 몸값을 요구 악성 소프트웨어

  • 현금이나 비트코인 등을 받고 복호화 해주는 범죄행위에 이용되고 있음

이블 트윈 (Evil Twin) 공격

: 무선 Wifi피싱 기법으로 공격자는 합법적인 Wifi제공자처럼 행세하며 노트북이나 휴대 전화로 핫스팟에 연결한 무선 사용자들의 정보를 탈취하는 무선 네트워크 공격기법

사회공학 (Social Engineering)

: 사람들의 심리와 행동 양식을 교묘하게 이용해서 원하는 정보를 얻는 공격기법
ex) 도청

트러스트존 (Trustzone)

: 프로세서 안에 독립적인 보안 구역을 따로 두어 중요한 정보를 보호하는 ARM사에서 개발한 보안 기술로 프로세서 안에 독립적인 보안 구역을 따로 두어 중요한 정보를 보호하는 하드웨어 기반의 보안 기술

타이포스쿼팅 (Typosquatting)

: 네티즌들이 사이트에 접속할 때 주소를 잘못 입력하거나 철자를 빠뜨리는 실수를 이용하기 위해 이와 유사한 유명 도메인을 미리 등록하는 일 (=URL 하이재킹)




서버 접근 통제

사람 또는 프로세스가 서버 내 파일에 읽기, 쓰기, 실행 등의 접근 여부를 허가하고나 거부하는 기능

  • 비인가자로부터 객체의 기밀성, 무결성, 가용성을 보장한다.

유형

임의적 접근 통제 (DAC / Discretionary Access Control)

: 주체나 그룹의 신분에 근거하여 객체에 대한 접근을 제한하는 방법

  • 신분 기반 접근통제 정책
  • DAC에서 사용자는 자원과 관련된 ACL이 수정됨으로써 자원에 대한 권한을 부여

강제적 접근 통제 (MAC / Mandatory Access Control)

: 객체에 포함된 정보의 허용등급과 접근 정보에 대하여 주체가 갖는 접근 허가 권한에 근거하여 객체에 대한 접근을 제한하는 방법

  • 규칙 기반 접근통제 정책

역할 기반 접근 통제 (RBAC / Role Based Access Control)

: 중앙 관리자가 사용자와 시스템의 상호관계를 통제하며 조직 내 맡은 역할에 기초하여 자원에 대한 접근을 제한하는 방법

  • RBAC에서 자원에 대한 접근은 사용자에게 할당된 역할에 기반
  • 관리자는 사용자에게 특정한 권리와 권한이 정의된 역할을 할당




3A

유무선 이동 및 인터넷 환경에서 가입자에 대한 안전하고 신뢰성 있는 인증, 권한 부여, 계정 관리를 체계적으로 제공하는 정보 보호 기술

인증 (Authentication)

  • 접근을 시도하는 가입자 또는 단말에 대한 식별 및 신분을 검증
  • 주체의 신원을 검증하기 위한 활동
  • 주체의 신원을 객체가 인증해 주는 행위

권한 부여 (Authorization)

  • 검증된 가입자나 단말에게 어떤 수준의 권한과 서비시를 허용
  • 인증된 주체에게 접근을 허용하는 활동
  • 특정 업무를 수행할 권리를 부여하는 행위

계정 관리 (Accounting)

  • 리소스 사용에 대한 정보를 수집하고 관리하는 서비스
  • 주체의 접근을 추적하고 행동을 기록하는 활동
  • 식별, 인증, 인가, 감사 개념을 기반으로 수립



인증 관련 기술

SSO (Single Sign On)

: 커버로스에서 사용되는 기술로 한 번의 인증 과정으로 여러 컴퓨터상의 자원을 이용할 수 있도록 해주는 인증 기술

커버로스 (Kerberos)

: 1980년대 중반 MIT의 Athena 프로젝트의 일환으로 개발되었으며 클라이언트/서버 모델에서 동작하고 대칭 키 암호기법에 바탕을 둔 티켓 기반의 프로토콜




암호 알고리즘

데이터의 무결성 및 기밀성 확보를 위해 정보를 쉽게 해독할 수 없는 형태로 변환하는 기법

양방향 방식

구분대칭 키 암호 방식비대칭 키 암호 방식
대칭 키(비밀 키)비대칭 키(공개키, 사설키)
키의 관계암호화 키 = 복호화 키암호화 키 != 복호화 키
키 개수n(n-1) / 22n
암호 알고리즘공개공개
장점계산 속도가 빠름암호화 키 사전 공유 불필요
관리해야 할 키 개수가 적음
단점키 분배 및 관리의 어려움
기밀성만 보장
계산 속도 느림
알고리즘DES,AES,SEED디피-헬만, RSA

대칭 키 암호 방식

: 암호화와 복호화에 같은 암호 키를 쓰는 알고리즘

  • 비밀키 전달을 위한 키 교환이 필요하고 암호화 및 복호화의 속도가 빠르다

DES **
: 1975년 IBM에서 개발하고 NIST에서 발표한 대칭 키 기반의 블록 암호화 알고리즘

  • 블록 크기 = 64 / 키 길이 = 56(페이스텔 구조) / 16라운드 암호화 알고리즘
  • DES를 3번 적용하여 보안을 더욱 강화한 3DES도 활용됨

SEED
: 1999년 국내 KISA이 개발한 블록 암호화 알고리즘

  • 128bit비밀키로부터 생성된 16개의 64bit 라운드 키를 사용하여 총 16회의 라운드를 거쳐 128bit의 평문 블록을 암호화 블록을 암호화하여 출력하는 방식
  • 블록 크기 = 128 / 키 길이 = 128, 256

AES **
: 2001년 NIST에서 발표한 블록 암호화 알고리즘

  • DES의 개인 키에 대한 전사적 공격이 가능해지고 3DES의 성능문제를 극복하기 위해 개발
  • 블록 크기 = 128 / 키 길이 = 128,192,256
  • 라운드 수 = 10, 12, 14 / 한 라운드는 4가지 계층으로 구성

ARIA
: 2004년 국가정보원과 산학연구협회가 개발한 블록 암호화 알고리즘

  • 학계, 연구기관, 정부의 영문 앞글자로 구성
  • 블록 크기 = 128, 키 길이 = 128, 192, 256
  • 경량 환경 및 하드웨어에서의 효율성 향상을 위해 개발되었으며 ARIA가 사용하는 대부분의 연산은 단순한 바이트 단위 연산으로 구성

IDEA
: DES를 대체하기 위해 스위스 연방기술 기관에서 개발한 블록 암호화 알고리즘

  • 128bit의 키를 사용하여 64bit의 평문을 8라운드에 거쳐 64bit의 암호문을 만듦

LFSR
: 시프트 레지스터의 일종으로 레지스터에 입력되는 값이 이전 상태 값들의 선형 함수로 계산되는 구조로 되어 있는 스트림 암호화 알고리즘

  • 사용되는 선형 함수는 주로 XOR이고 초기 비트 값은 seed라고 한다.

Skipjack
: NSA에서 개발한 Cipper 칩에 내장된 블록 알고리즘

  • 소프트웨어로 구현되는 것을 막고자 Fortezza Card에 칩 형태로 구현됨
  • 전화기와 같이 음성을 암호화하는데 주로 사용되고 64비트의 입/출력, 80비트의 키, 32라운드를 가짐

블록 암호 방식

: 긴 평문을 암호화하기 위해 고정 길이의 블록을 암호화하는 블록 암호 알고리즘을 반복하는 방법
ex) DES, AES, SEED

스트림 암호 방식

: 매우 긴 주기의 난수열을 발생시켜 평문과 더불어 암호문을 생성하는 방식
ex) RC4



비대칭 키 암호 방식

: 사전에 개인 키를 나눠 가지지 않은 사용자들이 안전하게 통신하는 방식

  • 공개키와 개인 키가 존재하며, 공개키는 누구나 알 수 있지만 그에 대응하는 개인 키는 키의 소유자만이 알 수 있어야 한다. (공개키는 보안 타협 없이 공개적으로 배포가 가능하다.)
  • 공개키로 암호화된 메시지는 반드시 개인 키로 복호화해야 함
  • 자신만이 보관하는 비밀키를 이용하여 인증, 전자서명 등에 적용이 가능함

디피-헬만
: 최초의 공개키 알고리즘으로 1976년에 고안한 알고리즘으로서 유한 필드 내에서 이산대수의 계산이 어려운 문제를 기본 원리로 하고 있음

  • Differ-Helman은 공개키 암호 방식의 개념을 이용하여 두 사용자 간에 공통의 암호화 키를 안전하게 공유할 방법을 제시하였으며 많은 키 분배 방식에 관한 연구의 기본이 됨 (최초의 비밀키 교환 프로토콜)

RSA
: 1977년 3명의 수학 교수가 고안한 큰 인수의 곱을 소인수 분해하는 수학적 알고리즘 이용하는 공개키 암호화 알고리즘

  • 비밀키의 복호화가 어려운 RSA안전성은 소인수 분해 문제의 어려움에 근거를 두고 있음

ECC
: 1985년 RSA 암호 방식에 대한 대안으로 처음 제안

  • ECC는 유한체 위에서 정의된 타원곡선 군에서의 이산대수의 문제에 기초한 공개키 암호화 알고리즘
  • PKI기반의 RSA의 문제점인 속도와 안전성 해결하기 위해 타원 기반 구조체의 안정성과 효율성을 기반으로 생성되었고 RSA보다 키의 비트 수를 적게하면서 동일한 성능을 제공하는 것이 가장 큰 특징

EIGAMAL
: 1984년에 제안한 공개키 알고리즘

  • 이산대수의 계산이 어려운 문제를 기본 원리로 하고 있으며 RSA와 유사하게 전자서명과 데이터 암/복호화에 함께 사용가능

RSA

: 현재 비대칭 키 암호방식 중에서 가장 널리 쓰이고 있는 방식

  • 소인수 분해의 어려움을 이용한 방식

디피-헬만

: 암호 키를 교환하는 방법으로써 두 사람이 암호화되지 않은 통신망을 통해 공통의 비밀키를 공유할 수 있도록 하는 방식

ECC

EIGamal



해시 암호화 알고리즘

MD5 **
: 1991년에 MD4를 개선한 암호화 알고리즘으로 프로그램이나 파일의 무결성 검사에 사용

  • 각각의 512비트짜리 입력 메시지 블록에 대해 차례로 동작하여 128비트의 해시값을 생성하는 해시 알고리즘

SHA-1
: 1993년 NSA에서 미 정부 표준으로 지정되었고 DSA에서 사용

  • 160비트의 해시값을 생성하는 해시 알고리즘

SHA-256/384/512
: SHA알고리즘의 한 종류로서 256비트의 해시값을 생성하는 해시함수

  • AES의 키 길이에 대응하도록 출력 길이를 늘인 해시 알고리즘

HAS-160
: 국내 표준 서명 알고리즘 KCDSA를 위하여 개발된 해시함수

  • MD5와 SHA1의 장점을 취하여 개발된 해시 알고리즘

HAVAL
: 메시지를 1024bits 블록으로 나누고 128, 160, 192, 224, 256 비트인 메시지 다이제스트를 출력하는 해시 알고리즘




IPSec

IP계층에서 무결성과 인증을 보장하는 인증 헤더와 기밀성을 보장하는 암호화를 이용한 IP보안 프로토콜

기능

기밀성

: 대칭 암호화를 통해 전송 데이터에 대한 기밀성 제공

비 연결형 무결성

: 메시지가 위/변조되지 않았음을 보장하는 특성 제공

인증

: 데이터 원천 인증 및 송신처 인증

재전송 공격 방지

: 송신 측에서 IP패킷별로 순서번호를 통해 재전송 공격 방지

접근 제어

: Security Policy를 통해 시스템 접근 제어

동작모드

전송 모드

: IP 패킷의 페이로드를 보호하는 모드

  • 즉 IP상위 프로토콜 데이터를 보호하는 모드

터널 모드

: IP 패킷 전체를 보호하는 모드

  • IP패킷 전체를 IPSec으로 캡슐화하여 IP헤더를 식별할 수 없기 때문에 네트워크상 패킷 전송이 불가능
  • 전송구간 주소 정보를 담은 New IP헤더 추가

프로토콜

인증(AH) 프로토콜

: MAC을 이용하여 인증과 송신처 인증을 제공해주는 프로토콜로 기밀성은 제공하지 않은 프로토콜

  • 무결성, 인증 제공

암호화(ESP) 프로토콜

: MAC와 암호화를 이용하여 인증과 송신처 인증과 기밀성을 제공하는 프로토콜

  • 기밀성, 무결성, 인증 제공

키 관리(IKE) 프로토콜

: 공개된 네트워크를 통하여 키를 어떻게 할 것인가를 정의, IKE교환을 위한 메시지를 전달하는 프로토콜

  • Key를 주고받는 알고리즘




입력 데이터 검증 및 표현

입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목들

  • 입력 데이터로 인해 발생하는 문제를 예방하기 위해서는 소프트웨어 개발의 구현 단계에서 유효성 검증 체계를 갖추고 점증되지 않은 데이터의 입력을 처리할 수 있도록 구현해야 함

입력 데이터 검증 및 표현 취약점

XSS (Corss Site Scripting)

: 검증되지 않은 외부 입력 데이터가 포함된 웹페이지가 전송되는 경우 사용자가 해당 웹페이지를 열람함으로써 웹페이지에 포함된 부적절한 스크립트가 실행되는 공격

대책

  • 특수문자 등록을 방지하기 위해 특수 문자 필터링
  • HTML태그 사용 금지
  • 자바스크립트로 시작하는 문자열은 모두 문자열 변환처리

유형

  • Stored XSS
    : 방문자들이 악성 스크립트가 포함된 페이지를 읽어 봄과 동시에 악성 스크립트가 브라우저에서 실행되면서 감염되는 기법
  • Reflected XSS
    : 공격용 악성 URL을 생성한 후 이메일로 사용자에게 접속하면 사용자가 URL클릭 시 즉시 공격 스크립트가 피해자로 반사되어 접속 사이트에 민감정보를 공격자에게 전송하는 기법
  • DOM (Document Object Model) XSS
    : 공격자는 DOM 기반 XSS 취약점이 있는 브라우저를 대상으로 조작된 URL을 이메일을 통해 발송하고 피해자가 클릭 시 공격 피해를 당하는 기법

사이트 간 요청위조(CSRF / Cross-Site Request Forgery)

: 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격

대책

  • 입력화면 폼을 작성 시 GET방식보다 POST방식 사용
  • 입력 폼과 입력처리 프로그램에서 세션별 CSRF 토큰을 사용하여 점검
  • 중요기능의 경우 재인증을 통해 안전하게 실제 요청 여부를 확인하도록 구현

SQL Injection

: 응용 프로그램의 보안 취약점을 이용해서 악의적은 SQL 구문을 삽입, 실행시켜서 데이터베이스의 접근을 통해 정보를 탈취하거나 조작 등의 행위를 하는 공격기법

대책

  • 바인딩 매개변수 방식 적용하여 사전에 변수 타입을 명시적으로 지정
  • 사용자로부터 입력될 수 있는 모든 값을 체크하여 필터링
  • Servlet Filter 기능 적용 (Java에서만)

유형

  • Form SQL Injection
    : HTML Form 기반 인증을 담당하는 애플리케이션의 취약점이 있는 경우 사용자 인증을 위한 쿼리 문의 조건을 임의로 조작하여 인증을 우회하는 기법
  • Union SQL Injection
    : 쿼리의 UNION 연산자를 이용하여 한 쿼리의 결과를 다른 쿼리의 결과에 결합하여 공격하는 기법
  • Stored Procedure SQL Injection
    : 저장 프로시저를 이용하여 공격하는 기법
  • Mass SQL Injection
    : 기존 SQL Injection의 확장된 개념으로 한 번의 공격으로 대량의 DB값이 변조되어 홈페이지에 치명적인 영향을 미치는 공격기법
  • Error-Based SQL Injection
    : DB쿼리에 대한 에러값을 기반으로 한 단계씩 점진적으로 DB 정보를 획득할 수 있는 공격기법
  • Blind SQL Injection
    : DB 쿼리에 대한 오류 메시지를 반환하지 않으면 공격을 할 수 없는 Error-Based SQL Injection과 달리 오류 메시지가 아닌 쿼리 결과의 참과 거짓을 통해 의도하지 않은 SQL문을 실행함으로써 데이터베이스를 비정상적으로 공격하는 기법



네트워크 보안 솔루션

  • 네트워크 보안 장비는 접근 통제, 침입차단 및 탐지, DDoS 탐지 등을 수행하는 일체형 장비들이 포함됨

방화벽 (Firewall)

: 기업 내부, 외부 간 트래픽을 모니터링 하여 시스템의 접근을 허용하거나 차단하는 시스템

웹 방화벽 (WAF / Web Application Firewall)

: 일반적인 네트워크 방화벽과는 달리 웹 애플리케이션 보안에 특화된 보안장비

  • SQL Injection, XSS 등과 같은 웹 공격을 탐지하고 차단하는 기능

네트워크 접근 제어 (NAC / Network Access Control)

: 단말기가 내부 네트워크에 접속을 시도할 때 이를 제어하고 통제하는 기능을 제공하는 솔루션

  • 바이러스나 웜 등의 보안 위협으로부터 네트워크 제어 및 통제 기능을 수행

침입 탐지 시스템 (IDS / Intrusion Detection System)

: 네트워크에서 발생하는 이벤트를 모니터링하고 비인가 사용자에 의한 자원접근과 보안정책 위반 행위(침입)을 실시잔으로 탐지하는 시스템

침입 방지 시스템 (IPS / Intrusion Prevention System)

: 네트워크에 대한 공격이나 침입을 실시간적으로 차단하고 유해트래픽에 대한 조치를 능동적으로 처리하는 시스템

무선 침입 방지 시스템 (WIPS / Wireless Intrusion Prevention System)

: 인가되지 않은 무선 단말기의 접속을 자동으로 탐지 및 차단하고 보안에 취약한 무선 공유기를 탐지하는 시스템

통합 보안 시스템 (UTM / Unified Threat Management)

: 방화벽, IDS, IPS, VPN, 안티 바이러스, 이메일 필터링 등 다양한 보안 장비의 기능을 하나의 장비로 통합하여 제공하는 시스템

가상사설망 (VPN / Virtual Private Network)

: 인터넷과 같은 공중망에 인증, 암호화, 터널링 기술을 활용하여 마치 전용망을 사용하는 효과를 가지는 보안 솔루션

SIEM (Security Information and Event Management)

: 다양한 보안 장비와 서버, 네트워크 장비 등으로부터 보안 로그와 이벤트 정보를 수집한 후 정보 간의 연관성을 분석하여 위협 상황을 인지하고 침해사고에 신속하게 대응하는 보안 관제 솔루션

  • 기업에서 생성되는 테라바이트급의 정형/비정형 데이터와 방화벽, 안티바이러스 시스템, 서버, 네트워크 장비 등으로부터 수집한 다양한 데이터 등을 빅데이터 기반의 로그 분석을 통하여 보안의 위협 징후를 빠르게 판단/대응할 수 있도록 해주는 보안 관제 솔루션

ESM (Enterprise Security Management)

: 방화벽, IDS, UTM, 가상 사설망 등의 여러 보안 시스템으로부터 발생한 각종 이벤트 및 로그를 통합해서 관리, 분석, 대응하는 전사적 통합 보안 관리 시스템

  • 서로 다른 기종의 보안 장비들을 통합 관리하는 기능과 네트워크 자원 현황의 보안 보니터링 기능이 있고 주로 이벤트 위주의 단시간 위협 분석 및 DBMS 기반의 보안 관리 솔루션



소프트웨어 개발 보안 테스트

소프트웨어 보안 요구사항이 반영되어 있음을 보증하고 취약점을 발견하고 개선하여 안전한 소프트웨어를 개발하기 위한 활동

정적 분석

: SW를 실행하지 않고 보안 약점 분석

  • SW 개발단계에서 주로 사용
  • 취약점 초기 발견으로 수정비용 절감
  • 컴포넌트 간 발생할 수 있는 통합된 취약점 발견에 제한적
  • 설계 / 구조 관점의 취약점은 식별 불가

동적 분석

: SW 실행환경에서 보안 약점 분석

  • SW 시험단계에서 주로 사용
  • 소스 코드 필요 없음
  • 정확도와 커버리지 향상
  • 구조 관점의 보안 약점식별 불가



블랙박스 테스트

: 프로그램 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트(기능 테스트)

동등분할 테스트(동치 분할, 균등 분할, 동치 클래스 분해 / Equivalence Partitioning Testing)

: 입력 데이터의 영역을 유사한 도메인별로 유효값/무효값을 그룹핑하여 대푯값 테스트 케이스를 도출하여 테스트하는 기법

경곗값 분석 테스트(한계값 / Boundary Value Analysis Testing)

: 등가 분할 후 경곗값 부분에서 오류 발생 확률이 높기 때문에 경곗값을 포함하여 테스트 케이스를 설계하여 테스트하는 기법

  • 최솟값 바로 위, 최대치 바로 아래 등 입력값의 극한 한계를 테스트하는 기법

결정 테이블 테스트(Decision Table Testing)

: 요구사항의 논리와 발생조건을 테이블 형태로 나열하여 조건과 행위를 모두 조합하여 테스트하는 기법

상태 전이 테스트(State Transition Testing)

: 테스트 대상/시스템이나 객체의 상태를 구분하고 이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우의 수를 수행하는 테스트 기법

유스케이스 테스트(Use Case Testing)

: 시스템이 실제 사용되는 유스케이스로 모델링 되어 있을 때 프로세스 흐름을 기반으로 테스트 케이스를 명세화하여 수행하는 테스트 기법

분류 트리 테스트(Classification Tree Method Testing)

: SW의 일부 또는 전체를 트리 구조로 분석 및 표현하여 테스트 케이스를 설계하여 테스트하는 기법

페어와이즈 테스트(Pairwise Testing)

: 테스트 데이터값들 간에 최소한 한 번씩을 조합하는 방식이며 이는 커버해야 할 기능적 범위를 모든 조합에 비해 상대적으로 적은 양의 테스트 세트를 구성하기 위한 테스트 기법

원인-결과 그래프 테스트(Cause-Effect Graph Testing)

: 그래프를 활용하여 입력 데이터 간의 관계 및 출력에 미치는 영향을 분석하여 효용성이 높은 테스트 케이스를 산정하여 테스트하는 기법

비교 테스트(Comparison Testing)

: 여러 버전의 프로그램에 같은 입력값을 넣어서 동일한 결과 데이터가 나오는지 비교해 보는 테스트 기법

오류 추전 테스트(Error Guessing Testing)

: 개발자가 범할 수 있는 실수를 추정하고 이에 따를 결함이 검출되도록 테스트 케이스를 설계하여 테스트하는 기법

  • 특정 테스트 대상이 주어지면 테스터의 경험과 직관을 바탕으로 개발자가 범할 수 있는 실수들을 나열하고 해당 실수에 따른 결함을 노출하는 테스트로 다른 블랙박스 테스트 기법을 보완할 때 사용하는 기법




화이트박스 테스트

: 각 응용 프로그램의 내부 구조와 동작을 검사하는 소프트웨어 테스트

  • 코드 분석과 프로그램 구조에 대한 지식을 바탕으로 문제가 발생할 가능성이 있는 모듈 내부를 테스트하는 방법
  • 소스 코드의 모든 문장을 한 번 이상 수행함으로써 진행되로 산출물의 기능별로 적절한 프로그램의 제어 구조에 따라 선택, 반복 등의 부분들을 수행함으로써 논리적 경로를 점검
  • 내부 소스 코드의 동작을 개발자가 추적할 수 있기 때문에 동작의 유효성뿐만 아니라 실행되는 과정을 확인할 수 있다.

구문 커버리지(문장 커버리지/Statement Coverage)

: 프로그램 내의 모든 명령문을 적어도 한 번 수행하는 커버리지

  • 조건문 결과와 관계없이 구문 실행 개수로 계산

결정 커버리지(선택(Decision),분기(Branch))

: 결정 커버리지는 (각 분기의) 결정 포인트 내의 전체 조건식이 적어도 한 번은 참과 거짓의 결과를 수행하는 테스트 커버리지

  • 구문 커버리지를 포함

조건 커버리지(Condition Coverage)

: 조건 커버리지는 (각 분기의) 결정 포인트 내의 각 개별 조건식이 적어도 한 번은 참과 거짓의 결과가 되도록 수행하는 테스트 커버리지

  • 구문 커버리지를 포함

조건/결정 커버리지(Condition/Decision Coverage)

: 전체 조건식뿐만 아니라 개별 조건식도 참 한번, 거짓 한 번 결과가 되도록 수행하는 테스트 커버리지

변경 조건/결정 커버리지(Modified Condition/Decision Coverage)

: 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식에 독립적으로 영향을 주도록 함으로써 조건/결정 커버리지를 향상시킨 커버리지

다중 조건 커버리지(Multiple Condition Coverage)

: 결정 조건 내 모든 개별 조건식의 모든 가능한 조합을 100% 보장하는 커버리지

기본 경로 커버리지(경로/Base Path Coverage)

: 수행 가능한 모든 경로를 테스트하는 기법

제어 흐름 테스트(Control Flow Testing)

: 프로그램 제어 구조를 그래프 형태로 나타내어 내부로직을 테스트하는 기법

데이터 흐름 테스트(Data Flow Testing)

: 제어 흐름 그래프에 데이터 사용현황을 추가한 그래프를 통해 테스트하는 기법

루프 테스트(Loop Testing)

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




소프트웨어 테스트 시각에 따른 분류

검증

  • 소프트웨어 개발 과정을 테스트
  • 올바른 제품을 생산하고 있는지 검증
  • 이전 단계에서 설정된 개발 규격과 요구를 충족시키는지 판단
  • 개발자 혹은 시험자의 시각으로 소프트웨어가 명세화된 기능을 올바로 수행하는지 알아보는 과정

확인

  • 소프트웨어 결과를 테스트
  • 만들어진 제품이 제대로 동작하는지 확인
  • 최종 사용자 요구 또는 소프트웨어 요구에 적합한지 판단
  • 사용자 시각으로 올바를 소프트웨어가 개발되었는지 입증하는 과정




테스트 목적에 따른 분류

회복 테스트 (Recovery Testing)

: 시스템에 고의로 실패를 유도하고 시스템의 정상적 복귀 여부를 테스트하는 기법

안전 테스트 (Security Testing)

: 불법적인 소프트웨어가 접근하여 시스쳄을 파괴하지 못하도록 소스 코드 내의 보안적인 결함을 미리 점검하는 테스트 기법

성능 테스트 (Performance Testing)

: 사용자의 이벤트에 시스템이 응답하는 시간, 특정 시간 내에 처리하는 업무량, 사용자 요구에 시스템이 반응하는 속도 등을 측정하는 테스트 기법

  • 부하 테스트
  • 강도 테스트
  • 스파이크 테스트
  • 내구성 테스트

구조 테스트 (Structure Testing)

: 시스템의 내부 논리 경로, 소스 코드의 복잡도를 평가하는 테스트 기법

회귀 테스트 (Regressing Testing)

: 오류를 제거하거나 수정한 시스템에서 오류 제거와 수정에 의해 새로이 유입된 오류가 없는지 확인하는 일종의 반복 테스트 기법

병행 테스트 (Parallel Testing)

: 변경된 시스템과 기존 시스템에 동일한 데이터를 입력 후 결과를 비교하는 테스트 기법




테스트 케이스

특정 요구사항에 준수하는 지를 확인하기 위해 개발된 입력값, 실행 조건, 예상된 결과의 집합

절차

  1. 테스트 계획검토 및 자료 확보
  2. 위험평가 및 우선순위 결정
  3. 테스트 요구사항 정의
  4. 테스트 구조 설계 및 테스트 방법 결정
  5. 테스트 케이스 정의 및 작성
  6. 테스트 메이스 타장성 확인 및 유지보수

필요 항목

공통 작성 항목 요소

  • 테스트 단계명, 작성자, 승인자, 작성 일자, 문서 버전
  • 대상 시스템
  • 변경 여부
  • 테스트 범위
  • 테스트 조직

개별 테스트 케이스 항목요소

  • 테스트 ID
  • 테스트 목적
  • 테스트할 기능
  • 테스트 데이터(=입력 데이터)
  • 예상 결과(=기대 결과)
  • 테스트 환경
  • 테스트 조건(=전체 조건)
  • 성공/실패 기준
  • 기타 요소



테스트 오라클

테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참값을 입력하여 비교하는 기법

유형

참 (True) 오라클

: 모든 입력값에 대하여 기대하는 결과를 생성함으로써 발생된 오류를 모두 검출할 수 있는 오라클

샘플링 (Sampling) 오라클

: 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공해 주는 오라클

휴리스틱 (Heuristic) 오라클

: 샘플링 오라클을 개선한 오라클로 특정 입력값에 대해 올바를 결과를 제공하고 나머지 값들에 대해서는 추정으로 처리하는 오라클

일관성 검사 (Consistent) 오라클

: 애플리케이션 변경이 있을 때, 수행 전과 후의 결괏값이 동일한지 확인하는 오라클



테스트 레벨

함계 편성되고 관리되는 테스트 활동의 그룹

종류

단위 테스트

: 사용자 요구사항에 대한 단위 모듈, 서브루틴 등을 테스트하는 단계

  • 자료 구조 테스트, 실행 경로 테스트, 오류 처리 테스트, 인터페이스 테스트

통합 테스트

: 단위 테스트를 통과한 모듈 사이의 인터페이스 / 통합된 컴포넌트 간의 상호 작용을 검증하는 테스트 단계

  • 빅뱅 테스트, 샌드위치 테스트, 상향식 테스트, 하향식 테스트

시스템 테스트

: 통합된 단위 시스템의 기능이 시스템에서 정상적으로 수행되는지를 검증하는 테스트 단계

  • 기능/비기능 요구사항 테스트

인수 테스트

: 계약상의 요구사항이 만족되었는지 확인하기 위한 테스트 단계

  • 최종 사용자와 업무의 이해관계자 등이 테스트를 수행함으로써 개발된 제품에 대해 운영 여부를 결정하는 테스트
  • 계약 인수, 규정 인수, 사용자 인수, 운영상의 인수, 알파/베타 테스트

알파테스트

: 선택된 사용자가 개발자 환경에서 통제된 상태로 개발자와 함께 수행하는 인수 테스트

베타 테스트

: 실제 환경에서 일정 수의 사용자에게 대상 소프트웨어를 사용하게 하고 피드백을 받는 인수 테스트



정규화

관계형 데이터 모델에서 데이터의 중복성을 제거하여 이상 현상을 방지하고 데이터의 일관성과 정확성을 유지하기 위해 무손실 분해하는 과정

이상현상

데이터의 중복성으로 인해 릴레이션을 조작할 떄 발생하는 비합리적 현상

삽입 이상

: 정보 저장 시 해당 정보의 불필요한 세부정보를 입력해야 하는 경우

삭제 이상

: 정보 삭제 시 원치 않는 다른 정보가 같이 삭제되는 경우

갱신 이상

: 중복 데이터 중에서 특정 부분만 수정되어 중복된 값이 모순을 일으키는 경우




함수 종속(FD)

릴레이션에서 속성의 의미와 속성 간 상호관계로부터 발생하는 제약조건

부분 함수 종속 (Partial Functional Dependency)

: 릴레이션에서 기본 키가 복합 키일 경우 기본 키를 구성하는 속성 중 일부에게 종속된 경우

완전 함수 종속 (Full Functioanl Dependency)

: 릴레이션에서 '결정자->종속자'관계가 있을 때 종속자는 결정자의 전체 속성에 대해 종속하고 부분 집합 속성에 종속하지 않는 경우

이행 함수 종속 (Transitive Functional Dependency)

: 릴레이션에서 '결정자->종속자' , '종속자->Z' 종속관계가 있을 때 '결정자->Z'가 성립되는 경우




반정규화

정규화된 엔터티, 속성, 관계에 대해 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법

장점단점
반 정규화된 데이터 구조는 성능 향상과 관리의 효율성이 증가데이터의 일관성 및 정합성 저하
유지를 위한 비용이 별도로 발생하여 성능에 나쁜 영향을 미칠 수 있음

반정규화 기법

  • 테이블 병합
    : 조인 횟수를 줄여 성능향상
  • 테이블 분할
    : 파티셔닝
  • 중복 테이블 추가
    : 집계함수를 사용
  • 컬럼 중복화
    : 조인 성능 향상을 위한 중복 허용
  • 중복관계 추가
    : 성능 저하를 예방하기 위해 추가적 관계를 맺는 방법




공통 모듈 구현

소프트웨어 개발에 있어 기능을 분할하고 추상화하여 성능을 향상시키고 유지보수를 효과적으로 하기위한 공통 컴포넌트 구현 기법

  • 인터페이스 모듈, 데이터베이스 접근 모듈 등 필요한 공통 모듈을 구현
  • 오듈 간의 결합도는 줄이고 응집도는 높인 공통 모듈 구현을 권장

응집도

모듈의 독립성을 나타내는 정도로 모듈 내부 구성요소 간 연관정도

  • 하나의 모듈은 하나의 기능을 수행할수록 응집도가 높다.

유형 [우 논 시 절 통 순 기]

우연적 응집도(Coincidental Cohesion)
: 모듈 내부의 각 구성ㅇ요소가 연관이 없을 경우의 응집도

논리적 응집도(Logical Cohesion)
: 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도

시간적 응집도(Temporal Cohesion)
: 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도

절차적 응집도(Procedural Cohesion)
: 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도

통신적 응집도(Communication Cohesion)
: 동일한 입출력을 사용하여 다른 기능을 수행하는 활동들이 모여있을 경우의 응집도

순차적 응집도(Sequential Cohesion)
: 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우의 응집도

기능적 응집도(Functional Cohesion)
: 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도


결합도

소프트웨어 구조에서 모듈 간의 관련성을 측정하는 척도

  • 모듈 내부가 아닌 외부의 모듈과의 연관도 또는 모듈 간의 상호의존성

유형 [내 공 외 제 스 자]

내용 결합도(Content Coupling)
: 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도

  • 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내뇬적으로 결합되어 있는 경우의 결합도

공통 결합도(Common Coupling)
: 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호 작용하는 경우의 결합도

  • 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도

외부 결합도(External Coupling)
: 두 개의 모듈이 외부에서 도입된 데이터 포맥, 통신 프로토콜 또는 디바이스 인터페이스를 공유할 경우의 결합도

  • 외부 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도

제어 결합도(Control Coupling)
: 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어신호를 이용하여 통신하는 경우의 결합도

  • 하위 모듈에서 상위 모듈로 제어 신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도 현상이 발생하는 결합도

스탬프 결합도(Stamp Coupling)
: 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도

  • 두 모듈이 동일한 자료 구조를 조회하는 경우의 결합도이며 자료 구조의 어떠한 변화는 모든 모듈에 영향을 미치게 됨

자료 결합도(Data Coupling)
: 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈간의 상호 작용이 일어나는 경우의 결합도

  • 한 모듈의 내용을 변경하더라도 다른 모듈에는 영향을 미치지 않는 상태로 가장 바람직한 결합도




공통 모듈 테스트

  • IDE 도구를 활용하여 개별 공통 모듈에 대한 디버깅을 수행
  • 화이트박스 기법을 활용
  • 대표적인 단위 테스트 도구인 xUnit을 활용하여 테스트 코드를 구현

종류

종류설명
jUnit자바 프로그래밍 언어용 단위 테스트 도구
JAVA 단위 테스트 프레임워크
CppUnit자바의 jUnit을 C++로 구현한 단위 테스트 도구
HttpUnit웹 브라우저 없이 웹사이트 테스트를 수행하는 단위 테스트 도구




릴리즈 노트

최종 사용자인 고객에게 개발 과정에서 정리된 제품의 릴리즈 정보를 제공하는 문서

  • 릴리즈 정보는 상세 서비스 정보를 포함하여 제품의 수정, 변경, 개선하는 일련의 작업들에 대한 정보이며 릴리즈 노트를 통해 제공된다.

릴리즈 노트 작성 항목

헤더

: 문서이름, 제품 이름, 버전 번호, 릴리즈 날짜 등의 정보

개요

: 제품 및 변경에 대한 간략한 전반적 개요

목적

: 릴리스 버전의 새로운 기능목록과 릴리스 노트의 목적에 대한 개요, 버그수정 및 새로운 기능 기술

이슈 요약

: 버그의 간단한 설명 또는 릴리즈 추가 항목 요약

재현 항목

: 버그 발견에 따른 재현 단계 기술

수정/개선 내용

: 수정/개선의 간단한 설명 기술

사용자 영향도

: 버전 변경에 따른 최종 사용자 기준의 기능 및 응용 프로그램상의 영향도 기술

소프트웨어 지원 영향도

: 버전 변경에 따른 소프트웨어의 지원 프로세스 및 영향도 기술

노트

: 소프트웨어 및 하드웨어 설치 항목, 제품, 문서를 포함한 업그레이드 항목 메모

면책 조항

: 회사 및 표준 제품과 관련된 메시지, 프리웨어 및 불법 복제 방지, 붕복 등 참조에 대한 고지 사항

연락 정보

: 사용자 지원 및 문의에 관련한 연락처 정보




OSI 7계층

네트워크 통신에서 생긴 여러 가지 충돌 문제를 완화하기 위해 국제 표준화 기구에서 제시한 네트워크 기본 모델

7. 응용계층 (Application)

: 사용자와 네트워크 간 응용서비스 연결, 데이터 생성

  • 프로토콜
    : HTTP, FTP
  • 데이터 전송 단위

6. 표현계층 (Presentaion)

: 데이터 형식 설정과 부호교환, 암/복호화

  • 프로토콜
    : JPEG, MPEG
  • 데이터 전송 단위

5. 세션계층 (Session)

: 연결접속 및 동기제어

  • 프로토콜
    : SSH, TLS
  • 데이터 전송 단위

4. 전송 계층 (Transport)

: 신뢰성 있는 통신 보장 / 데이터 분할과 재조립, 흐름 제어, 오류 제어 혼잡제어 등을 담당

  • 프로토콜
    : TCP, UDP
  • 세그먼트 전송 단위

3. 네트워크 계층 (Network)

: 단말기 간 데이터 전송을 위한 최적화된 경로 제공

  • 프로토콜
    : IP, ICMP, 라우팅 프로토콜
  • 패킷 전송 단위

네트워크 프로토콜

  • IP (Internet Protocol)
    : 송수신 간의 패킷 단위로 데이터를 교환하는 네트워크에서 정보를 주고받는데 사용하는 통신 프로토콜
  • ARP (Address Resolution Protocol)
    : IP 네트워크상에서 IP주소를 MAC주소(물리주소)로 변환하는 프로토콜
  • RARP (Reverse Address Resolution Protocol)
    : IP호스트가 자신의 물리 네트워크 주소(MAC)는 알지만 IP주소를 모르는 경우 서버로부터 IP주소를 요청하기 위해 사용하는 프로토콜
    • MAC주소에 해당하는 IP주소를 알려주는 역순 주소 결정 프로토콜
  • ICMP (Internet Control Message Protocol)
    : IP의 동작 과정에서의 전송 오류가 발생하는 경우에 오류 정보를 전송하는 목적으로 사용하는 프로토콜
    • 메시지 형식은 8바이트의 헤더와 가변 길이의 데이터 영역으로 분리
    • 수신지 도달 불가 메시지는 수신지 또는 서비스에 도달할 수 없는 호스트를 통지하는데 사용
    • ICMP 프로토콜을 사용해서 핑 유틸리티의 구현을 통해 오류가 발생했음을 알리는 기능을 수행
  • IGMP (Internet Group Management Protocol)
    : 인터넷 그룹 관리 프로토콜은 호스트 컴퓨터와 인접 라우터가 멀치캐스트 그룹 멤버십을 구성하는데 사용하는 통신 프로토콜
    • 화상회의, IPTV에서 활용
    • 기능 : 그룹 가입, 멤버십 감시/응답/탈퇴
  • 라우팅 프로토콜 (Routing Protocol)
    : 데이터 전송을 위해 목적지까지 갈 수 있는 여러 경로 중 최적의 경로를 설정해주는 라우터 간의 상호 통신 프로토콜
    • OSPF(Open Shortest Path First)
      : 규모가 크고 복잡한 네트워크에서 RIP의 단점을 개선하기 위해 자신을 기준으로 링크 상태 알고리즘을 적용하여 최단 경로를 찾는 라우팅 프로토콜

: 인접 시스템 간 데이터 전송, 전송오류 제어 / 동기화, 흐름제어 등의 전송 기능 제공 / 오류 검출, 재전송 등 기능 제공

  • 프로토콜
    : 이더넷
  • 프레임 전송단위

1. 물리 계층 (Physical)

: 0과 1의 비트 정보를 회선에 보내기 위한 전기적 신호 변환

  • 프로토콜
    : RS-232C
  • 비트 전송단위




IPv4

인터넷에서 사용되는 패킷 교환 네트워크상에서 데이터를 교환하기 위한 32비트 주소체계를 갖는 네트워크 계층의 프로토콜

헤더

IP패킷의 앞부분에서 주소 등 각종 제어정보를 담고 있는 부분

  • 옵션 미지정시 최소 20바이트 이상

주소체계

  • 10진수로 총 12자리이며 4부분으로 나뉜다
  • 각 부분은 0~255까지 3자리의 수로 표현
  • Network를 나타내는 부분과 Host를 나타내는 부분으로 서브넷 마스크로 구분한다.



서브네팅

IP 주소 고갈문제를 해결하기 위해 원본 네트워크를 여러 개의 네트워크로 분리하는 과정

  • 대표 네트워크 IP주소일 경우 호스트 ID는 2진수 기준으로 모두 0을 넣고 브로드캐스트 IP주소일 경우 호스트 ID는 2진수 기준으로 모두 1을 넣는다.

종류

FLSM (Fixed-Length Subnet Masking)

: 한 대역을 동일한 크기로 나누는 방식

  • 서브넷의 길이를 고정적으로 사용

VLSM (Variable Length Subnet Masking)

: 한 대역을 다양한 크기로 나누는 방식

  • 서브넷의 길이를 가변적으로 사용



IPv6

인터넷 프로토콜 스택 중 네트워크 계층의 프로토콜로서 버전 6 인터넷 프로토콜로 제정된 차세대 인터넷 프로토콜

  • 128 bit 주소체계를 갖는 차세대 인터넷 프로토콜

특징

  • IP주소의 확장
  • 이동성
  • 인증 및 보안 기능
  • 개선된 QoS 지원
  • Plug & Play 지원
  • Ad-hoc 네트워크 지원
  • 단순 헤더 적용
  • 실시간 패킷 추적 가능



패킷 교환 방식

데이터를 패킷 단위로 보내는 방식

종류

데이터그램 방식

: 연결 경로를 확립하지 않고 각가의 패킷을 순서에 무관하게 독립적으로 전송하는 방식

  • 각각의 패킷을 독립적으로 취급하는 방식으로 어떠한 결과와도 관계가 없는 단일 패킷 단위로 전송하고 수신
  • 헤어를 붙여서 개별적으로 전달하는 비연결형 교환 방식

가상 회선 방식

: 패킷이 전송되기 전에 송/수신 스테이션 간의 논리적인 통신 경로를 미리 설정하는 방식

  • 많은 이용자들이 상호 통신을 할 때 하나의 통신설비를 공유하여 여러 개의 논리적인 태널을 확정한 후 통신을 할 수 있는 방식
  • 목적지 호스트와 미리 연결 후 통신하는 연결형 교환 방식




애드 훅 네트워크

노드들에 의해 자율적으로 구성되는 기반 구조가 없는 네트워크

  • 네트워크의 구성 및 유지를 위해 기지국 같은 기반 네트워크 장치를 필요로 하지 않는 네트워크
  • 노드들은 무선 인터페이스를 사용하여 통신하고 멀티 홉 라우팅 기능에 의해 무선 인터페이스가 가지는 통신 거리상의 제약을 극복하며 노드들의 이동이 자유롭기 때문에 네트워크 토폴로지가 동적으로 변화되는 특징
  • 애드 훅 네트워크는 완전 독립형이 될 수도 있고 인터넷 게이트웨이를 거쳐 인터넷과 같은 기반 네트워크와 연동될 수 있다.
  • 긴급 구조, 긴급 회의, 군사 네트워크



DB 관련 신기술 용어

하둡 (Hadoop)

: 오픈 소스를 기반으로 한 분산 컴퓨팅 플랫폼

  • 일반 PC급 컴퓨터들로 가상화된 대형 스토리지를 형성하고 그 안에 보관된 거대한 데이터 세트를 병렬로 처리할 수 있도록 개발된 자바 소프트웨어 프레임워크 (구글, 야후)

HDFS (Hadoop Distributed File System)

: 대용량 파일을 분산된 서버에 저장하고 그 저장된 데이터를 빠르게 처리할 수 있게 하는 하둡 파일 시스템

맵 리듀스 (Map Reduce)

: 구글에서 대용량 데이터를 분산 병렬 컴퓨팅에서 처리하기 위한 목적으로 제작하여 2004년에 발표한 소프트웨어

  • 여러 언어에서 적용이 가능하도록 작성
  • 아파치 하둡으로 대표되는 소프트웨어 프레임워크

스쿱 (Sqoop)

: 커넥터를 사용하여 RDBMS에서 HDFS로 데이터를 수집하는 기술

NoSQL (Not Only SQL)

: 전통적인 RDBMS와 다른 DBMS를 지칭하기 위한 용어로 데이터 저장에 고정된 테이블 스키마가 필요하지 않고 조인 연산을 사용할 수 없으며 수평적으로 확장이 가능한 DBMS

다크 데이터 (Dark Data)

: 수집된 후 저장은 되어 있지만 분석에 활용되지는 않는 대량의 데이터

데이터 마이닝 (Data Mining)

: 빅데이터 분석 기술 중 대량의 데이터를 분석하여 데이터 속에 있는 변수 사이의 상호관계를 규명하여 일정한 패턴을 찾아내는 기법

데이터 웨어하우스 (DW / Data Warehouse)

: 사용자의 의사 결정에 도움을 주기 위하여 기간 시스템의 데이터베이스에 축적된 데이터를 공통 형식으로 변환해서 관리하는 데이터베이스

데이터 마트 (DM / Data Mart)

: 데이터 웨어하우스 환경에서 정의된 접근계층으로 데이터 웨어하우스에서 데이터를 꺼내 사용자에게 제공하는 역할

  • 데이터 웨어하우스의 부분이며 대개 특정한 조직 혹은 팀에서 사용하는 것을 목적으로 함

메타 데이터 (Meta Data)

: 데이터에 대한 구조적인 데이터로서 일련의 데이터를 정의하고 설명해 주는 데이터이고 구축할 정보 자원을 기술하는 데이터

디지털 아카이빙 (Digital Archiving)

: 지속적으로 보존할 가치를 가진 디지털 객체를 장기간 관리하여 이후의 이용을 보장할 수 있도록 변환, 압축 저장하여 DB화하는 작업

마이 데이터 (MyData)

: 정보 주체가 기관으로부터 자기 정보를 직접 내려받아 이용하거나 제3자와 제공을 허용하는 방식으로 정보 주체 중심의 데이터 활용체계

  • 개인이 정보 관리의 주체가 되어 능동적으로 본인의 정보를 관리하고 본인의 의지에 따라 신용 및 자산관리 등에 정보를 활용하는 일련의 과정

스크래파이 (Scrapy)

: 웹 사이트를 크롤링하여 구조화된 데이터를 수집하는 파이썬 기반의 애플리케이션 프레임워크



애플리케이션 성능 측정 지표

처리량

  • 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션의 수
  • 웹 애플리케이션의 경우 시간당 페이지 수로 표현

응답 시간

  • 사용자 입력이 끝난 후 애플리케이션의 응답 출력이 개시될 때까지의 시간
  • 애플리케이션의 경우 메뉴 클릭 시 해당 메뉴가 나타나기까지 걸리는 시간

경과 시간

  • 애플리케이션에 사용자가 요구를 입력한 시점부터 트랜잭션을 처리 후 그 결과의 출력이 완료할 때까지 걸리는 시간

자원 사용률

  • 애플리케이션이 트랜잭션을 처리하는 동안 사용하는 CPU사용량, 메모리 사용량, 네트워크 사용량




비즈니스 연속성 계획

각종 재해, 장애, 재난으로부터 위기관리를 기본으로 비즈니스 연속성을 보장하는 체계

BIA (Business Impacy Analysis)

: 장애나 재해로 인해 운영상의 주요 손실을 볼 것을 가정항 시간 흐름에 따른 영향도 및 손실평가를 조사하는 BCP를 구축하기 위한 비느지스 영향 분석

RTO (Recovery Time Objective)

: 업무중단 시점부터 업무가 복귀되어 다시 가동될 때까지의 시간

  • 재해 시 복구 목표 시간의 선정

RPO (Recovery Point Objective)

: 업무중단 시점부터 데이터가 복구되어 다시 정상가동될 때 데이터의 손실 허용 시점

  • 재해 시 복구 목표 지점의 선정

DRP (Disaster Recovery Plan)

: 재난으로 장기간에 걸쳐 시설의 운영이 불가능한 경우를 대비한 재난 복구 계획

DRS (Disaster Recovery System)

: 재해복구계획의 원활한 수행을 지원하기 위하여 평상시에 확보하여 두는 인적, 물적 자원 및 이들에 대한 지속적인 관리체계가 통합된 재해복구센터

Mirror Site

  • RTO는 즉시(0)

Hot Site

  • RTO는 4시간 이내

Warm Site

  • RTO는 수일 ~ 수주

Cold Site

  • RTO는 수주 ~ 수개월




보안 공격 대응 관련 용어

허니팟 (Honeypot)

: 비정상적인 접근을 탐지하기 위해 의도적으로 설치해 둔 시스템으로 일부러 허술하게 만들어서 해커에게 노출하는 유인시스템

OWASP Top 10

: 웹 애플리케이션 취약점 중 공격 빈도가 높으며 보안상 큰 영향을 줄 수 있는 10가지 취약점에 대한 대응 방안을 제공하는 웹 보안 기술 가이드

핑거프린팅 (Finger Printing)

: 멀티미디어 콘텐츠에 저작권 정보와 구매한 사용자 정보를 삽입하여 콘텐츠 불법 배포자에 대한 위치 추적이 가능한 기술(저작권 정보구매가 정보)

워터마킹 (Water Marking)

: 디지털 콘텐츠에 저작권자 정보를 삽입하여 불법 복제 시 워터마크를 추출, 원소류자를 증명할 수 있는 콘텐츠 보호 기술

이상금융거래탐지시스템 (FDS / Fraud Detecrion System)

: 전자금융거래에 사용되는 단말기 정보, 접속 정보, 거래 정보 등을 종합적으로 분석하여 의심 거래를 탐지하고 이상 거래를 차단하는 시스템

CC (Common Criteria)

: 정보기술의 보안 기능과 보증에 대한 평가 기준(등급), 정보보호 시스템의 보안 기능 요구사항과 보증 요구사항 평가르 위해 공통으로 제공되는 국제 평가 기준

사이버 위협정보 분석 공유시스템 (C-TAS / Cyber Threats Analysis System)

: 사이버 위협정보를 체계적 수립해서 KISA 주관으로 관계 기관과 자동화된 정보공유를 할 수 있는 침해 예방 대응 시스템

장착형 인증 모듈 (PAM / Pluggable Authentication Module)

: 리눅스 시스템 내에서 사용되는 각종 애플리케이션 인증을 위해 제공되는 다양한 인증용 라이브러리

CVE (Common Vunerabilities and Exposure)

: 미국 비 영리회사인 MITRE 사에서 공개적으로 알려진 소프트웨어의 보안취약점을 표준화한 식별자 목록

  • 규칙 : CVE - 연도 - 순서

CWE (Common Weakness Enumeration)

: 미국 비영리 회사인 MITRE 사가 중심이 되어 소프트웨어에서 공통적으로 발생하는 약점을 체계적으로 분류한 목록으로 소스 코드 취약점을 정의한 데이터베이스

  • 소프트웨어 약점은 SDLC 과정에서 발생할 수 있기 때문에 설계, 아키텍처, 코드 단계 등에 대한 취약점 목록을 포함

ISMS (Information Security Management System)

: 조직의 주요 정보자산을 보호하기 위하여 정보보호 관리 절차와 과정을 체계적으로 수립하여 지속적으로 관리하고 운영하기 위한 종합적인 체계

PIMS (Personal Information Management System)

: 기업이 개인정보보호 활동을 체계적/지속적으로 수행하기 위해 필요한 보호조치 체계를 구축했는지 여부를 점검, 평가하여 기업에게 부여하는 인증제도

PIA (Privacy Impact Assessment)

: 개인정보를 활용하는 새로운 정보 시스템의 도입이나 개인정보 취급이 수반되는 기존 정보 시스템의 중대한 변경 시, 동 시스템의 구축/운영/변경 등이 프라이버시에 미치는 영향에 대하여 사전에 조사 및 예측, 검토하여 개선 방안을 도출하는 체계적인 절차

TKIP (Temporal Key Integrity Protocol)

: 임시 키 무결성 프로토콜 / IEEE 802.11i 암호화 방식으로 초기 wifi장비에서 널리 사용되었던 안전하지 않은 WEP암호화 표준을 대체하기 위한 암호 프로토콜

ISMS-P

: ISMS와 PIMS로 개별 운영되던 인증체계를 하나로 통합한 통합인증제도




소프트웨어 개발 방법론

소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법

구조적 방법론

: 전체 시스템을 기능에 따라 나누어 개발하고 이를 통합하는 분할과 정복 접근 방식의 방법론

정보공학 방법론

: 정보시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론

  • 개발주기를 이용해 대형 프로젝트를 수행하는 체계적인 방법론

객체지향 방법론

: 복잡한 현실 세계를 사람이 이해하는 방식으로 시스템에 적용하는 방법론

컴포넌트 기반 방법론

: 소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론

제품 계열 방법론

: 특정 제품에 젖용하고 싶은 공통된 기능을 정의하여 개발하는 방법론

애자일 방법론 **

: 절차보다는 사람이 중심이 되어 변황 유연하고 신속하게 적응하면서 효율적으로 시스쳄을 개발할 수 있는 신속 적응적 경량 개발 방법론

  • 개발 기간이 짧고 신속하며 폭포수 모형에 대비되는 방법론
  • 소프트웨어 개발 환경의 변화, 기존 개발 방법론의 한계를 극복하기 위해 등장

XP
:의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론

  • 1~3주의 반복 개발주기
  • 5가지 가치와 12개의 실천항목
    <5가지 가치>
    • 용기
    • 단순성
    • 의사소통
    • 피드백
    • 존중
      <12가지 기본원리>
    • 짝 프로그래밍 (Pair Programming)
    • 공통 코드 소유 (Collective Ownership)
    • 지속적인 통합(CI)
    • 계획 세우기
    • 작은 릴리즈
    • 메타포어
      : 공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자 간의 의사소통을 원활하게 한다는 원리
    • 간단한 디자인
    • 테스트 기반 개발 (TDD)
    • 리팩토링
    • 40시간 작업
    • 고객 상주
    • 코드 표준

스크럼(SCRUM)
: 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론

  • 백로그를 나눈 후에 스크럼 팀을 구성하고 스크럼 회의를 거쳐 스프린트를 수행하고 스프린트 회고를 수행한다.

린(LEAN)
: 도요타의 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질을 향상시킨 방법론
<7가지 원칙>
- 낭비제거
- 품질 내재화
- 지식 창출
- 늦은 확정
- 빠른 인조
- 사람 존중
- 전체 최적화




객체 지향 설계 원칙 (SOLID)

단일 책임의 원칙 (SRP)

: 하나의 클래스는 하나의 목적을 위해서 생성되며 클래스가 제공하는 모든 서비스는 하나의 책임을 수행하는 데 집중되어 있어야 한다는 원칙

  • 나머지 4원칙의 기초 원칙

개방 폐쇄 원칙 (OCP)

: 소프트웨어의 구성요소는 확장에는 열려있고 변경에는 닫혀있어야 한다는 원칙

리스코프 치환의 원칙 (LSP)

: 서브타입은 어디서나 자신의 기반타입으로 교체할 수 있어야 한다는 원칙

인터페이스 분리의 원칙 (ISP)

: 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말하야 한다는 원칙

  • 객체 설꼐 시 특정 기능에 대한 인터페이스는 그 기능과 상관없는 부분이 변해도 영향을 받지 않아야 한다는 원칙

의존성 역전의 원칙 (DIP)

: 실제 사용 관계는 바뀌지 않으며 추상을 매개로 메시지를 주고받음으로써 관계를 최대한 느슨하게 만드는 원칙




데이터 모델

현실 세계의 정보를 인간과 컴퓨터가 이해할 수 있도록 추상화하여 표현한 모델

데이터 모델 구성요소

연산 (Operation)

: 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세

  • 릴레이션을 조작하기 위한 관계 연산을 나타냄

구조 (Structure)

: 데이터베이스에 논리적으로 표현될 대상으로서의 개체 타입과 개체 타입 간의 관계

  • 데이터 구조 및 정적 성질을 표현하는 요소

제약 조건 (Constraint)

: 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건

  • 데이터 무결성 유지를 위한 DB의 보편적 방법
  • 릴레이션의 특정 칼럼에 설정하는 제약을 의미

데이터 모델 절차 [개 논 물]

개념적 설계

: 사용자의 요구에 대한 트랜잭션을 모델링 하는 단계

  • 개념적 데이터 모델현실 세계에 대한 인식을 추상적, 개념적으로 표현하여 개념적 구조를 도출하는 데이터 모델

논리적 설계

: 트랜잭션의 인터페이스를 설계하는 단계 / 논리적 스키마를 설계하는 단계

  • 논리적 데이터 모델은 업무의 모습을 모델링 표시법으로 형상화하여 사람이 이해하기 쉽게 표현한 데이터 모델
  • 정규화 수행

물리적 설계

: 논리 데이터 모델을 특정 DBMS의 특성 및 성능을 고려하여 물리적인 스키마를 만드는 단계

  • 물리적 데이터 모델은 논리 데이터 모델을 사용하고자 하는 각 DBMS의 특성을 고려하여 데이터베이스 저장구조로 변환하는 모델
  • 성능 측면에서 반 정규화 수행




관계 대수

관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 정형 언어

일반 집합 연산자

  • 합집합 : U
  • 교집합 : n
  • 차집합 : -
  • 카티션 프로덕트 : X

순수 관계 연산자

  • 셀렉트 : σ
  • 프로젝트 : π
  • 조인 : ⋈
  • 디비전 : ÷




관계 해석

튜플 관계 해석과 도메인 관계 해석을 하는 비절차적 언어

목적 : 무엇을 얻을 것인지




E-R모델

현실 세계에 존재하는 데이터와 그들 간의 관계를 사람이 이해할 수 있는 형태로 명확하게 표현하기 위해서 가장 널리 사용하고 있는 모델

  • 요구사항으로부터 얻어낸 정보들을 개체, 속성, 관계로 기술한 모델

기호

  • 개체 집합 : ☐
  • 관계 집합 : ♢
  • 속성 : ○
  • 다중 값 속성 : ◎
  • 개체 집합-관계 집합 연결 : -
  • 개체 집합-속성 연결 : -
  • 관계 집합-속성 연결 : - - -




테스트 자동화 도구

반복적인 테스트 작업을 스크립트 형태로 구현함으로써 테스트 시간 단축과 인력 투입 비용을 최소화하는 한편 쉽고 효율적인 테스트를 수행할 수 있는 방법

정적 분석 도구

: 만들어진 애플리케이션을 실행하지 않고 분석하는 도구

  • 대부분의 경우 소스 코드에 대한 코딩의 남은 결함을 발견하기 위하여 사용
  • 테스트를 수행하는 사람이 작성된 소스 코드에 대한 이해를 바탕으로 도구를 이용해서 분석하는 것

테스트 실행 도구

  • 테스트를 위해 작성된 스크립트를 실행하고 각 스크립트마다 특정 데이터와 테스트 수행 방법을 포함
  • 데이터 주도 접급 방식 , 키워드 주도 접근 방식

성능 테스트 도구

: 애플리케이션의 처리량, 응답 시간, 경과 시간, 자원 사용률에 대해 가상의 사용자를 생성하고 테스트를 수행함으로써 성능 목표를 달성하였는지를 확인하는 도구

테스트 통제 도구

  • 테스트 계획 및 관리를 위한 도구, 수행에 필요한 데이터와 도구를 관리하는 형상 관리 도구, 결함에 대해 관리하거나 협업을 지원하기 위한 도구가 있다.
  • 조직의 요구사항에 최적화된 형태의 정보를 생성, 관리하기 위하여 스프레드트 등 다른 도구들과 연계하여 사용할 수도 있다.




테스트 하네스

애플리케이션 컴포넌트 및 모듈을 테스트하는 환경의 일부분으로 테스트를 지원하기 위한 코드와 데이터를 말하며 단위 또는 모듈 테스트에 사용하기 위해 코드 개발자가 작성

구성요소

테스트 드라이버

: 테스트 대상 하위 모듈을 호출하는 등 상향식 테스트에 필요

테스트 스텁

: 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로 하향식 테스트에 필요

테스트 슈트

: 테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합

테스트 케이스

: 입력값, 실행 조건, 기대 결과 등의 집합

테스트 시나리오

: 애플리케이션의 테스트가 되어야 할 기능 및 특징, 테스트가 필요한 상황을 작성한 문서

  • 하나의 단일 테스트 시나리오가 여러 개의 테스트 케이스들을 포함할 수 있다.

테스트 스크립트

: 자동화된 테스트 실행 절차에 대한 명세

목 오브젝트

: 사용자의 행위를 조건부로 사전에 입력해두면 그 상황에 예정된 행위를 수행하는 객체




리팩토링

유지보수 생산성 향상을 목적으로 기능을 변경하지 않고 복잡한 소스 코드를 수정,보완하여 가용성 및 가독성을 높이는 기법

목적

  • 유지보수성 향상
  • 유연한 시스템
  • 생산성 향상
  • 품질향상




디자인 패턴 ***

소프트웨어 공학의 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴

  • 디자인 패턴을 참고하여 개발할 경우 개발의 효율성과 유지보수성, 운용성이 높아지며 프로그램의 최적화에 도움이 됨



생성 패턴 [빌 프 팩 앱 싱]

객체 인스턴스 생성에 관여, 클래스 정의과 객체 생성 방식을 구조화,캡슐화를 수행

Builder

: 복잡한 인스턴스를 조립하여 만드는 구조로 복합 객체를 생성할 때 객체를 생성하는 방법과 구현하는 방법을 분리함으로써 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있다.

  • 생성과 표기를 분리해서 복잡한 객체를 생성

Prototype

: 일반적인 원형을 만들어 높고 복사하여 필요한 부분만 수정하여 사용하는 패턴으로 생성할 객체의 원형을 제공하는 인스턴스에서 생성할 객체들의 타입이 결정되도록 설정하여 객체를 생성할 때 갖추어야 할 기본 형태가 있을 때 사용된다.

  • 기존 객체를 복제함으로써 객체를 생성

Factory Method

: 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위 클래스에서 인스턴스를 생성하도록 하는 방식으로 인터페이스와 실제 객체를 생성하는 클래스를 분리할 수 있는 특성을 갖는다.

  • 생성할 객체의 클래스를 국한하지 않고 객체를 생성

Abstract Factory

: 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴으로 생성된 클래스에서는 API(인터페이스)를 제공하고 구체적인 구현은 다른 클래스에서 이루어지는 특징을 갖는다.

  • 동일한 주제의 다른 팩토리를 묶음

Singleton

: 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하여 생성된 객체를 어디에서든지 참조할 수 있도록 한다.

  • 한 클래스에 한 객체만 존재하도록 제한



구조 패턴 [브 데 퍼 플 프 컴 어]

더 큰 구조 형성 목적으로 클래스나 객체의 조합을 다루는 패턴

Bridge

: 기능의 클래스 계층과 구현의 클래스 계층을 연결하고 구현부에서 추상 계층을 분리하여 추상화된 부분과 실제 구현 부분을 독립적으로 확장할 수 있는 패턴

  • 구현뿐만 아니라 추상화된 부분까지 변경해야 하는 경우 활용

Decorator

: 기존에 구현되어 있는 클래스에 필요한 기능을 추가해 나가는 설계 패턴으로 기능 확장이 필요할 때 개체 간의 결합을 통해 기능을 동적으로 유연하게 확장할 수 있게 해주어 상속의 대안으로 사용하는 패턴

  • 객체의 결합을 통해 기능을 동적으로 유연하게 확장

Facade

: 복잡한 시스템에 대하여 단순한 인터페이스를 제공함으로써 사용자와 시스템 간 또는 여타 시스템과의 결합도를 낮추어 시스템 구조에 대한 파악을 쉽게 하는 패턴으로 오류에 대해서 단위별로 확인할 수 있게 하며 사용자의 측면에서 단순한 인터페이스 제공을 통해 접근성은 높일 수 있는 패턴

  • 통합된 인터페이스 제공

Flyweight

: 다수의 객체로 생성될 경우 모두가 갖는 본질적인 요소를 클래스화하여 공유함으로써 메모리를 절약하고 '클래스의 경량화'를 목적으로 하는 패턴

  • 여러 개의 가상 인스턴스를 제공하여 메모리 절감

Proxy

: 실제 객체에 대한 접근 이전에 필요한 행동을 취할 수 있게 만들며 미리 할당하지 않아도 상관없을 것들을 이용할 때 할당하게 하여 메모리 용량을 아끼고 정보은닉의 역할도 수행하는 패턴

  • 특정 객체로의 접근을 제어하기 위한 용도로 사용

Composite

: 객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴으로 사용자가 단일 객체와 복합 객체 모두 동일하게 다루도록 하는 패턴

  • 복합 객체와 단일 객체를 동일하게 취급

Adapter

: 기존에 생성된 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 하는 인터페이스를 만드는 패턴으로 두 가지 형태로 사용되는 패턴

  • 인터페이스가 호환되지 않는 클래스들을 함께 이용할 수 있도록 기존 인터페이스에 덧씌움



행위 패턴 [미 인 이 템 옵 스테 비 커 스트 메 체]

클래스나 객체들이 상호 작용하는 방법과 역할 분담을 다루는 패턴

Mediator

: 객체 지향 설계애서 객체의 수가 너무 많아지면 서로 간 통신을 위해 복잡해져서 객체 지향에서 가장 중요한 느슨한 결합의 특성을 해칠 수 있기 떄문에 이를 해결하는 방법으로 중간에 이를 통제하고 지시하는 중재자를 두로 모든 것을 요구하여 통신의 빈도수를 줄여 객체 지향의 목표를 달성하게 해주는 패턴

  • 상호 작용의 유연한 변경을 지원

Interpreter

: 언어의 다양한 해석, 구체적으로 구문을 나누고 그 분리된 구문의 해석을 맡는 클래스를 각각 작성하여 여러 형태의 언어 구문을 해석할 수 있게 만드는 패턴

  • 문법 자체를 캡슐화하여 사용

Iterator

: 컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 반복자를 사용하여 접근할 수 있는 패턴

  • 내부구조를 노풀하지 않고 복잡 객체의 원소를 순차적으로 접근 가능하게 해주는 행위 패턴

Template Method

: 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴

  • 일반적으로 상위 클래스에는 추상 메서드를 통해 기능의 골격을 제공하고 하위 클래스의 메서드에는 세부 처리를 구체화하는 방식으로 사용하며 코드 양을 줄이고 유지보수를 용이하게 만드는 특징을 갖는 패턴
  • 상위 작업의 구조를 바꾸지 않으면서 서브 클래스로 작업의 일부분을 수행

Observer

: 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에 연락이 가고 자동으로 내용이 갱신되는 방법으로 일대 다의 의존성을 가지며 상호 작용하는 객체 사이에서는 가능하면 느슨하게 결합하는 패턴

  • 객체의 상태 변화에 따라 다른 객체의 상태도 연동 / 일대다 의존

State

: 객체 상태를 캡슐화하여 클래스화함으로써 그것을 참조하게 하는 방식으로 상태에 따라 다르게 처리할 수 있도록 행위 내용을 변경하여 원시 코드의 수정을 최소화할 수 있고 유지보수의 편의성도 갖는 패턴

  • 객체의 상태에 따라 행위 내용을 변경

Visitor

: 각 클래스 데이터 구조로부터 처리 기능을 분리하여 별도의 클래스를 만들어 놓고 해당 클래스의 메서드가 각 클래스를 돌아다니며 특정 작업을 수행하도록 만드는 패턴으로 객체의 구조는 변경하지 않으면서 기능만 따로 추가하거나 확장할 때 사용하는 패턴

  • 특정 구조를 이루는 복합 객체의 원소 특성에 따라 동작을 수행할 수 있도록 지원하는 행위

Command

: 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴으로 하나의 추상 클래스에 메서드를 만들어 각 명령이 들어오면 그에 맞는 서브 클래스가 선택되어 실행되는 특징을 갖는 패턴

  • 요구사항을 객체로 캡슐화

Strategy

: 알고리즘 군을 정의하고 같은 알고리즘을 각각 하나의 클래스로 캡슐화한 다음 필요할 때 서로 교환해서 사용할 수 있게 하는 패턴으로 행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 패턴

  • 행위 객체를 클래스로 캡슐화해 동적으로 행위를 자유롭게 변환

Memento

: 클래스 설계 관점에서 객체의 정보를 저장할 필요가 있을 때 적용하는 디자인 패턴으로 Undo기능을 개발할 때 사용하는 디자인 패턴

  • 객체를 이전 상태로 복구시켜야 하는 경우 Undo요청 가능

Chain of Responsibility

: 정적으로 어떤 기능에 대한 처리의 연결이 하드코딩 되어 있을 때 기능 처리의 연결 변경이 불가능한데 이를 동적으로 연결되어 있는 경우에 따라 다르게 처리될 수 있도록 연결한 패턴

  • 한 요청을 2개 이상의 객체에서 처리




웹 서비스

네트워크에 분산된 정보를 서비스 형태로 개방하여 표준화된 방식으로 공유하는 기술로써 서비스 지향 아키텍처 개념을 실현하는 대표적인 기술

용어

HTTP

: WWW에서 HTML 문서를 송/수신하기 위한 규칙들을 정의해 놓은 표준 프로토콜

  • 인터넷에서 요청과 응답에 의해 처리하는 프로토콜로 GET, POST, PUT 방식 사용

하이퍼텍스트

: 문장이나 단어 등이 링크를 통해 서로 연결된 네트워크터럼 구성된 문서

  • 이미지 등을 누르면 다른 사이트로 옮겨갈수 있도록 하이퍼링크가 걸려 있다.

HTML

: 웹을 이루는 가장 기초적인 구성요소로 웹 콘텐츠의 의미와 구조를 정의할 때 사용하는 기술

  • WWW문서를 표현하는 표준화된 마크업 언어

유형

SOAP방식

: XML기반의 메시지를 네트워크 상태에서 교환하는 프로토콜

  • 보통의 경우 원격 프로시저 호출을 하는 메시지 패턴을 사용한다.
  • 네트워크 노드에서 다른쪽 노드로 메시지를 요청하고 서버는 메시지를 즉시 응답

WSDL

: 웹 서비스에 대한 상세 정보가 기술된 XML형식으로 구현되어 있는 언어

  • SOAP와 XML스키마와 결합하여 인터넷상에 웹 서비스를 제공하기 위해 사용되기도 한다.

UDDI

: 웹 서비스에 대한 정보인 WSDL을 등록하고 검색하기 위한 저장소로 공개적으로 접근, 검색이 가능한 레지스트리이자 표준

  • 서비스 제공자는 서비스 소비자에게 이미 알려진 온라인 저장소에 그들이 제공하는 목록들을 저장하게 되고 소비자들은 그 저장소에 접근함으러써 원하는 목록을 찾을 수 있다.
  • 알려진 송수신 시스템의 통합 구현에서는 서비스의 공개 및 검색과정이 필요 없으므로 UDDI를 구축하지 않는다.




IPC

운영체제에서 프로세스 간 서로 데이터를 주고받기 위한 통신 기술

주요 기법

메시지 큐

: 메시지 또는 패킷 단위로 동작하여 프로세스 간 통신

공유메모리

: 한 프로세스의 일부분을 다른 프로세스와 공유

소켓

: 클라이언트와 서버 프로세스 둘 사이에 통신을 가능하게 함

세마포어

: 프로세스 사이의 동기를 맞투는 기능을 제공




요구사항의 분류

  • 요구사항 파악의 기본은 시스템의 요구사항에 대한 파악
  • 요구사항은 기능적 요구사항과 비기능적 요구사항으로 분류

기능적 요구사항

: 시스템이 제공하는 기능, 서비스에 대한 요구사항

  • 특정 입력에 대해 시스쳄이 어떻게 반응해야 하는지에 대한 기술
  • 특정 상황에 대해 시스템이 어떻게 동작해야 하는지에 대한 기술
  • 특성
    : 기능성, 완전성, 일관성

ex) 온라인 홈페이지에서는 쇼핑카트에 주문하고자 하는 품목을 저장할 수 있는 장바구니 제공

비기능적 요구사항

: 시스템이 수행하는 기능 이외의 사항, 시스템 구축에 대한 제약사항에 관한 요구사항

  • 품질 속성에 관련하여 시스템이 갖춰야 할 사항에 관한 기술
  • 시스템이 준수해야 할 제한 조건에 관한기술
  • 특성
    : 신뢰성, 사용성, 효율성, 유지보수성, 이식성, 보안성 및 품질 관련 요구사항, 제약사항

ex) 특정 함수의 호출시간은 3초를 넘지 않아야 한다.




UI

  • 사용자와 시스템 사이에서 의사소통할 수 있도록 고안된 물리적, 가상의 매개체
  • 정보 기기나 소프트웨어의 화면 등에서 사람이 접하게 되는 화면
  • UX는 UI를 포함한다.

UI 유형

CLI (Command Line Interface)

: 명령어를 텍스트로 입력하여 조작하는 사용자 인터페이스

  • 정적인 텍스트 기반 인터페이스

GUI (Graphical User Interface)

: 그래픽 환경을 기반으로 한 마우스나 전자펜을 이용하는 사용자 인터페이스

  • 그래픽 반응 기반 인터페이스

NUI (Natual User Interface)

: 키보드나 마우스 없이 신체 부위를 이용하는 사용자 인터페이스 / 터치,음성 포함

  • 직관적 사용자 반응기반 인터페이스

OUI (Organic User Interface)

: 현실에 존재하는 모든 사물이 입출력장치로 변화할 수 있는 사용자 인터페이스

  • 유기적 상호 작용기반 인터페이스

UI 설계 원칙

직관성

: 누구나 쉽게 이해하고 쉽게 사용할 수 있어야 함

  • 쉬운 검색, 쉬운 사용성, 일관성

유효성

: 정확하고 안벽하게 사용자의 목표가 달성될 수 있도록 제작

  • 쉬운 오류 처리 및 복구

학습성

: 초보와 숙련자 모두가 쉽게 배우고 사용할 수 있게 제작

  • 쉽게 학습, 쉬운 접근, 쉽게 기억

유연성

: 사용자의 요구사항을 최대한 수용하고 실수를 방지할 수 있도록 제장

  • 오류 예방, 실수포용, 오류 감지




UML

객체 지향 소프트웨어 개발 과정에서 산출물을 명세화, 시각화, 문서화할 때 사용되는 모델링 기술과 방법론을 통합해서 만든 표준화된 범용 모델링 언어

클래스 다이어그램

객체 지향 모델링 시 클래스의 속성 및 연산과 클래스 간 정적인 관계를 표현한 다이어그램

구성요소

  • 클래스
    : 공통의 속성, 연산, 관계, 의미를 공유하는 객체들의 집합
  • 속성
    : 클래스의 구조적 특성에 이름을 붙인 것으로 특성에 해당하는 인스턴스가 보유할 수 있는 값의 범위를 기술
  • 연산,매서드
    : 이름, 타입, 매개변수들과 연관된 행위를 호출하는데 요구되는 제약사항들을 명시하는 클래스의 행위적 특징 / 객체에 요청하여 행동에 영향을 줄 수 있는 서비스
  • 접근 제어자
    : 클래스에 접근할 수 있는 정도를 표현
    - '+', '-', '#', '~'

관계

연관관계

: 클래스가 서롤 개념적으로 연결된 선 / 2개 이상의 사물이 서로 관련되어 있는 상태

  • 사물 사이를 실선으로 연결하여 표현하고 방향성을 화살표로
  • 서로에게 영향을 주는 양방향 관계의 경우 화살표를 생략하고 실선으로만 연결

의존 관게

: 하나의 클래스가 또 다른 클래스를 사용하는 관계 / 다른 클래스의 멤버 함수 사용

  • 사물 사이에 서로 연관은 있으나 필요에 따라 서로에게 영향을 주는 시간동안만 유지
  • 하나의 클래스에 있는 멤버 함수의 인자가 변함에 따라 다른 클래스에 영향을 미칠 때의 관계
  • 영향을 주는 사물이 영향을 받는 사물쪽으로 점선 화살표를 연결

일반화 관계 (=상속)

: 하나의 사물이 다른 사룸에 비해 더 일반적인지 구체적인지를 표현

  • 일반적인 개념을 부모, 구체적인 개념을 자식
  • 구체적인 사룸에서 일반적인 사물 쪽으로 속이 빈 화살표를 연결

실체화 관계

: 사물이 할 수 있거나 해야 하는 기능으로 서로를 그룹화할 수 있는 관계를 표현

  • 추상 클래스나 인터페이스를 상속받아 자식클래스가 추상 매서드를 구현할 때 사용

포함 관계 (=복합)

: 포함되는 쪽에서 포함하는 쪽으로 속이 채워진 마름모를 연결하여 표현

  • 영구적이고 집합 관계보다 더 강한 관계로 구성
  • 집합 관계의 특수한 형태로 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계를 표현

집합 관계

: 하나의 사물이 다른 사물에 포함되어 있는 관계 표현

  • 하나의 객체에 여러 개의 독립적인 객체들이 구성되는 관계
  • 포함되는 쪽에서 포함하는 쪽으로 속이 빈 마름모를 연결


패키지 다이어그램

시스템의 서로 다른 캐피지들 사이의 의존관계를 표현하기 위한 다이어그램

구성요소

  • 패키지
    : 요소들을 그룹으로 조직하기 위한 요소
  • 의존관계
    : 하나의 패키지가 다른 패키지를 사용하는 관계
    - 의존성의 성질을 나타내기 위해 스테레오 타입을 붙일 수 있음




데이터베이스에서 조건을 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 기준이 되는 속성

특성

유일성

: 식별자에 의해 엔터티 타입 내에 모든 엔터티들이 유일하게 구분

최소성

: 최소한의 속성으로 식별자 구성

종류

기본 키 (Primary Key)

: 테이블의 각 튜플들을 고유하게 식별하는 컬럼

대체 키 (Alternate Key)

: 후보 키 중에서 기본 키로 선택되지 않은 키

후보 키 (Candidate Key)

: 기본 키와 대체 키를 합친 키

  • 테이블에서 각 튜플을 구별하는 데 기준이 되는 컬럼

슈퍼 키 (Super Key)

: 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만 최소성은 만족하지 못하는 키

외래 키 (Foreign Key)

: 한 릴레이션의 컬럼이 다른 릴레이션의 기본 키로 이용되는 키

  • 테이블 간의 참조 데이터 무결성을 위한 제약조건




EAI

기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간의 정보를 전달, 연계, 통합이 가능하도록 해주는 솔루션

  • 각 비즈니스 간 통합 및 연계성을 증대시켜 효율성을 높여 줄 수 있으며 각 시스테 간의 확장성을 높여 줄 수 있다.

구성요소

  • EAI플랫폼
  • 어댑터
  • 브로커
  • 메시지 큐
  • 비즈니스 워크플로우

구축 유형

포인트 투 포인트

: 가장 기초적인 애플리케이션 통합방법으로 1:1 단순 통합방법

  • 장점으로는 솔루션을 구매하지 않고 개발자 간의 커뮤니케이션을 통해서도 통합 가능

허브 앤 스포크

: 단일한 접점의 허브 시스템을 통하여 데이터를 전송하는 중앙 집중식 방식

  • 허브 장애 시 전체 장애 발생

메시지 버스

: 애플리케이션 사이 미들웨어를 두어 연계하는 미들웨어 통합 방식

  • 뛰어난 확장성과 대용량 데이터 처리 가능

하이브리드

: 그룹 내는 허브 앤 스포트 방식을 사용하고 그룹 간에는 메시지 버스 방식을 사용하는 통합 방식

  • 그룹 내 환경에 맞는 작업 가능




데이터 분석 함수

총합, 평균 등의 데이터 분석을 위해서는 복수 행 기준의 데이터를 모아서 처리하는 것을 목적으로 하는 다중 행 함수

다중 행 연산자

서브 쿼리의 결과가 여러 개의 튜플을 반환하는 다중 행 서브쿼리에서 사용되는 연산자

연산자설명
IN리턴되는 값 중에서 조건에 해당하는 값이 있으면 참
ANY서브쿼리에 의해 리턴되는 각각의 값과 조건을 비교하여 하나 이상을 만족하면 참
ALL값을 서브쿼리에 의해 리턴되는 모든 값과 조건 값을 비교하여 모든 값을 만족해야만 참
EXISTS메인 쿼리의 비교 조건이 서브쿼리의 결과 중에서 만족하는 값이 하나라도 존재하면 참




집계 함수

여러 행 또는 테이블 전체 행으로부터 하나의 결괏값을 반환하는 함수


SELECT 컬럼1, 컬럼2,..., 집계함수
FROM 테이블명
[WHERE 조건]
GROUP BY 컬럼1, 컬럼2,..
[HAVING 조건식(집계함수 포함)]

  • 집계함수를 계산할 때 NULL이 포함된 경우 없는 데이터로 판단하면 된다.
집계함수설명
COUNT복수 행의 줄 수를 반환하는 함수
SUM복수 행의 해당 컬럼 간의 합계를 계산하는 함수
AVG복수 행의 해당 컬럼 간의 평균을 계산하는 함수
MAX복수 행의 해당 컬럼 간의 최댓값을 계산하는 함수
MIN복수 행의 해당 컬럼 간의 최솟값을 계산하는 함수
STDDEV복수 행의 해당 컬럼 간의 표준편차을 계산하는 함수
VARANGE복수 행의 해당 컬럼 간의 분산을 계산하는 함수




형상관리

소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동

  • SW 생명 주기 동안 형상 관리를 통해 산출물을 체계적으로 관리하여 SW의 가시성, 추적성, 무결성 등의 품질 보증을 보장할 수 있다.

목적

  • 프로젝트 생명주기 동안 제품의 무결성과 변경에 대한 추적성을 확보할 수 있다.
  • 프로젝트 변경이 발생 되었을 때 처리하는 메커니즘을 제공한다.
  • 대표적인 메커니즘 : 형상 관리대상 파악, 베이스라인 지정, 형상 관리, 접근 제어

절차

  1. 형상 식별
    : 형상 관리 대상을 정의 및 식별하는 활동
  • 추적성 부여를 위해 ID와 관리번호를 부여
  • 변경 관련 이슈 발생 시 ID와 관리번호를 이용하여 추적
  1. 형상 통제
    : 변경욕 관리, 변경제어, 형상 관리 등 통제 지원
  • 형상 항목의 버전 관리를 위한 형상통제위원회 운영
  • 베이스라인에 대한 관리 및 형상 통제 수행 가능
  1. 형상 감사
    : 소프트웨어 베이스라인의 무결성 평가
  • 베이스라인 변경 시 요구사항과 일치 여부 검토
  1. 형상 기록
    : 소프트웨어 형상 및 변경관리에 대한 각족 수행결과를 기록
  • 형상결과 보고서 작성

소프트웨어 형상 관리 도구 유형

공유 폴더 방식 (RCS, SCCS)

: 매일 개발이 완료된 파일은 약속된 위치의 공유 폴더에 복사하는 방식

  • 담당자 한 명이 매일 공유 폴더의 파일을 자기 PC로 복사하고 컴파일하여 에러 확인과 정상 동작 여부 확인
  • 정상 동작일 경우 다음날 각 개발자들이 동작 여부 확인

클라이언트/서버 방식 (CVS, SYN)

: 중앙에 버전 관리 시스템을 항시 동작시키는 방식

  • 개발자들의 현재 작업 내용과 이전 작업내용 추적에 용이
  • 서로 다른 개발자가 같은 파일을 작업했을 때 경고 메시지 출력

분산 저장소 방식 (git)

: 호컬 저장소와 원격 저장소로 분리되어 분산 저장하는 방식

  • 중앙의 저장소에서 로컬 파일을 복사한 순간 개발자 자신만의 로컬 저장소에 생성
  • 개발 완료한 파일을 수정한 다음에 로컬 저장소에 우선적으로 커밋한 이후, 다시 원격 저장소에 반영하는 방식

소프트웨어 형상 관리 도구별 특징 *

CVS (Concurrent Versions Syster)

: 서버와 클라이언트로 구성되어있고 다수의 인원이 동시에 범용적인 운영체제로 접근 가능한 형상 관리 도구

SVN (Subversion)

: 하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있게 도와주는 도구

  • 저장소를 만들어 그곳에 소스를 저장해 소스 중복이나 여러 문제를 해결하기 위한 도구

RCS (Revision Control System)

: CVS와 달리 소스 파일의 수정을 한 사람만으로 제한하여 다수의 사람이 파일의 수정을 동시에 할 수 없도록 파일 잠금 방식으로 형상을 관리하는 도구

Bitkeeper

: SVN과 비슷한 중앙 통제 방식으로 대규모 프로젝트에서 빠른 속도를 내도록 개발된 형상 관리 도구

Git

: Git의 속도에 중점을 둥 분산형 버전 관리 시스템이며 대형 프로젝트에서 효과적이고 유용

  • Git의 커밋 동작은 로컷 저장소에서 이루어지고 푸시라는 동작으로 원격 저장소에 반영
  • 로컬 저장소에서 작업이 이루어져 매우 빠른 응답을 받을 수 있음
  • Git의 작업 폴더는 전체 기록과 각 기록을 추적할 수 있는 정보를 포함하는 완전한 형태의 저장소

Clear Case

: 복수 서버, 복수 클라이언트 구조이며 서버가 부족할 때 필요한 서버를 하나씩 추가하여 확장성을 기할 수 있음




chmod 명령

접근 권한 변경 명령어로 기존 파일 또는 디렉토리에 대한 접근 권할을 변경할 때 사용

명령어

chmod [-R] permission 파일이름|디렉토리이름[]

  • 해당 파일의 소유주나 슈퍼 유저만이 실행할 수 있다.
  • 옵션 -R
    : 하위 디렉토리와 파일의 권한까지 변경
  • permission
    : 기호나 8진수로 접근 권한을 지정

권한을 기호로 기술

  • 대상
    : u(user), g(group), o(other), a(all)
  • 연산자
    : +(추가), - (제거), = (지정)
  • 접근 권한
    : r(읽기), w(쓰기), x(실행)

권한을 숫자로 기술

  • r(읽기) : 4
  • w(쓰기) : 2
  • x(실행) : 1




메모리 배치 기법

최초 적합 (First Fit)

: 프로세스가 적재될 수 있는 가용 공간 중에서 첫 번째 분할에 할당하는 방식

최적 적합 (Best Fit)

: 가용 공간 중에서 가장 크기가 비슷한 공간을 선택하여 프로세스를 적재하는 방식

  • 공백 최소화 장점

최악 적합 (Worst-Fit)

: 프로세스의 가용 공간 중에서 가장 큰 공간에 할당하는 방식




0개의 댓글