정보처리기사

[8~12과목] 개념 키워드 암기

김꼬알 2023. 4. 21. 19:09

트랜잭션의 특성

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

ACID

  • 원자성(Atomicity): 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료되든지 아니면 전혀 반영되지 않도록 복구되어야 함
  • 일관성(Consistency): 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환됨
  • 독립성(Isolation): 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우, 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없음
  • 영속성(Durability): 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함

 

트랜잭션의 상태

활부완실철

  • 활동: 초기 상태, 트랜잭션이 실행 중일 때 가지는 상태
  • 부분 완료: 마지막 명령문이 실행된 후에 가지는 상태
  • 완료: 트랜잭션이 성공적으로 완료된 후 가지는 상태
  • 실패: 정상적인 실행이 더 이상 진행될 수 없을 때 가지는 상태
  • 철회 상태: 트랜잭션이 취소되고 데이터베이스가 트랜잭션 시작 전 상태로 환원된 상태

 

병행 제어 미보장 시 문제점

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

갱현모연

  • 갱신 손실: 먼저 실행된 트랜잭션의 결과를 나중에 실행된 트랜잭션이 덮어쓸 때 발생하는 오류
  • 현황 파악 오류: 트랜잭션의 중간 수행 결과를 다른 트랜잭션이 참조하여 발생하는 오류
  • 모순성: 두 트랜잭션이 동시에 실행되어 데이터베이스의 일관성이 결여되는 오류
  • 연쇄 복귀: 복수의 트랜잭션이 데이터 공유 시 특정 트랜잭션이 처리를 취소할 경우 트랜잭션이 처리한 곳의 부분을 취소하지 못하는 오류

 

병행 제어 기법의 종류

로 낙타다

  • 로킹: 같은 자원을 액세스하는 다중 트랜잭션 환경에서 DB의 일관성과 무결성을 유지하기 위해 트랜잭션의 순차적 진행을 보장하는 직렬화 기법
  • 낙관적 검증: 트랜잭션이 어떠한 검증도 수행하지 않고 일단 트랜잭션을 수행하고, 트랜잭션 종료 시 검증을 수행하여 데이터베이스에 반영하는 기법
  • 타임 스탬프 순서: 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 타임 스탬프를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법
  • 다중버전 동시성 제어: 트랜잭션의 타임스탬프와 접근하려는 데이터의 타임 스탬프를 비교하여 직렬 가능성이 보장되는 적절한 버전을 선택하여 접근하도록 하는 기법

 

회복 기법 종류

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

회로체그

  • 회복기법
  • 로그 기반 회복 기법
    • 지연 갱신 회복 기법: 트랜잭션이 완료되기 전까지 데이터베이스에 기록하지 않는 기법
    • 즉각 갱신 회복 기법: 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영하는 기법
  • 체크 포인트 회복 기법: 장애 발생 시 검사점 이후에 처리된 트랜잭션에 대해서만 장애 발생 이전 상태로 복원시키는 회복 기법
  • 그림자 페이징 회복 기법: 데이터베이스 트랜잭션 수행 시 복제본을 생성하여 데이터베이스 장애 시 이를 이용해 복구하는 기법

 

DDL 명령어

크알드트

  • CREATE: 도메인, 스키마, 테이블, 뷰, 인덱스 등을 정의
  • ALTER: 테이블에 대한 정의 변경
  • DROP: 스키마, 도메인, 기본 테이블, 뷰 테이블, 인덱스, 계약 조건 등을 제거
    • CASCADE: 제거할 요소를 참조하는 모든 개체를 함께 제거
    • RESTRICT: 다른 개체가 제거할 요소를  참조 중 일 때는 제거를 취소
  • TRUNCATE: 테이블에서 모든 행을 삭제

 

DDL 명령어 대상

도스테뷰인

도메인 / 스키마 / 테이블 / 뷰 / 인덱스

 

DCL 명령어

커롤그래

  • COMMIT: 트랜잭션 처리가 정상적으로 완료된 후, 트랜잭션이 수행한 내용을 데이터베이스에 반영함
  • ROLLBACK: 변경되었으나 아직 COMMIT이 되지 않은 모든 내용을 취소하고 데이터베이스를 이전 상태로 되돌림
  • GRANT: 데이터베이스 관리자가 데이터베이스 사용자에게 권한을 부여함
  • REVOKE: 데이터베이스 관리자가 데이터베이스 사용자에게 부여한 권한을 취소함

 

GRANT 명령어

그온투

GRANT 권한 ON 테이블 TO 사용자

 

REVOKE 명령어

리온프

REVOKE 권한 ON 테이블 FROM 사용자

 

TCL 명령어

TCL(Transaction Control Language): 트랜잭션을 제어하는 용도로 사용

커롤체

COMMIT / ROLLBACK / CHECKPOINT

 

데이터베이스 DML

세인업데

  • SELECT: 테이블에서 튜플을 검색
  • INSERT: 기본 테이블에 새로운 튜플을 삽입할 때 사용
    • INSERT INTO 테이블명 VALUES 데이터;
  • UPDATE: 기본 테이블에 있는 튜플들 중에서 특정 튜플의 내용을 변경
    • UPDATE 테이블명 SET 속성명 = 데이터 [WHERE 조건];
  • DELETE: 기본 테이블에 있는 튜플들 중 특정 튜플을 삭제(테이블 구조나 테이블 자체는 남겨둠)
    • DELETE FROM 테이블명 [WHERE 조건];

 

SELECT 명령문

셀프 웨 구해오

  • SELECT 검색할 튜플
  • FROM 테이블명
  • WHERE 조건
  • GROUP BY 속성을 그룹별로 묶을 때 사용 
  • HAVING 그룹별 조건을 줄 때 사용
  • ORDER BY 검색 내용을 정렬할 때 사용

 

개발 도구의 분류

빌구테형

  • 빌드 도구: 작성한 코드의 빌드 및 배포를 수행하는 도구
  • 구현 도구: 개발자의 코드 작성과 디버깅, 수정 등과 같은 작업을 지원하는 도구
  • 테스트 도구: 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구
  • 형상 관리 도구: 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위한 도구

 

형상 관리의 절차

  • 형상 관리(SCM; Software Configuration Management): 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동
    • 형상 관리의 목적: 소프트웨어 개발의 전체 비용을 줄이고, 개발 과정의 여러 방해 요인이 최소화되도록 보증하는 것

식통감기

  • 형상 식별: 형상 관리 대상에 이름과 관리 번호를 부여하고, 계층(Tree) 구조로 구분하여 수정 및 추적이 용이하도록 하는 작업
  • 형상 통제: 식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준선이 잘 반영될 수 있도록 조정하는 작업
  • 형상 감사: 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업
  • 형상 기록: 형상의 식별, 통제, 감사 작업의 결과를 기록, 관리하고 보고서를 작성하는 작업

 

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

공클분

  • 공유 폴더 방식: 버전 관리 자료가 지역 컴퓨터의 공유 폴더에 저장되어 관리되는 방식
    • 종류: SCCS, RCS, PVCS, QVCS 등
  • 클라이언트/서버 방식: 버전 관리 자료가 서버에 저장되어 관리되는 방식
    • 종류: CVS, SVN(Subversion), CVSNT, Clear Case, CMVC, Perforce 등
  • 분산 저장소 방식: 버전 관리 자료가 하나의 원격 저장서와 분산된 개발자 PC의 지역 저장소에 함께 저장되어 관리되는 방식
    • 종류: Git, GNU arch, DCVS, Bazaar, Mercurial, Team Ware, Bitkeeper, Plastic SCM 등

 

응집도의 유형

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

우논시절 통순기

  • 우연적 응집도(Coincidental Cohension): 모듈 내부의 각 구성요소가 연관이 없을 경우의 응집도
  • 논리적 응집도(Logical Cohension): 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도
  • 시간적 응집도(Temporal Cohension): 연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도
  • 절차적 응집도(Procedural Cohension): 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
  • 통신적 응집도(Communication Cohension): 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우의 응집도
  • 순차적 응집도(Sequential Cohension): 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우의 응집도
  • 기능적 응집도(Functional Cohension): 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도

 

결합도의 유형

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

내공외제스자

  • 내용 결합도(Content Coupling): 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
  • 공통 결합도(Common Coupling): 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호 작용하는 경우의 결합도
  • 외부 결합도(External Coupling): 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜 또는 디바이스 인터페이스를 공유할 경우의 결합도
  • 제어 결합도(Control Coupling): 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우의 결합도
  • 스탬프 결합도(Stamp Coupling): 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도
  • 자료 결합도(Data Coupling): 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어난 경우의 결합도

 

배치 프로그램의 유형

  • 배치 프로그램: 사용자와의 상호 작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 방식

이온정

  • 이벤트 배치: 사전에 정의해둔 조건 충족 시 자동으로 실행
  • 온디맨드 배치: 사용자의 명시적 요구가 있을 때마다 실행
  • 정기 배치: 정해진 시점(주로 야간)에 정기적으로 실행

 

Cron 표현식

초분시일 월요연

초 / 분 / 시간 / 일 / 월 / 요일 / 연도

 

SW 개발 보안의 3대 요소(보안의 3대 요소)

기무가

  • 기밀성: 인가되지 않은 개인혹은 시스템 접근에 따른 정보 공개 및 노출을 차단하는 특성  
  • 무결성: 정당한 방법을 따르지 않고서는 데이터가 변경될 수 없으며, 데이터의 정확성 및 완전성과 고의/악의로 변경되거나 훼손 또는 파괴되지 않음을 보장하는 특성
  • 가용성: 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속해서 사용할 수 있도록 보장하는 특성

 

SW 개발 보안 용어

자위취위

자산 / 위협 / 취약점 / 위험

 

DDoS 공격 구성요소

  • DDoS 공격: 여러 대의 공격자를 분산 배치하여 동시에 동작하게 함으로써 특정 사이트를 공격하는 기법

HAMAD(하마드)

Handler / Agent / Master / Attacker / Daemon

 

인증 기술의 유형

  • 인증(Authentication): 다중 사용자 컴퓨터 시스템이나 네트워크 시스템에서 로그인을 요청한 사용자의 정보를 확인하고 접근 권한을 검증하는 보안 절차 

지소생특

  • 지식 기반: 사용자가 기억하고 있는 정보를 기반으로 인증을 수행하는 것
  • 소지 기반: 사용자가 소유하고 있는 것을 기반으로 인증을 수행하는 것
  • 생체 기반: 사용자의 고유한 생체 정보를 기반으로 인증을 수행하는 것
  • 특징 기반 인증: 사용자의 행동 정보를 이용해 인증하는 행위 기반 인증, 인증을 시도하는 위치의 적절성을 확인하는 위치 기반 인증

 

접근 통제 보호 모델

벨기비무

  • 벨-라파듈라: 미 국방부 지원 보안 모델로 보안 요소 중 기밀성을 강조하며 강제적 정책에 의해 접근 통제하는 모델
    • No Read Up, No Write Down
  • 비바모델: 벨-라파듈라 모델의 단점을 보완한 무결성을 보장하는 최초의 모델
    • No Read Down, No Write Up

 

시큐어 코딩 가이드 적용 대상

  • 시큐어 코딩(Secure Coding): 구현 단계에서 발생할 수 있는 보안 취약점들을 최소화하기 위해 보안 요소들을 고려하여 코딩하는 것
    • 보안 정책을 바탕으로 시큐어 코딩 가이드를 작성하고, 개발 참여자에게는 시큐어 코딩 교육을 실시함

입보시 에코캡아

  • 입력 데이터 검증 및 표현: 입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목들
  • 보안 기능: 소프트웨어 개발의 구현 단계에서 코딩하는 기능인 인증, 접근 제어, 기밀성, 암호화 등을 올바르게 구현하기 위한 보안 점검 항목들
  • 시간 및 상태: 동시 수행을 지원하는 병렬 처리 시스템이나 다수의 프로세스가 동작하는 환경에서 시간과 실행 상태를 관리하여 시스템이 원활하게 동작되도록 하기 위한 보안 점검 항목들
  • 에러 처리: 소프트웨어 실행 중에 발생할 수 있는 오류들을 사전에 정의하여 오류로 인해 발생할 수 있는 문제들을 예방하기 위한 보안 점검 항목들
  • 코드 오류: 소프트웨어 구현 단계에서 개발자들이 코딩 중 실수하기 쉬운 형 변환, 자원 반환 등의 오류를 예방하기 위한 보안 점검 항목들
  • 캡슐화: 정보 은닉이 필요한 중요한 데이터와 기능을 불완전하게 캡슐화하거나 잘못 사용함으로써 발생할 수 있는 문제를 예방하기 위한 보안 점검 항목들
  • API 오용: 소프트웨어 구현 단계에서 API를 잘못 사용하거나 보안에 취약한 API를 사용하지 않도록 하기 위한 보안 점검 항목들

 

취약점 분석 절차

자진 제진결보

자산 조사 및 분석 / 진단 대상 선정 / 제약 사항 확인 / 진단 수행 / 결과 분석 / 보고서 작성

 

소프트웨어 테스트의 원리

결완초집 살정오

  • 결함이 존재: 결함이 존재함을 밝히는 활동
  • 완벽한 테스팅 불가능: 완벽하게 테스팅하는 시도는 불필요한 시간과 자원 낭비
  • 초기에 테스팅 시작
  • 결함 집중: 적은 수의 모듈에서 대다수의 결함이 발견됨(20%의 모듈에서 80%의 결함 발견 - 파레토 법칙)
  • 살충제 패러독스: 동일한 테스트 케이스에 의한 반복적 테스트는 버그를 찾지 못함
  • 정황에 의존 : 소프트웨어의 성격에 맞게 테스트 실시
  • 오류-부재의 궤변: 요구사항을 충족시켜주지 못한다면 결함이 없다고 해도 품질이 높다고 할 수 없음

 

화이트박스 테스트 유형

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

구결조 조변다 기제데루

  • 구문 커버리지: 프로그램내의 모든 명령문을 적어도 한 번 수행 
  • 결정 커버리지: 각 분기의 결정 포인트 내의 전체 조건식이 적어도 한 번은 참과 거짓의 결과를 수행
  • 조건 커버리지: 각 분기의 결정 포인트 내의 각 개별 조건식이 적어도 한 번은 참과 거짓의 결과가 되도록 수행
  • 조건-결정 커버리지: 전체 조건식 뿐만 아니라 개별 조건식도 참 한 번, 거짓 한 번 결과가 되도록 수행
  • 변경 조건-결정 커버리지: 개별 조건식이 다른 개별 조건식에 영향을 받지 않고, 전체 조건식에 독립적으로 영향을 주도록 함으로써 조건/결정 커버리지를 향상 시킨 커버리지
  • 다중 조건 커버리지: 결정 조건 내 모든 개별 조건식의 모든 가능한 조합을 100% 보장
  • 기본 경로 커버리지: 수행 가능한 모든 경로를 테스트
  • 제어 흐름 테스트: 프로그램 제어 구조를 그래프 형태로 나타내어 내부 로직을 테스트
  • 데이터 흐름 테스트: 제어 흐름 그래프에 데이터 사용 현황을 추가한 그래프를 통해 테스트
  • 루프 테스트: 프로그램의 반복 구조에 초점을 맞춰 실시하는 테스트 케이스 설계 기법

 

블랙박스 테스트 유형

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

동경결상 유분페원비오

  • 동등 분할 테스트: 입력 데이터의 영역을 유사한 도메인별로 유효값/무효값을 그룹핑하여 대표값 테스트 케이스를 도출
  • 경곗값 분석 테스트: 등가 분할 후 경계값 부분에서 오류 발생 확률이 높기 때문에 경계값을 포함하여 테스트 케이스를 설계하여 테스트
  • 결정 테이블 테스트: 요구사항의 논리와 발생조건을 테이블 형태로 나열하여 조건과 행위를 모두 조합하여 테스트
  • 상태 전이 테스트: 테스트 대상/시스템이나 객체의 상태를 구분하고 이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우의 수를 수행
  • 유스케이스 테스트: 시스템이 실제 사용되는 유스케이스로 모델링되어 있을 때 프로세스 흐름을 기반을 테스트 케이스를 명세화하여 수행
  • 분류 트리 테스트: SW의 일부 또는 전체를 트리 구조로 분석 및 표현하여 테스트 케이스를 설계하여 테스트
  • 페어와이즈 테스트: 테스트 데이터 값들 간에 최소한 한 번씩을 조합하는 방식
  • 원인-결과 그래프 테스트: 그래프를 활용하여 입력 데이터 간의 관계 및 출력에 미치는 영향을 분석하여 효용성이 높은 테스트 케이스를 선정하여 테스틑
  • 비교 테스트: 여러 버전의 프로그램에 같은 입력값을 넣어서 동일한 결과 데이터가 나오는지 비교
  • 오류 추정 테스트

 

테스트 목적에 따른 분류

회안성 구회병

  • 회복 테스트: 시스템에 고의로 실패를 유도하고 시스템의 정상적 복귀 여부를 테스트
  • 안전 테스트: 소스 코드 내의 보안적인 결함을 미리 점검 
  • 성능 테스트: 사용자의 이벤트에 시스템이 응답하는 시간, 특정 시간 내에 처리하는 업무량, 사용자 요구에 시스템이 반응하는 속도 등을 특정
  • 구조 테스트: 시스템의 내부 논리 경로, 소스 코드의 복잡도를 평가
  • 회귀 테스트: 오류를 제거하거나 수정한 시스템에서 오류 제거와 수정에 의해 새로이 유입된 오류가 없는지 확인하는 일종의 반복 테스트 기법
  • 병행 테스트: 변경된 시스템과 기존 시스템에 동일한 데이터를 입력 후 결과를 비교

 

테스트 종류에 따른 분류

명구경

  • 명세 기반 테스트(블랙박스 테스트): 프로그램의 요구사항 명세서를 기반으로 테스트 케이스를 선정하여 테스트
  • 구조 기반 테스트(화이트박스 테스트): 소프트웨어 내부 논리 흐름에 따라 테스트 케이스를 작성하고 확인
  • 경험 기반 테스트(블랙박스 테스트): 유사 소프트웨어나 유사 기술 평가에서 테스터의 경험을 토대로 한 직관과 기술 능력을 기반으로 수행하는 테스트

 

테스트 커버리지 유형

  • 테스트 커버리지: 프로그램의 테스트 수행 정도를 나타내는 값으로 테스트 수행의 완벽성을 측정하는 도구

기라코

  • 기능 기반 커버리지: 테스트 대상 애플리케이션의 전체 기능을 모수로 설정하고, 실제 테스트가 수행된 기능의 수를 측정
  • 라인 커버리지: 애플리케이션 전체 소스 코드의 라인 수를 모수로 테스트 시나리오가 수행한 소스 코드의 라인 수 측정
  • 코드 커버리지: 소스 코드의 구문, 조건, 결정 등의 구조 코드 자체가 얼마나 테스트 되었는지를 측정

 

테스트 오라클 종류

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

참샘휴일

  • 참 오라클: 모든 입력값에 대하여 기대하는 결과를 생성함으로써 발생된 오류를 모두 검출
  • 샘플링 오라클: 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공
  • 휴리스틱 오라클: 샘플링 오라클을 개선한 오라클로, 특정 입력값에 대해 올바른 결과를 제공하고 나머지 값들에 대해서는 휴리스틱(추정)으로 처리
  • 일관성 검사 오라클: 애플리케이션 변경이 있을 때 수행 전과 수행 후의 결과값이 동일한지 확인

 

테스트 레벨 종류

단통시인

  • 단위 테스트: 사용자 요구 사항에 대한 단위 모듈, 서브루틴 등을 테스트하는 단계(구현)
  • 통합 테스트: 단위 테스트를 통과한 모듈 사이의 인터페이스, 통합된 컴포넌트 간의 상호 작용을 검증하는 테스트(설계)
  • 시스템 테스트: 통합된 단위 시스템의 기능이 시스템에서 정상적으로 수행되는지를 검증(분석)
  • 인수 테스트: 계약상의 요구사항이 만족되었는지 확인하기 위한 테스트(요구사항)

 

하향식 및 상향식 통합 수행 방식

  • 통합 테스트: 단위 테스트가 끝난 모듈을 통합하는 과정에서 발생하는 오류 및 결함을 찾는 테스트 기법

하스 상드

하향식(스텁) / 상향식(드라이버)

 

테스트 하네스 구성요소

  • 테스트 하네스: 애플리케이션의 컴포넌트 및 모듈을 테스트하는 환경의 일부분. 테스트를 지원하기 위해 생성된 코드와 데이터를 의미함

드 스슈케 시스목

  • 드라이버: 테스트 대상의 하위 모듈을 호출하고, 파라미터를 전달하고 모듈 테스트 수행 후의 결과를 도출하는 도구
  • 스텁: 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로, 일시적으로 필요한 조건만을 가지고 있는 테스트용 모듈
  • 슈트: 테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합
  • 케이스: 사용자의 요구 사항을 정확하게 준수했는지 확인하기 위한 입력값, 실행 조건, 기대 결과 등으로 만들어진 테스트 항목의 명세서
  • 시나리오
  • 스크립트: 자동화된 테스트 실행 절차에 대한 명세서
  • 목 오브젝트: 사전에 사용자의 행위를 조건부로 입력해두면, 그 상황에 맞는 예정된 행위를 수행하는 객체

 

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

  • 애플리케이션 성능: 최소한의 자원을 사용하여 최대한 많은 기능을 신속하게 처리하는 정도

처응경자

  • 처리량: 일정 시간 내에 애플리케이션이 처리하는 일의 양
  • 응답 시간: 애플리케이션에 요청을 전달한 시간부터 응답이 도착할 때까지 걸린 시간
  • 경과 시간: 애플리케이션에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
  • 자원 사용률: 애플리케이션이 의뢰한 작업을 처리하는 동안의 CPU 사용량, 메모리 사용량, 네트워크 사용량 등 자원 사용률

 

클린 코드 작성 원칙

  • 클린 코드: 누구나 쉽게 이해하고 수정 및 추가할 수 있는 단순, 명료한 코드, 즉 잘 작성된 코드

가단의 중추

  • 가독성: 누구든지 코드를 쉽게 읽을 수 있도록 작성함
  • 단순성: 코드를 간단하게 작성함
  • 의존성 최소: 코드가 다른 모듈에 미치는 영향을 최소화함
  • 중복성 제거: 코드의 중복을 최소화함
  • 추상화: 상위 클래스/메소드/함수에서는 간략하게 애플리케이션의 특성을 나타내고, 상세 내용은 하위 클래스/메서드/함수에서 구현함

 

윈도즈 계열 운영 체제 특징

지선자 오

  • GUI(그래픽 사용자 인터페이스) 제공: 키보드로 명령어를 직접 입력하지 않고, 마우스로 아이콘이나 메뉴를 선택하여 모든 작업을 수행하는 방식
  • 선점형 멀티태스킹 방식 제공: 동시에 여러 개의 프로그램을 실행하는 멀티태스킹을 하면서 운영체제가 각 작업의 CPU 이용 시간을 제어하여 응용 프로그램 실행 중 문제가 발생하면 해당 프로그램을 강제 종료시키고 모든 시스템 자원을 반환하는 방식
  • 자동감지 기능(Plug and Play) 제공: 컴퓨터 시스템에 프린터나 사운드 카드 등의 하드웨어를 설치했을 때, 해당 하드웨어를 사용하는데 필요한 시스템 환경을 운영체제가 자동으로 구성해주는 기능
  • OLE 사용: 다른 여러 응용 프로그램에서 작성된 문자나 그림 등의 개체를 현재 작업 중인 문서에 자유롭게 연결하거나 삽입하여 편집할 수 있게 하는 기능

 

유닉스 계열 운영체제 특징

대다 사이계

  • 대화식 운영체제 기능 제공
  • 다중 작업 기능 제공
  • 다중 사용자 기능 제공
  • 이식성 제공: 대부분 C 언어로 작성되어 있어 이식성이 높으며 장치, 프로세스 간 호환성이 높음
  • 계층적 트리 구조 파일 시스템 제공

 

메모리 관리 기법의 종류

  • 메모리 관리 전략: 보조기억장치의 프로그램이나 데이터를 주기억장치에 적재시키는 시기, 적재 위치 등을 지정하여 한정된 주기억장치의 공간을 효율적으로 사용하기 위한 것

반배할교

  • 반입기법: 보조기억장치에 보관 중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략
  • 배치기법: 새로 반입되는 프로그램이나 데이터를 어디에 위치시킬 것인지를 결정하는 기법 
  • 할당기법: 프로그램이나 데이터를 실행시키기 위해 주기억장치에 어떻게 할당할 것인지에 대한 내용
  • 교체기법: 주기억장치의 모든 영역이 이미 사용중인 상태에서 새로운 프로그램이나 데이터를 주기억 장치에 배치하려고 할 때, 이미 사용되고 있는 영역 중에서 어느 영역을 교체하여 사용할 것인지를 결정하는 전략

 

배치 기법의 유형

초적악

  • 최초 적합(First-fit): 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서, 첫 번째 분할 영역에 배치시키는 방법
  • 최적 적합(Best-fit): 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서, 단편화를 가장 작게 남기는 분할 영역에 배치시키는 방법
  • 최악 적합(Worst-fit): 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서, 단편화를 가장 많이 남기는 분할 영역에 배치시키는 방법
    • 단편화: 주기억장치의 분할된 영역에 프로그램이나 데이터를 할당할 경우, 분할된 영역이 프로그램이나 데이터보다 작거나 커서 생기는 빈 기억 공간

 

주기억장치 할당 기법의 종류

연단다 분페세

  • 연속 할당 기법: 프로그램을 주기억장치에서 연속으로 할당하는 기법
  • 단일 분할 할당 기법: 주기억장치를 운영체제 영역과 사용자 영역으로 나누어 한순간에는 오직 한 명의 사용자만이 주기억장치의 사용자 영역을 사용하는 기법
  • 다중 분할 할당 기법: 주기억장치의사용자 영역을 여러 개의 고정된 크기로 분할하고 준비 상태 큐에서 준비 중인 프로그램을 각 영역에 할당하여 수행하는 기법  
  • 분산 할당 기법: 프로그램을 특정 단위의 조각으로 나누어 주기억장치 내에 분산하여 할당하는 기법
  • 페이징 기법: 가상 기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후, 나눠진 프로그램을 동일하게 나눠진 주기억장치의 영역에 적재시켜 실행하는 기법
  • 세그먼테이션 기법 : 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후, 주기억장치에 적재시켜 실행하는 기법

 

지역성의 유형

  • 지역성: 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있다는 이론

시공순

  • 시간 지역성: 프로세스가 실행되면서 하나의 페이지를 일정 시간 동안 집중적으로 액세스하는 현상
  • 공간 지역성: 프로세스 실행 시, 일정 위치의 페이지를 집중적으로 액세스하는 현상
  • 순차 지역성: 데이터가 순차적으로 액세스되는 경향으로, 프로그램 내의 명령어가 순차적으로 구성되어 있음

 

프로세스 상태

  • 프로세스: 일반적으로 프로세서에 의해 처리되는 사용자 프로그램, 시스템 프로그램, 즉 실행중인 프로그램을 의미함
  • PCB(프로세스 제어 블록): 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓은 곳

생준 실대완

  • 생성 상태: 프로세스 최초 상태로, 주기억장치에 적재되지 않고 보조기억장치에 저장되어 있는 실행 파일 상태
  • 준비 상태: 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태 
  • 실행 상태: 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
  • 대기 상태: 프로세스에 입출력 처리가 필요하면 현재 실행 중인 프로세스가 중단되고, 입출력 처리가 완료될 때까지 대기하고 있는 상태
  • 완료 상태: 프로세스의 실행이 끝나고 프로세스 할당이 해제된 상태

 

프로세스 상태 전이

디타 블웨

  • 디스패치(준비 → 실행): 프로세스 생성 상태에서 프로세서만  할당받으면 실행 상태로 전이
  • 타이머 런 아웃(실행 → 준비): 일정 시간이 지나면 스케줄러에 의해 PCB에 저장, 프로세서 반납 후 준비 상태로 전이
  • 블록(실행 → 슬립): I/O 등의 자원 요청 후 즉시 할당 받을 수 없어, 할당 받을 때까지 기다리고 있는 상태로 전이
  • 웨이크 업(슬립 → 준비): 필요한 자원이 할당되면 프로세스는 준비 상태로 전이

 

선점 스케줄링 알고리즘

  • 스케줄링: 프로세스가 생성되어 실행이 될 때 필요한 여러 자원을 해당 프로세스에게 할당하는 작업
  • 선점 스케줄링: 하나의 프로세스가 CPU를 할당받아 실행하고 있을 때, 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법

SMMR

  • SRT(Shortest Remaining Time): 짧은 시간 순서대로 프로세스를 수행. 남은 처리 시간이 더 짧은 프로세스가 Ready 큐에 들어오면 그 프로세스가 바로 선점됨 
  • MLQ(Multi-Level Queue): Ready 큐를 여러 개 사용하는 기법. 각각의 큐는 자신의 스케줄링 알고리즘을 수행하며 큐와 큐 사이에도 우선순위를 부여함
  • MLFQ(Multi-Level Feedback Queue): MLQ와 비슷하나 프로세스들이 큐를 이동할 수 있음
  • Round Robin: 시분할 시스템을 위해 고안된 방식. FCFS 알고리즘을 선점 형태로 변형한 기법
    • FCFS 기법과 같이 준비상태 큐에 먼저 들어온 프로세스가 먼저 CPU를 할당받지만 각 프로세스는 할당된 시간 동안만 실행한 후 실행이 완료되지 않으면 다음 프로세스에게 CPU를 넘겨주고 준비상태 큐의 가장 뒤로 배치함

 

비선점 스케줄링 알고리즘

  • 비선점 스케줄링: 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법

우기 HFS

  • 우선순위: 준비상태 큐에서 기다리는 각 프로세스마다 우선순위를 부여하여 우선순위가 가장 높은 프로세스에세 먼저 CPU를 할당하는 기법(우선순위가 같을 경우 FCFS)
  • 기한부: 프로세스에게 일정한 시간을 주어 그 시간 안에 완료하도록 하는 기법
  • HRN(Highest Response-ratio Next): 대기 시간과 서비스 시간을 이용하여 우선순위를 계산하고 그 숫자가 가장 높은 것부터 낮은 순으로 우선순위 부여
  • 우선순위 계산식: (대기 시간 + 서비스 시간) / 서비스 시간
  • FCFS(First Come First Service) = FIFO(First In First Out): 준비상태 큐에 도착한 순서에 따라 차례로 CPU를 할당하는 기법
  • SJF(Shortest Job First): 준비상태 큐에서 기다리고 있는 프로세스들 중에서 실행 시간이 가장 짧은 프로세스에 먼저 CPU를 할당하는 기법

 

반환시간 및 대기시간 계산 방법

반종도 대반서

반환시간 = 종료시간 - 도착시간 / 대기시간 = 반환시간 - 서비스 시간

 

교착 상태 발생 조건

  • 교착 상태: 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상

상점비환

  • 상호 배제: 한 번에 한 개의 프로세스만이 공유 자원을 사용할 수 있어야 함
  • 점유와 대기: 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 함
  • 비선점: 다른 프로세스에 할당된 자원은 사용이 끝날 때 까지 강제로 뺏을 수 없어야 함
  • 환형 대기: 공유 자원과 공유 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어, 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 함

 

교착 상태 해결 방법

예회발복

  • 예방: 교착 상태가 발생하지 않도록 사전에 시스템을 제어하는 방법
  • 회피: 교착 상태가 발생할 가능성을 배제하지 않고, 교착 상태가 발생하면 적절히 피해나가는 방법 
  • 발견: 시스템에 교착 상태가 발생했는지 점검하여 교착 상태에 있는 프로세스와 자원을 발견하는 것. 교착 상태 발견 알고리즘, 자원 할당 그래프 등 사용
  • 복구: 교착 상태를 일으킨 프로세스를 종료하거나 교착 상태의 프로세스에 할당된 자원을 선점하여 프로세스나 자원을 회복하는 것

 

클라우드 컴퓨팅 분류

사공하

사설 클라우드 / 공용 클라우드 / 하이브리드 클라우드

 

클라우드 서비스 유형

인플소

인프라형 서비스(IaaS) / 플랫폼형 서비스(PaaS) / 소프트웨어형 서비스(SaaS)

 

원거리 통신(WAN) 연결 기술

  • 원거리 통신망(Wide Area Network): 국가와 국가 혹은 대륙과 대륙 같이 멀리 떨어진 사이트들을 연결하여 구성
    • 일정 지역에 있는 사이트들을 근거리 통신망으로 연결한 후 각 근거리 통신망을 연결하는 방식을 사용함

전회패

전용 회선 방식 / 회선 교환 방식 / 패킷 교환 방식

 

프로토콜의 기본 3요소

  • 프로토콜: 서로 다른 기기들 간의 데이터 교환을 원활하게 수행할 수 있도록 표준화시켜 놓은 통신 규약

구의타

  • 구문: 전송하고자 하는 데이터 형식, 부호화, 신호 레벨 등을 규정함
  • 의미: 두 기기 간의 효율적이고 정확한 정보 전송을 위한 협조 사항과 오류 관리를 위한 제어 정보를 규정함
  • 타이밍: 두 기기 간의 통신 속도, 메시지의 순서 제어 등을 규정함

 

자동 반복 요청 방식(ARQ)의 종류

스고셀

Stop-and Wait ARQ 방식 / Go-back-N ARQ 방식 / Selective Repeat ARQ 방식

 

IPv4 전송 방식

유멀브

유니캐스트 / 멀티캐스트 / 브로드캐스트

 

IPv6 전송 방식

  • IPv6: 현재 사용하고 있는 IP 주소 체계인  IPv4의 주소 부족 문제를 해결하기 위해 개발. 128비트의 긴 주소를 사용하며 자료 전송 속도가 빠름

유멀애

  • 유니캐스트: 단일 송신자와 단일 수신자 간의 통신(1:1 통신)
  • 멀티캐스트: 단일 송신자와 다중 수신자 간의 통신(1:다 통신)
  • 애니캐스트: 단일 송신자와 가장 가까이에 있는 단일 수신자 간의 통신(1:1 통신)

 

TCP 특징

  • TCP/IP: 인터넷에 연결된 서로 다른 기종의 컴퓨터들이 데이터를 주고받을 수 있도록 하는 표준 프로토콜
    • TCP(Transmission Control Protocol): OSI 7계층 - 전송 계층에 해당. 신뢰성 있는 연결형 서비스 제공
    • IP(Internet Protocol): OSI 7계층 - 네트워크 계층에 해당. 데이터그램을 기반으로 하는 비연결형 서비스 제공

신연흐혼

신뢰성 보장 / 연결 지향적 특징 / 흐름 제어 / 혼잡 제어

 

UDP 헤더 구조

  • UDP(User Datagram Protocol): OSI 7계층 - 전송 계층에 해당. 데이터 전송 전에 연결을 설정하지 않는 비연결형 서비스 제공

소데 행체다

Source Port Number / Destination Port Number / UDP Length / UDP Checksum / Data

 

네트워크 설치 구조(토폴로지) 종류

  • 네트워크: 2대 이상의 컴퓨터를 전화선이나 케이블 등으로 연결하여 자원을 공유하는 것. 데이터, 프로그램, 주변 장치, 인터넷 등을 공유하기 위해 사용함

버트링성

  • 버스형: 1개의 통신 회선에 여러 대의 단말 장치가 연결되어 있는 상태
  • 트리형: 중앙 컴퓨터와 일정 지역의 단말 장치까지는 하나의 통신 회선으로 연결시키고, 이웃하는 단말 장치는 일정 지역 내에 설치된 중간 단말 장치로부터 다시 연결시키는 형태. 분산 처리 시스템 구성 방식
  • 링형: 컴퓨터와 단말 장치들을 서로 이웃하는 것끼리 연결시킨 포인트 투 포인트 방식의 구성 형태
  • 성형: 중앙에 중앙 컴퓨터가 있고, 이를 중심으로 단말 장치들이 연결되는 중앙 집중식의 네트워크 구성 상태