포스트

모의고사 01회

프로세스 수행을 지원하는 정보 시스템의 구현을 위해 가장 선진화된 소프트에어 아키텍처, 서비스를 정의되는 분할된 애플리케이션 조각들을 Loosely-coupled하게 연결해 하나의 완성된 Application을 구현하기 위한 아키텍처를 무엇이라고 하는가? 서비스 지향 아키텍처(SOA, Service Oriented Architecture)

  • 서비스 지향 아키텍처(SOA, Service Oriented Architecture)
    • 프로세스 수행을 지원하는 정보 시스템의 구현을 위해 가장 선진화된 소프트웨어 아키텍처로, 서비스라고 정의되는 분할된 애플리케이션 조각들을 Loosely-coupled 하게 연결해 하나의 완성된 Application을 구현하기 위한 아키텍처이다.

다음은 무선 통신 기술에 대한 설명이다. () 안에 들어갈 가장 적합한 용어를 쓰시오. 피코넷(PICONET), 지그비(Zigbee)

( ① ): 여러 개의 독립된 통신 장치가 블루투스 기술이나 UWB 통신 기술을 사용하여 통신망을 형성하는 무선 네트워크 기술로 네트워크를 구성하는 장비 간에 사전에 네트워크의 정의와 계획이 없이 상황에 따라 조정 프로토콜에 의하여 마스터와 슬레이브 역할을 하면서 네트워크를 형성하고, 주로 수십 미터 이내의 좁은 공간에서 네트워크를 형성하는 점과 정지 또는 이동하고 있는 장치를 모두 포함하는 특징을 가지고 있다.

( ② ): 저속 전송 속도를 갖는 홈오토메이션 및 데이터 네트워크를 위한 표준 기술로, 버튼 하나로 하나의 동작을 잡아 집안 어느 곳에서나 전등 제어 및 홈 보안 시스템 VCR on/off 등을 할 수 있고, 인터넷을 통한 전화 접속으로 홈오토메이션을 더욱 편리하게 이용하려는 것에서부터 출발한 기술이고, IEEE 802.15 표준 기반, 메시 네트워크 방식을 사용하는 통신 기술이다.


다음과 같은 절차로 공격을 진행하는 네트워크 공격 기법은 무엇인가? TCP 세션 하이재킹 또는 세션 하이재킹(Session Hijacking)

가. TCP Sequence number의 보안상 문제점 때문에 발생

나. Victim과 Server 사이의 패킷을 스니핑하여 Sequence number를 획득하고, 공격자는 데이터 전송 중인 Victim과 Server 사이를 비동기화 상태로 강제적으로 만듦

다. 스니핑하여 획득한 Client Sequence Number를 이용하여 공격

라. 공격자는 Server에게 RST 패킷 날리고, 공격자의 새로운 Sequence Number로 Server와 세션을 맺어 인증 우회, Victim 권한으로 Server 접근

마. 비동기화 상태로 패킷이 유실되어 재전송 패킷 증가

이 과정에서 ACK Storm 증가, NW 부하 증가

  • TCP 세션 하이재킹 또는 세션 하이재킹(Session Hijacking)
    • TCP 세션 하이재킹(Session Hijacking)은 케빈 미트닉이 사용했던 공격 방법의 하나로 TCP의 세션 관리 취약점을 이용한 공격 기법이다.
    • TCP 세션 하이재킹에 대응하기 위해서는 비동기화 상태 탐지, ACK 패킷 비율 모니터링, 특정 세션에서 패킷 유실 및 재전송이 증가되는 것을 탐지해야 한다.

다음은 정적 테스트에 대한 설명이다. ( ) 안에 들어갈 용어를 쓰시오. 인스펙션(Inspection), 워크 스루(Walk Through)

  • 동료 검토(Peer Review): 2~3명이 진행하는 리뷰의 형태로 요구사항 명세서 작성자가 요구사항 명세서를 설명하고, 이해관계자들이 설명을 들으면서 결함을 발견하는 형태로 진행하는 검토 기법이다.
  • ( ① ): 소프트웨어 요구, 설계, 원시 코드 등의 저작자 외의 다른 전문가 또는 팀이 검사하여 오류를 찾아 내는 공식적 검토 방법이다.
  • ( ② ): 검토 자료를 회의 전에 배포해서 사전검토 한 후 짧은 시간 동안 회의를 진행하는 형태로 리뷰를 통해 오류를 검출하고 문서로 만드는 기법이다.

다음은 [사전] 테이블이다. [결과] 테이블처럼 ‘symmetry’이라는 문자열 앞에 한 글자가 추가된 문자열을 찾기 위한 쿼리를 작성하시오. (symmetry, anti-symmetry와 같이 symmetry 문자열 앞에 한 글자가 추가되지 않는 문자열은 조회되지 않아야 한다.)

1
SELECT * FROM 사전 WHERE 단어 LIKE _symmetry;

[사전]

단어
symmetry대칭
asymmetry비대칭
anti-symmetry반대칭
RsymmetryR대칭
TsymmetryT대칭

[결과]

단어
asymmetry비대칭
RsymmetryR대칭
TsymmetryTe대칭
  • WHERE절 조건에서는 비교, 범위, 집합, 패턴, NULL, 복합조건이 있고, 패턴을 찾기 위해서는 LIKE 구문을 사용한다.
  • LIKE 문법은 다음과 같다.

    컬럼 LIKE 패턴

  • 패턴을 사용하기 위한 와일드카드는 다음과 같다.

    와일드카드설명
    %0개 이상의 문자열과 일치
    []1개의 문자와 일치
    [^]1개의 문자와 불일치
    _특정 위치의 1개의 문자와 일치

다음은 C 언어 코드이다. 빈칸에 알맞은 코드를 작성하시오. pf = add, pf = sub

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <studio.h>

int add(int i, int j){
	return i+j;
}

int sub(int i, int j){
	return i-j;
}

void main(){
	int (*pf)(int, int);
	
	  ;
  printf("%d", pf(5, 4));
	 
	  ;
	printf("%d", pf(5, 4));
}
1
2
[출력 결과]
91
  • *pf는 함수 포인터로 int 변수 2개를 사용하는 사용자 정의 함수를 대신할 수 있다.
  • *pf = add를 하게 되면 add 함수를 pf라는 이름으로 호출할 수 있고, pf = sub를 하게 되면 sub 함수를 pf라는 이름으로 호출할 수 있다.

다음은 [자격증]과 [응시료] 테이블이다. [자격증]과 [응시료] 테이블을 조인하여 [결과] 테이블처럼 나오도록 쿼리를 작성하시오.

1
2
3
4
5
6
7
SELECT A.자격증번호 AS “자격증번호”, A.자격증명 AS “자격증명”, B.응시료 AS “응시료”
    
FROM 자격증 A
    
LEFT [OUTER] JOIN 응시료 B
    
ON A.자격증번호 = B.자격증번호;

[자격증]

자격증번호자격증명
1정보처리기사
2빅데이터분석기사
11컴퓨터시스템응용기술사
12정보관리기술사

[응시료]

자격증번호응시료
120000
319000
1260000
1362000

[결과]

자격증번호자격증명응시료
1정보처리기사20000
2빅데이터분석기사NULL
11컴퓨터시스템응용기술사NULL
12정보관리기술사60000
종류설명
왼쪽 외부 조인(Left Outer Join)왼쪽 테이블의 모든 데이터와 오른쪽 테이블의 동일 데이터를 추출
오른쪽 외부 조인(Right Outer Join)오른쪽 테이블의 모든 데이터와 왼쪽 테이블의 동일 데이터를 추출
완전 외부 조인(Full Outer Join)양쪽의 모든 데이터를 추출
  • 외부 조인의 종류로는 왼쪽 외부 조인, 오른쪽 외부 조인, 완전 외부 조인이 있다.
  • 왼쪽 테이블인 [자격증] 테이블의 ‘자격증번호’에 해당하는 값이 오른쪽 테이블인 [응시료] 테이블에 있을 경우 값을 조인하고, 그렇지 않으면 NULL 값으로 되어 있는 것을 보면 왼쪽 외부 조인(Left Outer Join)임을 알 수 있다.
  • 왼쪽 외부 조인 문법은 다음과 같다.

    1
    2
    3
    4
    5
    
      	SELECT A.컬럼1, A.컬럼2, ..., B.컬럼1, B.컬럼2, ...
      	FROM 테이블1 A
      	LEFT [OUTER] JOIN 테이블2 B
      	ON 조인조건
      	[WHERE 검색조건];
    

Dos(Denial of Service) 공격이란 무엇인지 서술하시오. Dos 공격은 특정 서버에게 수많은 접속 시도를 만들어 다른 이용자가 정상적으로 서비스 이용을 하지 못하게 하거나, 서버의 자원을 소진시켜서 원래 의도된 용도로 사용하지 못하게 하는 공격이다.

  • DoS 공격1대의 공격자 컴퓨터에서 타깃 시스템에 악성 패킷을 보내는 방식으로 공격하고, 타깃 시스템 측에서 공격자의 주소를 확인하고 차단하면 더 이상 공격하지 못하는 단점이 있다.
  • Dos 공격에서 진화된 DDos 공격은 완벽한 공격을 위해 공격자가 여러 대의 컴퓨터를 감염시키고, 분산된 좀비 PC들을 이용해 타깃 시스템을 집중적으로 공격해서 서비스를 마비시키는 차이점이 있다.

이미지


인터페이스 구현 기술 중 JSON(Javascript Object Notation)의 개념에 관하여 서술하시오. JSON은 “속성-값 쌍”, “키-값 쌍”으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다.

  • JSON의 주요 특징은 다음과 같다.
    • AJAX(Asynchronous Javascript and XML)에서 많이 사용
    • XML(eXtensible Markup Language)를 대체하는 주요 데이터 포맷
    • 언어 독립형 데이터 포맷으로 다양한 데이터 프로그래밍 언어에서 사용
    • 사람이 읽고 쓰기에 쉬우며, 기계가 분석하고 생성하기에 용이

요구사항 명세 단계에서 사용자의 요구를 표현할 때 수학적인 원리와 표기법으로 서술하는 기법은 무엇인가? 정형 명세 기법

  • 요구사항 명세 단계 주요기법은 다음과 같다.
    • 비정형 명세 기법
      • 비정형 명세 기법은 사용자의 요구를 표현할 때 자연어를 기반으로 서술하는 기법
      • 사용자와 개발자의 이해가 용이
      • 명확성 및 검증에 문제
    • 정형 명세 기법
      • 사용자의 요구를 표현할 때 수학적인 원리와 표기법으로 서술하는 기법
      • 정형 명세 언어인 Z-스키마, Petri Nets, 상태 차트 활용
      • 표현이 간결, 명확성 및 검증이 용이
      • 기법의 이해가 어려움

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

1
2
3
4
5
#include <studio.h>
void main(){
	int a = 30, b= 15;
	printf("%d%d", a & b, a | b);
}
  • 정수형 변수 a는 30, b는 15로 선언과 동시에 초기화 한다.
  • a와 b는 비트 연산을 수행한다. &는 AND 연산, |는 OR 연산을 수행한다.

    이미지

  • 비트 연산자는 다음과 같다.

    연산자내용 
    &두 값을 비트로 연산하여 같은 비트의 값이 모두 1이면 해당 비트 값이 1이 되고, 그렇지 않으면 0이 되는 연산자 
      두 값을 비트로 연산하여 비트의 값이 하나라도 1이면 해당 비트의 값이 1이 되고, 그렇지 않으면 0이 되는 연산자
    ^두 값을 비트로 연산하여 같은 비트의 값이 서로 다르면 해당 비트 값이 1이, 그렇지 않으면 0이 되는 연산자 
    ~모든 비트의 값을 반대로 바꾸는 반전 기능을 하는 연산자 

병행 제어 미보장 시 문제점으로, 복수의 트랜잭션이 데이터 공유 시 특정 트랜잭션이 처리를 취소할 경우 트랜잭션이 처리한 곳의 부분을 취소하지 못하는 오류는? 연쇄복귀(Cascading Rollback)

  • 병행 제어 미보장 시 문제점은 다음과 같다. [갱현모연]

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

다음 설명에서 () 안에 알맞은 용어를 쓰시오. 부분함수 종속 관계, 2정규형(2NF)

고객명서비스이름서비스가격서비스이용기간
홍길동헬스700001달
홍길동수영1000002달
장길산수영1000002달
고객명서비스이름서비스이용기간
홍길동헬스1달
홍길동수영2달
장길산수영2달
서비스이름서비스가격
헬스70000
수영100000
  • <고객명, 서비스이름>이 <서비스이용기간>에 영향을 주고, <서비스이름>이 <서비스가격>에 영향을 주는 관계를 ( ① )(이)라고 한다.
    • 고객명, 서비스이름 → 서비스이용기간
    • 서비스이름 → 서비스가격
  • <고객명, 서비스이름, 서비스가격, 서비스이용기간>을 한 테이블에 두는 것은 ( ① )(으)로 인해 ( ② )을/를 만족하지 못한다.
  • 부분 관계인 <서비스이름, 서비스가격> 관계를 별도의 테이블로 두면 ( ① )이/가 제거되어 ( ② )을/를 만족한다.

  • 데이터베이스 정규화 단계는 다음과 같다.

    단계조건
    1정규형(1NF)원자값으로 구성
    2정규형(2NF)부분 함수 종속 제거(완전 함수적 종속 관계)
    3정규형(3NF)이행 함수 종속 제거
    보이스-코드 정규형(BCNF)결정자 함수이면서 후보 키가 아닌 것을 제거
    4정규형(4NF)다치(다중 값) 종속성 제거
    5정규형(5NF)조인 종속성 제거

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

1
2
3
4
5
#include <studio.h>
void main(){
	char b[16] = "hello world";
	printf("%s", &b[6]);
}
  • 문자열 배열인 b에 사이즈를 16으로 하고 “hello world”;로 초기화한다.
  • 문자열 끝에는 문자열의 끝을 알리는 ‘\0’이 들어간다.
  • printf 함수는 문자열의 출력을 위해 포맷스트링 “%s”를 사용하여, b[6]의 주솟값인 &b[6]으로 문자열 “world”를 화면에 출력한다.

    b[0]b[1]b[2]b[3]b[4]b[5]b[6]b[7]b[8]b[9]b[10]b[11]
    hello world‘\0’

SOOJEBI 테이블에 대한 DDL 문을 실행한 후에 [INSERT 문]을 삽입하는 순간 에러가 발생했다. [INSERT 문]이 에러가 나지 않도록 하는 DDL 문을 작성하시오. (SOOJEBI 테이블을 제거 후 생성하지 않도록 한다.)

1
ALTER TABLE SOOJEBI MODIFY SOOJEBI_NUM NUMBER(6);

[DDL 문]

1
2
3
CREATE TABLE SOOJEBI(
	SOOJEBI_NUM NUMBER(5)
);

[INSERT 문]

1
INSERT INTO SOOJEBI VALUES (200614);
  • SOOJEBI_NUM이라는 칼럼은 NUMBER(5)로 5자리 숫자밖에 입력하지 못하기 때문에 200641라는 값을 INSERT하게 되면 에러가 발생한다.
  • 에러가 발생하지 않기 위해서는 NUMBER의 자릿수를 6으로 늘려주어야 한다.
  • ALTER TABLE에서 컬럼을 수정하기 위해서는 MODIFY라는 키워드를 쓰고 문법은 다음과 같다.

    1
    
      ALTER TABLE 테이블명 MODIFY 컬럼명 [제약조건];
    

다음은 데이터 흐름도(DFD)에 대한 구성요소에 대한 설명이다. () 안에 들어갈 용어를 쓰시오. 처리기(Process), 데이터 흐름(Data Flow), 데이터 저장소(Data Store)

  • ( ① ): 입력된 데이터를 원하는 형태로 변환하여 출력하기 위한 과정으로, DFD에서는 원(○)으로 표시
  • ( ② ): DFD의 구성요소(프로세스, 데이터 저장소, 외부 엔터티)들 간의 주고받는 데이터 흐름을 나타내며, DFD에서는 화살표(→)로 표시
  • ( ③ ): 데이터가 저장된 장소이고, 평행선(=)으로 표시
  • 단말(Terminator): 프로세스 처리 과정에서 데이터가 발생하는 시작과 종료를 나타내고, 사각형(□)으로 표시하며, 사각형 안에는 외부 엔터티의 이름을 넣음

  • 데이터 흐름도 구성요소에는 처리기, 데이터 흐름, 데이터 저장소, 단말이 있다.

    구성요소설명
    처리기(Process)입력된 데이터를 원하는 형태로 변환하여 출력하기 위한 과정으로, DFD에서는 원(○)으로 표시
    데이터 흐름(Data Flow)DFD의 구성요소(프로세스, 데이터 저장소, 외부 엔터티)들 간의 주고받는 데이터 흐름을 나타내며, DFD에서는 화살표(→)로 표시
    데이터 저장소(Data Store)데이터가 저장된 장소이고, 평행선(=)으로 표시하여, 평행선 안에는 데이터 저장소의 이름을 넣음
    단말(Terminator)프로세스 처리 과정에서 데이터가 발생하는 시작과 종료를 나타내고, 사각형(□)으로 표시하며, 사각형 안에는 외부 엔터티의 이름을 넣음

다음은 모델링 절차에 대한 설명이다. () 안에 들어갈 절차를 쓰시오. 개념 모델링, 논리 모델링

  • 요구사항 분석: 현행 데이터의 문제점과 개선해야 할 점을 확인하고 향후 개선점을 도출하는 행동
  • ( ① ): 업무 중심의 포괄적인 모델링으로 추상화하는 활동으로 주제 영역과 핵심 데이터 간 관계 정의
  • ( ② ): 관계(Relationship), 속성(Attribute), 키(Key) 등을 도출하는 활동
  • 물리 모델링: DBMS 특성에 맞게 물리적 스키마를 만드는 활동

  • 모델링 절차는 요구사항 분석 → 개념 모델링 → 논리 모델링 → 물리 모델링 순이다.

    절차설명
    요구사항 분석현행 데이터의 문제점과 개선해야 할 점을 확인하고 향후 개선점을 도출하는 활동
    개념 모델링업무 중심의 포괄적인 모델링으로 추상화하는 활동으로 주제 영역과 핵심데이터 간 관계 정의
    논리 모델링관계(Relationship), 속성(Attribute), 키(Key) 등을 도출하는 활동
    물리 모델링사용 DBMS 특성에 맞게 물리적 스키마를 만드는 활동

ISO/IEC 9126(ISO/IEC 25010 : 2011로 변경)의 소프트웨어 품질 특성에 대한 설명으로 () 안에 들어갈 품질 특성을 쓰시오. 신뢰성 효율성

  • ( ① )
    • 명시된 조건에서 사용될 때 성능 수준을 유지할 수 있는 소프트웨어 제품의 능력
    • 옳고 일관된 결과를 얻기 위하여 요구된 기능을 수행할 수 있는 정도이고, 주어진 시간 동안 주어진 기능을 오류없이 수행하는 정도
    • 품질 부특성에는 성숙성, 결함 허용, 회복성, 준수성 등이 있음
  • ( ② )
    • 명시된 조건에서 사용되는 자원의 양에 따라 요구된 성능을 제공하는 소프트웨어 제품의 능력을 말함
    • 품질 부특성에는 시간 반응성, 자원 효율성, 준수성 등이 있음
  • ISO/IEC 9126(ISO/IEC : 2011로 변경)의 소프트웨어 품질 특성에는 기능성, 신뢰성, 사용성, 효율성, 유지보수성, 이식성이 있다.
    • 기능성(Functionality)
      • 소프트웨어가 특정 조건에서 사용될 때 명시된 요구와 내재된 요구를 만족하는 기능을 제공하는 소프트웨어 제품의 능력
      • 품질 부특성에는 적합성, 정확성, 상호 운용성, 보안성, 준수성 등이 있음
    • 신뢰성(Reliability)
      • 명시된 조건에서 사용될 때 성능 수준을 유지할 수 있는 소프트웨어 제품의 능력
      • 옳고 일관된 결과를 얻기 위하여 요구된 기능을 수행할 수 있는 정도이고, 주어진 시간 동안 주어진 기능을 오류 없이 수행하는 정도
      • 품질 부특성에는 성숙성, 결함 허용성, 회복성, 준수성 등이 있음
    • 사용성(Usability)
      • 명시된 조건에서 사용될 경우, 사용자에 의해 이해되고, 학습되고, 사용되고 선호될 수 있는 소프트웨어 제품의 능력을 말함
      • 품질 부특성에는 이해성, 학습성, 운용성, 친밀성, 준수성 등이 있음
    • 효율성(Efficiency)
      • 명시된 조건에서 사용되는 자원의 양에 따라 요구된 성능을 제공하는 소프트웨어 제품의 능력을 말함
      • 품질 부특성에는 시간 반응성, 자원 효율성, 준수성 등이 있음
    • 유지보수성(Maintainability)
      • 소프트웨어 제품이 변경되는 능력
      • 변경에는 환경과 요구사항 및 기능적 명세에 따른 소프트웨어의 수정, 개선, 혹은 개작 등이 포함
      • 품질 부특성에는 분석성, 변경성, 안정성, 시험성, 준수성 등이 있음
    • 이식성(Portability)
      • 한 환경에서 다른 환경으로 전이될 수 있는 소프트웨어 제품의 능력
      • 품질 부특성에는 적응성, 설치성, 공존성, 대체성, 준수성 등이 있음

다음이 설명하는 자료구조는 무엇인지 쓰시오. 데크(Deque; Double Ended Queue)

  • 양쪽 끝에서 삽입과 삭제를 할 수 있는 자료구조
  • 두 개의 포인터를 사용하여, 양쪽의 삭제/삽입이 가능

  • 데크는 큐의 양쪽 끝에서 삽입과 삭제를 할 수 있는 자료구조이다.

이미지


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class SuperObj{
 public void show(){
	 print();
 }
 public void print(){
	 print();
	 System.out.print("Super");
 }
}

class SubObj extends SuperObj{
	public void show() {
		super.print();
	}
	public void print();{
		System.out.print("Sub");
	}
}

public class Soojebi{
	public static void main(String[] args){
		SuperObj s = new SubObj();
		s.show();
	}
}
  • SuperObj 클래스는 부모 클래스이고 메서드로 show와 print를 가진다. show는 print 메서드를 호출하고, print 메서드는 SubObj 클래스의 print 메서드를 호출하고 화면에 “Super”를 출력한다.
  • SubObj는 클래스는 자식 클래스이다. SubObj 클래스는 메서드로 show와 print를 가진다. show 메서드는 super.print를 호출하며 부모 클래스의 print를 호출한다. print 메서드는 화면에 “Sub”를 출력한다.
  • main 메서드에서는 SuperObj s = new SubObj(); 문장에서 new 연산자를 이용하여 SubObj 클래스의 생성자를 호출하고 객체 s를 생성한다. SuperObj는 부모 클래스이고 자식 클래스의 생성자를 이용하여 객체를 생성할 수 있다.
  • s.show를 실행하면 SubObj의 show 메서드가 호출이 되고 show 메서드에서는 super.print 메서드가 호출이 된다. SubObj의 부모 클래스인 SuperObj 클래스의 print 메서드가 호출이 되고 다시 print 메서드가 호출이 되는데 이때 print는 오버라이딩으로 자식 클래스의 print가 호출되어 “Sub”가 호출이 된다. 그리고 화면에는 “SubSuper”가 출력된다.

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