2022년 5급 공채 기술 2차 소프트웨어공학
문제 5개 · 100점. 참고 답안·채점 기준은 앱에서 볼 수 있습니다.
제1문 (20점)
다음의 가정을 읽고 물음에 답하시오. (총 20점)
특정 게임 서버에 동시접속자 수가 순간적으로 폭증하여 아래와 같은 시스템 운용 상황이 발생하였다.
| ||||||||||||||||
| 가동1 | 고장 | 가동2 | 고장 | 가동3 | 고장 | 가동4 | 고장 | |||||||||
| 244시간 | 35시간 | 118시간 | 22시간 | 211시간 | 44시간 | 255시간 | 19시간 |
- (1) 평균수리시간(MTTR)을 정의하고, 위 상황에 대해 MTTR을 계산하시오. (6점)
- (2) 평균가동시간(MTBF)을 정의하고, 위 상황에 대해 MTBF를 계산하시오. (6점)
- (3) 가용성을 정의하고 위 상황에 대해 가용성을 계산하시오. (단, 가용성 계산은 소수점 3번째 자리에서 반올림한다) (8점)
제2문 (20점)
소프트웨어 기능점수(Function Point) 산정에 대해 다음 물음에 답하시오. (총 20점)
- (1) 기능점수 산정 시 평균복잡도를 적용하는 간이법에 대해 설명하고, 보정 후 개발원가를 계산하는 절차를 설명하시오. (10점)
- (2) ‘갑’ 프로젝트의 기능유형별 기능 수와 평균복잡도 가중치 등이 아래 <표 1>~<표 4>와 같이 주어졌을 때, 간이법으로 기능점수를 산정하고 ‘보정 후 개발원가’를 계산하시오. (단, 보정계수 계산은 소수점 3번째 자리에서 반올림한다) (10점)
<표 1> ‘갑’ 프로젝트 기능유형별 기능 수 기능유형 내부논리파일 외부연계파일 외부입력 외부출력 외부조회 기능 수 10 5 11 5 20 <표 2> 기능유형에 따른 평균복잡도 가중치 기능유형 내부논리파일 외부연계파일 외부입력 외부출력 외부조회 평균복잡도 가중치 7.5 5.4 4.0 5.2 3.9 <표 3> 기능점수당 단가 기능점수당 단가 550,000원 <표 4> 요소별 보정계수 요소 규모 연계복잡성 수준 성능요구 수준 운영환경 호환성 보안성 수준 보정계수 1.28 1.06 1.05 1.00 1.06
제3문 (20점)
다음의 상태 기계(state machine) 다이어그램에서 물음에 답하시오. (단, Start 이벤트는 해당 상태 기계가 초기 상태에서 시작됨을 의미한다) (총 20점)
[그림]
[그림]
- (1) Start, e1의 순서로 이벤트가 발생했을 경우 최종적으로 도달한 상태와 x 값을 쓰시오. (6점)
- (2) Start, e1, e2, e3의 순서로 이벤트가 발생했을 경우 최종적으로 도달한 상태와 x 값을 쓰시오. (6점)
- (3) Start, e4, e1, e5, e5의 순서로 이벤트가 발생했을 경우 최종적으로 도달한 상태와 x 값을 쓰시오. (8점)
제4문 (20점)
프로세스 개선 모델인 CMMI(Capability Maturity Model Integration)와 SPICE(Software Process Improvement and Capability dEtermination, ISO 15504) 모델에 대해 다음 물음에 답하시오. (총 20점)
- (1) SPICE의 프로세스 수행능력 단계와 범주(초점)에 대해 기술하시오. (10점)
- (2) CMMI의 프로세스 성숙도 단계와 범주(초점)에 대해 기술하시오. (10점)
제5문 (20점)
다음을 읽고 물음에 답하시오. (총 20점)
소프트웨어 요구분석과 설계 문서가 부실하게 작성되어 유지보수와 소프트웨어 개선에 어려움을 겪고 있다. 이에 대한 대책으로 운영 중인 시스템의 자바 코드를 분석하여 문서화하고자 한다.
public class Computer {
private String id;
private String password;
public void login() {
}
}
public class NotebookComputer extends Computer {
@Override
public void login() {
}
}
public class DesktopComputer extends Computer {
@Override
public void login() {
}
}
public class Computer {
private String id;
private String password;
public void login() {
}
}
public class NotebookComputer extends Computer {
@Override
public void login() {
}
}
public class DesktopComputer extends Computer {
@Override
public void login() {
}
}
- (1) 위와 같이 자바 소스 코드를 문서화(요구분석단계나 설계단계)하는 소프트웨어 공학의 용어를 적고, 종류를 구분하여 설명하시오. (10점)
- (2) 위의 자바 코드를 클래스 다이어그램으로 작성하시오. (10점)