2024년 5급 공채 기술 2차 소프트웨어공학
문제 4개 · 100점. 참고 답안·채점 기준은 앱에서 볼 수 있습니다.
제1문 (20점)
버전관리(version control) 시스템에 대한 다음 물음에 답하시오. (총 20점)
- (1) 버전관리 시스템은 Subversion과 같은 중앙집중 시스템, Git과 같은 분산 시스템의 두 가지 유형으로 구분할 수 있다. 중앙집중 버전관리 시스템과 분산 버전관리 시스템 각각의 특징을 기술하시오. (6점)
- (2) 중앙집중 버전관리 시스템의 체크아웃(checkout), 체크인(checkin)에 대해 설명하시오. (6점)
- (3) 분산 버전관리 시스템의 복제(clone), 커밋(commit), 내보내기(push), 가져오기(pull)에 대해 설명하시오. (8점)
제2문 (24점)
소프트웨어 아키텍처 스타일에 대한 다음 물음에 답하시오. (총 24점)
- (1) 저장소 구조(repository architecture)의 개요를 설명하고, 이 구조의 장단점과 이 구조가 주로 사용되는 시스템에 대해 기술하시오. (10점)
- (2) MVC 구조의 요소와 상호 관계를 다이어그램으로 표현하시오. (8점)
- (3) 파이프 필터 구조에서 파이프와 필터 각각의 역할을 설명하고, 이 구조가 주로 사용되는 시스템에 대해 기술하시오. (6점)
제3문 (26점)
여러 점수를 입력으로 받아 평균을 구하는 아래 프로그램에 대하여 다음 물음에 답하시오. (총 26점)
| 번호 | 소스코드 |
| # 매개변수 scores는 정수로 구성된 리스트 | |
| def find_mean(scores): | |
| # 변수 초기화 | |
| 1 | sum_of_scores = 0; |
| 2 | number_of_scores = 0; |
| 3 | mean = 0.0 |
| # scores의 숫자들을 모두 더하고 scores 숫자들의 개수를 센다. | |
| 4 | for x in scores: |
| 5 | if x >= 0: |
| 6 | sum_of_scores = sum_of_scores + x |
| 7 | number_of_scores = number_of_scores + 1 |
| # scores의 평균을 구하고 출력한다. | |
| 8 | if number_of_scores > 0: |
| 9 | mean = sum_of_scores / number_of_scores |
| 10 | print("The mean score is ", mean) |
| else: | |
| 11 | print("No scores were entered.") |
- (1) 논리 흐름 그래프를 작성하시오. (10점)
- (2) 기본 경로의 수를 찾기 위해 McCabe의 싸이클로매틱 복잡도를 구하시오. (6점)
- (3) 기본 경로를 구하고, 기본 경로에 대한 테스트 케이스를 구하시오. (단, 기본 경로 중에서 실행이 불가능한 경로는 테스트 케이스 작성에서 제외한다) (10점)
제4문 (30점)
아래 <요구사항>을 대상으로 ER모델(entity-relationship model)을 이용하여 정보모델링(information modeling)을 할 때, 다음 물음에 답하시오. (단, ER모델의 작도는 사각형, 타원, 마름모꼴을 이용하는 피터첸 표기법(Peter Chen Notation)을 적용한다) (총 30점)
| <요구사항> | ||
| ○A 기업에서는 현장실습생 관리를 위한 주민등록번호, 이름, 기수, 지원업무, 현장실습생번호, 전화번호, 이메일주소에 대한 정보가 필요하다. ○현장실습생을 지도하고 현장교육강좌에서 교육을 하는 선배직원은 주민등록번호, 이름, 사번, 직책, 담당강좌, 전화번호, 이메일주소의 정보가 필요하며, 유일한 구별은 주민등록번호이고, 모든 선배직원은 각각 1개의 강좌를 담당한다. ○현장실습생들의 유일한 구별은 주민등록번호, 또는 현장실습생번호이며 1명의 선배직원을 가진다. ○현장교육강좌 개설을 위한 정보는 실습기수, 연도, 강좌번호, 과목정보를 가지며, 강좌번호에 의해 유일하게 구별된다. 1개의 과목에 대해 여러 개의 현장교육강좌를 개설할 수 있다. ○1개의 현장교육강좌는 1명의 선배직원이 교육한다. ○현장실습생 교육을 위한 각 과목은 과목명, 과목번호, 과목시간, 과목수준을 가지며 과목번호에 의해 유일하게 구별된다. ○현장실습생들은 1개 이상의 현장교육강좌를 이수하여 실습점수를 받게 되며, 각 현장교육에는 여러 명의 실습생이 실습을 수행한다. | ||
- (1) <요구사항>의 내용을 반영한 각각의 엔티티 타입(entity type)을 그리시오. (단, 각 엔티티 타입 은 포함하는 속성(attribute)들과 연결되어 있어야 하며, 키-속성(key-attribute)은 밑줄로 표시하고 각 엔티티 타입들 사이의 관계성(relationship)은 표시하지 않는다) (10점)
- (2) <요구사항>에서 현장실습생과 선배직원의 일반화된 엔티티 타입으로 직원을 정의하고, IS-A 관계에 있는 직원, 현장실습생, 선배직원의 일반화 모델을 제시하시오. (10점)
- (3) <요구사항>에 대하여 직원, 선배직원, 현장실습생의 일반화 모델을 포함하는 ER모델을 제시하시오. (10점)