본문 바로가기
자격증/정보처리기사

정보처리기사 실기 2020년 1회 실기 정답및 개념정리

by 말린밴댕이_공부 2022. 11. 10.
반응형

2020년 1회

1.

( )은(는) 웹브라우저 간 HTML 문법이 호환되지 않는 문제와 SGML의 복잡함을 해결하기 위하여 개발된 다목적 마크업 언어이다.

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

(        )은 속성-값 쌍(attribute-value pairs)으로 이루어진 데이터 오브젝트를 전달하기 위해 사용하는 개방형 표준 포맷이다. AJAX에서 많이 사용되고 XML을 대체하는 주요 데이터 포맷이다. 언어 독립형 데이터 포맷으로 다양한 프로그래밍 언어에서 사용되고 있다.

3. 다음은 릴리즈 노트의 구성 항목에 관한 설명이다. 설명하는 항목은 무엇인가?

릴리즈 노트 이름, 소프트웨어 이름, 릴리즈 버전, 릴리즈 날짜, 릴리즈 노트 날짜, 릴리즈 노트 버전 등의 기존정보가 포함된다.

4. 애플리케이션 테스트의 기본 원리 중 살충제 패러독스(Pesticide Paradox)의 의미를 설명하시오.

5. 데이터 마이닝이란 무엇인지 설명하시오.

6. 프로토콜을 구성하는 대표적인 세가지 요소를 적으시오.

7. 다음에서 설명하는 해시 함수는?

128비트 암호화 해시 함수로 RFC 1321로 지정되어 있으며, 주로 프로그램이나 파일이 원본 그대로인지를 확인하는 무결성 검사 등에 사용된다. 1991년에 로널드 라이베스트(Ronald Rivest)가 예전에 쓰이던 MD4를 대체하기 위해 고안하였다.

8. 비선점형 스케줄링 HRN의 우선순위 계산식을 작성하시오.

9. 아래는 데이터베이스 트랜잭션의 4가지 속성이다. (가) , (나)에 들어가 단어를 적으시오.

속성설명(가)트랜잭션은 연산들을 전부 실행하든지 전혀 실행하지 않아야 한다. 일부만 실행해서는 안 된다.일관성트랜잭션이 성공적으로 실행되면 데이터베이스 상태는 모순되지 않고 일관된 상태가 된다.(나)트랜잭션 실행 도중의 연산 결과는 다른 트랜잭션에서 접근할 수 없다.지속성트랜잭션이 성공했을 경우 영구적으로 반영되어야 한다.

10. 다음에서 설명하는 서비스 거부 공격은?

패킷의 출발지 주소(Address)나 포트(port)를 임의로 변경하여 출발지와 목적지 주소(또는 포트)를 동일하게 함으로써, 공격 대상 컴퓨터의 실행 속도를 느리게 하거나 동작을 마비시켜 서비스 거부 상태에 빠지도록 하는 공격

11. OSI 7계층 중 다음에서 설명하는 계층은?

전송에 필요한 두 장치 간의 실제 접속과 절단 등 기계적, 전기적, 기능적, 절차적 특성에 대한 규칙을 정의한다. 단위(PDU)는 '비트'를 사용한다.

12. LoC 기법으로 개발을 해야 하는 프로젝트의 총 라인이 30000 라인이고, 개발자가 5명, 그리고 인당 월평균 300라인의 개발이 가능할 때, 개발하는데 소요될 것으로 예상되는 시간의 계산식과 그 결과를 작성하시오.

13. 아래는 애플리케이션 성능을 측정하기 위한 요소들이다. (가), (나),(다)에 들어갈 단어를 적으시오.

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

14. 다음은 소프트웨어 모듈화에 관한 설명이다. (가), (나)에 들어갈 단어를 각각 적으시오.

모듈의 기능적 독립성은 소프트웨어를 구성하는 각 모듈의 기능이 서로 독립됨을 의미하는 것으로, 모듈이 하나의 기능만을 수행하고 다른 모듈과의 과도한 상호작용을 배제함으로써 이루어진다. 모듈의 독립성을 높이기 위해서는 ( 가 )는 약하게, ( 나 )는 강하게 만들어야 한다.

15. 데이터베이스 성능 개선과 관련하여 '데이터베이스 반정규화'란 무엇인지 설명하시오.

 

16. 다음의 시스템 구조도에서 팬인(Fan-in)이 2 이상인 것은?

 

17. 다음은 C언어로 작성된 코드이다. 코드의 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)

#include
void align(int a[ ]) {
int temp;
for (int i = 0; i < 4; i++) {
  for (int j=0; j < 4 - i; j++)  {
    if (a[j]> a[j+1]) {
      temp = a[j];
      a[j] = a[j+1];
      a[j+1] = temp;
    }
  }
}

main( ) {
    int a[ ] = { 85, 75, 50, 100, 95 };
    align(a);
     for (int i = 0; i < 5; i++) printf("%d ", a[i]);
}

18. 다음은 C언어로 작성된 코드이다. 코드의 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)

#include
main( ) {
   int c = 1;
   switch (3) {
      case 1: c += 3;
      case 2: c++;
      case 3: c = 0;
      case 4: c += 3;
      case 5: c -= 10;
      default: c--;
   }
   printf("%d", c);
}

19. 다음은 Java언어로 작성된 코드이다. 코드의 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)

public class Test {
   static int[ ] arr( ) {
     int a[ ] = new int[4];
     int b = a.length;
     for(int i = 0; i < b; i++)
        a[i] = i;
     return a;
  }

  public static void main(String[ ] args) {
     int a[ ] = arr( );
     for(int i = 0; i < a.length; i++)
        System.out.print(a[i] + " ");
  }
}

20. 학생 테이블에 전기과 학생이 50명, 전산과 학생이 100명, 전자과 학생이 50명 있다고 할 때, 다음 SQL문 ①, ②, ③의 실행 결과로 표시되는 튜플의 수를 쓰시오. (단, DEPT 필드는 학과를 의미)

1) SELECT DEPT FROM EMPLOYEE;
2) SELECT DISTINCT DEPT FROM EPLOYEE;
3) SELECT COUNT(DISTINCT DEPT) FROM EMPLOYEE WHERE DEPT='전산과';

 

정답 및 해설

답지

  1. 답 : XML
  2. 답 : JSON
  3. 답 : 헤더(머릿말)
  4. 답 : 동일한 살충제의 반복 사용 시 벌레에게서 내성이 생기는 것에 비유하여, 동일한 테스트 전략, 기법을 적용할 시 장애가 도출되지 않음을 의미
  5. 답 : 많은 데이터 가운데 숨겨져 있는 유용한 상관관계를 발견하여, 미래에 실행 가능한 정보를 추출해 내고 의사 결정에 이용하는 과정
  6. 구문, 의미, 타이밍
  7. 답 : MD5
  8. (대기 시간 + 서비스 시간) / 서비스 시간
  9. 답 : (가) → 원자성 (나) → 독립성
  10. 답 : 랜드어택(Land Attack)
  11. 답 : 물리 계층
  12. 계산식 : (30000 / 5) / 300 예상 개발 기간 : 20개월
  13. (가) 처리량 (나) 응답시간 (다) 경과시간
  14. (가) 결합도 (나) 응집도
  15. 시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정으로, 의도적으로 정규화 원칙을 위배하는 행위
  16. F, J
  17. 50 75 85 95 100
  18. -8
  19. 0 1 2 3
  20. 1) 200 2) 3 3) 1

소프트웨어 테스트에 일반적으로 적용되는 7원칙

1. 테스트는 결함이 존재함을 밝히는 활동이다

소프트웨어에 대해 테스트 완료 및 발견된 이슈를 모두 해결하여도 결함이 없다는 것을 증명할 수 있는 것은 아니다. 또한 이슈가 발견되지 않았다고 해서 결함이 없다는 것이 증명되지는 않는다. 테스트는 프로그램의 결함이 없음을 보장하는 활동이 아니라, 결함이 존재함을 밝히기 위한 활동이다.

2. 완벽한 테스팅은 불가능하다

매우 단순한 소프트웨어가 아닌 이상 내부 조건, 입력값, 타이밍에 대한 모든 조합을 확인할 수 없다. 따라서 테스트 대상의 리스크 분석 후에 가장 중요한 부분을 중점으로 테스팅 리소스를 투입하여야 한다.

3. 테스팅은 개발 초기 단계에서부터 시작해야 한다

요구 사항 분석 및 설계 단계에서부터 테스트를 진행하는 경우 문서상의 결함을 확인할 수 있다. 이러한 결함은 코딩 작업 이후에 발견되는 결함에 비해 훨씬 간단하게 해결할 수 있다. 또한 조기에 테스트 설계를 마친 경우 코딩이 완료되자마자 테스트 케이스를 레벨별로 실행할 수 있어 전체 테스트 기간을 단축할 수 있다.

4. 결함 집중

대다수의 결함은 소수의 특정 모듈에 집중되는 경향이 있고, 이러한 결함은 장애를 발생시킬 가능성이 높다.

  • 자체적으로 복잡한 구조를 가지고 있는 모듈
  • 소프트웨어의 다른 부분과 복잡한 상호 작용을 하는 모듈
  • 개발 난이도가 높거나 최신 기술을 사용한 모듈
  • 기존의 것을 사용하지 않고 새롭게 개발한 모듈
  • 크기가 큰 모듈
  • 경험이 미흡한 개발팀에서 개발한 모듈

5. 살충제 패러독스

동일한 테스트 케이스를 반복적으로 수행하는 경우 더 이상 새로운 결함을 찾아낼 수 없다. 이를 극복하려면 새로운 기법, 다른 시각에서 테스트 케이스를 정기적으로 변경하고 추가해주어야 한다.

6. 테스팅은 정황에 따라 이루어져야 한다

소프트웨어의 종류나 목표 등에 따라 해당 소프트웨어에 맞는 테스트 방식이 적용되어야 한다. 개발 프로젝트인지 운영중인 시스템의 유지보수인지 여부, 사용 가능한 예산, 출시 일정, 리스크, 조직 문화, 사용자의 기대, 테스팅에 필요한 기반 환경의 가용성, 프로젝트의 중요도 등이 고려되어야 한다.

7. 오류 부재의 귀변

거의 모든 결함을 확인 후 제거하였다고 해도 사용자의 요구 또는 비즈니스 목적을 충족시키지 못하는 경우 품질이 높다고 할 수 없다.

트랜잭션 속성

데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 4가지 성질

원자성(Atomicity)

  • 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장
  • Commit과 Rollback 명령어에 의해 보장 받는다.
  • ex) 예를 들어, 자금 이체 과정에서 보내는 쪽에서 돈을 빼 오는 작업만 성공하고 받는 쪽에 돈을 넣는 작업을 실패해서는 안된다. 원자성은 이와 같이 중간 단계까지 실행되고 실패하는 일이 없도록 하는 것이다.

일관성(Consistency)

  • 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것을 의미한다.
  • 무결성 제약이 모든 계좌는 잔고가 있어야 한다면 이를 위반하는 트랜잭션은 중단된다.

격리성(Isolation)

  • 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장
  • 트랜잭션 밖에 있는 어떤 연산도 중간 단계의 데이터를 볼 수 없음

지속성(Durability)

  • 성공적으로 수행된 트랜잭션은 영원히 반영됨

서비스 거부 공격

공격의 종류

Ping Of Death Attack

  • ICMP 패킷을 정상적인 크기보다 아주 크게 만들어 전송하면 IP 단편화(fragment)가 발생한다. 이를 재조합하는 과정에서 많은 부하가 발생하거나 버퍼 오버플로우가 발생하여 정상적인 서비스를 하지 못하게 한다.
  • 자세한 내용은 Ping of Death 문서 참조

Land Attack

  • 출발지와 목적지가 같은 패킷을 만들어 공격 대상이 자기 자신에게 응답하도록 해 부하 유발
  • 현재는 대부분의 OS에서 해당 취약점이 해결되어 이론적으로만 존재

Smurf Attack

  • 출발지를 공격 대상 IP로 위조한 ICMP 패킷을 브로드캐스트하여 공격 대상이 다수의 ICMP 응답 받게 만들어 부하 유발

Teardrop Attack

  • 하나의 IP 패킷이 분할된 IP 단편의 offset값을 서로 중첩되도록 조작하여 이를 재조합하는 공격 대상 시스템에 에러와 부하 유발
  • 유사한 공격으로 Bonk, Boink
    • Bonk는 순서번호가 1번인 단편을 계속 보냄
    • Boink는 처음에는 정상적인 순서의 단편을 보내다가 점점 순서번호가 어긋난 패킷을 보내는 방법으로, Bonk보다 개선된 방식
  • 이러한 공격들을 Inconsistent Fragmentation 공격 이라 한다.

SYN Flooding

  • 다량의 TCP SYN 패킷을 전송하여 공격대상 시스템을 마비시키는 공격
  • 자세한 내용은 SYN Flooding 참조

UDP Flooding

  • 다량의 UDP 패킷을 전송하여 네트워크 자원을 고갈시키는 공격

OSI 7계층

Layer 1 : 물리 계층(Physical layer)

자세한 내용은 물리 계층

  • 물리적인 장치의 전기적, 전자적 연결에 대한 명세
  • 디지털 데이터를 아날로그적인 전기적 신호로 변환하여 물리적인 전송이 가능케 한다.
  • 주소 개념이 없으며 물리적으로 연결된 노드간에 신호를 주고 받는다.
- 단위(PDU) : 비트(Bit)
- 주요 프로토콜 :X.21,RS-232 등
- 주요 장비 :허브(HUB),리피터(Repeater)네트워크 카드(NIC : Network Interface Card) 등

Layer 2: 데이터링크 계층(Data link layer)

자세한 내용은 데이터링크 계층

  • 인접한 노드간의 신뢰성 있는 데이터(단위 : 프레임) 전송을 제어(Nod-To-Nod Delivery)
  • 네트워크 카드의 MAC(Media Access Control)주소를 통해 목적지를 찾아간다.
  • 신뢰성 있는 전송을 위해 흐름제어(Flow Control), 오류제어(Error Control), 회선제어(Line Control)을 수행한다.
  • 논리링크제어계층, 매체접근제어계층이라는 두 개의 부계층으로 나뉜다.
- 단위(PDU) : 프레임(Frame)
- 주요 프로토콜 :HDLC,X.25,Ethernet,TokenRing,DFFI,FrameRelay 등
- 주요 장비 :브리지(Bridge),L2 Switch 등

Layer 3: 네트워크 계층(Network layer)

  • 종단간 전송을 위한 경로 설정을 담당한다. (End-To-End 혹은 Host-To-Host Delivery)
  • 호스트로 도달하기 위한 최적의 경로를 라우팅 알고리즘을 통해 선택하고 제어한다.
  • 종단간 전송을 위한 주소로 IP주소를 사용한다.
- 단위(PDU) : 패킷(Packet)
- 주요 프로토콜 - IP, ARP, ICMP, IGMP, RIP, RIP v2, OSPF, IGRP, EIGRP, BGP 등
- 주요 장비 :라우터(Router),L3 Switch

Layer 4: 전송 계층(Transport layer)

  • 종단간 신뢰성 있는 데이터 전송을 담당한다. (End-To-End Reliable Delivery)
  • 종단(Host)의 구체적인 목적지(Process)까지 데이터가 도달할 수 있도록 한다. (Process-To-Process Communication)
  • Process를 특정하기 위한 주소로 Port Number를 이용한다.
  • 신뢰성 있는 데이터 전송을 위해 분할과 재조합, 연결제어, 흐름제어, 오류제어, 혼잡제어를 수행한다.
- 단위(PDU) : 세그먼트(Segment)
- 주요 프로토콜 :TCP,UDP
- 주요 장비 : L4 Switch

Layer 5: 세션 계층(Session layer)

  • 응용 프로그램간의 논리적인 연결(세션) 생성 및 제어를 담당한다.
- 단위(PDU) : 데이터(Data) 또는 메세지(Message)
- 주요 프로토콜 : 해당사항 없음
- 주요 장비 : 해당사항 없음

Layer 6: 표현 계층(Presentation layer)

  • 데이터 표현방식, 상이한 부호체계 간의 변화에 대해 규정한다.
  • 인코딩/디코딩, 압축/해제, 암호화/복호화 등의 역할을 수행한다.
- 단위(PDU) : 데이터(Data)
- 주요 프로토콜 : 해당사항 없음
- 주요 장비 : 해당사항 없음

Layer 7: 응용 계층(Application layer)

반응형

댓글