정보처리기사 실기 2021년 2회-2 정리

DSeung·2022년 4월 30일
0

정보처리기사

목록 보기
4/18

11. 다음 각 번호에 해당하는 응집도를 보기에서 찾아 쓰시오.

(1) 입출력 간 연관성은 없으나, 순서에 따라 수행할 필요가 있다.
(2) 동일한 입출력을 사용한다.
(3) 하나의 기능에 모두 기여하고 밀접하게 관련되어 있다. 

[보기] 기능적(functional), 시간적(temporal), 교환적(communication), 절차적(procedural), 순차적(sequential), 우연적(coincidental), 논리적(logical)

정답 :

(1) 절차적 응집도(Procedural Cohesion)
(2) 교환적 응집도(Communication Cohesion)
(3) 기능적 응집도(Functional Cohesion)

해설 :

Cohension

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

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

응집도 오름차순

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

12. 다음에서 설명하는 패킷 교환 방식을 작성하시오.

(1) 목적지 호스트와 미리 연결한 후, 통신하는 연결형 교환 방식
(2) 헤더에 붙어서 개별적으로 전달하는 비연결형 교환 방식

정답 :

(1) 가상 회선 방식
(2) 데이터그램 방식

해설 :

패킷 교환 방식
패킷 교환은 송신 측에서 모든 메시지를 일정한 크기의 패킷으로 분해해서 전송하고, 수신 측에서 이를 원래의 메시지로 조립하는 것이다.

목적지 호스트와 미리 연결한 후, 통신하는 연결형 교환 방식
= 가상 회선 방식

해더에 붙어서 개별적으로 전달하는 비연결형 교환 방식
= 데이터그램 방식


13. 다음 괄호 안에 들어갈 디자인 패턴의 명을 적으시오.

디자인 패턴 중 (    ) 패턴은 반복적으로 사용되는 객체들의 상호작용을 패턴화한 것으로
클래스나 객체들이 상호작용하는 방법이다. 알고리즘 등과 관련된 패턴으로 
그 예는 Interpreter, Observer, Command 가 있다.

정답 : 행위(behavioral)

해설 :

설명에서 말하는 디자인 패턴은 Gof 패턴이다.

Gof(Gang of Four Design Pattern) 디자인 패턴
객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴

Gof 패턴의 상위 패턴은 아래와 같이 있다.

  • 생성 패턴(Creational Pattern)
    • 객체를 생성하는데 관련된 패턴,
    • 객체가 생성되는 과정의 유연성을 높여 유지를 쉽게함
    • ex)팩토리 메소드, 추상 팩토리, 빌더, 프로토타입, 싱글톤
  • 구조 패턴(Structual Pattern)
    • 프로그램 구조에 관련된 패턴들
    • 프로그램 내의 자료구조나 인터페이스 구조 등 프로그램의 구조를 설계하는데 활용할 수 있는 패턴들
    • ex) 어댑터, 브리지, 컴포지드, 데코레이터, 퍼싸드, 플라이웨이트, 프록시
  • 행위 패턴(Behavioral Pattern)
    - 반복적으로 사용되는 객체들의 상호작용을 패턴화 해놓은 것들
    • ex) 책임 연쇄. 커맨드,인터프리터, 반복자, 중재자, 메멘토, 옵저버, 상태, 전략, 템플릿 메소드

14. 병행제어기법 중, 접근한 데이터에 대한 연산을 모두 마칠때까지 상호배제하는 기법을 무엇이라 하는지 작성하시오

정답 : 로킹(Locking)

해설 :

데이터베이스 병행제어
트랜잭션 병행제어(Transaction Concurrency Control)
여러 트랜잭션들이 동시에 실행되면서도 데이터베이스의 일관성을 유지할 수 있게 하는 기법

DB 일관성 유지 하면서
- 데이터베이스 공유 최대화
- 시스템의 활용도 최대화
- 사용자 응답시간 최소화

병행제어 기법

  • 로킹(Locking) : DB 병행제어를 위해 트랜잭션이 접근하고자 하는 데이터를 잠그어 다른 트랜잭션이 접근하지 못하도록 하는 기법
  • 2단계 로킹 규약(Two-Phase Locking Protocol) : Lock과 Unlock이 동시에 이루어지면 일관성이 보장되지 않으므로 Lock만 가능한 단계와 Unlock만 가능한 단계를 구분하는 병행 제어 기법
  • 타임스탬프(Time Stamp) : DB 병행제어를 위해 데이터 항목에 타임스탬프를 부여하여 직렬 가능성을 보장하는 기법
  • 낙관적 병행제어(Optimistic Concurrency Control) : 트랜잭션 수행 하는 동안은 어떠한 검사도 하지 않고, 트랜잭션 종료 시에 일괄적으로 검사하는 DB 병행제어 기법
  • 다중 버전 병행제어(Multi Version Concurrency Control) : 트랜잭션의 데이터 접근 시, 그 트랜잭션의 타임 스탬프와 접근 데이터의 여러 버전의 타임스탬프를 비교하여, 현재 실행 중인 스케줄의 직렬 가능성이 보장되는 버전을 선택하는 기법

15. 럼바우 데이터 모델링에 관한 설명으로써, 각 번호에서 설명하는 모델링 기법을 보기에서 찾아서 작성하시오.

(1) 입력값이 출력값일 때 - 예) 자료 흐름도(DFD)
(2) 시간에 따라 변하는 것 - 예) 상태 변화도(DFD)
(3) 구조 - 예) ER다이어그램(ERD)

[보기] Operation, Sequence, Information, Transaction, 
Function, I/O, Dynamic, Architecture, Cause-Effect, 
Constraint, Rebuilding, Durat

정답 :

(1) Function Modeling
(2) Dynamic Modeling
(3) Object Modeling

해설 :

럼바우 분석기법
Rumbaugh's Object Modeling Technique
소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 객체지향 분석 기법

순서는 객체 모델링, 동적 모델링, 기능 모델링 순으로 이루어짐

객체 모델링(Object Modeling, Information Modeling)

  • 객체 다이어그램을 이용 (ER 다이어그램(ERD))
  • 시스템에서 요구되는 전체를 찾아내어 속성과 연산 식별 및 객체들 간의 관계를 규정
  • 가장 중요하며 가장 선행되는 단계

동적 모델링(Dynamic Modeling)

  • 상태도를 이용 (상태 변화도(DFD))
  • 시간의흐름에 따른 객체들 사의 제어 흐름, 상호 작용, 동작 순서 등의 동적인 행위를 표현

기능 모델링(Functional Modeling)

  • 자료 흐름도 (자료 흐름도(DFD))
  • 다수의 프로세스들 간의 자료 흐름을 중심으로 처리 과정을 표현
  • 어떤 데이터를 입력하면 어떤 결과를 구할것 인지 표현

16. 다음은 C언어에 관한 소스코드이다. 실행 결과값을 작성하시오.

int mp(int base, int exp);
int main(){
   int res;
   res = mp(2,10);
   printf("%d",res);
   return 0;
}

int mp(int base, int exp) {
   int res = 1;
   for(int i=0; i < exp; i++){
      res = res * base;
   }
   
   return res;
}

정답 :

1024

해설 :

위 코드는 반복문 10번 반복됨으로써 2의 10승을 구하는 식입니다.


17. 이것은 클래스 내에서 객체 생성 없이 사용할 수 있는 메소드이다. 다음의 출력 결과를 보고 괄호안에 알맞은 답안을 작성하시오.

public class Test {
   public static void main(String[] args){
      system.out.print(test.check(1));
   }
   
   (  괄호  )  String check (int num) {
      return (num >= 0) ? "positive" : "negative";
   }
}


[출력결과]
positive

정답 :

static

해설 :

소스에서 Test 클래스의 객체 생성없이 check 메서드를 접근 했음으로 이는 static으로 선언한 정적 메소드이어야합니다.


18. 다음은 C언어 코드의 실행 결과를 적으시오.

int main() {
	int ary[3];
	int s = 0;
	*(ary + 0) = 1;
	ary[1] = *(ary + 0) + 2;
	ary[2] = *ary + 3;
	for(int i = 0; i < 3; i++) {
		s = s + ary[i];
	}
	printf("%d", s);
}

답 :

8

해설 :

(ary + 0) = 1;
arr의 0 인덱스는 1
ary[1] =
(ary + 0) + 2;
arr의 1 인덱스는 1 + 2
ary[2] = *ary + 3;
arr의 2 인덱스는 1 + 3

이들을 총합 한 것을 출력함으로 8


19. 다음 JAVA 코드의 실행 결과를 적으시오.

public class over {
	public static void main(String[] args){
    	ovr a1 = new ovr1();
        ovr a2 = new ovr2();
        System.out.println(a1.sun(3,2) + a2.sun(3,2));
    }
    
    int sun(int x, int y){
    	return x + y;
    }
}

class ovr2 extends ovr1 {
	int sun(int x, int y){
    	return x - y + super.sun(x,y);
    }
}

정답 :

11

해설 :

애초에 문제에서 클래스명과 함수명이 오타가 있지만 이를 무시하고 푼다는 가정하에

a1.sun(3,2) = 5
a2.sun(3,2) = 6

왜냐하면 a2에서는 3-2 + super.sun(x,y) = 1 + 5 이기 때문


20. 다음 괄호 안에 들어갈 알맞은 답안을 작성하시오.

테스트 하네스의 도구 구성 요소 중, 상향식 테스트시, 
상위 모듈 역할을 대신하는 테스트 드라이버와 하향식 테스트 시, 
하위 모듈 역할을 대신하는 테스트 (       ) 이 있다.

정답 :

스텁

해설 :

소프트웨어 개발 생명 주기(SDLC, Systems development life cycle)
단통시인설

단위 테스트(Unit Test)

  • 인터페이스 테스트, 자료구조 테스트, 수행 경로 테스트

통합 테스트(Integration Test)

  • 상향식 통합 : Bottom-Up
    하위 모듈부터 개발한 경우
    상위 모듈이 없으므로, 상위 모듈 역할을 하는 테스트 드라이버(Driver)를 이용
    테스트 드라이버를 테스트 하네스(Harness)라고도 함

  • 상향식 통합 : Top down
    상위 모듈부터 개발한 경우
    하위 모듈이 없으므로, 하위 모듈들 역할을 하는 스텁(Stub)을 이용

시스템테스트(System Test)

  • 보안 테스트, 민감도 테스트, 성능 테스트

인수 테스트(Acceptance Test)

  • 알파 테스트 : 통제된 환경에서 선별된 사용자들(사내 직원 등)이 개발자와 함께 수행하는 테스트
  • 베타 테스트 : 실제와 동일환 환경에서 사외의 사용자들이 테스트하게 하고 피드백을 받는 테스트

설치 테스트(Install Test)

  • 하드웨어 호환성
  • 파일시스템 구성
  • 다른 소프트웨어와의 연계
profile
블로그에 글을 쓰고 좋은 건 여기로 공유해서 검색엔진을 쪽쪽 빱니다.

0개의 댓글