5급 공채 2차

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

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

제1문 (26점)

다음은 소프트웨어 개발 프로세스와 개발 방법론에 관한 것이다. 물음에 답하시오. (총 26점)
(가) 소프트웨어 개발은 개발 프로세스 모델 적용뿐만 아니라 적절한 개발 방법론의 적용이 필요하다. 개발 프로세스 모델과 개발 방법론을 정확히 정의하지 않아 혼돈하는 경우가 종종 발생한다.
①소프트웨어 개발 생명주기에 따른 개발 모델을 소프트웨어 개발 프로세스 모델이라 정의한다. 소프트웨어 개발 프로세스 모델에서는 각 단계의 입력자료와 산출물을 정의하고 있지만, 그 내용이 어떻게 표현되어야 하는지 규정하지 않는다.
②소프트웨어 개발 방법론은 소프트웨어 개발단계를 정의하고, 단계별 수행활동, 산출물, 검증절차, 완료 기준을 정의하고, 이들의 표현 방법까지 명시한다. 소프트웨어 개발 방법론에서 제공하는 산출물의 표현 방법은 패러다임, 즉 소프트웨어를 보는 관점에 따라 다르다.
(나)A팀이 수행하고자 하는 정보시스템 프로젝트는 사용자 요구사항이 불확실하고 개발 일정이 짧다.
  1. (1) ①의 모델 중 익스트림 프로그래밍(eXtreme Programming)을 사용하는 소프트웨어 개발 프로세스 모델의 개념과 장단점을 기술하시오. (10점)
  2. (2) ②의 방법론 중 정보전략계획과 업무영역 분석을 데이터 중심으로 수행하는 정보공학 방법론의 개념과 장단점을 기술하시오. (10점)
  3. (3) (나)의 프로젝트에 적합한 프로토타이핑(프로토타입) 모델의 개념과 장단점을 기술하시오. (6점)

제2문 (20점)

다음 표는 A 회사가 공공기관 B가 발주한 프로젝트 P를 수행하는 데 필요한 작업, 작업 예측 소요 기간(일), 각 작업의 선행 작업을 나타낸 것이다. 물음에 답하시오. (단, 소요 기간은 평일을 기준으로 하며 휴일은 고려하지 않는다. 또한 1)과 2)는 독립적인 상황이다) (총 20점)
작업소요 기간(일)선행 작업
T115
T210
T35
T420T1
T510T2
T65T2
T715T3
T810T4, T5
T915T5, T6
T1020T6, T7
T1115T8, T9
T1215T9, T10
T135T10
T1410T11
T1520T12, T13
T1615T13
  1. (1) T5 작업을 수행하는 데 5일이 지연되어 15일이 소요되었다고 가정하자. 프로젝트의 전체 일정은 지연되지 않고 반드시 원래의 일정대로 종료되어야 한다면, T11 작업을 수행하는 데 허락되는 최대 지연 기간(일)은 얼마인지 임계경로를 도식화하고 계산 결과를 구하시오. (12점)
  2. (2) T9 작업을 담당한 개발자가 갑자기 병원에 입원하게 되어 T9 작업은 9일이 지연되어 24일이 소요되었다. 이런 상황에서 A 회사가 프로젝트 P의 결과물을 납품한 다음 발주처 B에 지불하게 될 지체보상금은 얼마인지 계산하고 근거를 제시하시오. (단, 프로젝트 P의 계약금액은 150,000,000원이고, 지체상금률(1일당)은 0.2%이다.) (8점)

제3문 (34점)

다음은 사용자 관리를 위한 클래스 UserManager에 대한 코드이다. 물음에 답하시오.
(총 34점)
//사용자(user)를 관리하기 위한 클래스 정의
class UserManager {
Database db; //데이터베이스 접근을 위한 필드
EmailService emailService; //이메일 시스템 접근을 위한 필드
Logger logger; //로그 메시지를 기록하기 위한 필드

//새로운 사용자를 기존 데이터베이스에 추가하는 메서드
public void addUser(String username, String email) {
db.connect();
db.insert("INSERT INTO users (username, email) VALUES (?, ?)",
username, email);
db.disconnect();
emailService.sendWelcomeEmail(email);
logger.log("User added: " + username);
}

//데이터베이스를 백업하는 메서드
public void backupDatabase() {
db.connect();
db.backup();
db.disconnect();
}

//이메일 리스트에 포함된 사용자들에게 뉴스레터를 전송하는 메서드
public void sendNewsletter(List<String> emails) {
for (String email : emails) {
emailService.sendNewsletter(email);
}
}
}
  1. (1) 위에 주어진 UserManager 클래스는 객체지향 설계 원리(SOLID) 중 하나인 단일 책임의 원리(Single Responsibility Principle)를 위반한다. ①단일 책임의 원리에 대한 개념과 ②위반 시 문제점, ③소프트웨어 설계 단계 시 좋은 품질을 위한 응집도(Cohesion)에 대해 설명하고, ④개선된 코드를 제시하시오. (18점)
  2. (2) ①소프트웨어 설계 시 결합도(Coupling)의 개념을 정의하고, ②소프트웨어 품질에 어떤 영향을 미치는지 설명하시오. 또, ③결합도 측면에서 주어진 코드의 문제점과 ④개선방안을 설명하시오. (16점)

제4문 (20점)

요구분석에 관한 다음 물음에 답하시오. (총 20점)
  1. (1) 사용자 스토리와 유스케이스는 사용자가 이해할 수 있는 언어로 요구사항을 나타내는 공통점을 가지고 있다. 사용자 스토리와 유스케이스의 개념과 차이점을 설명하시오. (10점)
  2. (2) 사용자 요구가 요구분석 명세서에 올바르게 기술되었는지 검토하는 활동을 요구 검증이라 한다. 요구 검증 품질 항목을 5개 이상 제시하고 설명하시오. (10점)
    끝