소프트웨어공학
1번
소프트웨어 품질 평가모델 ISO/IEC 9126의 속성과 그 속성에 대한 설명으로 옳지 않은 것은?
- ①
이식성(portability): 별도의 작동이나 수단 없이 다양한 환경에서 적응될 수 있는 능력
- ②
사용성(usability): 쉽게 이해되고 배울 수 있고 사용될 수 있는 능력
- ③
기능성(functionality): 사용되는 자원의 양에 따라 적절한 성능을 제공할 수 있는 능력
- ④
신뢰성(reliability): 소프트웨어가 주어진 환경에서 정해진 수준의 성능을 유지할 수 있는 능력
2번
다음은 K 공공기관의 새로운 대국민 헬스케어 플랫폼 구축 프로젝트에 대한 요구사항 명세서의 일부이다. 이 프로젝트를 수행하기 위해 가장 적합한 소프트웨어 개발 프로세스 모델은?
- ①
폭포수(waterfall) 모델
- ②
나선형(spiral) 모델
- ③
컴포넌트 기반 개발(CBD) 모델
- ④
V(verification) 모델
3번
요구분석에 대한 설명으로 옳지 않은 것은?
- ①
요구분석 단계에서는 시스템의 기능이 무엇(what)인지에 초점을 두고 정리한다.
- ②
요구사항은 기능 요구사항과 비기능 요구사항으로 구분할 수 있으며, 기능 요구사항은 품질을 포함한다.
- ③
신뢰성(reliability)은 소프트웨어를 믿고 사용할 수 있는 것을 의미하며, 정확성(correctness)은 사용자가 요구하는 기능을 충족하는 정도 또는 요구분석 명세서와 일치하는 정도를 의미한다.
- ④
가용성은 소프트웨어의 총 운용시간 중 고장 없이 정상적으로 가동된 시간의 비율(%)로 나타낸 것으로 “[MTTF ÷ (MTTF + MTTR)] × 100”으로 계산한다.
4번
다음에서 설명하고 있는 프로젝트 관리 방법론의 주요 특징으로 옳지 않은 것은?
- ①
모든 설계 결정을 초기에 고정하고 변경을 최소화한다.
- ②
변화 요구에 대해 수용적이며 고객과의 지속적 협업을 강조한다.
- ③
반복적 개발을 통해 기능을 점진적으로 추가하며 배포한다.
- ④
문서화 중심이 아닌 실행 가능한 소프트웨어 중심의 개발 접근 방식이다.
5번
객체지향 분석 및 설계 과정에서 시스템의 모델링을 위해 다양한 UML 다이어그램이 활용된다. 다음 도서 관리 시스템 개발 시나리오에 적용할 가장 적절한 UML 다이어그램을 바르게 연결한 것은?
(가) (나) (다)
- ①BCA
- ②ADC
- ③CDA
- ④ACB
6번
다음 요구사항 명세서에 대한 설명 중 옳지 않은 것은?
- ①
요구사항 ID: REQ-0001는 각 요구사항을 구분하는 유일한 식별자이다.
- ②
기능은 요구사항의 핵심 기능을 서술한다.
- ③
설명은 사용자 로그인 기능의 구현 방법을 상세히 기술한다.
- ④
제약조건은 요구사항의 조건이나 제한사항을 명확히한다.
7번
다음 Java로 작성된 코드의 기본경로 테스트를 위한 테스트 케이스 수는?
- ①
1
- ②
2
- ③
3
- ④
4
8번
아래와 같은 C 프로그램이 있을 때, 아래 프로그램의 함수 write_i와 read_i 간 결합(coupling) 수준으로 옳은 것은?
- ①
데이터 결합(data coupling)
- ②
스탬프 결합(stamp coupling)
- ③
내용 결합(content coupling)
- ④
공통 결합(common coupling)
9번
다음에 제시된 소프트웨어 유지보수 종류 (가) ~ (라)와 설명 A ~ D를 바르게 연결한 것은?
(가) (나) (다) (라)
- ①ADBC
- ②ADCB
- ③CABD
- ④CBAD
10번
다음은 비기능 요구사항을 측정 가능한 형태로 명세한 것이다. 각 요구사항이 나타내는 시스템의 비기능적 속성을 순서대로 바르게 나열한 것은?
(가) (나) (다) (라) (마)
- ①속도사용성신뢰성견고성이식성
- ②신뢰성사용성속도견고성이식성
- ③속도신뢰성사용성이식성견고성
- ④속도사용성견고성신뢰성이식성
11번
다음은 온라인 쇼핑몰 시스템의 도메인 모델을 나타낸 클래스 다이어그램의 일부에 대한 설명이다. 주어진 비즈니스 규칙을 바탕으로 도출한 다중성(multiplicity) 표기로 옳은 것은?

(가) (나) (다) (라)
- ①11..*11
- ②10..*11..*
- ③1..*10..*1..*
- ④0..*11..*1
12번
다음은 소프트웨어 아키텍처의 UML 4 + 1 관점에 대한 그림과 설명이다. 빈칸 (가) ~ (라)에 들어갈 관점에 대해 바르게 연결한 것은?

(가) (나) (다) (라)
- ①배치구현논리적프로세스
- ②구현프로세스논리적배치
- ③배치논리적프로세스구현
- ④배치프로세스논리적구현
13번
다음 클래스 다이어그램은 Shape 클래스와 그 하위 클래스 Rectangle, Triangle의 관계를 나타낸 것이다. 아래 코드 실행 결과를 올바르게 예측한 것은?

- ①
getArea()는 하위 클래스에만 선언되어 있기 때문에 컴파일 오류가 발생한다.
- ②
p1.getArea()와 p2.getArea() 모두 Shape 클래스의 getArea()가 실행된다.
- ③
p1.getArea()는 Rectangle의 메서드가, p2.getArea()는 Triangle의 메서드가 실행된다.
- ④
Rectangle이나 Triangle은 Shape의 메서드를 상속받기 때문에 각각의 getArea()는 실행되지 않는다.
14번
소프트웨어 개발에서 모델링에 대한 설명으로 옳지 않은 것은?
- ①
자연어를 사용하여 모델링하는 경우 일반 사용자가 이해하기 쉬운 장점이 있으나, 해석이 달라질 수 있는 문제가 있다.
- ②
자연어로 작성하기에 복잡한 요구사항들을 모델링할 때, 형식 언어(formal language)를 사용하면 보다 간결하게 표현할 수 있다.
- ③
데이터 흐름도(DFD, Data Flow Diagram) 표기법은 소프트웨어를 모델링하기 위한 구조적 방법이다.
- ④
E-R 다이어그램 표기법은 소프트웨어를 모델링하기 위한 객체지향 방법이다.
15번
화이트박스 테스트 검증 기준에 대한 설명 중 옳지 않은 것은?
- ①
기본경로 테스트(basic path test)는 프로그램의 실행 흐름을 기준으로 원시 코드의 독립적인 경로가 최소 한 번은 실행되도록 테스트 케이스를 설계한다.
- ②
다중조건 커버리지(multiple condition coverage)는 프로그램 내의 결정문을 결정하는 조건의 참/거짓의 모든 조합이 실행될 수 있도록 테스트 케이스를 설계한다.
- ③
조건 커버리지(condition coverage)는 프로그램 내의 결정문을 결정하는 조건의 참/거짓이 최소한 한 번은 실행될 수 있도록 테스트 케이스를 설계한다.
- ④
조건/결정 커버리지(condition/decision coverage)는 분기를 결정하는 각 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식의 결과에 독립적으로 영향을 주도록 테스트 케이스를 설계한다.
16번
다음은 GoF Iterator 설계 패턴의 클래스 다이어그램이다. 해당 다이어그램에 대한 설명 중에서 옳지 않은 것은?

- ①
복합 객체 요소의 내부 구조를 외부에 노출하지 않고 순차적으로 접근하기 위한 설계 패턴이다.
- ②
Java 언어의 Vector와 같이 불규칙한 크기의 객체 집합인 자료구조에는 적용할 수 없다.
- ③
Aggregate 인터페이스는 Client가 Iterator를 생성할 수 있도록 한다.
- ④
ConcreteAggregate는 적합한 ConcreteIterator의 인스턴스를 반환하기 위한 인스턴스 생성 인터페이스를 구현한다.
17번
다음 Java 코드에 적용된 디자인 패턴과 Student 클래스와 MemberGenerator 클래스 간 관계를 옳게 짝 지은 것은?
- ①
singleton 패턴 - 연관 관계
- ②
singleton 패턴 - 의존 관계
- ③
factory method 패턴 - 연관 관계
- ④
factory method 패턴 - 의존 관계
18번
중환자실 환자 모니터링 시스템은 생체신호 이상에 대한 신속한 경보, 환자 정보 보호, 경보 기능의 안전성, 24시간 서비스 가용성, 의료기기 변경에 대한 유지보수성이 중요하다. 이러한 요구사항을 고려한 아키텍처 설계 방안으로 옳은 것은?
- ①
신속한 처리가 필요한 경보 연산을 다수의 컴포넌트에 분산하여 상호 통신하도록 하고, 안전 관련 기능은 소수의 컴포넌트에 모아 배치한다.
- ②
신속한 경보에 필요한 핵심 연산은 소수의 컴포넌트에 집중하고, 변경이 잦은 의료기기 연동 기능은 작고 독립적인 컴포넌트로 구성한다.
- ③
안전 관련 기능은 가능한 여러 컴포넌트에 분산하고, 중요 환자 정보는 보호 수준이 높은 내부 계층에 배치한다.
- ④
높은 가용성을 위해 컴포넌트의 중복을 최소화하고, 유지보수성을 높이기 위해 여러 컴포넌트가 하나의 공유 데이터 구조를 사용하도록 한다.
19번
최근 소프트웨어 유지보수 및 운영 환경에서 필수적으로 적용되는 지속적 통합(CI), 지속적 배포(CD) 파이프라인과 데브옵스(DevOps) 환경에 대한 설명으로 옳지 않은 것은?
- ①
지속적 통합은 다수의 개발자가 작성한 소스 코드를 통합하여 소프트웨어 제품 형상을 개발하고 검증하는 프로세스를 말한다.
- ②
지속적 배포 단계에서 릴리스는 서버에 자원을 할당하고 인프라를 구축하여 최종 사용자에게 서비스를 오픈하는 단계를 의미하며, 설치는 배포 가능한 소프트웨어 패키지를 작성하는 단계를 의미한다.
- ③
데브옵스 환경에서는 코드의 품질을 유지하고 최상의 품질을 배포할 수 있도록 자동화 테스트 도구를 활용한다.
- ④
데브옵스에서는 소프트웨어가 정확히 동작하고 있는지 지속적으로 모니터링해야 하며, 모니터링 과정에서 발견된 문제에 대해 신속하게 대응한다.
20번
다음 Java 코드의 조건 커버리지(condition coverage)를 가장 크게 만족하는 테스트 케이스는? (단, 단축 연산(short-circuit evaluation)은 수행하지 않는다)
- ①
(x=10, y=10, z=4), (x=5, y=5, z=3)
- ②
(x=25, y=5, z=3), (x=8, y=5, z=3)
- ③
(x=10, y=10, z=4)
- ④
(x=25, y=5, z=3), (x=10, y=5, z=3), (x=5, y=5, z=1)
21번
다음 제시된 Java 코드에 포함된 코드 스멜과 이를 해결하기 위한 리팩토링 기법에 대한 설명으로 옳지 않은 것은?
- ①
새로운 조건이 생길 때마다 switch 문을 수정해야 하므로 버그 발생 가능성이 증가한다.
- ②
코드 스멜 해결을 위해 empType을 서브클래스로 분리하고, paySalary() 메서드를 다형성으로 구현하는 리팩토링 기법을 사용한다.
- ③
주어진 코드는 객체지향 설계원리 SOLID의 OCP(개방-폐쇄 원칙)를 위반한다.
- ④
주어진 코드에는 높은 결합도로 인해 변경에 취약한 유사 데이터들의 그룹 중복(data clumps) 코드 스멜이 포함된다.
22번
「SW사업 대가산정 가이드(2025년)」 및 「소프트웨어사업 계약 및 관리감독에 관한 지침(2023년)」에 따라서 지능형 냉난방 조절 시스템 개발에 대한 평균 노력을 추정하고자 한다. 해당 시스템의 기능별 개수 및 평균 복잡도와 사업 규모별 1인 생산성이 <표 1> 및 <표 2>와 같이 주어졌을 때 평균 노력(MM)을 계산한 결과로 옳은 것은? (단, 필요한 보정 계수는 1.5로 계산한다)
<표 1> 기능별 개수 및 평균 복잡도 | ||
기능 유형 | 개수 | 평균 복잡도 |
외부입력 | 15 | 4.0 |
외부출력 | 5 | 5.2 |
외부조회 | 12 | 3.9 |
내부 논리 파일 | 4 | 7.5 |
외부 인터페이스 파일 | 2 | 5.4 |
<표 2> 사업 규모별 1인 생산성 | |
사업규모(FP) | 1인 생산성(FP/MM) |
1,000 미만 | 19 |
1,000 이상 ~ 2,000 미만 | 22 |
2,000 이상 ~ 3,000 미만 | 24 |
3,000 이상 | 22 |
- ①
약 0.25 MM
- ②
약 9.14 MM
- ③
약 13.71 MM
- ④
약 17.27 MM
23번
CMMI에 대한 설명 중 옳지 않은 것은?
- ①
조직의 프로세스를 개선하기 위한 프레임워크로 소프트웨어 개발, 시스템 엔지니어링, 서비스 관리 등 다양한 도메인에서 활용될 수 있다.
- ②
CMMI 수준 평가는 성숙도 수준(maturity level)과 역량 수준(capability level)의 두 가지 수준을 평가하는 방법으로 나뉜다.
- ③
정의(defined) 수준에는 조직을 위한 표준 프로세스는 없고, 프로젝트별 프로세스만 있다.
- ④
협력 업체 관리는 성숙도 수준에서 관리(managed) 수준에 속하는 프로세스 영역이다.
24번
소프트웨어 품질 평가모델에 대한 설명으로 옳지 않은 것은?
- ①
ISO/IEC 9126은 내부품질/외부품질 및 사용품질로 구성되어 있으며 내부품질/외부품질 특성으로는 기능성, 사용성, 효율성, 신뢰성, 이식성, 유지보수성이 있다.
- ②
ISO/IEC 25000 시리즈는 ISO/IEC 9126과 ISO/IEC 14598 시리즈를 통합한 프레임워크로 품질 모델 영역, 품질 측정 영역 등 4개 영역으로 구성된다.
- ③
ISO/IEC 14598은 소프트웨어의 개발 과정 또는 완성된 제품에 대해 공급자와 구매자가 객관적으로 품질을 평가할 수 있도록 절차와 방법을 정의한 국제표준으로 평가지원 부분과 평가 프로세스로 구성한다.
- ④
ISO/IEC 12119는 테스트의 절차와 결과의 일관성을 확보하기 위한 지침을 제공하며 패키지 소프트웨어의 품질 요구사항을 정의한다.
25번
어느 대규모 소프트웨어 개발 프로젝트의 작업 항목, 소요 기간, 선행 작업 관계가 다음 표와 같다. 이 프로젝트의 일정 계획 및 임계 경로(critical path) 분석에 대한 설명으로 옳지 않은 것은? (단, 모든 작업은 종료 후 시작(FS, Finish to Start) 관계로 연결되어 있다)
작업 | 소요 기간 | 선행 작업 |
A | 4일 | 없음 |
B | 3일 | A |
C | 6일 | A |
D | 4일 | A |
E | 6일 | B |
F | 4일 | C, D |
G | 5일 | E, F |
H | 3일 | D |
I | 4일 | G, H |
- ①
프로젝트의 임계 경로는 A → C → F → G → I이며, 프로젝트의 최소 완료 기간은 23일이다.
- ②
만약 작업 B가 2일 지연된다면 전체 프로젝트의 최소 완료 기간은 24일로 늘어나고 임계 경로가 변경된다.
- ③
작업 D가 3일 지연되더라도 전체 프로젝트의 최소 완료 기간은 지연되지 않는다.
- ④
작업 H는 이 프로젝트의 모든 작업 중 가장 많은 8일의 여유 시간을 확보하고 있다.