포스트

모의고사 24회

Q. OTA(Over The Air; 휴대폰 무선 전송기술)을 이용하여 언제, 어디서나 모바일 기기가 Power On 상태로 있으면 원격에서 모바일 기기를 관리할 수 있는 시스템으로 스마트폰이나 태블릿, 휴대용 컴퓨터와 같은 모바일 기기를 보호, 관리, 감시, 지원하는 기능의 시스템을 무엇이라고 하는가?

MDM(Mobile Device Management)

  • OTA(Over The Air; 휴대폰 무선 전송기술)을 이용하여 언제, 어디서나 모바일 기기가 Power On 상태로 있으면 원격에서 모바일기기를 관리할 수 있는 시스템으로 스마트폰이나 태블릿, 휴대용 컴퓨터와 같은 모바일 기기를 보호, 관리, 감시, 지원하는 기능의 시스템은 MDM이라고 한다.

Q. ()은/는 수집된 후 저장은 되어있지만, 분석에 활용되지 않는 다량의 데이터를 의미한다. ()은/는 향후 사용될 가능성이 있다는 이유로 삭제되지 않아 공간만 차지하고 있으며, 보안 위협을 초래하기도 한다. () 안에 공통으로 들어갈 용어를 쓰시오.

다크 데이터(Dark Data)

  • 수집된 후 저장은 되어 있지만, 분석에 활용되지 않는 다량의 데이터는 다크 데이터이다.

Q. 다음은 분석 자동화 도구에 대한 설명이다. () 안에 들어갈 도구의 유형을 쓰시오.

상위 CASE(Upper CASE), 하위 CASE(Lower CASE)

  • ( ① )
    • 계획 수립, 요구 분석, 기본설계 단계를 다이어그램으로 표현
    • 모델들 사이의 모순 검사 및 모델의 오류 검증, 일관성 검증 지원
    • 자료흐름도 프로토타이핑 작성 지원 및 UI 설계 지원
  • ( ② )
    • 구문 중심 편집 및 정적, 동적 테스트 지원
    • 시스템 명세서 생성 및 소스 코드 생성 지원
  • 분석 자동화 도구는 다음과 같다.
    • 상위 CASE(Upper CASE)
      • 계획수립, 요구분석, 기본설계 단계를 다이어그램으로 표현
      • 모델들 사이의 모순 검사 및 모델의 오류 검증, 일관성 검증 지원
      • 자료 흐름도 프로토타이핑 작성 지원 및 UI 설계 지원
    • 하위 CASE(Lower CASE)
      • 구문 중심 편집 및 정적, 동적 테스트 지원
      • 시스템 명세서 생성 및 소스 코드 생성 지원

Q. 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위한 네트워크 주소 변환기술은 무엇인가?

NAT(Network Address Translation)

  • 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위한 네트워크 주소 변환기술은 NAT이다.

Q. 관리자가 DOOUM이라는 사용자로부터 SCORE 테이블에 대해 DELETE할 수 있는 권한을 회수하는 쿼리를 작성하시오. (DOOUM 사용자로부터 WITH GRANT OPTION이 부여된 사용자들의 권한까지 취소한다.)

1
REVOKE DELETE ON SCORE FROM DOOUM CASCADE CONSTRAINTS;
  • REVOKE는 데이터베이스 관리자(DBA)가 사용자에게 부여했던 권한을 회수하기 위한 명령어이다.

    1
    
      REVOKE 권한 ON 테이블 FROM 사용자 CASCADE CONSTRAINTS;
    
    • 관리자가 사용자에게 부여했던 테이블에 대한 권한을 회수
    • CASCADE CONSTRAINTS는 연쇄적인 권한을 해제할 때 입력(WITH GRANT OPTION으로 부여된 사용자들의 권한까지 취소)

Q. 다음은 파이썬 코드이다. 출력 결과를 쓰시오.

24

1
2
3
4
5
6
7
8
def soojebi(num):
	value=1
	for i in range(1, num+1):
		value=value*i
	return value

a = soojebi(4)
print(a)
  • 팩토리얼(n! = n * (n-1) * … * 3 * 2 * 1)을 구한다. 팩토리얼은 숫자 뒤에 느낌표를 붙여서 표현하며 계산방법은 n! 이라고 한다면 n부터 1씩 빼서 1까지 곱하여 계산한다.
  • def soojebi(num) :은 num을 파라미터로 전달받는 soojebi 함수를 선언한다.
  • value는 곱셈을 위해 1로 초기화한다. 0으로 초기화를 하는 경우 어떤 수를 곱해도 0이 되기 때문에 1로 초기화한다.
  • for 반복문에서 i 값을 1부터 num까지 1부터 증가한다. 오른쪽 value는 i 값을 곱한 값을 왼쪽 value에 대입한다.
  • for 반복문이 종료되고 value를 리턴한다.
  • 4!를 구하기 위해 soojebi(4)를 호출하고 그 결과를 a에 대입한다. soojebi(4)는 for 반복문에서 123*4를 value에 대입한다.
  • for 반복문이 종료되고 value를 리턴하고 a에 대입한다.
  • a 값 24를 화면에 출력한다.

Q. 유스케이스 다이어그램(Usecase Diagram)이 무엇인지 서술하시오.

유스케이스 다이어그램은 시스템이 제공하고 있는 기능 및 그와 관련된 외부 요소를 사용자의 관점에서 표현하는 다이어그램이다.

  • 유스케이스 다이어그램의 주요 구성요소는 다음과 같다.
    • 유스케이스(Usecase)
      • 시스템이 제공해야 하는 서비스, 기능 액터가 시스템을 통해 수행하는 일련의 행위

      이미지

    • 액터(Actor)
      • 사용자가 시스템에 대해 수행하는 역할

      이미지

    • 시스템(System)
      • 전체 시스템의 영역을 표현

      이미지

  • 유스케이스 다이어그램 구성요소 간 관계는 다음과 같다.
    • 확장(Extend) 관계
      • 특정조건에서 한 유스케이스로만 확장되는 관계

      이미지

    • 포함(Include) 관계
      • 유스케이스를 수행할 때 다른 유스케이스가 반드시 수행되는 관계

      이미지

    • 일반화(Generalization) 관계
      • 추상적인 액터와 구체적인 액터 사이에 맺어주는 관계

      이미지

  • 유스케이스 다이어그램(Use Case Diagram) ← 사용자의 관점, 행위(Behavioral) 다이어그램
    • 사용자의 요구를 분석하는 것으로, 기능 모델링 작업에 사용함
    • 사용자(Actor)와 사용 사례(Use Case)로 구성됨
      • 사용자 시각에서 소프트웨어의 범위와 기능을 설명하는 설계 표기법
      • 사용자 시각에서 본 시스템의 행위, 사용자가 할 수 있는 기능 표현
      • 국세청 - 회원가입, 세금 납부, 세금 조회
    • 유스케이스 다이어그램은 사용자와 다른 외부 시스템들이 개발될 시스템을 이용해 수행할 수 있는 기능을 사용자의 관점에서 표현한 것
      • 어떤 기능을 수행할 수 있는 지
    • 외부 요소와 시스템 간의 상호 작용을 확인할 수 있음
    • 사용자의 요구사항을 분석하기 위한 도구로 사용됨
    • 시스템의 범위를 파악할 수 있음
  • 구성 요소
    • 시스템(System) / 시스템 범위(System Scope)
      • 시스템 내부의 유스케이스들을 사각형으로 묶어 시스템의 범위를 표현한 것

        이미지

    • 액터(Actor)
      • 시스템과 상호작용을 하는 모든 외부 요소
        • 외부에서 지원해주는 기능, 사람들
      • 주로 사람이나 외부 시스템을 의미함
      • 주액터 : 시스템을 사용함으로써 이득을 얻는 대상으로, 주로 사람이 해당됨

        이미지

      • 부액터 : 주액터의 목적 달성을 위해 시스템에 서비스를 제공 하는 외부 시스템으로, 조직이나 기관 등이 될 수 있음

        이미지

    • 유스케이스(Use Case)
      • 사용자가 보는 관점에서 시스템이 액터에게 제공하는 서비스나 기능을 표현한 것

        이미지

    • 관계(Relationship)
      • 유스케이스 다이이그램에서 관계는 액터와 유스케이스, 유스케이스와 유스케이스 사이에서 나타날 수 있음
      • 유스케이스에서 나타날 수 있는 관계 : 포함(Include) 관계, 확장(Extends) 관계, 일반화(Generalization) 관계

이미지

이미지

이미지

이미지


Q. 다음이 설명하는 개발 도구는 무엇인지 쓰시오.

형상관리 도구

  • 소프트웨어 변경 사항을 관리하기 위해서 형상 식별, 통제, 감사, 기록을 수행하는 도구
  • 개발자들이 작성한 코드와 리소스 등 산출물에 대한 관리를 위한 도구
  • 프로젝트 진행 시 필수로 포함되는 도구
  • 대표적으로 CVS, Subversion(SVN), Git가 있음
  • 개발 도구의 분류는 다음과 같다.
    • 빌드 도구
      • 작성한 코드의 빌드와 배포를 수행하는 도구
      • 각각의 구성요소와 모듈에 대한 의존성 관리를 지원
    • 구현 도구
      • 개발자의 코드 작성과 디버깅, 수정 등과 같은 작업을 지원하는 도구
      • 프로그램을 개발할 때 가장 많이 사용되는 도구
    • 테스트 도구
      • 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구
      • 코드의 테스트, 테스트에 대한 계획, 수행 및 분석 등의 작업 가능
    • 형상 관리 도구
      • 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위한 도구
      • 프로젝트 진행 시 필수로 포함되는 도구

이미지

  • Build(빌드)
    • 소스 코드 파일들을 컴파일 한 후 여러 개의 모듈을 묶어 실행 파일로 만드는 과정, 소스 코드 파일들을 컴퓨터에서 실행할 수 있는 제품 소프트웨어로 변환하는 과정 또는 산출물
    • 작성된 Source Code를 실제 기기에서 실행 할 수 있는 소프트웨어로 변환하기 위한 과정
  • 개발 환경 구성을 위한 빌드(Build) 자동화 도구
    • 빌드를 포함하여 테스트 및 배포를 자동화하는 도구로 지속적인 통합 개발환경에서 유용하게 활용됨
    • Ant, Gradle, Jenkins, Maven 등이 있음
      • Ant
        • 아파치 재단에서 개발한 자바의 공식적인 빌드 도구
      • Maven
        • 아파치 재단에서 개발, Ant 대안으로 개발되었음
      • Gradle
        • Ant, Maven의 보완으로 개발된 빌드 도구(안드로이드 스튜디오 주 빌드 도구)
        • Groovy를 기반으로 한 오픈 소스 형태
        • 안드로이드 앱 개발 환경에서 사용
        • 행할 처리 명령들을 모아 태스크(Task)로 만든 후 태스크 단위로 실행
      • Jenkins
        • JAVA 기반의 오픈소스 형태
        • 서블릿 컨테이너에서 실행되는 서버 기반 도구
        • 친숙한 Web GUI 제공
        • 분산 빌드나 테스트 가능

Q. 다음 () 안에 들어갈 단어를 쓰시오.

무결성 또는 데이터 무결성

()은/는 부적절한 자료가 입력됨으로 인해 동일한 내용에 대하여 서로 다른 데이터가 저장되는 것을 허용하지 않는 성질이다.

  • DBMS 특징으로는 다음과 같다.
    • 데이터 무결성
      • 부적절한 자료가 입력되어 동일한 내용에 대해서 서로 다른 데이터가 저장되는 것을 허용하지 않는성질
    • 데이터 일관성
      • 삽입, 삭제, 갱신, 생성 후에도 저장된 데이터가 변함없이 일정
    • 데이터 회복성
      • 장애가 발생하였을 시 특정 상태로 복구되어야 하는 성질
    • 데이터 보안성
      • 불법적인 노출, 변경, 손실로부터 보호되어야 하는 성질
    • 데이터 효율성
      • 응답 시간, 저장 공간 활용 등이 최적화되어 사용자, 소프트웨어, 시스템 등의 요구 조건을 만족시켜야 하는 성질

Q. 한 트랜잭션에서 연산을 수행할 때, 연산이 완료될 때까지 데이터에 대한 읽기를 제한하고, 연산이 완료되어 커밋된 데이터는 다른 트랜잭션이 읽는 것을 허용하는 데이터베이스의 고립화 수준(Isolation Level)은 무엇인가?

Read Committed

  • 데이터베이스 고립화 수준은 다음과 같다.
    • Read Uncommitted
      • 한 트랜잭션에서 연산 중인(아직 커밋되지 않은) 데이터를 다른 트랜잭션이 읽는 것을 허용하고 연산(갱신) 중인 데이터에 대한 연산은 불허
    • Read Committed
      • 한 트랜잭션에서 연산을 수행할 때, 연산이 완료될 때까지 데이터에 대한 읽기를 제한하고 연산이 완료되어 커밋된 데이터는 다른 트랜잭션이 읽는 것을 허용
    • Repeatable Read
      • 선행 트랜잭션이 특정 데이터를 읽을 때, 트랜잭션 종료 시까지 해당 데이터에 대한 갱신/삭제를 제한
    • Serializable Read
      • 선행 트랜잭션이 특정 데이터 영역을 순차적으로 읽을 때, 해당 데이터 영역 전체에 대한 접근을 제한

Q. 다음은 [STUDENT]와 [STUDENT_SCORE] 테이블이다. NO 컬럼을 조인해서 [결과] 테이블처럼 나오도록 쿼리를 작성하시오.

1
2
3
4
SELECT A.NAME AS NAME B.SCORE AS SCORE
FROM STUDENT A
[INNER] JOIN STUDENT_SCORE B
ON A.NO = B.NO;

[STUDENT]

NONAMEPHONEDEPART
1이동국111-2222정처기
2강은미333-4444정처기
3김정미555-6666정처기
4홍길동777-8888정처기
5장길산999-0000정처기

[STUDENT_SCORE]

NOSCORE
180
290
395
490
585

[결과]

NAMESCORE
이동국80
강은미90
김정미95
홍길동90
장길산85
  • 공통 존재 컬럼의 값이 같은 경우를 추출하는 조인을 내부 조인이라고 한다.

Q. 다음은 자바 코드이다. 출력 결과를 쓰시오.

8

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Parent {
	int compute(int num) {
		if(num <= 1) {
			return 1;
		}
		return num*compute(num-1);
	}
}
class Child extends Parent {
	int compute(int num) {
		if(num <= 1){
			return 1;
		}
		return num*compute(num-2);
	}
}
public class Soojebi {
	public static void main(String[] args) {
		Parent obj = new Child();
		System.out.print(obj.compute(4));
	}
}
  • Parent obj = new Child(); 문장에서 Child 클래스의 생성자를 호출하고 객체 obj를 생성한다.
  • System.out.print(obj.compute(4)); 문장에서 obj.compute(4)를 호출한다.
  • obj.compute(4)는 Child 클래스의 멤버 메서드인 compute(int num)를 호출한다. 파라미터 num을 이용하여 정수 4를 전달하며 num 값이 1보다 작거나 같으면 1을 리턴한다.
  • compute(num-2); 문장에서 num 값에서 2를 뺀 값을 파라미터로 전달하여 compute 멤버 메서드를 재귀호출한다. 파라미터로 4를 전달하였기 때문에 2를 뺀 compute(2);가 호출된다. compute(2)에서 2는 1보다 크므로 다시 2를 뺀 compute(0)을 호출한다.
  • compute(0)은 1보다 작거나 같으므로 if 문이 참이 되어 실행되며 num 값인 1을 리턴한다.
  • compute(4)는 4compute(2)이다. compute(2)는 2compute(0)이다. compute(0)은 1이다. 즉, 421이 되어 8이 출력된다.

Q. 버퍼 오버플로우(Buffer Overflow) 공격에 대해 약술하시오.

버퍼 오버플로우는 메모리에 할당된 버퍼 크기를 초과하는 양의 데이터를 입력하여 프로세스의 흐름을 변경시켜서 악성 코드를 실행시키는 공격 기법이다.

  • 버퍼 오버플로우 공격유형과 대응방안은 다음과 같다.
    • 버퍼 오버플로우 공격유형
      • 스택 버퍼 오버를로우 공격
        • 메모리 영역 중 Local Value(지역 변수)나 함수의 Return Address(복귀 주소)가 저장되는 스택 영역에서 발생하는 오버플로우 영역
        • 스택 영역에 할당된 버퍼 크기를 초과하는 양의 데이터(실행 가능 코드)를 입력하여 복귀 주소를 변경하고 공격자가 원하는 임의의 코드를 실행하는 공격 기법
      • 힙 버퍼 오버플로우 공격
        • 프로그램 실행 시 동적으로 할당되는 힙 영역에 할당된 버퍼 크기를 초과하는 데이터(실행 가능 코드)를 입력하여 메모리의 데이터와 함수 주소 등을 변경, 공격자가 원하는 임의의 코드를 실행하는 공격 기법
        • 인접한 메모리(Linked-list)의 데이터가 삭제될 수 있으며, 해당 위치에 특정 함수에 대한 포인터 주소가 있으면 이를 악용하여 관리자 권한 파일에 접근하거나, 공격자의 특정 코드를 실행함
    • 버퍼 오버플로우 공격 대응방안
      • 스택가드(Stackguard) 활용
        • 카나리(Canary)라고 불리는 무결성 체크용 값을 복귀 주소와 변수 사이에 삽입해 두고, 버퍼 오버플로우 발생 시 카나리 값을 체크, 변할 경우 복귀 주소를 호출하지 않는 방식으로 대응
      • 스택쉴드(Stack Shield) 활용
        • 함수 시작 시 복귀 주소를 Global RET라는 특수 스택에 저장해 두고, 함수 종료 시 저장된 값과 스택의 RET 값을 비교해서 다를 경우 오버플로우로 간주하고 프로그램 실행을 중단
      • ASLR(Address Space Layout Randomization)
        • 메모리 공격을 방어하기 위해 주소 공간 배치를 난수화하고, 실행 시마다 메모리 주소를 변경시켜 버퍼 오버플로우를 통한 특정 주소 호출을 차단
        • 리눅스에서 설정 가능
      • 실행 제한
        • 스택에서의 쓰기 권한 제한
        • 스택에서의 프로그램 실행 금지
        • 가능성이 있는 SUID 프로그램 제한
      • 안전한 함수 활용

        이미지

  • SUID
    • “Set User ID”의 줄임말로, 프로세스가 실행 중일 때 해당 실행 파일의 소유자나 소유 그룹의 권한으로써 자원에 접근할 수 있도록 하는 권한 설정이다. 이를 통해 특정 프로그램이 특정 권한을 필요로 할 때 사용된다.
    • SUID가 설정된 프로그램을 실행시키면, 프로세스로 동작하는 동안에는 다음과 같이 설정된다.
      • RUID(Real User ID): 실행시킨 사용자의 UID(User ID)로 설정된다.
      • EUID(Effective User ID): 실행 파일의 소유자의 UID로 설정된다.

      즉, 실행시킨 사용자와는 무관하게 프로세스가 실행 중일 때는 실행 파일의 소유자의 권한으로 자원에 접근할 수 있게 된다.


Q. 요청 헤더의 Content-Length를 비정상적으로 크게 설정하여 메시지 바디 부문을 매우 소량으로 보내 계속 연결 상태를 유지시키는 공격은 무엇인가?

RUDY(Slow HTTP POST DoS)

  • 애플리케이션 공격 기법의 유형은 다음과 같다.
    • HTTP GET 플러딩(Flooding)
      • HTTP 캐시 옵션을조작하여 캐싱 서버가 아닌 웹 서버가 직접 처리하도록 유도, 웹 서버 자원을 소진시키는 서비스 거부 공격
    • Slow Read Attack
      • TCP 윈도 크기와 데이터 처리율을 감소시킨 상태에서 (Zero Window Packet) 다수 HTTP 패킷을 지속적으로 전송하여 대상 웹 서버의 연결 상태가 장시간 지속, 연결 자원을 소진시키는 서비스 거부 공격
    • Slowloris(Slow HTTP Header DoS)
      • HTTP GET 메서드를 사용하여 헤더의 최종 끝을 알리는 개행 문자열인 \r\n\r\n(Hex: 0d 0a 0d 0a)을 전송하지 않고, \r\n(Hex: 0d 0a)만 전송하여 대상 웹 서버와 연결 상태를 장시간 지속시키고 연결 자원을 모두 소진시키는 서비스 거부 공격
    • RUDY(Slow HTTP POST DoS)
      • 요청 헤더의 Content-Length를 비정상적으로 크게 설정하여 메시지 바디 부문을 매우 소량으로 보내 계속 연결 상태를 유지시키는 공격
    • Hulk DoS
      • 공격자가 공격 대상 웹 사이트 웹 페이지 주소(URL)를 지속적으로 변경하면서 다량으로 GET 요청을 발생시키는 서비스 거부 공격
    • Hash DoS
      • 조작된 많은 수의 파라미터를 POST 방식으로 웹 서버로 전달하여 다수의 해시 충돌(Collision)을 발생시켜서 자원을 소모시키는 서비스 거부 공격

Q. [급여] 테이블에 데이터 타입이 INTEGER이면서 NULL 값을 포함하지 않도록 하는 제약조건이 추가된 ‘연차’라는 컬럼을 추가하는 쿼리를 작성하시오.

1
ALTER TABLE 급여 ADD 연차 INTEGER NOT NULL;

[급여]

속성명데이터 타입
사번INTEGER
부서VARCHAR(50)
직책VARCHAR(20)
연봉INTEGER
  • ALTER TABLE은 테이블을 수정하는 명령이다.
  • ALTER TABLE에서 컬럼을 추가하기 위해서는 ADD라는 키워드를 쓰고 문법은 다음과 같다.

    1
    
      ALTER TABLE 테이블명 ADD 컬럼명 데이터타입 [제약조건];
    
  • 추가로 제약조건은 다음과 같다.
    • PRIMARY KEY
      • 테이블의 기본 키를 정의
      • 유일하게 테이블의 각 행을 식별
    • FOREIGN KEY
      • 외래 키를 정의
      • 참조 대상으르 테이블(컬럼명)로 명시
      • 열과 참조된 테이블의 열 사이의 외래 키 관계를 적용하고 설정
    • UNIQUE
      • 테이블 내에서 얻은 유일한 값을 갖도록 하는 제약조건
    • NOT NULL
      • 해당 컬럼은 NULL 값을 포함하지 않도록 하는 제약조건
    • CHECK
      • 개발자가 정의하는 제약조건
      • 참(TRUE)이어야 하는 조건을 지정
    • DEFAULT
      • 데이터를 INSERT할 때 해당 컬럼의 값을 넣지 않는 경우 기본값으로 설정해주는 제약조건

Q. 사용자들에게 랜섬웨어를 감염시키기 다양한 공격 기법들을 활용하고 있다. 그중 ( ① ) 공격 기법은 악의적인 해커가 불특정 웹 서버와 웹 페이지에 악성 스크립트를 설치하고, 불특정 사용자 접속 시 사용자 동의 없이 시행되어 의도된 서버(멀웨어 서버)로 연결하여 감염시키는 공격 기법이고, ( ② )은/는 특정인에 대한 표적 공격을 목적으로 특정인이 잘 방문하는 웹 사이트에 악성 코드를 심거나 악성 코드를 배포하는 URL로 자동으로 유인하여 감염시키는 공격 기법이다. () 안에 들어갈 공격 기법을 쓰시오.

드라이브 바이 다운로드(Drive By Download), 워터링 홀(Watering Hole)

  • 드라이브 바이 다운로드와 워터링 홀의 개념은 다음과 같다.

    공격 기법설명
    드라이브 바이 다운로드(Drive By Download)악의적인 해커가 불특정 웹 서버와 웹 페이지에 악성 스크립트를 설치하고, 불특정 사용자 접속 시 사용자 동의 없이 실행되어 의도된 서버(멀웨어 서버)로 연결하여 감염시키는 공격 기법
    워터링 홀(Watering Hole)특정인에 대한 표적 공격을 목적으로 특정인이 잘 방문하는 웹 사이트에 악성 코드를 심거나 악성 코드를 배포하는 URL로 자동으로 유인하여 감염시키는 공격 기법
  • 멀웨어(Malware): 악의적인 목적을 위해 작성된 실행 가능한 코드로 악성코드 또는 악성프로그램 등으로 불리고, 실행 가능한 코드에는 프로그램 매크로, 스크립트가 아니라 취약점을 이용한 데이터 형태로 표현된다.


Q. 테스트는 크게 정적 테스트와 동적 테스트로 나눠질 수 있고, 정적 테스트는 ( ① )와/과 ( ② )(으)로 분류할 수 있다. ( ① )은/는 소프트웨어의 다양한 산출물에 존재하는 결함을 검출하거나 프로젝트의 진행 상황을 점검하기 위한 활동으로, 전문가가 수행한다. 반면에 ( ② )은/는 도구의 자원을 받아 정적 테스트를 수행하는 방법으로 자동화된 도구를 이용하여 산출물의 결함을 검출하거나 복잡도를 측정한다. () 안에 들어갈 용어를 쓰시오.

리뷰(Review), 정적 분석(Static Analysis)

  • 정적 테스트 기법인 리뷰와 정적 분석은 다음과 같다.

    유형설명
    리뷰(Review)소프트웨어의 다양한 산출물에 존재하는 결함을 검출하거나 프로젝트의 진행 상황을 점검하기 위한 활동으로, 전문가가 수행
    정적 분석(Static Analysis)도구의 지원을 받아 정적 테스트를 수행하는 방법으로 자동화된 도구를 이용하여 산출물의 결함을 검출하거나 복잡도를 측정
  • 리뷰의 유형은 다음과 같다.

    • 인스펙션(Inspection)
      • 소프트웨어 요구, 설계, 원시 코드 등의 저작자 외의 다른 전문가 또는 팀이 검사하여 문제를 식별하고 문제에 대한 올바른 해결을 찾아내는 형식적인 검토 기법
    • 관리 리뷰(Management Review)
      • 프로젝트 진행 상황에 대한 전반적인 검토를 바탕으로 범위, 일정, 인력 등에 대한 통제 및 의사결정을 지원하는 리뷰
    • 기술 리뷰(Technical Review)
      • 정의된 계획 및 명세를 준수하고 있는지에 대한 검토를 수행하는 리뷰
      • 변경사항이 적절하게 구현되었는지를 평가하고, 여러 대안을 추천하거나 대안을 검토
      • 대표 엔지니어가 주재하며 경우에 따라서 관리자도 참가 가능
    • 워크스루(Work Throughs)
      • 검토 자료를 회의 전에 배포해서 사전 검토한 후 짧은 시간 동안 회의를 진행하는 형태로 리뷰를 통해 문제 식별, 대안 조사, 개선 활동, 학습 기회를 제공하는 가장 비형식적인 검토 기법
    • 동료 검토(Peer Review)
      • 2~3명이 진행하는 리뷰의 형태로 요구사항 명세서 작성자가 요구사항 명세서를 설명하고 이해관계자들이 설명을 들으면서 결함을 발견하는 형태로 진행하는 검토 기법

Q. 기업에서 생산되는 데이터 분석을 위한 다양한 기술들이 더욱 진화되고 있다. 그중 ( ① )은/는 사용자의 의사결정에 도움을 주기 위하여, 기간 시스템의 데이터베이스에 축적된 데이터를 공통 형식으로 변환해서 통합적으로 관리하는 데이터베이스이고, ( ② )은/는 재무, 생산, 운영 등과 같이 특정 조직의 특정 업무 분야에 초점을 맞추어 구축된 저장 공간이다. () 안에 들어갈 용어를 쓰시오.

데이터 웨어하우스(DW; Data Warehouse), 데이터 마트(DM; Data Mart)

  • 데이터 웨어하우스와 데이터 마트의 개념은 다음과 같다.

    용어설명
    데이터 웨어하우스(DW; Data Warehouse)사용자의 의사결정에 도움을 주기 위하여, 기간 시스템의 데이터베이스에 축적된 데이터를 공통 형식으로 변환해서 통합적으로 관리하는 데이터베이스
    데이터 마트(DM; Data Mart)재무, 생산, 운영 등과 같이 특정 조직의 특정 업무 분야에 초점을 맞추어 구축된 저장 공간이다.
  • 온라인 분석 처리(Online Analytical Processing; OLAP)

    • 데이터 웨어하우스나 데이터마트 같은 시스템과 상호 연관되는 정보 시스템이다. 데이터 웨어하우스가 데이터를 저장하고 관리한다면 OLAP는 데이터 웨어하우스의 데이터를 전략적인 정보로 변환시켜서 의사결정을 지원하는 역할을 한다.

Q. 논리의 기술에 중점을 둔 도형식 표현 방법으로 조건이 복합되어 있는 곳의 처리를 시각적으로 명확히 식별하는 데 사용되는 구조적 방법론 도구를 무엇이라고 하는가?

나씨-슈나이더만(Nassi-shneiderman) 차트

  • 나씨-슈나이더만 차트는 논리의 기술에 중점을 둔 도형식 표현 방법으로 조건이 복합되어 있는 곳의 처리를 시각적으로 명확히 식별하는 데 사용되는 구조적 방법론 도구이다.
  • NS(Nassi-Schneiderman) chart, 상자 도표
    • 논리의 기술에 중점을 둔 도형식 표현 방법
    • 3가지 기본구조만으로 논리를 표현(표준화 가능)
    • 전체적인 알고리즘을 일목요연하게 볼 수 있음
    • 이해하기 쉽고 코드 변환 용이
    • Flow Chart의 최대 단점인 화살표가 표시되지 않음(goto: 화살표 사용)
    • 기본구조의 입구와 출구는 각 하나씩
    • 그리기가 어려움(전문성 필요)
    • 순차(연속), 선택, 반복 등의 논리 구조 표현
    • 임의의 제어 이동이 어려움
      • goto구조가 어렵다.
    • 그래픽 설계 도구 → 프로그램으로 구현이 쉬움
    • 조건이 복합되어 있는 곳의 처리를 명확히 식별하기에 적합
      • if문이 여러 개일 때 가능

이미지

  1. 순차처리 네모 박스에 입력, 출력, 연산을 기록한다.
  2. 선택구조는 IF문이나 CASE문을 사용하여 처리 흐름을 기록한다.
  3. 반복구조는 While문이나 For문을 사용하여 조건에 따른 반복처리를 기술한다.

Q. 다음은 C언어 코드이다. 출력 결과를 쓰시오.

hel

1
2
3
4
5
6
7
8
9
#include <stdio.h>
void main() {
	char *p = "hello"
	int i;
	for(i=0; i<3; i++) {
		printf("%c", *p);
		p++;
	}
}
  • char *형 변수인 p를 선언과 동시에 문자열 “hello”로 초기화한다.
  • for 반복문에서 사용하기 위해 정수형 변수 i를 선언한다.
  • for 반복문은 0부터 3보다 작을 때까지 i 값을 1씩 증가하며 *p를 출력하고 p를 그다음 주소로 증가시킨다. for 반복문이 수행되며 “hel”이 화면에 출력된다.

이미지


참고 자료


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.