정보처리기사 실기 2020년 1회-2 정리

DSeung·2022년 5월 5일
0

정보처리기사

목록 보기
14/18

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

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

정답 : 물리 계층

해설 :

물데네전세표응

명칭 특징 단위(PDU) 프로토콜 주요 장비
Layer1: 물리 계층(Physical Layer) 물리적인 장치의 전기적, 전자적 연결에대한 명세로 디지털 데이터를 아날로적인 전기적 신호로 변환하여 물리적 전송을 가능케 함, 주소 개념이 없으므로 물리적 연결로 신호를 주고 받음 비트(Bit) x.21, RS-232 허브(Hub), 리피터(Repeater), 네트워크 카드(NIC : Network Interface Card)
Layer2: 데이터 링크 계층(Data Link Layer) 네트워크 카드의 MAC(Media Access Control) 주소를 통해 목적지를 찾아간다, 신뢰성 있는 전송을 위해 흐름제어(Flow Control), 오류제어(Error Control), 회전제어(Line Control)을 수행한다. 프레임(Frame) HDLC, X.25, Ethernet, TokenRing, DFFI, FrameRelay 브리지(Bridge), L2 Switch
Layer3: 네트워크 계층(Network Layer) 종단간 전송을 위한 경로 설정을 담당하며 호스트로 도달하기 위한 최적의 경로를 라우팅 알고리즘을 통해 선택하고 제어한다, 종단간 전송을 위한 주소로 IP주소를 사용 패킷(Packet) IP, ARP, ICMP, IGMP, RIP, RIP v2, OSPF, IGRP, EIGRP, BGP 라우터(Router), L3 Switch
Layer4: 전송 계층(Transport Layer) 종단간 신뢰성 있는 데이터 전송을 담당하며, 종단(Host)의 구체적인 목적지(Process)까지 데이터가 도달할 수 있도록 한다, Process를 특정하기 위한 주소로 Port Number를 이용, 신뢰성 있는 데이터 전송을 위해 분할과 재조합, 연결제어, 흐름제어, 오류제어, 혼합제어를 수행한다. 세그먼트(Segment) TCP, UDP L4 Switch
Layer5: 세션 계층(Session Layer) 응용 프로그램 간의 논리적 연결(세션) 및 제어를 담당한다. 데이터(Data) 또는 메세지(Message) 없음 없음
Layer6: 표현 계층(Presentation Layer) 데이터 표현방식, 상이한 부호체계 간의 변화에 대해 규정, 인코딩/디코딩, 압축/해제, 암복호화 등의 역할을 수행함 데이터(Data) 없음 업음
Layer7: 응용 계층(Application Layer) 우리가 사용하는 UI를 제공하는 프로그램을 칭함 데이터(Data) TELNET, FTP, SMTP, HTTP 없음

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

정답 :

시간 : 20개월
식 : 30000/5/300


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

정답 :

가 : 처리량
나 : 응답시간
다 : 처리시간

해설 :

성능 테스트(Performance Test)
시스템에서 수용 가능한 처리량을 판별하기 위한 테스트

성능 지표

  • 전체 사용자 (Named User) : 대상 소프트웨어를 사용하는 모든 사람
  • 동시 사용자 (Concurrent User) : 특정 시점에 대상 시스템에 접속하여 서비스를 사용하고 있는 사용자
  • 부하(Load) : 사용자가 대상 시스템에 요청하는 처리량
  • 응답시간(Response Time) : 사용자가 서버에 서비스를 요청한 후 그에 대한 응답을 받을 때 까지 걸리는 시간
  • 처리량(Throughput) : 단위 시간당 대상 시스템에 의해서 처리되는 요청 건수
  • 경과시간(Turnarround Time) : 서비스에 작업을 의뢰한 시간부터 처리가 완료될때 까지 걸린 시간

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

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

정답 :

가 : 결합도
나 : 응집도

해설 :

  • 결합도(Coupling)와 함께 모듈의 독립성을 판단하는 지표
  • 응집도는 모듈 내부의 기능적인 응집 정도를 나타낸다
  • 결합도는 모듈과 모듈간의 긴으적인 응집 정도를 나타낸다.
  • 응집도는 높을수록 좋고 결합도는 낮을 수록 좋다.

결합도, Coupling
자료 결합도 < 스탬프 결합도 < 제어 결합도 < 외부 결합도 < 공통 결합도 < 내용 결합도
자 -> 스 -> 제 -> 외 -> 공 -> 내

  • 자료 결합도(Data Coupling)
    - 모듈간의 인터페이스 전달되는 파라미터를 통해서만 모듈간의 상호 작용이 일어나는 경우
    • 깔끔한 Call by value
  • 스탬프 결합도(Stamp Coupling)
    - 모듈간의 인터페이스로 배열이나 오브젝트, 스트럭쳐등이 전달되는 경우
  • 제어 결합도(Control Coupling)
    - 단순히 처리를 해야할 대상인 값만 전달되는 게 아닌 어떻게 처리해야 한다는 제어 요소(DCD, Falg 등)이 전달되는 경우
  • 외부 결합도(External Coupling)
    - 어떤 모듈에서 반환한 값을 다른 모듈에서 참조해서 사용하는 경우
  • 공통 결합도(Common Coupling)
    - 파라미터가 아닌 모듈 밖에서 선언되어 있는 전역 변수를 참조하고 전역변수를 갱신하는 식으로 상호작용하는 경우
  • 내용 결합도(Content Coupling)
    - 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우

응집도, Cohension

우연적 응집도 < 논리적 응집도 < 시간적 응집도 < 절차적 응집도 < 교환적 응집도 < 순차적 응집도 < 기능적 응집도
=> 우논 시절 교순도 == 우는 시절 교수도

응집도 오름차순

  • 우연적 응집도 (Coincidental Cohesion)
    - 모듈 내부의 각 구성요소들이 연관이 없는 경우
  • 논리적 응집도 (Logical Cohesion)
    - 실제와 달리 논리적으로만 같은 그룹으로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
  • 시간적 응집도 (Temporal Cohesion)
    - 연관된 기능이라기 보단 특정 시간에 처리되어야하는 활동들이 한 모듈에서 처리하는 경우
  • 절차적 응집도 (Procedural Cohesion)
    - 모듈 안의 구성요소들이 서로 다른 기능을 하지만 그 기능을 순차적으로 수행할 경우
  • 교환적 응집도 (Communication Cohesion)
    - 서로 다른 기능을 수행하지만 동일한 입력과 출력을 사용하는 활동들이 모여있을 경우
  • 순차적 응집도 (Sequential Cohesion)
    - 모듈 내의 한 활동으로부터 나온 출력값을 모듈 내의 다른 활동이 사용될 경우
  • 기능적 응집도 (Functional Cohesion)
    - 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우

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

정답 : 시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 분리 ,중복 시키는 과정으로 정규화 원칙에 위배되는 행위


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

정답 : F, J

해설 : 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]);
}

정답 :

50 75 85 95 100

해설 :

버블 정렬을 통한 오름차순 정렬


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);
}

정답 : -8

해설 :

switch(3) 이므로 case 3부터 시작하여 case 3을 만족하지만 해당 줄에는 break;가 없으므로
아래 모든 코드를 그래도 수행하게 됩니다, 물론 default 까지


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] + " ");
}

정답 : 0 1 2 3

해설 :

정적 메소드인 arr에서 배열 a를 0, 1, 2, 3로 선언하고 리턴해주기에
이를 출력하는 메인의 로직은 위와 같이 출력됩니다.


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 : 200
2 : 3
3 : 1

해설 :

1 : 학생의 총 수 200명을 출력
2 : 1번과 똑같지만 중복값을 제거하므로 학과를 각 하나씩만 출력하므로 3개
3 : 전체 중복 제거의 학과를 수를 센 것이므로 1개

profile
블로그에 글을 쓰고 좋은 건 여기로 공유해서 검색엔진을 쪽쪽 빱니다.

0개의 댓글