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) 흐름 그래프를 작성하시오. (10점)
- (2) McCabe의 순환 복잡도 계산 과정과 결과를 기술하시오. (6점)
- (3) 독립적 경로를 모두 나열하시오. (4점)
제3문 (15점)
다음은 특허정보관리시스템 개발에 관한 요구사항의 일부이다. 물음에 답하시오. (총 15점)
ㄱ.자바 언어를 사용해야 하고, CBD 개발방법론을 적용해야 한다.
ㄴ.사용자가 특허정보를 검색할 때 핵심어를 10개 이상 입력하고, 입력방식은 논리식을 사용한다.
ㄷ.동시에 1,000명이 접속하여 사용할 수 있어야 하며, 검색 시 응답시간은 2초 이내여야 한다.
ㄹ.개별특허에 대해 평가한 보고서를 등록할 수 있고, 그와 관련된 기술 거래 내역을 볼 수 있어야 한다.
ㅁ.보고서 등록 시에는 아이디/암호로 사용자 인증을 하지만, 공인인증서 인증을 추가로 요구해야 한다.
ㅂ.시스템은 총 운용시간 중 98.00% 이상 이용 가능해야 한다.
ㄴ.사용자가 특허정보를 검색할 때 핵심어를 10개 이상 입력하고, 입력방식은 논리식을 사용한다.
ㄷ.동시에 1,000명이 접속하여 사용할 수 있어야 하며, 검색 시 응답시간은 2초 이내여야 한다.
ㄹ.개별특허에 대해 평가한 보고서를 등록할 수 있고, 그와 관련된 기술 거래 내역을 볼 수 있어야 한다.
ㅁ.보고서 등록 시에는 아이디/암호로 사용자 인증을 하지만, 공인인증서 인증을 추가로 요구해야 한다.
ㅂ.시스템은 총 운용시간 중 98.00% 이상 이용 가능해야 한다.
- (1) 위의 요구사항 중에서 비기능적 요구사항을 모두 고르시오. (6점)
- (2) MTTF(Mean Time To Failure)는 950시간이고, MTTR(Mean Time To Repair)은 2시간이라 가정할 때, 신뢰성을 측정하기 위한 척도 중 하나인 이용가능성(availability)을 계산하시오. (단, 반올림하여 소수점 둘째 자리까지 나타내시오) (9점)
제4문 (30점)
어떤 프로젝트를 완성하기 위한 작업들과 예상 소요 기간, 작업 사이의 종속성, 그리고 각 작업을 할당받은 사람이 아래와 같이 주어졌다. 프로젝트의 시작일을 9월 1일로 가정할 때, 다음 물음에 답하시오. (단, 휴무일은 없고, 모든 달은 30일로 이루어져 있다) (총 30점)
| 작업(task) | 소요기간(일) | 종속성 | 작업자 |
| T1 | 10 | J | |
| T2 | 15 | A | |
| T3 | 20 | T1 | J |
| T4 | 15 | P | |
| T5 | 15 | T2, T4 | M |
| T6 | 10 | T1, T2 | A |
| T7 | 20 | T1 | K |
| T8 | 30 | T4 | P |
| T9 | 20 | T3, T6 | J |
| T10 | 15 | T5, T7 | A |
| T11 | 15 | T9 | P |
| T12 | 15 | T11 | P |
- (1) 임계 경로(critical path)에 있는 모든 작업(task)들을 순서대로 나열하시오. (5점)
- (2) 작업 T2, T3, T5, T8, T11에 대한 일정(시작일, 종료일, 여유시간)을 간트 차트(Gantt chart)로 작성하시오. (10점)
- (3) 이 프로젝트를 종료하는데 소요되는 최소시간(일)을 계산하시오. (5점)
- (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()
+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) SalariedEmployee 클래스의 인스턴스가 갖는 속성(attribute)의 이름을 모두 나열하시오. (5점)
- (2) 자바로 코딩 시 변수 x가 Employee 클래스 타입으로 선언되어 있을 때, 형 변환(type casting)을 하지 않고 x가 가리킬 수 있는 객체의 클래스 이름을 모두 나열하시오. (10점)
- (3) Building 클래스를 C++ 또는 자바를 이용하여 코드로 작성하시오. (단, 변수 이름은 위의 다이어그램에 따라 명명하시오) (10점)