5급 공채 2차

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

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

제1문 (20점)

버전관리(version control) 시스템에 대한 다음 물음에 답하시오. (총 20점)
  1. (1) 버전관리 시스템은 Subversion과 같은 중앙집중 시스템, Git과 같은 분산 시스템의 두 가지 유형으로 구분할 수 있다. 중앙집중 버전관리 시스템과 분산 버전관리 시스템 각각의 특징을 기술하시오. (6점)
  2. (2) 중앙집중 버전관리 시스템의 체크아웃(checkout), 체크인(checkin)에 대해 설명하시오. (6점)
  3. (3) 분산 버전관리 시스템의 복제(clone), 커밋(commit), 내보내기(push), 가져오기(pull)에 대해 설명하시오. (8점)

제2문 (24점)

소프트웨어 아키텍처 스타일에 대한 다음 물음에 답하시오. (총 24점)
  1. (1) 저장소 구조(repository architecture)의 개요를 설명하고, 이 구조의 장단점과 이 구조가 주로 사용되는 시스템에 대해 기술하시오. (10점)
  2. (2) MVC 구조의 요소와 상호 관계를 다이어그램으로 표현하시오. (8점)
  3. (3) 파이프 필터 구조에서 파이프와 필터 각각의 역할을 설명하고, 이 구조가 주로 사용되는 시스템에 대해 기술하시오. (6점)

제3문 (26점)

여러 점수를 입력으로 받아 평균을 구하는 아래 프로그램에 대하여 다음 물음에 답하시오. (총 26점)
번호소스코드
# 매개변수 scores는 정수로 구성된 리스트
def find_mean(scores):
# 변수 초기화
1sum_of_scores = 0;
2number_of_scores = 0;
3mean = 0.0
# scores의 숫자들을 모두 더하고 scores 숫자들의 개수를 센다.
4for x in scores:
5if x >= 0:
6sum_of_scores = sum_of_scores + x
7number_of_scores = number_of_scores + 1
# scores의 평균을 구하고 출력한다.
8if number_of_scores > 0:
9mean = sum_of_scores / number_of_scores
10print("The mean score is ", mean)
else:
11print("No scores were entered.")
  1. (1) 논리 흐름 그래프를 작성하시오. (10점)
  2. (2) 기본 경로의 수를 찾기 위해 McCabe의 싸이클로매틱 복잡도를 구하시오. (6점)
  3. (3) 기본 경로를 구하고, 기본 경로에 대한 테스트 케이스를 구하시오. (단, 기본 경로 중에서 실행이 불가능한 경로는 테스트 케이스 작성에서 제외한다) (10점)

제4문 (30점)

아래 <요구사항>을 대상으로 ER모델(entity-relationship model)을 이용하여 정보모델링(information modeling)을 할 때, 다음 물음에 답하시오. (단, ER모델의 작도는 사각형, 타원, 마름모꼴을 이용하는 피터첸 표기법(Peter Chen Notation)을 적용한다) (총 30점)
<요구사항>
○A 기업에서는 현장실습생 관리를 위한 주민등록번호, 이름, 기수, 지원업무, 현장실습생번호, 전화번호, 이메일주소에 대한 정보가 필요하다.
○현장실습생을 지도하고 현장교육강좌에서 교육을 하는 선배직원은 주민등록번호, 이름, 사번, 직책, 담당강좌, 전화번호, 이메일주소의 정보가 필요하며, 유일한 구별은 주민등록번호이고, 모든 선배직원은 각각 1개의 강좌를 담당한다.
○현장실습생들의 유일한 구별은 주민등록번호, 또는 현장실습생번호이며 1명의 선배직원을 가진다.
○현장교육강좌 개설을 위한 정보는 실습기수, 연도, 강좌번호, 과목정보를 가지며, 강좌번호에 의해 유일하게 구별된다. 1개의 과목에 대해 여러 개의 현장교육강좌를 개설할 수 있다.
○1개의 현장교육강좌는 1명의 선배직원이 교육한다.
○현장실습생 교육을 위한 각 과목은 과목명, 과목번호, 과목시간, 과목수준을 가지며 과목번호에 의해 유일하게 구별된다.
○현장실습생들은 1개 이상의 현장교육강좌를 이수하여 실습점수를 받게 되며, 각 현장교육에는 여러 명의 실습생이 실습을 수행한다.
  1. (1) <요구사항>의 내용을 반영한 각각의 엔티티 타입(entity type)을 그리시오. (단, 각 엔티티 타입 은 포함하는 속성(attribute)들과 연결되어 있어야 하며, 키-속성(key-attribute)은 밑줄로 표시하고 각 엔티티 타입들 사이의 관계성(relationship)은 표시하지 않는다) (10점)
  2. (2) <요구사항>에서 현장실습생과 선배직원의 일반화된 엔티티 타입으로 직원을 정의하고, IS-A 관계에 있는 직원, 현장실습생, 선배직원의 일반화 모델을 제시하시오. (10점)
  3. (3) <요구사항>에 대하여 직원, 선배직원, 현장실습생의 일반화 모델을 포함하는 ER모델을 제시하시오. (10점)