5급 공채 2차

2017년 5급 공채 기술 2차 소프트웨어공학

문제 5개 · 100점. 참고 답안·채점 기준은 앱에서 볼 수 있습니다.

제1문 (10점)

조직의 개발프로세스 능력 모델인 CMMI(Capability Maturity Model Integration) 레벨 2에는 7개의 프로세스 영역이 있다. 이 중 프로세스 및 제품 품질보증(Process & Product Quality Assurance), 형상관리(Configuration Management)를 제외한 나머지 영역 5개를 나열하시오. (10점)

제2문 (20점)

다음은 3개의 정수 값을 입력 받아 그 중 최소값을 출력하는 C 프로그램 코드이다. min 함수에 대해 기본경로 테스트를 수행하고자 할 때, 물음에 답하시오. (총 20점)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void min(int a, int b, int c) {
int min;
if (a > b) {
if (b > c)
min = c;
else
min = b;
}
else {
if (a > c)
min = c;
else
min = a;
}
printf(“최소값: %d”, min);
}
  1. (1) 흐름 그래프를 작성하시오. (10점)
  2. (2) McCabe의 순환 복잡도 계산 과정과 결과를 기술하시오. (6점)
  3. (3) 독립적 경로를 모두 나열하시오. (4점)

제3문 (15점)

다음은 특허정보관리시스템 개발에 관한 요구사항의 일부이다. 물음에 답하시오. (총 15점)
ㄱ.자바 언어를 사용해야 하고, CBD 개발방법론을 적용해야 한다.
ㄴ.사용자가 특허정보를 검색할 때 핵심어를 10개 이상 입력하고, 입력방식은 논리식을 사용한다.
ㄷ.동시에 1,000명이 접속하여 사용할 수 있어야 하며, 검색 시 응답시간은 2초 이내여야 한다.
ㄹ.개별특허에 대해 평가한 보고서를 등록할 수 있고, 그와 관련된 기술 거래 내역을 볼 수 있어야 한다.
ㅁ.보고서 등록 시에는 아이디/암호로 사용자 인증을 하지만, 공인인증서 인증을 추가로 요구해야 한다.
ㅂ.시스템은 총 운용시간 중 98.00% 이상 이용 가능해야 한다.
  1. (1) 위의 요구사항 중에서 비기능적 요구사항을 모두 고르시오. (6점)
  2. (2) MTTF(Mean Time To Failure)는 950시간이고, MTTR(Mean Time To Repair)은 2시간이라 가정할 때, 신뢰성을 측정하기 위한 척도 중 하나인 이용가능성(availability)을 계산하시오. (단, 반올림하여 소수점 둘째 자리까지 나타내시오) (9점)

제4문 (30점)

어떤 프로젝트를 완성하기 위한 작업들과 예상 소요 기간, 작업 사이의 종속성, 그리고 각 작업을 할당받은 사람이 아래와 같이 주어졌다. 프로젝트의 시작일을 9월 1일로 가정할 때, 다음 물음에 답하시오. (단, 휴무일은 없고, 모든 달은 30일로 이루어져 있다) (총 30점)
작업(task)소요기간(일)종속성작업자
T110J
T215A
T320T1J
T415P
T515T2, T4M
T610T1, T2A
T720T1K
T830T4P
T920T3, T6J
T1015T5, T7A
T1115T9P
T1215T11P
  1. (1) 임계 경로(critical path)에 있는 모든 작업(task)들을 순서대로 나열하시오. (5점)
  2. (2) 작업 T2, T3, T5, T8, T11에 대한 일정(시작일, 종료일, 여유시간)을 간트 차트(Gantt chart)로 작성하시오. (10점)
  3. (3) 이 프로젝트를 종료하는데 소요되는 최소시간(일)을 계산하시오. (5점)
  4. (4) 프로젝트를 수행하는 동안 A 작업자에게 긴급한 문제가 생겨 T6 작업을 완료하는 데 30일이 소요되었다고 가정하자. 이때, 프로젝트가 완료될 수 있는 가장 빠른 날짜를 계산하시오. (10점)

제5문 (25점)

다음의 클래스 다이어그램을 보고 물음에 답하시오. (총 25점)
+setWage()
+moveOffice()
-hoursOpen:int
Employee
#employeeID
+hire()
+fire()
Building
Office
-number
+setOccupant()
HourlyEmployee
+hourlyRate
+setRate()
SalariedEmployee
-weeklyPay
1
-building
*
-offices
1
-office
-occupant
*
+name
#address
#SSN
Person
+setName()
+newAddress()
  1. (1) SalariedEmployee 클래스의 인스턴스가 갖는 속성(attribute)의 이름을 모두 나열하시오. (5점)
  2. (2) 자바로 코딩 시 변수 x가 Employee 클래스 타입으로 선언되어 있을 때, 형 변환(type casting)을 하지 않고 x가 가리킬 수 있는 객체의 클래스 이름을 모두 나열하시오. (10점)
  3. (3) Building 클래스를 C++ 또는 자바를 이용하여 코드로 작성하시오. (단, 변수 이름은 위의 다이어그램에 따라 명명하시오) (10점)