[정보처리기사 필기] 2022 기사패스 정보처리기사 기출문제 상세풀이 800제 : 551 ~ 600 오답정리

552. 관계 대수

  • 관계 데이터 언어
    • 관계 데이터베이스의 릴레이션을 조작하기 위한 기본 연산에 관계대수와 관계해석이 있음
    • 사용자의 입장에서 데이터를 처리하는 데이터 언어가 됨
    • 관계대수는 절차적 언어, 관계해석은 비절차적 언어
  • 관계 대수
    • 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어
    • 릴레이션을 처리하기 위해 연산자와 연산 규칙을 제공하는 언어
    • 피연산자가 릴레이션, 결과도 릴레이션
    • 관계 대수의 연산자
      • 관계 대수의 순수 관계 연산자
        • Select
          • 연산자 기호 : 시그마( σ)
          • 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션 생성
          • 릴레이션의 행에 해당하는 튜플을 구하는 것 (수평 연산)
        • Project
          • 연산자 기호 : 파이(𝝿)
          • 주어진 릴레이션에서 속성 리스트에서 제시된 속성만 추출하는 연산
          • 릴레이션의 열에 해당하는 속성을 추출하는 것 (수직 연산)
        • Join
          • 연산자 기호 :
          • 공통 속성을 중심으로 두 개 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산
        • Division
          • 연산자 기호 : ÷
          • X ⊃ Y인 두 개의 릴레이션 R(X)와 S(Y) 가 있을 때, R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산
      • 관계 대수의 일반 집합 연산자
        • 합집합 (UNION)
          • 연산자 기호 : ⋃
          • 두 릴레이션에 존재하는 튜플의 합집합을 구하되, 결과로 생성된 릴레이션에서 중복되는 튜플 제거
        • 교집합 (INTERSECTION)
          • 연산자 기호 : ⋂
          • 두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산
        • 차집합 (DIFERENCE)
          • 연산자 기호 : −
          • 두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산
        • 교차곱 (CARTESIAN PRODUCT)
          • 연산자 기호 : ⨉
          • 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산
  • 관계 해석
    • 코드 박사가 제안한 것
    • 수학의 술어해석에 기반을 두고 있으며 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특징을 갖고 있음
    • SQL문과 같은 질의어를 사용하며 튜플 관계해석과 도메인 관계해석으로 구성
    • 원하는 데이터만 명시하고 질의를 어떻게 수행할 것인가는 명시하지 않는 선언적인 언어

 

554. SQL의 유형

  • 데이터 질의어 (DQL)
    • 데이터베이스에 저장된 데이터를 검색하는데 사용하는 질의어 
    • 명령어 : SELECT
  • 데이터 조작어 (DML)
    • 데이터베이스에 저장된 데이터를 수정, 삭제, 추가하는 명령어 
    • 명령어 : INSERT, UPDATE, DELETE
  • 데이터 정의어 (DDL)
    • 데이터베이스 객체를 생성하고 수정, 삭제하는 명령어
    • 데이터베이스의 스키마를 정의, 스키마에 대한 명세는 시스템 카탈로그에 저장 
    • 명령어 : CREATE, ALTER, DROP
  • 데이터 제어어 (DCL)
    • 데이터베이스의 규정이나 기법을 정의하고 제어하는 언어
    • 사용자 권한 부여/취소, 트랜잭션 제어
    • 명령어 : GRANT, REVOKE, COMMIT, ROLLBACK

 

555. 정규화

  • 정규화의 개념
    • 관계형 데이터베이스 설계 시 중복을 최소화하도록 데이터를 구조화하는 프로세스
    • 제대로 조직되지 않은 테이블과 관계들을 작고 잘 조직된 테이블과 관계들로 나누는 무손실 분해를 포함
  • 정규화의 목적
    • 하나의 테이블에서의 데이터 삽입, 삭제, 변경이 정의된 관계들로 인하여 데이터베이스의 나머지 부분들로 전파되게 하는 것
    • 어떤 관계라도 데이터베이스 내에서 표현이 가능하도록 만드는 것
    • 관계에서 바람직하지 않은 삽입, 삭제, 갱신 이상이 발생하지 않도록 하는 것
    • 새로운 형태의 데이터가 삽입될 때 관계를 재구성할 필요성을 줄임
    • 보다 간단한 관계 연산에 기초하여 검색을 보다 효율적으로 함
  • 정규화의 원칙
    • 무손실 표현 : 같은 의미의 정보를 유지하면서 더 바람직한 구조를 만듦
    • 자료의 중복성 감소 : 중복되는 정보는 삭제하거나 통합
    • 분리의 원칙 : 독립적인 관계는 별개의 릴레이션으로 표현, 릴레이션 각각에 대해 독립적 조작이 가능

 

557. SQL의 논리 연산자

  • AND : 두 가지 조건식을 만족해야 하는 연산자
  • OR : 둘 중에 하나만 만족해도 되는 연산자
  • NOT : 대상과 일치하지 않는 데이터 조회 연산자

 

560. 함수 종속

  • 함수 종속
    • 속성 간 의존 관계, 릴레이션 R에서 속성 X가 속성 Y를 결정짓는 관계
    • X → Y 로 표기 : Y는 X에 종속된다 (X 결정자, Y 종속자)
  • 암스트롱의 추론 규칙 : 릴레이션 속성간의 함수적 종속성을 유도해낼 수 있는 추론 규칙
    • 기본 규칙
      • 반사규칙 : X ⊇ Y 이면 X Y
      • 증가규칙 : X Y 이면 XZ YZ
      • 이행규칙 : X Y and Y Z 이면, X Z
    • 유도 규칙
      • 결합규칙 : X Y and X Z이면, X YZ
      • 분해규칙 : X YZ이면 X Y and X Z
      • 의사이행규칙 : X Y and WY Z이면 WX Z

 

561. 응집도

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

 

566. 논리연산자

  • 논리 연산자 : 참과 거짓을 결정하는 연산자
    • && : 주어진 논리식이 모두 참이면 1을 반환 - 논리 AND 연산
    • || : 주어진 논리식 중에서 하나라도 참이면 1을 반환 - 논리 OR 연산
    • ! : 논리식의 결과가 참이면 0을, 거짓이면 1을 반환 - 논리 NOT 연산
  • 문제풀이
#include <stdio.h>
int main(void) {
	int a = 3, b = 4, c = 2;
    int r1, r2, r3;
    
    r1 = b <= 4 || c == 2;
    r2 = (a > 0) && (b < 5);
    
    printf("%d", r1+r2+r3);
    return 0;
}
r1 = b <= 4 || c == 2; 4 <= 4와 2== 2식 모두 참이므로 r1의 값은 1
r2 = (a > 0) && (b < 5); (3 > 0)과 (4 < 5)식 모두 참이므로 r2의 값은 1
printf("%d", r1+r2+r3); 1 + 1 + 0 = 2 이므로 정수 2를 출력

 

567. 자바의 연산자 우선순위

  • 우선 순위 높은 순
    • ( ), [ ] : 괄호, 대괄호
    • !, ~, ++, -- : 부정, 증감 산술 연산자
    • *, /, % : 곱셈, 나눗셈 산술 연산자
    • +, - : 덧셈, 뺄셈 산술 연산자
    • <<, >>, >>> : 시프트 연산자
    • <, <=, >, >=, ==, != : 관계 연산자
    • &, ^, |, &&, || : 논리 연산자
    • ?: : 삼항 연산자
    • =, +=, -=, *=, /=, %=, <<=, >>=, &=, ^=, ~= : 대입 연산자
  • 우선 순위 낮은 순

 

569. CIDR 표기 및 FLSM 사례

  • 192. 168. 1. 1. 0/24의 의미는 서브넷마스크가 255.255.255.0
  • 8비트 크기의 앞쪽 3개 필드를 합치면 24개 비트가 됨 -> CIDR로 표시하면 /24를 붙임
  • /24의 의미는 현재의 IP에서 앞의 24비트는 Net ID로 사용하고 뒤의 8비트 Host ID로 사용 중임을 의미하므로 서브넷 마스크는 255.255.255.0이 됨
  • 192.168.1.0/24 네트워크를 FLSM 방식을 이용하여 4개의 subnet을 나눈다고 하면, FLSM은 Fixed-Length Subnet Masking의 약자로서 동일한 크기로 현재의 네트워크를 나눈다는 의미
  • 서브넷 대역에서 호스트들이 사용 가능한 IP 주소 중 제일 첫 IP 주소는 네트워크 주소, 제일 마지막 IP 주소는 브로드캐스트 주소로 할당, 나머지 IP들은 호스트에 할당
  • /24의 네트워크를 4개로 나누려면 뒤에 있는 8개 비트인 Host ID에서 2개의 비트를 빌려 와서 2^2인 4개 대역으로 나눌 수 있음
  • 2개의 비트만 빌려 오면 2^2인 4개가 서브네팅 가능한 최대 개수
  • 2개의 비트를 Net ID로 가져온 경우 이를 CIDR로 표시하면 192.168.1.0/26
  • Net ID 개수가 총 26개(24+2)라는 의미
  • 서브넷 마스크는 255.255.255.192이 됨
  • 192는 마지막 8개 비트에서 Net ID로 할당한 2개를 1로 세팅한 후 10진수로 표현하면 11000000이 192이 됨
  • IP를 4개로 서브네팅하면 호스트가 할당 가능한 IP는 다음과 같음
    • 서브넷 마스크가 255.255.255.0이면 할당 가능한 총 Host ID는 2^8이므로 256개
    • 4개로 동일 크기로 서브네팅하면 각 영역은 64개의 호스트 IP를 할당할 수 있으며, 각 IP 영역별 첫 IP는 네트워크 주소이고, 마지막 IP 주소는 브로드 캐스트 주소가 됨
      • 첫번째 대역 : 192.168.1.0 ~ 192.168.1.63
      • 두번째 대역 : 192.168.1.64 ~ 192.168.1.127
      • 세번째 대역 : 192.168.1.128 ~ 192.168.1.191
      • 네번째 대역 : 192.168.1.192 ~ 192.168.1.255

 

570. IP 주소

  • IP 주소 체계
    • 인터넷에 연결된 모든 컴퓨터를 네트워크상에 구별하는 고유의 논리적인 주소체계
    • IP version 4는 8 bit 크기의 필드 네 개를 모아서 구성한 32bit(4bytes) 논리 주소로 구성되어 있음
  • IP 주소 구조
    • 클래스 타입
      • IP 주소를 효율적으로 배정
      • A, B, C, D, E 클래스
        • A 클래스
          • 네트워크 주소로 8비트, 호스트 주소로 24비트를 사용
          • 0.0.0.0 ~ 127.255.255.255 (0.0.0.0과 127.x.x.x은 사용하지 않음)
          • 실제로 사용하는 주소는 1 ~ 126까지로, 1.0.0.0 ~ 126.255.255.255
          • 대형 기관 및 기업에서 사용
        • B 클래스
          • 네트워크 주소에 16비트, 호스트 주소에 16비트를 배정
          • IP 주소의 시작이 128~191로 시작하고, 기본 네트워크 마스크는 255.255.0.0 
          • 네트워크 주소는 128.0.0.0 ~ 191.255.0.0까지고, 호스트 주소는 2바티으로 호스트 65,534개를 구성
          • 중형 기관 및 기업에서 사용 
        • C 클래스 
          • 호스트 배정에 총 8비트를 사용할 수 있으므로 호스트를 최대 254개 사용
          • IP 주소의 시작이 192 ~ 223으로 시작
          • 기본 서브넷 마스크는 255.255.255.0
          • 네트워크 주소는 192.0.0.0 ~ 223.255.255.0까지
          • 호스트 주소는 254개 사용
          • 소규모 기관 사용
        • D : 멀티 캐스트, E : 예비용
        • D 클래스는 Net id와 Host id가 없음
    • 네트워크 주소 (Net ID)
      • 전체 네트워크를 좀 더 작은 네트워크로 분할하여 각 호스트가 속한 네트워크를 대표
      • 8bit, 16bit, 24bit
    • 호스트 주소 (Host ID)
      • 네트워크 주소로 표현하는 네트워크 내부에서 각 호스트의 주소를 표현하는 역할
      • 전체 32bit에서 네트워크 주소를 제외한 나머지에 해당 

 

571. 주소 연산자 &, 역참조 연산자 *

  • 주소 연산자 & : 변수의 주소
  • 역참조 연산자 * : 포인터가 가리키고 있는 주소의 데이터를 반환
  • 문제풀이
#include <stdio.h>
int main(void) {
	int n = 4;
    int* pt = NULL;
    pt = &n;
    
    printf("%d", &n + *pt - *&pt + n);
    return 0;
}
int n = 4; n에 4 지정
int* ot = NULL; pt 포인터를 NULL로 초기화
pt = &n; 변수 n의 주소를 pt에 지정
printf("%d", &n + *pt - *&pt + n); &n + *pt - *&pt + n 결과를 출력

 

573. while 문

  • while문을 수행하면서 변화하는 배열 객체
  • 문제풀이
public class ovr {
	public static void main(String [] arge) {
    	int arr[];
        int i = 0;
        arr = new int[10];
        arr[0] = 0;
        arr[1] = 1;
        while(i<8) {
        	arr[i+2] = arr[i+1] + arr[i];
            i++;
        }
        System.out.printIn(arr[9]);
    }
}
int arr[];
int i = 0;
배열 변수 arr을 선언
변수 i를 선언과 동시에 0으로 초기화
arr = new int[10]; arr 배열의 크기를 10개로 초기화
arr[0] = 0;
arr[1] = 1;
arr 배열 0번째 자리에 0을 입력
arr 배열 0번째 자리에 1을 입력
while(i<8) {
   arr[i+2] = arr[i+1] + arr[i];
   i++;
}
i의 값이 8이 될 때까지 while 문 반복 수행
i는 0이므로, 최초 arr[2] = arr[1]+arr[0] 수행되므로 arr[2]의 값은 1이 되고, 이후 i++ 문장에 의해 i가 0에서 1로 증가되어 다음 while문 반복
System.out.printIn(arr[9]); arr[9] 저장된 값을 출력

 

574. 프로세스와 스레드

  • 프로그램은 파일 형태로 저장하여 관리되다가 실행을 시키면 동작을 함, 이때 실행 중인 프로그램을 프로세스라고 함
  • 한 개의 프로세스는 여러 개의 스레드로 나누어 수행될 수 있음
  • 스레드는 다중 프로그래밍 시스템에서 CPU를 받아서 수행되는 프로그램 단위
  • 스레드는 프로세스나 태스크보다 더 작은 단위, 실행 환경을 공유시켜 기억 장소의 낭비가 줄어듦

 

577. 모듈화

  • 모듈화의 개념
    • 프로그램 구성 요소의 일부로 관련된 데이터와 함수들이 묶어서 모듈을 만듦
    • 주로 파일 단위로 구성
  • 모듈화의 원리
    • 분할과 지배 (Divide & Conquer) : 복잡한 문제를 분해, 모듈 단위로 문제를 해결
    • 정보 은닉 (Information hiding) : 어렵거나 변경 가능성이 있는 모듈을 타 모듈로부터 은닉
    • 자료 추상화 (Data Abstraction) : 각 모듈 자료 구조를 액세스하고 수정하는 함수 내에 자료 구조의 표현 내역을 은닉
    • 모듈의 독립성 (Module Independence) : 독립성이 강함 모듈은 낮은 결합도와 높은 응집도의 특징
  • 모듈화 측정 척도
    • 공통모듈의 구현을 위해 재사용성 강화를 위한 중요한 개념
    • 모듈은 내부 처리 요소 간 독립성을 나타냄
    • 응집도가 높을수록 좋고 모듈 간 연관성은 약결합이 가능하도록 결합도는 낮을수록 좋음

 

578. 메모리 관리정책

  • 반입 정책 (Fetch)
    • 요구반입 : 실행 중 프로그램이 타 프로그램 및 데이터 참조 요구 시 적재
    • 예상반입 : 실행 중 프로그램에 참조될 프로그램 및 데이터 예상 적재
  • 배치 정책 (Placement)
    • 최초 적합 (First Fit) : 프로그램, 데이터가 들어갈 수 있는 빈 영역의 첫 번째 분할 영역에 배치
    • 최적 적합 (Best Fit) : 프로그램, 데이터가 들어갈 수 있는 빈 영역 중 단편화를 가장 적게 남기는 분할 영역에 배치
    • 최악 적합 (Worst Fit) : 프로그램, 데이터가 들어갈 수 있는 빈 영역 중 가장 큰 영역에 배치
  • 교체 정책( Replacement)
    • OPT
      • 추후 가장 오랫동안 사용하지 않을 페이지 교체
      • 호출 순서 및 참조 상황 사전 예측 필요
    • FIFO
      • 적재시간 기억, 오래된 페이지 교체
      • 이해성, 프로그래밍 간단, Belady's 이상 현상 발생
    • LRU
      • 최근 가장 오랫동안 미사용한 페이지 교체
      • 계수기, 스택 사용
    • LFU
      • 사용페이지 빈도수가 가장 적은 페이지 교체
      • 프고르매 실행 초기 많이 사용된 페이지 유리
    • NUR
      • 최근에 사용하지 않은 페이지 교체
      • 참조 비트, 변형 비트 2개의 비트 사용

 

579. C언어의 변수 선언 규칙

  • 영문과 숫자를 혼용 가능하되 첫 선언은 영문자
  • 대문자, 소문자를 구분
  • 변수 제일 앞이나 중간에 _를 사용
  • while, for, else 등 C 라이브러리에서 미리 선언된 예약어는 변수 사용을 못함

 

580. 파일 디스크립터

  • 파일 관리를 위해 시스템이 필요로 하는 정보
  • 파일마다 독립적으로 존재하며, 시스템에 따라 다른 구조
  • 대개 보조기억장치에 저장되어 있다가 해당 파일이 오픈될 때 주기억장치로 이동
  • 파일을 관리하기 위해 시스템(운영 체제)이 필요로 하는 파일에 대한 정보를 갖고 있는 제어 블록 (FCB)

 

581. 침입탐지 시스템

  • 침입탐지 시스템 개념
    • 비인가된 사용자가 자원의 무결성, 기밀성, 가용성을 저해하는 일련의 행동들과 보안 정책을 위반하는 행위
    • 침입을 실시간으로 탐지하며, 차단가지 하는 시스템은 IPS
  • 침입탐지 시스템 유형
    • 구성 형태
      • NIDS (네트워크 기반) : 독립적으로 네트워크에서 실행되어 운영 서버의 성능 저하가 없음
      • HIDS (호스트 기반) : 서버에 직접 설치됨에 따라 네트워크 환경과는 무관한 장점, 개별 서버에 설치되므로 다소의 서버 부하 존재
    • 공격 패턴 인지 모델
      • 오용 탐지 기법 : 특정 공격에 관한 기존의 축적된 지식을 바탕으로 패턴을 설정하고 이 패턴과 축약 가공된 데이터를 비교하여 일치하는 경우 불법 침입으로 간주하는 방법
      • 이상 탐지 기법 : 사용자의 행동 패턴을 분석한 후 정상적인 사용 패턴과 비교해 이상(예외적인) 패턴을 발견하면 침입으로 간주 

 

582. 접근통제

  • 접근통제 개념
    • 보안 정책에 따라 접근 객체(시스템 자원, 통신 자원 등)에 대한 접근 주체(사용자, 프로세스 등)의 접근 권한 확인 및 이를 기반으로 한 접근 제어를 통해 자원에 대한 비인가된 사용을 방지하는 기능
  • 접근통제 정책의 유형
    • 임의 접근 통제 (DAC)
      • 시스템 객체에 대한 접근을 사용자 개인 또는 그룹의 식별자를 기반으로 제한하는 방법
      • 주체와 객체의 신분 및 임의적 접근 통제 규칙에 기초하여 객체에 대한 주체의 접근을 통제하는 기능
      • 통제 권한이 주체에게 있음
      • 주체와 임의적으로 접근통제 권한을 배분하여 제어할 수 있음
    • 강제 접근 통제 (MAC)
      • 정보시스템 내에서 어떤 주체가 특정 객체에 접근하려 할 때 양쪽의 보안 레이블에 기초하여 높은 보안 수준을 요구하는 정보가 낮은 보안 수준의 주체에 노출되지 않도록 접근을 제한하는 통제 방법
      • 통제 권한이 제3자에게 있음
      • 주체는 접근 통제 권한과 무관
    • 역할기반 접근 통제 (RBAC)
      • 사용자가 주어진 역할에 대한 접근 권한을 부여받는 방식
      • 사용자가 바뀌어도 역할에는 변함없음
      • DB 작업 권한 통제
      • 운영체제 작업 권한 통제

 

584. 파스-타(PaaS-TA) 

  • 해외 벤더 중심의 클라우드 플랫폼 시장에서 국내 IT 서비스 경쟁력 강화를 목표로, 한국 지능정보사회진흥원(NIA)의 지원으로 다양한 국내 업체와 협업을 통해 만든 개방형 클라우드 플랫폼
  • 2016년 4월에 처음 파스-타 공식 버전인 1.0 스파게티가 공개되었고, 2021년 2월 새로운 버전인 파스-타 5.5 세미니가 출시되었으며, 차세대 전자정부 서비스의 공통기반인 전자정부 클라우드 플랫폼에 적용되어 향후 클라우드 기반 전자정부 서비스의 표준 개발, 운영 환경을 제공하는 역할을 수행할 예정

 

585. 접근제어

  • 보안 정책에 따라 접근 객체 (시스템 자원, 통신 자원 등)에 대한 접근 주체 (사용자, 프로세스 등)의 접근 권한 확인 및 이를 기반으로 한 접근 제어를 통해 자원에 대한 비인가된 사용을 방지하는 기능
  • 시스템 및 네트워크에 대한 접근 제어의 가장 기본적인 수단은 IP와 서비스 포트로 가능
  • 네트워크 장비에서 수행하는 IP에 대한 접근제어로는 관리 인터페이스의 접근제어와 ACL 등이 있음

 

590. SDS (Software Defined Storage)

  • 하드웨어에서 스토리지 소프트웨어를 분리하는 스토리지 아키텍처
  • 일반적으로 독점 하드웨어에 대한 소프트웨어의 종속성을 제거하여, 모든 업계 표준 또는 x86 시스템에서 동작하도록 설계
  • 하드웨어 스토리지 소프트웨어가 분리되므로 사용자가 독점적 하드웨어를 급히 추가하는 것이 아니라 필요할 때 스토리지 용량을 적절히 확장할 수 있으며, 필요에 따라 하드웨어를 업그레이드하거나 다운 그레이드할 수도 있음
  • 기본적으로 뛰어난 유연성을 제공

 

591. COCOMO

  • COCOMO 개념
    • 개발할 소프트웨어의 규모(LOC)를 예측한 후 소프트웨어 종류에 따라 각 비용 산정 공식에 대입하여 비용을 산정하는 방식
    • 원시 프로그램의 규모에 따라 조직형, 반분리형, 내장형으로 분류
  • 원시 프로그램의 규모에 따른 COCOMO 유형
    • 조직형 (Organic Model) : 기관 내부에서 개발된 중소 규모의 소프트웨어로 일괄 자료 처리나 과학 기술 계산용, 비즈니스 자료 처리용으로 5만 라인 이하의 소프트웨어를 개발하는 유형으로 사무처리, 업무, 과학 분야의 소프트웨어 개발에 적합
    • 반분리형 (Semi Detached Model) : 조직형과 내장형의 중간 정도에 해당, 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등의 30만 라인 이하의 소프트웨어를 개발하는 유형으로 컴파일러, 인터프리터와 같은 유틸리티 개발에 적합한 모형
    • 내장형 (Embedded Model) : 최대 규모의 트랜잭션 처리 시스템이나 운영체제 등의 30만 라인 이상의 소프트웨어를 개발하는 유형으로 신호기 제어 시스템, 미사일 유도 시스템, 실시간 처리 시스템 등의 시스템 프로그램 개발에 적합

 

598. Salt

  • 같은 암호를 해쉬하게 되면 같은 해쉬 값이 나오기 때문에 위험하기 때문에 이를 방지하기 위해서 암호를 해쉬하기 전에 각각 사용자마다 랜덤 값을 암호에 덧붙여서 해쉬하게 됨
  • 이렇게 하면 같은 암호라 하더라도 사용자마다 랜덤 값이 붙기 때문에 해쉬된 결과가 달라지게 됨
  • 이 랜덤 값을 Salt라고 함

 

600. OWASP

OWASP Top 10 - 2013 OWASP Top 10 - 2017
A1 인젝션 A1-2017: 인젝션
A2 취약한 인증과 세션 관리 A2-2017: 취약한 인증과 세션 관리
A3 크로스 사이트 스크립팅 (XSS) A3-2017: 민감한 데이터 노출
A4 안전하지 않은 직접 객체 참조 (A7 항목과 병합됨) A4-2017: XML 외부 개체 (XXE)
A5 잘못된 보안 구성 A5-2017: 취약한 접근 통제
A6 민감한 데이터 노출 A6-2017: 잘못된 보안 구성
A7 기능 수준의 접근 통제 누락 (A4 항목과 병합됨) A7-2017: 크로스 사이트 스크립팅 (XSS)
A8 크로스 사이트 요청 변조 (CSRF) A8-2017: 안전하지 않은 역질렬화 (신규, 커뮤니티)
A9 알려진 취약점이 있는 구성요소 사용 A9-2017: 알려진 취약점이 있는 구성요소 사용
A10 검증되지 않은 리다이렉트 및 포워드 A10-2017: 불충분한 로깅 및 모니터링 (신규, 커뮤니티)
  • 오픈소스 웹 애플리케이션 보안 프로젝트
  • 주로 웹에 관한 정보 노출, 악성 파일 및 스크립트, 보안 취약점 등을 연구
  • 10대 웹 애플리케이션의 취약점을 발표
  • 웹 애플리케이션 취약점 중에서 빈도가 많이 발생하고 보안상 영향을 크게 줄 수 있는 것들 10가지를 선정하여 2004년, 2007년, 2010년, 2013년, 2017년을 기준으로 발표되었고 문서가 공개됨