[경찰간부후보생 소프트웨어공학] 26년 1회차
경찰간부후보생 소프트웨어공학 기출문제

26년 1회차

총 40문항 · 객관식 · A4 약 1장

1 / 1
A4정답 포함
경찰간부후보생 소프트웨어공학 기출문제모두CBT · moducbt.com

26년 1회차

총 40문항 · 객관식 · 정답·해설 포함
문제 1
프로젝트 착수 시 고객이 요구사항을 명확하게 정의하지 못하고 있다. 개발 프로세스 모델 중 현재 프로젝트에 적용하기에 가장 적절하지 않은 것은?
1애자일(Agile) 모델
2프로토타이핑(Prototyping) 모델
3V 모델
4나선형(Spiral) 모델
정답 및 해설

V 모델은 요구사항이 초기에 명확히 확정된다는 전제에서 개발 단계와 테스트 단계를 대응시키는 순차형 모델이라 요구가 불명확한 프로젝트에는 맞지 않다.

요구가 모호할 때는 고객 피드백을 반복적으로 받아 요구를 구체화하는 반복·점진형 모델이 적합하다.

  • 애자일 모델은 짧은 반복 주기마다 고객 피드백을 반영해 변화하는 요구에 대응한다.
  • 프로토타이핑 모델은 견본을 먼저 만들어 고객이 직접 확인하게 하여 요구를 구체화한다.
  • 나선형 모델은 반복마다 위험 분석과 고객 평가를 거쳐 불확실한 요구를 점차 확정한다.
문제 2
프로젝트관리산출물중WBS(WorkBreakdown Structure)에 대한 설명으로 가장 적절하지 않은 것은?
1전체 프로젝트 목표를 달성하고 결과물을 산출하기 위하여 수행해야 할 작업을 계층적으로 분할한다.
2전체 목표와 중간의 세부 목표들이 트리(Tree)나 표(Table) 형태로 표현된다.
3전체 프로젝트 수행에 필요한 자원 예측과 프로젝트 일정 수립을 위한 스케줄링의 기초 자료로 활용된다.
4WBS 작성 시 세부 작업 사이의 의존 관계와 임계경로를 파악하고 필요한 소요 자원을 할당한다.
정답 및 해설

작업 간 의존 관계와 임계경로를 파악하는 것은 WBS가 아니라 이를 바탕으로 작성하는 네트워크 일정표(CPM·PERT)의 역할이다.

WBS는 프로젝트 범위를 작업 단위로 계층 분할한 구조로, 작업 순서나 일정 관계는 담지 않는다.

  • 목표 달성에 필요한 작업을 계층적으로 분할한다는 설명은 WBS의 정의이다.
  • 전체 목표와 세부 목표를 트리나 표 형태로 표현한다는 설명은 WBS의 표현 방식이다.
  • 자원 예측과 일정 수립의 기초 자료로 쓰인다는 설명은 WBS의 활용 목적이다.
문제 3
고객관리시스템 업무인 회원관리 기능을 개발하기 위해 비용을 산정하고자 한다. 제시된 단위 업무 설명과 식별된 데이터 또는 트랜잭션의 수는 아래 표와 같다. 간이법을 통해 기능점수를 산출한다고 가정할 때, 총 기능점수는? (단, 평균 복잡도 가중치는 EI: 4.0, EO: 5.2, EQ: 3.9, ILF: 7.5, EIF: 5.4 이며, 제시된 단위 업무와 관련된 추가 세부 기능이나 다른 가정사항 및 제약조건은 없는 것으로 전제함)
단위 업무 설명식별된 데이터 / 트랜잭션 수
고객관리시스템에는 회원관리 정보를 직접 저장하고 관리한다.2
회원 고객의 결제 계좌 데이터는 이미 구축되어 운영중인 결제시스템으로부터 제공받는다.1
신규고객은 ‘회원 가입하기’를 통해 회원 등록을 한다.1
회원은 ‘회원 정보 조회’를 통해 자신의 정보를 조회한다.1
회원은 ‘회원 정보 수정’을 통해 자신의 정보를 수정한다.1
회원은 ‘회원 탈퇴’를 통해 비회원이 될 수 있다.1
고객관리팀의 현업담당자는 ‘신규 회원 가입 통계 보고서 생성’을 통해 실시간 신규 회원 현황을 집계한다.2
139.2
244.6
345.4
446.7
정답 및 해설

표의 업무를 기능 유형별로 분류해 평균 가중치를 곱하면 총 기능점수는 46.7이다.

직접 저장·관리하는 회원 정보는 ILF 2개, 외부 결제시스템에서 받는 계좌 데이터는 EIF 1개, 가입·수정·탈퇴는 데이터를 변경하는 EI 3개, 단순 조회는 EQ 1개, 집계 결과를 만드는 통계 보고서는 EO 2개이다.

ILF:2×7.5=15\mathrm{ILF}: 2 \times 7.5 = 15
EIF:1×5.4=5.4\mathrm{EIF}: 1 \times 5.4 = 5.4
EI:3×4.0=12\mathrm{EI}: 3 \times 4.0 = 12
EQ:1×3.9=3.9\mathrm{EQ}: 1 \times 3.9 = 3.9
EO:2×5.2=10.4\mathrm{EO}: 2 \times 5.2 = 10.4

15+5.4+12+3.9+10.4=46.715 + 5.4 + 12 + 3.9 + 10.4 = 46.7

문제 4
다음 요구사항을 유스케이스 다이어그램으로 표현했을 때, 두 유스케이스 간의 관계로 가장 적절한 것은?
과금시스템은 요금 결제 시 미납 내역이 있는지를 확인하고 미납 내역이 있는 경우 결제금액에 포함하여 결제를 수행한다.
1<<포함>> 요금결제 미납내역조회
2<<확장>> 미납내역조회 요금결제
3<<포함>> 미납내역조회 요금결제
4미납내역조회 <<확장>> 요금결제
문제 5
다음에 제시된 GetScore() 메소드에서는 value 변수를 매개변수로 사용한다. 소프트웨어 설계에서 발생하는 결합 유형으로 가장 적절한 것은? (단, 코드 실행에 대한 오류는 없는 것으로 함)
int GetScore(int value, void* buf, int count) {
...
if ( value == 0 )
/* read Buffer */
else
/* write Buffer */
...
}
1외부(external) 결합
2제어(control) 결합
3데이터(data) 결합
4스탬프(stamp) 결합
정답 및 해설

매개변수 value 값에 따라 호출된 모듈이 버퍼 읽기와 쓰기 중 무엇을 할지 결정되므로 제어 결합이다.

제어 결합은 한 모듈이 제어 플래그를 넘겨 다른 모듈의 내부 처리 흐름을 지시하는 결합이다.

  • 외부 결합은 외부에서 정의된 데이터 형식이나 장치 인터페이스를 여러 모듈이 공유할 때 생긴다.
  • 데이터 결합은 처리에 필요한 단순 데이터만 주고받을 뿐 상대 모듈의 동작 흐름을 바꾸지 않는다.
  • 스탬프 결합은 구조체·레코드 같은 자료구조 전체를 매개변수로 넘길 때 생긴다.
문제 6
다음 중 객체지향 설계에서 응집력(Cohesion)의 강도가 상대적으로 가장 높은 것은?
1모듈 내부 요소들이 외부 출력 처리 루틴들로 묶여서 구성되어 있다.
2모듈 내부 요소들이 모듈 내에서 연산이 수행되는 실행 순서에 따라 정의되어 묶여 있다.
3모듈 내부 요소들이 하나의 기능에 꼭 필요한 요소들로만 구성되어 있다.
4모듈 내부 요소들이 이전 문장의 실행 결과가 다음 문장의 입력으로 사용되는 관계로 묶여 있다.
정답 및 해설

모듈 내부 요소가 하나의 기능에 꼭 필요한 것들로만 구성된 기능적 응집이 가장 강한 응집이다.

응집도는 기능적 > 순차적 > 교환적 > 절차적 > 시간적 > 논리적 > 우연적 순으로 약해진다.

  • 이전 문장의 결과가 다음 문장의 입력이 되는 관계는 순차적 응집으로 기능적 응집보다 약하다.
  • 실행 순서에 따라 요소를 묶은 것은 절차적 응집이다.
  • 외부 출력 처리처럼 비슷한 성격의 처리 루틴을 묶은 것은 논리적 응집으로 강도가 낮다.
문제 7
본사의 EnterpriseEisService 클래스가 지사의 모듈 변경에 쉽게 영향을 받지 않도록 BranchEisServiceChartAPI 연계용 인터페이스클래스를정의하였다.설계변경에반영된 SOLID 원칙으로 가장 적절한 것은?
EnterpriseEisService
*getMergeData()


BranchEisServiceChartAPI
*getMergeData()

변경 후
EnterpriseEisService
*getMergeData()
BranchEisServiceChartAPI
*getMergeData()


<<interface>>
IntEnterpriseEisService
*getMergeData()
1개방 폐쇄의 원리
2인터페이스 분리의 원리
3의존 관계 역전의 원리
4리스코프 교체의 원리
정답 및 해설

본사 클래스가 지사 구현 클래스에 직접 의존하던 구조를 인터페이스(추상화)에 의존하도록 바꾼 것이므로 의존 관계 역전의 원리이다.

상위 모듈과 하위 모듈이 모두 추상화에 의존하게 하면 하위 구현이 바뀌어도 상위 모듈은 영향을 덜 받는다.

  • 개방 폐쇄의 원리는 기존 코드를 수정하지 않고 확장할 수 있게 하라는 원칙으로 의존 방향 전환이 핵심이 아니다.
  • 인터페이스 분리의 원리는 클라이언트가 쓰지 않는 메소드에 의존하지 않도록 큰 인터페이스를 쪼개라는 원칙이다.
  • 리스코프 교체의 원리는 하위 타입이 상위 타입을 대체해도 올바르게 동작해야 한다는 원칙이다.
문제 8
다음에서 설명하고 있는 소프트웨어 아키텍처 스타일로 가장 적절한 것은?
○컴포넌트들을 사용자 인터페이스로부터 비즈니스 로직을 분리하여 뷰를 모델과 독립적으로 변경하고 제어할 수 있음
○기능이나 특성에 따라 모듈을 보다 명확히 분리하여 유지보수성, 프로그램 확장성과 유연성을 높임
○대표적 사례로는 GUI 모델이 있음
1MVC
2파이프 필터
3P2P(Peer-to-Peer)
4레파지토리(데이터 중심)
정답 및 해설

사용자 인터페이스와 비즈니스 로직을 분리해 뷰를 모델과 독립적으로 변경할 수 있게 하는 구조는 MVC 스타일이다.

MVC는 모델·뷰·컨트롤러로 역할을 나눠 유지보수성과 확장성을 높이며 GUI 애플리케이션에 널리 쓰인다.

  • 파이프 필터는 데이터가 필터를 차례로 통과하며 변환되는 스트림 처리 구조이다.
  • P2P는 각 노드가 클라이언트와 서버 역할을 함께 수행하는 분산 구조이다.
  • 레파지토리 구조는 공유 데이터 저장소를 중심으로 컴포넌트가 데이터를 주고받는 구조이다.
문제 9
다음의 상황을 고려하여 GoF 패턴을 선정하고자 할 때, 가장 적절한 것은?
○문제 및 배경 : 서브시스템에 다수의 인터페이스가 존재하기 때문에 모든 인터페이스와 상호작용하기 위한 구현을 개별적으로 수행해야 하는 상황임
○솔루션 : 서브 시스템에 있는 다수의 인터페이스 집합에 대해 하나의 통일된 인터페이스를 제공할 수 있는 포괄된 개념의 인터페이스를 정의하고자 함
○결과 및 기대효과 : 클라이언트가 다루어야 할 객체 수가 감소 되면서도 서브시스템 구성 요소를 보호할 수 있고, 서브시스템과 클라이언트 코드 간 결합도가 감소될 것을 기대할 수 있음
1Facade
2Bridge
3Adapter
4Proxy
정답 및 해설

서브시스템의 여러 인터페이스 앞에 하나의 통일된 인터페이스를 두어 클라이언트와의 결합도를 낮추는 패턴은 Facade이다.

클라이언트는 퍼사드 객체만 다루므로 다룰 객체 수가 줄고 서브시스템 내부 구성이 감춰진다.

  • Bridge는 추상화와 구현을 분리해 둘을 독립적으로 확장할 수 있게 하는 패턴이다.
  • Adapter는 호환되지 않는 기존 인터페이스를 클라이언트가 기대하는 인터페이스로 변환한다.
  • Proxy는 대리 객체를 두어 실제 객체에 대한 접근을 제어하거나 지연시킨다.
문제 10
이것은 UI 설계단계에서 페이지에 대한 개략적인 레이아웃이나 UI 요소 등에 대한 뼈대를 설계하는 방법으로, 각 페이지의 영역 구분 콘텐츠, 텍스트 배치 등을 화면 단위로 설계하는 일종의 웹페이지나 애플리케이션 레이아웃 스케치이며, 디자인 세부 사항보다는 구조와 기능에 중점을 둔다. 이것이 의미하는 UI 설계 과정의 주요 개념으로 가장 적절한 것은?
1프로토타입
2와이어프레임
3스토리보드
4여정 지도
정답 및 해설

페이지의 영역 구분과 UI 요소 배치를 화면 단위 뼈대로 스케치하는 것은 와이어프레임이다.

와이어프레임은 색상·디자인보다 구조와 기능 배치에 집중한 저충실도 설계 산출물이다.

  • 프로토타입은 실제처럼 동작을 시연·검증할 수 있게 만든 견본이다.
  • 스토리보드는 화면 설계에 기능 설명·흐름·데이터 정보 등을 함께 정리한 상세 설계 문서이다.
  • 여정 지도는 사용자가 서비스를 이용하며 겪는 단계별 경험과 감정을 시각화한 것이다.
문제 11
통계적 방법을 사용하여 가능한 변수 조합을 선택함으로써, 테스트 케이스 수를 줄이면서도 대표적인 조합을 고르게 포함하고, 높은 커버리지를 유지할 수 있는 블랙박스 테스트 기법으로 가장 적절한 것은?
1직교(orthogonal) 배열
2페어와이즈(pairwise)
3원인-결과 그래프
4n-way
정답 및 해설

통계적 방법으로 변수 조합을 골라 테스트 케이스 수를 줄이면서도 조합을 고르게 포함하는 기법은 직교 배열 테스트이다.

직교 배열은 실험계획법의 균형 잡힌 배열표를 이용해 각 값의 조합이 균등하게 나타나도록 케이스를 선정한다.

  • 페어와이즈는 모든 두 변수 값의 쌍이 최소 한 번씩 나오도록 조합하는 기법이다.
  • 원인-결과 그래프는 입력 조건과 출력 결과의 논리 관계를 그래프로 분석해 케이스를 도출한다.
  • n-way는 임의의 n개 변수 값 조합이 모두 한 번 이상 나오도록 페어와이즈를 일반화한 조합 테스트 방식이다.
문제 12
통합테스트와 관련된 주요 용어에 대한 설명으로 가장 적절하지 않은 것은?
1연쇄식 통합에서 연쇄(Thread)란 특정 기능을 수행하는 모듈의 최소 단위이다.
2테스트 드라이버(Driver)는 시험 대상 모듈을 호출하는 역할을 하는 간이 소프트웨어이다.
3테스트 스텁(Stub)은 시험 대상 모듈에 의해 호출되는 모듈의 기능을 대신하는 간이 소프트웨어이다.
4테스트 오라클(Oracle)은 시스템을 테스트하기 위하여 작성된 별도의 프로그램으로 테스트가 끝난 후 삭제된다.
정답 및 해설

테스트 오라클은 테스트 결과가 올바른지 판단하기 위해 기대값을 제공하는 기준·메커니즘이며, 테스트 후 삭제되는 별도 프로그램이 아니다.

테스트가 끝난 뒤 제거되는 임시 프로그램은 통합 테스트에서 쓰는 드라이버와 스텁이다.

  • 연쇄식 통합에서 연쇄는 특정 기능을 수행하는 모듈의 최소 단위를 말한다.
  • 드라이버는 하위 모듈을 시험할 때 그 모듈을 호출하는 상위 역할의 간이 프로그램이다.
  • 스텁은 시험 대상 모듈이 호출하는 하위 모듈의 기능을 대신하는 간이 프로그램이다.
문제 13
다음에 제시된 모듈 구조의 설계 복잡도 및 통합 복잡도에 대한 설명으로 가장 적절한 것은? (단, M은 모듈, 다이아몬드()는 이진 조건 분기, 화살표()는 호출을 의미함)
M4
M5
M6
M7
M1
M2
M3
M0
1M0 모듈의 설계 복잡도는 13이다.
2M2 모듈의 설계 복잡도는 2이다.
3M3 모듈의 설계 복잡도는 3이다.
4M0 모듈의 통합 복잡도는 4이다.
문제 14
다음은 소프트웨어 테스트를 위해 작성된 테스트 케이스와 원인-결과 그래프이다. (가)~(다)의 제한 조건 기호로 가장 적절한 것은?
테스트 케이스
○첫 번째 열이 A 또는 B이고 두 번째 열이 %이면 ‘출입 허가’를 출력한다.
○첫 번째 열이 A 또는 B가 아니면 ‘출입 불가’를 출력한다.
○첫 번째 열이 A 또는 B이고 두 번째 열이 %가 아니면 ‘코드 오류’를 출력한다.
○A는 남직원, B는 여직원을 의미한다.
원인-결과 그래프

(가) (나) (다)
1E R R
2E M R
3I R M
4I M M
정답 및 해설

(가)는 E(Exclusive), (나)와 (다)는 모두 R(Requires)이므로 조합은 E R R이다.

남직원과 여직원은 동시에 참일 수 없는 원인이므로 둘을 잇는 (가)는 배타 제약이다. 원인 %에서 남직원·여직원으로 향하는 화살표 (나)·(다)는 '%가 성립하려면 해당 원인이 먼저 성립해야 한다'는 요구 제약이다.

  • E M R: (나)는 원인 사이의 화살표이므로 결과 사이에 쓰는 M(Masks)이 아니라 R이다.
  • I R M: (가)의 I(Inclusive)는 적어도 하나는 참이어야 한다는 제약인데, 직원이 아닌 경우('출입 불가')가 있으므로 맞지 않고, (다)도 M이 아니라 R이다.
  • I M M: (가)는 배타 제약 E이고, (나)·(다)는 원인 간 요구 제약 R이므로 모두 맞지 않는다.
문제 15
다음은 스크럼(scrum) 방식의 진행 절차에 대한 설명이다. 진행 절차의 순서로 가장 적절하게 나열된 것은?
(가)스프린트 구현 목록을 작성하고 스프린트 개발 시간을 추정한다.
(나)일일 스크럼 회의를 진행하고 스프린트 현황판 변경 및 소멸 차트를 표시한다.
(다)실행 가능한 스프린트 결과물을 완성한다.
(라)요구사항 목록에 우선순위를 매겨 제품 기능 목록을 작성한다.
(마)스프린트 검토 회의를 수행하고 차기 스프린트 수행 계획을 수립한다.
1(라) → (나) → (가) → (다) → (마)
2(라) → (가) → (나) → (마) → (다)
3(라) → (가) → (나) → (다) → (마)
4(라) → (나) → (가) → (마) → (다)
정답 및 해설

스크럼은 제품 백로그 작성 → 스프린트 계획 → 일일 스크럼 → 결과물 완성 → 스프린트 검토 순으로 진행된다.

요구사항에 우선순위를 매긴 제품 기능 목록에서 출발해, 스프린트 구현 목록과 시간을 추정한 뒤 매일 회의와 소멸 차트로 진행을 관리한다.

스프린트가 끝나면 실행 가능한 결과물을 완성하고, 검토 회의를 거쳐 차기 스프린트 계획으로 이어진다.

문제 16
다음 프로그램 (가)의 순환 복잡도와 제어흐름 그래프 (나)의 순환 복잡도로 가장 적절한 것은? (단, 코드 실행에 대한 오류는 없는 것으로 함)
(가)(나)
bool func(int a, int b, int c) {
bool flag = true;
int i;
int sum;
if (a < b)
flag = false;
if (a < c)
flag= false;
if (a > 0)
i = 1;
else {
i = 0;
a = -a;
}
sum = 0;
while (i < a) {
sum += 1;
i++;
}
print(sum);
return flag;
}

(가) (나) (가) (나)
14 4
25 5
34 5
45 4
정답 및 해설

프로그램 (가)의 순환 복잡도는 5, 제어흐름 그래프 (나)의 순환 복잡도는 4이다.

(가)에는 판단문이 if, if, if-else, while 네 개 있으므로 판단 수에 1을 더해 5가 된다.

(나)는 노드 9개, 간선 11개이다.
V(G)=E−N+2=11−9+2=4V(G)=E-N+2=11-9+2=4
분기하는 노드가 3개이므로 3+1로 계산해도 같다.

  • (가)와 (나)를 모두 4로 본 조합: (가)의 while 반복도 판단문이므로 (가)는 5이다.
  • (가)와 (나)를 모두 5로 본 조합: (나)는 간선·노드 수로 계산하면 4이다.
  • (가) 4, (나) 5인 조합: 두 값이 서로 뒤바뀌었다.
문제 17
다음은 소프트웨어 아키텍처 평가 방법에 대한 설명이다. 각 설명이 의미하는 평가 방법으로 가장 적절한 것은?
(가)후보 아키텍처가 품질 속성을 만족하는지 판단하고 상호 간에 어떻게 충돌하고 작용하는지를 분석하여 아키텍처 설계에 대한 타협점을 찾는 평가 방법이다.
(나)시스템 아키텍처 품질에서 얻을 수 있는 이득에 대해 투자 대비 효과를 경제적인 측면에서 평가하여 수익이 최대가 되는 소프트웨어 아키텍처를 선정하는 평가 방법이다.

(가) (나)
1ATAM CBAM
2ATAM SAAM
3SAAM CBAM
4SAAM ATAM
정답 및 해설

품질 속성 간 충돌과 상충점을 분석하는 방법은 ATAM, 투자 대비 효과를 경제적 측면에서 평가하는 방법은 CBAM이다.

ATAM은 품질 속성 간의 트레이드오프를 찾아 설계 타협점을 도출하며, CBAM은 ATAM 결과에 비용·편익 분석을 더해 수익이 최대인 아키텍처를 고른다.

  • SAAM은 변경 용이성 등을 시나리오 중심으로 평가하는 초기 방법으로 품질 속성 간 상충 분석이나 경제성 평가를 핵심으로 하지 않는다.
문제 18
다음은 클래스 다이어그램을 자바 코드로 표현한 것이다. (가)∼(라)에 가장 적절한 것은? (단, 코드 실행에 대한 오류는 없는 것으로 함)
클래스 다이어그램소스 코드
public class Member
{
(가) String id;
(나) String pwd;
(다) int age;
(가) void login() { }
}
publicclassProfessor (라) {}
publicclassStudent (라) {}

(가) (나) (다) (라)
1public protected private extends Member
2public private protected extends Member
3public protected private implements Member
4public private protected implements Member
정답 및 해설

(가)는 public, (나)는 private, (다)는 protected, (라)는 extends Member이다.

UML 가시성 표기에서 +는 public, -는 private, #는 protected이다. id와 login()은 +, pwd는 -, age는 #이고, Professor·Student에서 Member로 향하는 빈 삼각형 화살표는 클래스 상속(일반화)이므로 자바에서 extends로 표현한다.

  • public protected private extends Member: pwd의 -와 age의 # 표기를 서로 바꿨다.
  • public protected private implements Member: 가시성이 뒤바뀌었고, implements는 인터페이스 실현에 쓰므로 일반 클래스 Member의 상속에는 맞지 않다.
  • public private protected implements Member: 가시성은 맞지만 Member는 일반 클래스이므로 implements가 아니라 extends로 상속한다.
문제 19
SQuaRE(Software Quality and Requirement Evaluation)라 불리는 ISO/IEC 25000의 각 부문에 대한 설명으로 가장 적절한 것은?
12501n부문-SQuaRE에 대한 개요 및 전체에 대한 계획과 관리
22502n부문-소프트웨어 품질 모델과 품질 사용에 대한 안내
32503n부문-내/외부 메트릭스, 사용 중 품질 메트릭스 및 평가 모듈의 문서화
42504n부문-개발자, 구매자, 평가자 관점의 품질 평가 프로세스
정답 및 해설

ISO/IEC 25000(SQuaRE)에서 2504n 부문은 개발자·구매자·평가자 관점의 품질 평가 프로세스를 다룬다.

SQuaRE는 품질 관리(2500n), 품질 모델(2501n), 품질 측정(2502n), 품질 요구(2503n), 품질 평가(2504n) 부문으로 구성된다.

  • SQuaRE 개요와 전체 계획·관리는 2500n 부문의 내용이다.
  • 품질 모델과 사용 품질에 대한 안내는 2501n 부문의 내용이다.
  • 내·외부 메트릭과 사용 중 품질 메트릭은 2502n 측정 부문의 내용이다.
문제 20
다음 설명에 해당하는 디자인 패턴으로 가장 적절한 것은?
○애플리케이션이 대량의 객체를 사용해야 하거나 객체 수가 너무 많아져 저장 비용이 높아질 경우에 유용하며, 애플리케이션이 객체 식별자에 비중을 두지 않는 경우에 사용한다.
○인스턴스를 필요한 만큼 생성하는 대신 동일한 인스턴스를 공유하여 메모리 사용량을 줄이는 목적을 가진 것으로, 구조적 패턴에 속한다.
1프록시 패턴(Proxy pattern)
2프로토타입 패턴(Prototype pattern)
3플라이웨이트 패턴(Flyweight pattern)
4컴포지트 패턴(Composite pattern)
정답 및 해설

동일한 인스턴스를 공유해 대량 객체의 메모리 사용량을 줄이는 구조 패턴은 플라이웨이트 패턴이다.

플라이웨이트는 공유 가능한 내부 상태를 하나의 객체로 두고 개별 상태만 외부에서 주입해 객체 수를 줄인다.

  • 프록시 패턴은 대리 객체로 실제 객체에 대한 접근을 제어하는 구조 패턴이다.
  • 프로토타입 패턴은 기존 객체를 복제해 새 객체를 만드는 생성 패턴이다.
  • 컴포지트 패턴은 부분과 전체를 트리 구조로 구성해 동일하게 다루는 구조 패턴이다.
문제 21
소프트웨어 형상 관리(configuration management) 절차에서 형상 항목 선정이나 베이스라인 기준 선정을 수행하는 단계로 가장 적절한 것은?
1형상 감사(audit)
2형상 통제(control)
3형상 식별(identification)
4형상 상태 보고(status reporting)
정답 및 해설

형상 관리 대상 항목을 선정하고 베이스라인 기준을 정하는 단계는 형상 식별이다.

형상 관리는 대체로 식별 → 통제 → 감사 → 상태 보고 순으로 진행되며, 식별 단계에서 관리 대상에 이름과 번호를 부여한다.

  • 형상 통제는 베이스라인에 대한 변경 요청을 검토·승인해 반영하는 단계이다.
  • 형상 감사는 베이스라인 변경이 요구대로 정확히 이루어졌는지 검증하는 단계이다.
  • 형상 상태 보고는 변경 사항과 처리 상태를 기록해 관련자에게 알리는 단계이다.
문제 22
다음 설명과 관련한 SOLID 설계원칙으로 가장 적절한 것은?
○새로운 기능이 필요할 때 기존 코드를 수정하지 않고 새로운 코드를 추가로 작성하여 확장할 수 있어야 한다.
○변하지 않는 것과 확장될 수 있는 것을 구분하여 변하지 않는 부분을 추상 부모 클래스로 만들고 확장 가능한 것을 자식 클래스로 설계한다.
○수월한 유지보수와 재사용성을 위한 설계원칙이다.
1단일 책임의 원리
2개방 폐쇄의 원리
3인터페이스 분리의 원리
4리스코프 교체의 원리
정답 및 해설

기존 코드를 수정하지 않고 새 코드를 추가해 확장할 수 있게 하라는 원칙은 개방 폐쇄의 원리이다.

확장에는 열려 있고 변경에는 닫혀 있도록, 변하지 않는 부분을 추상 부모 클래스로 두고 변하는 부분을 자식 클래스로 확장한다.

  • 단일 책임의 원리는 클래스가 하나의 책임만 가져야 한다는 원칙이다.
  • 인터페이스 분리의 원리는 클라이언트가 쓰지 않는 메소드에 의존하지 않도록 인터페이스를 나누라는 원칙이다.
  • 리스코프 교체의 원리는 하위 클래스가 상위 클래스를 대체해도 올바르게 동작해야 한다는 원칙이다.
문제 23
다음은 UP(Unified Process) 모델의 개발 단계에 대한 설명이다. 이 설명에 해당하는 개발 단계로 가장 적절한 것은?
○핵심 아키텍처를 확정하고 반복적으로 구현하여 시스템의 프레임워크를 확립한다.
○생성된 첫 번째 프로토타입을 다음 단계의 베이스라인으로 활용하고 프로젝트 수행을 방해하는 중대한 위험 요소들을 찾아 위험을 축소하거나 제거한다.
1도입 단계(inception phase)
2전이 단계(transition phase)
3정련 단계(elaboration phase)
4구축 단계(construction phase)
정답 및 해설

핵심 아키텍처를 확정하고 주요 위험 요소를 찾아 줄이는 단계는 UP의 정련(elaboration) 단계이다.

정련 단계에서는 아키텍처 기준선(베이스라인)을 수립하고 중대한 위험을 제거해 이후 구축의 토대를 마련한다.

  • 도입 단계는 프로젝트 범위와 사업 타당성을 정의하는 단계이다.
  • 구축 단계는 확정된 아키텍처 위에서 나머지 기능을 구현해 제품을 완성하는 단계이다.
  • 전이 단계는 완성된 제품을 사용자 환경에 배포하고 인도하는 단계이다.
문제 24
MTTF는 400시간, MTTR은 100시간인 시스템에서, MTTR은 유지한 채 가용성을 90%로 개선하고자 한다. 이때 필요한 MTTF는?
1600시간
2800시간
3900시간
41,000시간
정답 및 해설

가용성 90%를 얻으려면 MTTF가 900시간이어야 한다.

가용성 공식은 다음과 같다.
A=MTTFMTTF+MTTRA = \dfrac{\mathrm{MTTF}}{\mathrm{MTTF} + \mathrm{MTTR}}

값을 대입한다.
0.9=MTTFMTTF+1000.9 = \dfrac{\mathrm{MTTF}}{\mathrm{MTTF} + 100}
0.1×MTTF=900.1 \times \mathrm{MTTF} = 90
MTTF=900 h\mathrm{MTTF} = 900\,\mathrm{h}

현재 가용성은 400/500 = 80%이므로, MTTR을 유지한 채 MTTF를 늘려야 90%에 도달한다.

문제 25
다음 요구사항 중 기능적 요구사항만을 모두 고른 것으로 가장 적절한 것은?
(가)관리자는 규정 위반 회원의 계정을 정지시킬 수 있다.
(나)시스템은 연중무휴 24시간 운영되어야 한다.
(다)주문 완료 시 고객에게 전자 영수증을 이메일로 발송한다.
(라)데이터베이스 접근은 표준 SQL만 사용해야 한다.
1(가), (나)
2(가), (다)
3(나), (라)
4(다), (라)
정답 및 해설

계정 정지와 전자 영수증 발송은 시스템이 수행해야 할 기능을 기술하므로 기능적 요구사항이다.

기능적 요구사항은 시스템이 무엇을 하는가, 비기능적 요구사항은 성능·가용성·제약 등 어떻게·어떤 조건에서 동작하는가를 다룬다.

  • 연중무휴 24시간 운영은 가용성에 관한 비기능적 요구사항이다.
  • 표준 SQL만 사용해야 한다는 것은 구현 방식에 대한 제약 사항으로 비기능적 요구사항이다.
문제 26
다음 C 함수의 응집도 유형과 이를 개선하기 위한 리팩토링 기법으로 가장 적절한 것은? (단, 코드 실행에 대한 오류는 없는 것으로 함)
int Calc(int type, int n) {
switch (type) {
case 1: return n * 200; // 미성년 공제
case 2: return n * 150; // 경로 공제
···
case 9: return n * 10; // 일반 공제
}
return 0;
}
1기능적 응집 - 메소드 추출
2논리적 응집 - 조건문을 다형성으로 대체
3순차적 응집 - 클래스 추출
4우연적 응집 - 매직 넘버의 상수화
정답 및 해설

type 값에 따라 성격이 비슷한 여러 처리를 한 함수에 몰아넣은 구조는 논리적 응집이며, 이는 조건문을 다형성으로 대체하는 리팩토링으로 개선한다.

공제 유형별로 클래스를 나누고 공통 메소드를 재정의하게 하면 switch 분기가 사라지고 유형 추가 시 기존 코드를 고치지 않아도 된다.

  • 기능적 응집은 하나의 기능에 필요한 요소만 모인 경우로, 여러 공제 계산이 분기로 섞인 이 함수에 해당하지 않는다.
  • 순차적 응집은 한 처리의 출력이 다음 처리의 입력이 되는 관계인데, 이 함수의 분기들은 서로 데이터를 주고받지 않는다.
  • 우연적 응집은 아무 관련 없는 요소가 묶인 경우인데, 이 함수의 분기들은 모두 공제 계산이라는 같은 범주에 속한다.
문제 27
컴포넌트 기반 개발(CBD)에 대한 설명으로 가장 적절하지 않은 것은?
1컴포넌트는 독립적으로 배포 가능한 소프트웨어 단위이다.
2컴포넌트는 명세된 인터페이스를 통해 기능을 제공한다.
3컴포넌트를 재사용하려면 그 내부 소스 코드를 수정해야 한다.
4검증된 컴포넌트의 조립을 통해 개발 기간을 단축할 수 있다.
정답 및 해설

컴포넌트는 내부 소스 코드를 수정하지 않고 공개된 인터페이스만으로 조립해 재사용하는 것이 원칙이다.

CBD는 검증된 컴포넌트를 블랙박스처럼 조합해 생산성과 품질을 높이는 개발 방식이다.

  • 컴포넌트는 독립적으로 배포하고 교체할 수 있는 소프트웨어 단위이다.
  • 컴포넌트는 명세된 인터페이스를 통해서만 기능을 제공하고 내부 구현을 감춘다.
  • 검증된 컴포넌트를 조립하므로 개발 기간을 단축할 수 있다.
문제 28
UML 다이어그램에 대한 다음 설명 중 가장 적절하지 않은 것은?
1순차 다이어그램은 메시지를 이용해 객체 간 상호작용을 나타내며, 링크(link)를 사용해 객체 간의 관계를 표현한다.
2활동 다이어그램은 업무의 흐름에서 동작과 같은 행위가 수행되는 동안의 활동을 다이어그램으로 나타낸다.
3상태 다이어그램은 이벤트 발생이나 시간 흐름에 따라 바뀌는 객체의 상태 변화를 나타낸다.
4컴포넌트 다이어그램은 구현 관점에서 정적 모델링을 할 때 사용하는 것으로 어떤 실행 모듈이 존재하고 이들이 서로 어떤 연관성이 있는지의 종속 관계를 나타낸다.
정답 및 해설

객체 간 관계를 링크로 표현하는 것은 순차 다이어그램이 아니라 커뮤니케이션 다이어그램의 특징이다.

순차 다이어그램은 생명선과 메시지를 시간 순서에 따라 배치해 상호작용을 나타내며, 객체 간 링크는 그리지 않는다.

  • 활동 다이어그램은 업무 흐름에서 수행되는 활동과 처리 흐름을 나타낸다.
  • 상태 다이어그램은 이벤트나 시간에 따라 바뀌는 객체의 상태 변화를 나타낸다.
  • 컴포넌트 다이어그램은 구현 관점의 정적 모델로 실행 모듈 간 종속 관계를 나타낸다.
문제 29
다음 소프트웨어 개발 프로세스 모델과 설명을 바르게 연결한 것은?
(가)프로토타입 모델
(나)폭포수 모델
(다)스크럼

A.소프트웨어 개발을 순차적인 단계로 나누고, 각 단계를 마친 후 다음 단계로 진행한다.
B.짧은 개발 주기를 반복하며 점진적으로 제품을 개발한다.
C.완전한 소프트웨어를 만들기 전에, 사용자의 요구를 반영한 모형을 먼저 제작한다.

(가) (나) (다) (가) (나) (다)
1A B C
2C A B
3C B A
4B A C
정답 및 해설

프로토타입 모델은 모형 선제작, 폭포수 모델은 순차 단계 진행, 스크럼은 짧은 주기의 반복 개발과 연결된다.

프로토타입 모델은 완성품 전에 사용자 요구를 반영한 견본을 만들어 요구를 확인한다.

  • 폭포수 모델은 각 단계를 마친 뒤에야 다음 단계로 넘어가는 순차형 모델이므로 반복 개발과 연결되지 않는다.
  • 스크럼은 스프린트라는 짧은 주기를 반복하며 점진적으로 제품을 만드는 애자일 방법이므로 순차 단계나 모형 선제작과 연결되지 않는다.
문제 30
다음 클래스 다이어그램에 적용된 설계 개념으로 가장 적절하지 않은 것은?

1상속(inheritance)
2오버라이딩(overriding)
3오버로딩(overloading)
4다형성(polymorphism)
정답 및 해설

다이어그램에 적용되지 않은 개념은 오버로딩(overloading)이다.

오버로딩은 한 클래스 안에서 이름은 같고 매개변수가 다른 메서드를 여러 개 두는 것인데, 각 클래스에는 매개변수 없는 calArea() 하나만 있어 오버로딩이 나타나지 않는다.

  • 상속(inheritance): Triangle·Rectangle·Circle이 일반화 화살표로 Shape를 상속하며 area를 물려받는다.
  • 오버라이딩(overriding): 하위 클래스마다 상위 클래스의 calArea()를 같은 시그니처로 재정의한다.
  • 다형성(polymorphism): Shape 타입으로 calArea()를 호출해도 실제 객체에 따라 도형별 면적 계산이 수행된다.
문제 31
소프트웨어 개발 프로젝트를 수행하는 데 다음과 같은 조건이 적용될 때, 프로젝트 완료에 필요한 최소 소요 기간은?
○추정 소스코드 라인 수 : 200,000 LOC
○개발자 1인당 월 평균 생산성 : 1,200 LOC/MM
○개발자 수 : 5명
○프로젝트 복잡도 계수 : 1.2
128개월
234개월
340개월
446개월
정답 및 해설

복잡도를 반영한 총 노력은 200MM이고 5명이 투입되므로 최소 소요 기간은 40개월이다.

기본 노력을 구한다.
200000÷1200≈166.7 MM200000 \div 1200 \approx 166.7\,\mathrm{MM}

복잡도 계수를 곱한다.
166.7×1.2=200 MM166.7 \times 1.2 = 200\,\mathrm{MM}

개발자 수로 나눈다.
200÷5=40200 \div 5 = 40

복잡도 계수는 노력을 늘리는 방향으로 적용되므로 곱해서 반영한다.

문제 32
요구분석명세서의 품질 검증을 위한 방법으로 가장 적절하지 않은 것은?
1요구사항 구현을 위한 구조 및 알고리즘 명세를 구체적으로 작성하였는지 확인한다.
2기능 요구사항뿐 아니라 성능, 제약사항 등의 비기능 요구사항도 빠짐없이 작성하였는지 확인한다.
3서술된 명세서의 내용이 모호하지 않고 모든 참여자가 명확히 이해할 수 있도록 작성하였는지 확인한다.
4요구사항 간 모순되거나 충돌되는 점이 없도록 작성하였는지 확인한다.
정답 및 해설

구조와 알고리즘의 구체적 명세는 설계 단계의 산출물이므로 요구분석명세서 검증 항목으로 적절하지 않다.

요구분석명세서는 시스템이 무엇을 해야 하는지를 기술하며, 완전성·명확성·일관성 등을 검증한다.

  • 기능과 비기능 요구사항이 빠짐없이 작성되었는지 보는 것은 완전성 검증이다.
  • 모호하지 않고 모두가 명확히 이해할 수 있는지 보는 것은 명확성 검증이다.
  • 요구사항 간 모순·충돌이 없는지 보는 것은 일관성 검증이다.
문제 33
CPM으로 일정계획을 수립한 결과가 다음과 같을 때, 가장 적절하지 않은 것은? (단, 작업은 FS(Finish to Start) 관계임)
작업ABCDEFGH
선행 작업--A, BCCDEF, G
작업별 빠른 시작 시간0047781113
작업별 늦은 시작 시간2047881213
1여유 시간이 가장 많은 작업은 A이다.
2D 작업은 임계 경로에 포함된다.
3E 작업은 임계 경로에 포함되지 않는다.
4G 작업에 필요한 최소 시간은 2이다.
정답 및 해설

G 작업의 소요 시간은 1이므로 최소 시간이 2라는 설명이 틀렸다.

G의 늦은 시작은 12이고 후속 작업 H의 늦은 시작은 13이므로 G의 늦은 종료는 13이다.
13−12=113 - 12 = 1

여유 시간(늦은 시작 − 빠른 시작)은 A 2, E 1, G 1이고 나머지 B·C·D·F·H는 0으로 임계 경로를 이룬다.

  • A의 여유 시간 2가 가장 크므로 여유 시간이 가장 많은 작업은 A이다.
  • D는 여유 시간이 0이어서 임계 경로에 포함된다.
  • E는 여유 시간이 1이어서 임계 경로에 포함되지 않는다.
문제 34
다음 자바 언어로 작성된 소스 코드에서 나타나는 응집도로 가장 적합한 것은? (단, 코드 실행에 대한 오류는 없는 것으로 함)
public class Calculator {
public int add(int num1, int num2) {
return num1 + num2;
}

public int sub(int num1, int num2) {
return num1 - num2;
}

public int mul(int num1, int num2) {
return num1 * num2;
}

public int div(int num1, int num2) {
if(num2 != 0)
return num1 / num2;
}
}
1기능적 응집
2절차적 응집
3논리적 응집
4우연적 응집
정답 및 해설

더하기·빼기·곱하기·나누기처럼 성격이 비슷한 연산을 한 클래스에 모아 둔 구조는 논리적 응집으로 본다.

논리적 응집은 같은 범주에 속하는 처리들을 묶어 두고 필요한 것을 골라 쓰는 형태로, 각 연산끼리는 데이터나 실행 순서로 연결되지 않는다.

  • 기능적 응집은 모든 요소가 하나의 기능 수행에 협력하는 경우로, 서로 독립적인 네 연산이 나열된 이 클래스와 다르다.
  • 절차적 응집은 요소들이 정해진 실행 순서에 따라 묶인 경우인데, 이 연산들은 순서와 무관하게 각각 호출된다.
  • 우연적 응집은 서로 관련 없는 요소가 묶인 경우인데, 이 연산들은 모두 사칙연산이라는 공통 범주를 가진다.
문제 35
결합도에 대한 다음 설명 중 가장 적절하지 않은 것은?
1결합도는 모듈 간의 관계가 얼마나 강하게 연결되어 있는지를 평가하는 기준이다.
2데이터 결합은 배열, 레코드, 구조체 등의 데이터를 매개변수로 사용하는 모듈 사이의 결합을 의미한다.
3제어 결합은 제어 플래그(flag)를 매개변수로 사용하여, 한 모듈이 다른 모듈의 동작을 직접 결정하는 방식을 의미한다.
4공통 결합은 여러 모듈이 공통 변수를 공유하는 방식을 의미한다.
정답 및 해설

배열·레코드·구조체 같은 자료구조를 매개변수로 넘기는 결합은 데이터 결합이 아니라 스탬프 결합이다.

데이터 결합은 필요한 단순 데이터 값만 매개변수로 주고받는 가장 느슨한 결합이다.

  • 결합도는 모듈 간 상호 의존 정도를 평가하는 기준이다.
  • 제어 결합은 제어 플래그를 넘겨 다른 모듈의 처리 흐름을 결정하는 결합이다.
  • 공통 결합은 여러 모듈이 전역 변수 같은 공통 데이터 영역을 공유하는 결합이다.
문제 36
리스코프 교체의 원리에 대한 설명으로 가장 적절하지 않은 것은?
1상위 클래스의 객체가 들어갈 자리에 하위 클래스의 객체를 넣어도 문제없이 작동해야 한다.
2상위 클래스는 추상 클래스와 추상 메소드로 정의해야 한다.
3하위 클래스는 상위 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행해야 한다.
4클라이언트는 자신이 사용하지 않는 메소드와 의존 관계를 맺으면 안 된다.
정답 및 해설

클라이언트가 사용하지 않는 메소드에 의존하면 안 된다는 것은 인터페이스 분리의 원리로, 리스코프 교체의 원리에 대한 설명이 아니다.

리스코프 교체의 원리는 하위 클래스가 상위 클래스를 대체해도 프로그램이 올바르게 동작해야 한다는 원칙이다.

  • 상위 클래스 객체 자리에 하위 클래스 객체를 넣어도 문제없이 작동해야 한다는 것은 이 원리의 정의이다.
  • 상위 클래스를 추상 클래스와 추상 메소드로 정의해 하위 클래스가 이를 구현하게 하는 것은 교체 가능성을 확보하는 설계 방법으로 설명된다.
  • 하위 클래스가 상위 클래스의 책임을 무시하지 않고 확장만 해야 한다는 것은 교체 가능성을 지키기 위한 조건이다.
문제 37
프로그램 언어를 사용하여 변수, 함수, 메소드 등의 이름을 지을 때 사용하는 명명 규칙과 사용 예를 바르게 연결한 것은?
(가)파스칼 케이스(pascal case)
(나)카멜 케이스(camel case)
(다)스네이크 케이스(snake case)

A.StudentName
B.studentName
C.student_name

(가) (나) (다) (가) (나) (다)
1A B C
2A C B
3B A C
4C B A
정답 및 해설

파스칼 케이스는 StudentName, 카멜 케이스는 studentName, 스네이크 케이스는 student_name과 연결된다.

파스칼 케이스는 모든 단어의 첫 글자를 대문자로, 카멜 케이스는 첫 단어는 소문자로 시작하고 이후 단어의 첫 글자만 대문자로 쓴다.

  • 스네이크 케이스는 단어를 밑줄(_)로 연결하므로 대문자 표기 예시와 연결되지 않는다.
  • 카멜 케이스는 첫 글자가 소문자이므로 첫 글자가 대문자인 예시와 연결되지 않는다.
문제 38
프로젝트 제안서 평가 점수에 따른 등급이 다음 표와 같고, 경계값 분석 기법으로 테스트할 때 입력값으로 포함되지 않는 것은?
평가 점수등급
70점 이상 ∼ 100점 이하우수
60점 이상 ∼ 70점 미만보통
0점 이상 ∼ 60점 미만미흡
1-1
250
369
4100
정답 및 해설

50은 어느 구간의 경계에도 해당하지 않는 구간 내부 값이므로 경계값 분석의 입력값에 포함되지 않는다.

경계값 분석은 각 구간의 경계(0, 60, 70, 100)와 그 바로 안팎의 값을 테스트한다.

  • -1은 최솟값 0의 바로 아래 값으로 무효 경계 입력이다.
  • 69는 보통 구간의 상한이자 우수 구간 경계 70의 바로 아래 값이다.
  • 100은 우수 구간의 최댓값 경계이다.
문제 39
코드 검증기준(coverage)에 대한 다음 설명 중 가장 적절하지 않은 것은?
1문장 검증기준(statement coverage)은 원시 코드 내의 모든 문장이 최소한 한 번은 실행되도록 테스트하는 방식이다.
2조건 검증기준(condition coverage)은 조건문이 참(T)일 때와 거짓(F)일때의분기경로를각각한번이상실행하도록 테스트하는 방식이다.
3다중 조건 검증기준(multiple condition coverage)은 두 개 이상의 개별 조건식이 and 또는 or로 연결되었을 때, 단일 조건 검증에서 발생할 수 있는 마스크(mask) 문제를 해결하기 위해 활용하는 기준이다.
4경로 검증기준(path coverage)은 원시 코드의 독립적인 경로가 최소한 한 번은 실행되는 테스트 케이스를 찾아 테스트를 수행하는 방식이다.
정답 및 해설

조건문 전체가 참일 때와 거짓일 때의 분기를 각각 실행하는 것은 조건 검증기준이 아니라 결정(분기) 검증기준이다.

조건 검증기준은 결정문 안의 개별 조건식 각각이 참과 거짓을 최소 한 번씩 갖도록 테스트한다.

  • 문장 검증기준은 모든 문장을 최소 한 번 실행하도록 하는 가장 약한 기준이다.
  • 다중 조건 검증기준은 개별 조건식의 모든 참·거짓 조합을 테스트해 조건이 다른 조건에 가려지는 마스크 문제를 해결한다.
  • 경로 검증기준은 코드의 독립 경로를 최소 한 번 실행하도록 하는 기준이다.
문제 40
다음은 CMMI V3.0의 성숙도 단계별 프로세스 영역을 나타낸 것이다. 성숙도 단계와 프로세스 영역의 활동 중 하나를 가장 적절하게 연결한 것은?
(가)초기 단계
(나)관리 단계
(다)정의 단계
(라)정량적 관리 단계
(마)최적화 단계

A.요구사항 관리
B.프로세스 없음
C.조직 차원의 프로세스 성과 관리
D.근본 원인 분석 및 해결
E.조직 차원의 혁신 활동 전개
F.프로세스/제품 품질 보증
G.통합된 프로젝트 관리
H.협력 업체 관리
I.조직 차원의 교육 훈련

(가) (나) (다) (라) (마)
1A H I C D
2A G H D E
3B A F C E
4B F G C D
정답 및 해설

초기 단계는 프로세스 없음, 관리 단계는 품질 보증, 정의 단계는 통합된 프로젝트 관리, 정량적 관리 단계는 조직 차원의 프로세스 성과 관리, 최적화 단계는 근본 원인 분석과 연결된다.

관리 단계는 프로젝트 단위의 기본 관리, 정의 단계는 조직 표준 프로세스 정립, 정량적 관리 단계는 수치 기반 관리, 최적화 단계는 지속적 개선 활동이 중심이다.

  • 초기 단계에 요구사항 관리를 연결한 조합은 틀렸다. 초기 단계는 정해진 프로세스가 없는 상태이고 요구사항 관리는 관리 단계 활동이다.
  • 정의 단계에 품질 보증을 연결한 조합은 틀렸다. 품질 보증은 관리 단계 활동이다.
경찰간부후보생 소프트웨어공학 기출문제모두CBT · moducbt.com
26년 1회차
총 40문항 · 객관식 · 정답·해설 포함
문제 1
프로젝트 착수 시 고객이 요구사항을 명확하게 정의하지 못하고 있다. 개발 프로세스 모델 중 현재 프로젝트에 적용하기에 가장 적절하지 않은 것은?
1애자일(Agile) 모델
2프로토타이핑(Prototyping) 모델
3V 모델
4나선형(Spiral) 모델
정답 및 해설

V 모델은 요구사항이 초기에 명확히 확정된다는 전제에서 개발 단계와 테스트 단계를 대응시키는 순차형 모델이라 요구가 불명확한 프로젝트에는 맞지 않다.

요구가 모호할 때는 고객 피드백을 반복적으로 받아 요구를 구체화하는 반복·점진형 모델이 적합하다.

  • 애자일 모델은 짧은 반복 주기마다 고객 피드백을 반영해 변화하는 요구에 대응한다.
  • 프로토타이핑 모델은 견본을 먼저 만들어 고객이 직접 확인하게 하여 요구를 구체화한다.
  • 나선형 모델은 반복마다 위험 분석과 고객 평가를 거쳐 불확실한 요구를 점차 확정한다.
문제 2
프로젝트관리산출물중WBS(WorkBreakdown Structure)에 대한 설명으로 가장 적절하지 않은 것은?
1전체 프로젝트 목표를 달성하고 결과물을 산출하기 위하여 수행해야 할 작업을 계층적으로 분할한다.
2전체 목표와 중간의 세부 목표들이 트리(Tree)나 표(Table) 형태로 표현된다.
3전체 프로젝트 수행에 필요한 자원 예측과 프로젝트 일정 수립을 위한 스케줄링의 기초 자료로 활용된다.
4WBS 작성 시 세부 작업 사이의 의존 관계와 임계경로를 파악하고 필요한 소요 자원을 할당한다.
정답 및 해설

작업 간 의존 관계와 임계경로를 파악하는 것은 WBS가 아니라 이를 바탕으로 작성하는 네트워크 일정표(CPM·PERT)의 역할이다.

WBS는 프로젝트 범위를 작업 단위로 계층 분할한 구조로, 작업 순서나 일정 관계는 담지 않는다.

  • 목표 달성에 필요한 작업을 계층적으로 분할한다는 설명은 WBS의 정의이다.
  • 전체 목표와 세부 목표를 트리나 표 형태로 표현한다는 설명은 WBS의 표현 방식이다.
  • 자원 예측과 일정 수립의 기초 자료로 쓰인다는 설명은 WBS의 활용 목적이다.
문제 3
고객관리시스템 업무인 회원관리 기능을 개발하기 위해 비용을 산정하고자 한다. 제시된 단위 업무 설명과 식별된 데이터 또는 트랜잭션의 수는 아래 표와 같다. 간이법을 통해 기능점수를 산출한다고 가정할 때, 총 기능점수는? (단, 평균 복잡도 가중치는 EI: 4.0, EO: 5.2, EQ: 3.9, ILF: 7.5, EIF: 5.4 이며, 제시된 단위 업무와 관련된 추가 세부 기능이나 다른 가정사항 및 제약조건은 없는 것으로 전제함)
단위 업무 설명식별된 데이터 / 트랜잭션 수
고객관리시스템에는 회원관리 정보를 직접 저장하고 관리한다.2
회원 고객의 결제 계좌 데이터는 이미 구축되어 운영중인 결제시스템으로부터 제공받는다.1
신규고객은 ‘회원 가입하기’를 통해 회원 등록을 한다.1
회원은 ‘회원 정보 조회’를 통해 자신의 정보를 조회한다.1
회원은 ‘회원 정보 수정’을 통해 자신의 정보를 수정한다.1
회원은 ‘회원 탈퇴’를 통해 비회원이 될 수 있다.1
고객관리팀의 현업담당자는 ‘신규 회원 가입 통계 보고서 생성’을 통해 실시간 신규 회원 현황을 집계한다.2
139.2
244.6
345.4
446.7
정답 및 해설

표의 업무를 기능 유형별로 분류해 평균 가중치를 곱하면 총 기능점수는 46.7이다.

직접 저장·관리하는 회원 정보는 ILF 2개, 외부 결제시스템에서 받는 계좌 데이터는 EIF 1개, 가입·수정·탈퇴는 데이터를 변경하는 EI 3개, 단순 조회는 EQ 1개, 집계 결과를 만드는 통계 보고서는 EO 2개이다.

ILF:2×7.5=15\mathrm{ILF}: 2 \times 7.5 = 15
EIF:1×5.4=5.4\mathrm{EIF}: 1 \times 5.4 = 5.4
EI:3×4.0=12\mathrm{EI}: 3 \times 4.0 = 12
EQ:1×3.9=3.9\mathrm{EQ}: 1 \times 3.9 = 3.9
EO:2×5.2=10.4\mathrm{EO}: 2 \times 5.2 = 10.4

15+5.4+12+3.9+10.4=46.715 + 5.4 + 12 + 3.9 + 10.4 = 46.7

문제 4
다음 요구사항을 유스케이스 다이어그램으로 표현했을 때, 두 유스케이스 간의 관계로 가장 적절한 것은?
과금시스템은 요금 결제 시 미납 내역이 있는지를 확인하고 미납 내역이 있는 경우 결제금액에 포함하여 결제를 수행한다.
1<<포함>> 요금결제 미납내역조회
2<<확장>> 미납내역조회 요금결제
3<<포함>> 미납내역조회 요금결제
4미납내역조회 <<확장>> 요금결제
문제 5
다음에 제시된 GetScore() 메소드에서는 value 변수를 매개변수로 사용한다. 소프트웨어 설계에서 발생하는 결합 유형으로 가장 적절한 것은? (단, 코드 실행에 대한 오류는 없는 것으로 함)
int GetScore(int value, void* buf, int count) {
...
if ( value == 0 )
/* read Buffer */
else
/* write Buffer */
...
}
1외부(external) 결합
2제어(control) 결합
3데이터(data) 결합
4스탬프(stamp) 결합
정답 및 해설

매개변수 value 값에 따라 호출된 모듈이 버퍼 읽기와 쓰기 중 무엇을 할지 결정되므로 제어 결합이다.

제어 결합은 한 모듈이 제어 플래그를 넘겨 다른 모듈의 내부 처리 흐름을 지시하는 결합이다.

  • 외부 결합은 외부에서 정의된 데이터 형식이나 장치 인터페이스를 여러 모듈이 공유할 때 생긴다.
  • 데이터 결합은 처리에 필요한 단순 데이터만 주고받을 뿐 상대 모듈의 동작 흐름을 바꾸지 않는다.
  • 스탬프 결합은 구조체·레코드 같은 자료구조 전체를 매개변수로 넘길 때 생긴다.
문제 6
다음 중 객체지향 설계에서 응집력(Cohesion)의 강도가 상대적으로 가장 높은 것은?
1모듈 내부 요소들이 외부 출력 처리 루틴들로 묶여서 구성되어 있다.
2모듈 내부 요소들이 모듈 내에서 연산이 수행되는 실행 순서에 따라 정의되어 묶여 있다.
3모듈 내부 요소들이 하나의 기능에 꼭 필요한 요소들로만 구성되어 있다.
4모듈 내부 요소들이 이전 문장의 실행 결과가 다음 문장의 입력으로 사용되는 관계로 묶여 있다.
정답 및 해설

모듈 내부 요소가 하나의 기능에 꼭 필요한 것들로만 구성된 기능적 응집이 가장 강한 응집이다.

응집도는 기능적 > 순차적 > 교환적 > 절차적 > 시간적 > 논리적 > 우연적 순으로 약해진다.

  • 이전 문장의 결과가 다음 문장의 입력이 되는 관계는 순차적 응집으로 기능적 응집보다 약하다.
  • 실행 순서에 따라 요소를 묶은 것은 절차적 응집이다.
  • 외부 출력 처리처럼 비슷한 성격의 처리 루틴을 묶은 것은 논리적 응집으로 강도가 낮다.
문제 7
본사의 EnterpriseEisService 클래스가 지사의 모듈 변경에 쉽게 영향을 받지 않도록 BranchEisServiceChartAPI 연계용 인터페이스클래스를정의하였다.설계변경에반영된 SOLID 원칙으로 가장 적절한 것은?
EnterpriseEisService
*getMergeData()


BranchEisServiceChartAPI
*getMergeData()

변경 후
EnterpriseEisService
*getMergeData()
BranchEisServiceChartAPI
*getMergeData()


<<interface>>
IntEnterpriseEisService
*getMergeData()
1개방 폐쇄의 원리
2인터페이스 분리의 원리
3의존 관계 역전의 원리
4리스코프 교체의 원리
정답 및 해설

본사 클래스가 지사 구현 클래스에 직접 의존하던 구조를 인터페이스(추상화)에 의존하도록 바꾼 것이므로 의존 관계 역전의 원리이다.

상위 모듈과 하위 모듈이 모두 추상화에 의존하게 하면 하위 구현이 바뀌어도 상위 모듈은 영향을 덜 받는다.

  • 개방 폐쇄의 원리는 기존 코드를 수정하지 않고 확장할 수 있게 하라는 원칙으로 의존 방향 전환이 핵심이 아니다.
  • 인터페이스 분리의 원리는 클라이언트가 쓰지 않는 메소드에 의존하지 않도록 큰 인터페이스를 쪼개라는 원칙이다.
  • 리스코프 교체의 원리는 하위 타입이 상위 타입을 대체해도 올바르게 동작해야 한다는 원칙이다.
문제 8
다음에서 설명하고 있는 소프트웨어 아키텍처 스타일로 가장 적절한 것은?
○컴포넌트들을 사용자 인터페이스로부터 비즈니스 로직을 분리하여 뷰를 모델과 독립적으로 변경하고 제어할 수 있음
○기능이나 특성에 따라 모듈을 보다 명확히 분리하여 유지보수성, 프로그램 확장성과 유연성을 높임
○대표적 사례로는 GUI 모델이 있음
1MVC
2파이프 필터
3P2P(Peer-to-Peer)
4레파지토리(데이터 중심)
정답 및 해설

사용자 인터페이스와 비즈니스 로직을 분리해 뷰를 모델과 독립적으로 변경할 수 있게 하는 구조는 MVC 스타일이다.

MVC는 모델·뷰·컨트롤러로 역할을 나눠 유지보수성과 확장성을 높이며 GUI 애플리케이션에 널리 쓰인다.

  • 파이프 필터는 데이터가 필터를 차례로 통과하며 변환되는 스트림 처리 구조이다.
  • P2P는 각 노드가 클라이언트와 서버 역할을 함께 수행하는 분산 구조이다.
  • 레파지토리 구조는 공유 데이터 저장소를 중심으로 컴포넌트가 데이터를 주고받는 구조이다.
문제 9
다음의 상황을 고려하여 GoF 패턴을 선정하고자 할 때, 가장 적절한 것은?
○문제 및 배경 : 서브시스템에 다수의 인터페이스가 존재하기 때문에 모든 인터페이스와 상호작용하기 위한 구현을 개별적으로 수행해야 하는 상황임
○솔루션 : 서브 시스템에 있는 다수의 인터페이스 집합에 대해 하나의 통일된 인터페이스를 제공할 수 있는 포괄된 개념의 인터페이스를 정의하고자 함
○결과 및 기대효과 : 클라이언트가 다루어야 할 객체 수가 감소 되면서도 서브시스템 구성 요소를 보호할 수 있고, 서브시스템과 클라이언트 코드 간 결합도가 감소될 것을 기대할 수 있음
1Facade
2Bridge
3Adapter
4Proxy
정답 및 해설

서브시스템의 여러 인터페이스 앞에 하나의 통일된 인터페이스를 두어 클라이언트와의 결합도를 낮추는 패턴은 Facade이다.

클라이언트는 퍼사드 객체만 다루므로 다룰 객체 수가 줄고 서브시스템 내부 구성이 감춰진다.

  • Bridge는 추상화와 구현을 분리해 둘을 독립적으로 확장할 수 있게 하는 패턴이다.
  • Adapter는 호환되지 않는 기존 인터페이스를 클라이언트가 기대하는 인터페이스로 변환한다.
  • Proxy는 대리 객체를 두어 실제 객체에 대한 접근을 제어하거나 지연시킨다.
문제 10
이것은 UI 설계단계에서 페이지에 대한 개략적인 레이아웃이나 UI 요소 등에 대한 뼈대를 설계하는 방법으로, 각 페이지의 영역 구분 콘텐츠, 텍스트 배치 등을 화면 단위로 설계하는 일종의 웹페이지나 애플리케이션 레이아웃 스케치이며, 디자인 세부 사항보다는 구조와 기능에 중점을 둔다. 이것이 의미하는 UI 설계 과정의 주요 개념으로 가장 적절한 것은?
1프로토타입
2와이어프레임
3스토리보드
4여정 지도
정답 및 해설

페이지의 영역 구분과 UI 요소 배치를 화면 단위 뼈대로 스케치하는 것은 와이어프레임이다.

와이어프레임은 색상·디자인보다 구조와 기능 배치에 집중한 저충실도 설계 산출물이다.

  • 프로토타입은 실제처럼 동작을 시연·검증할 수 있게 만든 견본이다.
  • 스토리보드는 화면 설계에 기능 설명·흐름·데이터 정보 등을 함께 정리한 상세 설계 문서이다.
  • 여정 지도는 사용자가 서비스를 이용하며 겪는 단계별 경험과 감정을 시각화한 것이다.
문제 11
통계적 방법을 사용하여 가능한 변수 조합을 선택함으로써, 테스트 케이스 수를 줄이면서도 대표적인 조합을 고르게 포함하고, 높은 커버리지를 유지할 수 있는 블랙박스 테스트 기법으로 가장 적절한 것은?
1직교(orthogonal) 배열
2페어와이즈(pairwise)
3원인-결과 그래프
4n-way
정답 및 해설

통계적 방법으로 변수 조합을 골라 테스트 케이스 수를 줄이면서도 조합을 고르게 포함하는 기법은 직교 배열 테스트이다.

직교 배열은 실험계획법의 균형 잡힌 배열표를 이용해 각 값의 조합이 균등하게 나타나도록 케이스를 선정한다.

  • 페어와이즈는 모든 두 변수 값의 쌍이 최소 한 번씩 나오도록 조합하는 기법이다.
  • 원인-결과 그래프는 입력 조건과 출력 결과의 논리 관계를 그래프로 분석해 케이스를 도출한다.
  • n-way는 임의의 n개 변수 값 조합이 모두 한 번 이상 나오도록 페어와이즈를 일반화한 조합 테스트 방식이다.
문제 12
통합테스트와 관련된 주요 용어에 대한 설명으로 가장 적절하지 않은 것은?
1연쇄식 통합에서 연쇄(Thread)란 특정 기능을 수행하는 모듈의 최소 단위이다.
2테스트 드라이버(Driver)는 시험 대상 모듈을 호출하는 역할을 하는 간이 소프트웨어이다.
3테스트 스텁(Stub)은 시험 대상 모듈에 의해 호출되는 모듈의 기능을 대신하는 간이 소프트웨어이다.
4테스트 오라클(Oracle)은 시스템을 테스트하기 위하여 작성된 별도의 프로그램으로 테스트가 끝난 후 삭제된다.
정답 및 해설

테스트 오라클은 테스트 결과가 올바른지 판단하기 위해 기대값을 제공하는 기준·메커니즘이며, 테스트 후 삭제되는 별도 프로그램이 아니다.

테스트가 끝난 뒤 제거되는 임시 프로그램은 통합 테스트에서 쓰는 드라이버와 스텁이다.

  • 연쇄식 통합에서 연쇄는 특정 기능을 수행하는 모듈의 최소 단위를 말한다.
  • 드라이버는 하위 모듈을 시험할 때 그 모듈을 호출하는 상위 역할의 간이 프로그램이다.
  • 스텁은 시험 대상 모듈이 호출하는 하위 모듈의 기능을 대신하는 간이 프로그램이다.
문제 13
다음에 제시된 모듈 구조의 설계 복잡도 및 통합 복잡도에 대한 설명으로 가장 적절한 것은? (단, M은 모듈, 다이아몬드()는 이진 조건 분기, 화살표()는 호출을 의미함)
M4
M5
M6
M7
M1
M2
M3
M0
1M0 모듈의 설계 복잡도는 13이다.
2M2 모듈의 설계 복잡도는 2이다.
3M3 모듈의 설계 복잡도는 3이다.
4M0 모듈의 통합 복잡도는 4이다.
문제 14
다음은 소프트웨어 테스트를 위해 작성된 테스트 케이스와 원인-결과 그래프이다. (가)~(다)의 제한 조건 기호로 가장 적절한 것은?
테스트 케이스
○첫 번째 열이 A 또는 B이고 두 번째 열이 %이면 ‘출입 허가’를 출력한다.
○첫 번째 열이 A 또는 B가 아니면 ‘출입 불가’를 출력한다.
○첫 번째 열이 A 또는 B이고 두 번째 열이 %가 아니면 ‘코드 오류’를 출력한다.
○A는 남직원, B는 여직원을 의미한다.
원인-결과 그래프

(가) (나) (다)
1E R R
2E M R
3I R M
4I M M
정답 및 해설

(가)는 E(Exclusive), (나)와 (다)는 모두 R(Requires)이므로 조합은 E R R이다.

남직원과 여직원은 동시에 참일 수 없는 원인이므로 둘을 잇는 (가)는 배타 제약이다. 원인 %에서 남직원·여직원으로 향하는 화살표 (나)·(다)는 '%가 성립하려면 해당 원인이 먼저 성립해야 한다'는 요구 제약이다.

  • E M R: (나)는 원인 사이의 화살표이므로 결과 사이에 쓰는 M(Masks)이 아니라 R이다.
  • I R M: (가)의 I(Inclusive)는 적어도 하나는 참이어야 한다는 제약인데, 직원이 아닌 경우('출입 불가')가 있으므로 맞지 않고, (다)도 M이 아니라 R이다.
  • I M M: (가)는 배타 제약 E이고, (나)·(다)는 원인 간 요구 제약 R이므로 모두 맞지 않는다.
문제 15
다음은 스크럼(scrum) 방식의 진행 절차에 대한 설명이다. 진행 절차의 순서로 가장 적절하게 나열된 것은?
(가)스프린트 구현 목록을 작성하고 스프린트 개발 시간을 추정한다.
(나)일일 스크럼 회의를 진행하고 스프린트 현황판 변경 및 소멸 차트를 표시한다.
(다)실행 가능한 스프린트 결과물을 완성한다.
(라)요구사항 목록에 우선순위를 매겨 제품 기능 목록을 작성한다.
(마)스프린트 검토 회의를 수행하고 차기 스프린트 수행 계획을 수립한다.
1(라) → (나) → (가) → (다) → (마)
2(라) → (가) → (나) → (마) → (다)
3(라) → (가) → (나) → (다) → (마)
4(라) → (나) → (가) → (마) → (다)
정답 및 해설

스크럼은 제품 백로그 작성 → 스프린트 계획 → 일일 스크럼 → 결과물 완성 → 스프린트 검토 순으로 진행된다.

요구사항에 우선순위를 매긴 제품 기능 목록에서 출발해, 스프린트 구현 목록과 시간을 추정한 뒤 매일 회의와 소멸 차트로 진행을 관리한다.

스프린트가 끝나면 실행 가능한 결과물을 완성하고, 검토 회의를 거쳐 차기 스프린트 계획으로 이어진다.

문제 16
다음 프로그램 (가)의 순환 복잡도와 제어흐름 그래프 (나)의 순환 복잡도로 가장 적절한 것은? (단, 코드 실행에 대한 오류는 없는 것으로 함)
(가)(나)
bool func(int a, int b, int c) {
bool flag = true;
int i;
int sum;
if (a < b)
flag = false;
if (a < c)
flag= false;
if (a > 0)
i = 1;
else {
i = 0;
a = -a;
}
sum = 0;
while (i < a) {
sum += 1;
i++;
}
print(sum);
return flag;
}

(가) (나) (가) (나)
14 4
25 5
34 5
45 4
정답 및 해설

프로그램 (가)의 순환 복잡도는 5, 제어흐름 그래프 (나)의 순환 복잡도는 4이다.

(가)에는 판단문이 if, if, if-else, while 네 개 있으므로 판단 수에 1을 더해 5가 된다.

(나)는 노드 9개, 간선 11개이다.
V(G)=E−N+2=11−9+2=4V(G)=E-N+2=11-9+2=4
분기하는 노드가 3개이므로 3+1로 계산해도 같다.

  • (가)와 (나)를 모두 4로 본 조합: (가)의 while 반복도 판단문이므로 (가)는 5이다.
  • (가)와 (나)를 모두 5로 본 조합: (나)는 간선·노드 수로 계산하면 4이다.
  • (가) 4, (나) 5인 조합: 두 값이 서로 뒤바뀌었다.
문제 17
다음은 소프트웨어 아키텍처 평가 방법에 대한 설명이다. 각 설명이 의미하는 평가 방법으로 가장 적절한 것은?
(가)후보 아키텍처가 품질 속성을 만족하는지 판단하고 상호 간에 어떻게 충돌하고 작용하는지를 분석하여 아키텍처 설계에 대한 타협점을 찾는 평가 방법이다.
(나)시스템 아키텍처 품질에서 얻을 수 있는 이득에 대해 투자 대비 효과를 경제적인 측면에서 평가하여 수익이 최대가 되는 소프트웨어 아키텍처를 선정하는 평가 방법이다.

(가) (나)
1ATAM CBAM
2ATAM SAAM
3SAAM CBAM
4SAAM ATAM
정답 및 해설

품질 속성 간 충돌과 상충점을 분석하는 방법은 ATAM, 투자 대비 효과를 경제적 측면에서 평가하는 방법은 CBAM이다.

ATAM은 품질 속성 간의 트레이드오프를 찾아 설계 타협점을 도출하며, CBAM은 ATAM 결과에 비용·편익 분석을 더해 수익이 최대인 아키텍처를 고른다.

  • SAAM은 변경 용이성 등을 시나리오 중심으로 평가하는 초기 방법으로 품질 속성 간 상충 분석이나 경제성 평가를 핵심으로 하지 않는다.
문제 18
다음은 클래스 다이어그램을 자바 코드로 표현한 것이다. (가)∼(라)에 가장 적절한 것은? (단, 코드 실행에 대한 오류는 없는 것으로 함)
클래스 다이어그램소스 코드
public class Member
{
(가) String id;
(나) String pwd;
(다) int age;
(가) void login() { }
}
publicclassProfessor (라) {}
publicclassStudent (라) {}

(가) (나) (다) (라)
1public protected private extends Member
2public private protected extends Member
3public protected private implements Member
4public private protected implements Member
정답 및 해설

(가)는 public, (나)는 private, (다)는 protected, (라)는 extends Member이다.

UML 가시성 표기에서 +는 public, -는 private, #는 protected이다. id와 login()은 +, pwd는 -, age는 #이고, Professor·Student에서 Member로 향하는 빈 삼각형 화살표는 클래스 상속(일반화)이므로 자바에서 extends로 표현한다.

  • public protected private extends Member: pwd의 -와 age의 # 표기를 서로 바꿨다.
  • public protected private implements Member: 가시성이 뒤바뀌었고, implements는 인터페이스 실현에 쓰므로 일반 클래스 Member의 상속에는 맞지 않다.
  • public private protected implements Member: 가시성은 맞지만 Member는 일반 클래스이므로 implements가 아니라 extends로 상속한다.
문제 19
SQuaRE(Software Quality and Requirement Evaluation)라 불리는 ISO/IEC 25000의 각 부문에 대한 설명으로 가장 적절한 것은?
12501n부문-SQuaRE에 대한 개요 및 전체에 대한 계획과 관리
22502n부문-소프트웨어 품질 모델과 품질 사용에 대한 안내
32503n부문-내/외부 메트릭스, 사용 중 품질 메트릭스 및 평가 모듈의 문서화
42504n부문-개발자, 구매자, 평가자 관점의 품질 평가 프로세스
정답 및 해설

ISO/IEC 25000(SQuaRE)에서 2504n 부문은 개발자·구매자·평가자 관점의 품질 평가 프로세스를 다룬다.

SQuaRE는 품질 관리(2500n), 품질 모델(2501n), 품질 측정(2502n), 품질 요구(2503n), 품질 평가(2504n) 부문으로 구성된다.

  • SQuaRE 개요와 전체 계획·관리는 2500n 부문의 내용이다.
  • 품질 모델과 사용 품질에 대한 안내는 2501n 부문의 내용이다.
  • 내·외부 메트릭과 사용 중 품질 메트릭은 2502n 측정 부문의 내용이다.
문제 20
다음 설명에 해당하는 디자인 패턴으로 가장 적절한 것은?
○애플리케이션이 대량의 객체를 사용해야 하거나 객체 수가 너무 많아져 저장 비용이 높아질 경우에 유용하며, 애플리케이션이 객체 식별자에 비중을 두지 않는 경우에 사용한다.
○인스턴스를 필요한 만큼 생성하는 대신 동일한 인스턴스를 공유하여 메모리 사용량을 줄이는 목적을 가진 것으로, 구조적 패턴에 속한다.
1프록시 패턴(Proxy pattern)
2프로토타입 패턴(Prototype pattern)
3플라이웨이트 패턴(Flyweight pattern)
4컴포지트 패턴(Composite pattern)
정답 및 해설

동일한 인스턴스를 공유해 대량 객체의 메모리 사용량을 줄이는 구조 패턴은 플라이웨이트 패턴이다.

플라이웨이트는 공유 가능한 내부 상태를 하나의 객체로 두고 개별 상태만 외부에서 주입해 객체 수를 줄인다.

  • 프록시 패턴은 대리 객체로 실제 객체에 대한 접근을 제어하는 구조 패턴이다.
  • 프로토타입 패턴은 기존 객체를 복제해 새 객체를 만드는 생성 패턴이다.
  • 컴포지트 패턴은 부분과 전체를 트리 구조로 구성해 동일하게 다루는 구조 패턴이다.
문제 21
소프트웨어 형상 관리(configuration management) 절차에서 형상 항목 선정이나 베이스라인 기준 선정을 수행하는 단계로 가장 적절한 것은?
1형상 감사(audit)
2형상 통제(control)
3형상 식별(identification)
4형상 상태 보고(status reporting)
정답 및 해설

형상 관리 대상 항목을 선정하고 베이스라인 기준을 정하는 단계는 형상 식별이다.

형상 관리는 대체로 식별 → 통제 → 감사 → 상태 보고 순으로 진행되며, 식별 단계에서 관리 대상에 이름과 번호를 부여한다.

  • 형상 통제는 베이스라인에 대한 변경 요청을 검토·승인해 반영하는 단계이다.
  • 형상 감사는 베이스라인 변경이 요구대로 정확히 이루어졌는지 검증하는 단계이다.
  • 형상 상태 보고는 변경 사항과 처리 상태를 기록해 관련자에게 알리는 단계이다.
문제 22
다음 설명과 관련한 SOLID 설계원칙으로 가장 적절한 것은?
○새로운 기능이 필요할 때 기존 코드를 수정하지 않고 새로운 코드를 추가로 작성하여 확장할 수 있어야 한다.
○변하지 않는 것과 확장될 수 있는 것을 구분하여 변하지 않는 부분을 추상 부모 클래스로 만들고 확장 가능한 것을 자식 클래스로 설계한다.
○수월한 유지보수와 재사용성을 위한 설계원칙이다.
1단일 책임의 원리
2개방 폐쇄의 원리
3인터페이스 분리의 원리
4리스코프 교체의 원리
정답 및 해설

기존 코드를 수정하지 않고 새 코드를 추가해 확장할 수 있게 하라는 원칙은 개방 폐쇄의 원리이다.

확장에는 열려 있고 변경에는 닫혀 있도록, 변하지 않는 부분을 추상 부모 클래스로 두고 변하는 부분을 자식 클래스로 확장한다.

  • 단일 책임의 원리는 클래스가 하나의 책임만 가져야 한다는 원칙이다.
  • 인터페이스 분리의 원리는 클라이언트가 쓰지 않는 메소드에 의존하지 않도록 인터페이스를 나누라는 원칙이다.
  • 리스코프 교체의 원리는 하위 클래스가 상위 클래스를 대체해도 올바르게 동작해야 한다는 원칙이다.
문제 23
다음은 UP(Unified Process) 모델의 개발 단계에 대한 설명이다. 이 설명에 해당하는 개발 단계로 가장 적절한 것은?
○핵심 아키텍처를 확정하고 반복적으로 구현하여 시스템의 프레임워크를 확립한다.
○생성된 첫 번째 프로토타입을 다음 단계의 베이스라인으로 활용하고 프로젝트 수행을 방해하는 중대한 위험 요소들을 찾아 위험을 축소하거나 제거한다.
1도입 단계(inception phase)
2전이 단계(transition phase)
3정련 단계(elaboration phase)
4구축 단계(construction phase)
정답 및 해설

핵심 아키텍처를 확정하고 주요 위험 요소를 찾아 줄이는 단계는 UP의 정련(elaboration) 단계이다.

정련 단계에서는 아키텍처 기준선(베이스라인)을 수립하고 중대한 위험을 제거해 이후 구축의 토대를 마련한다.

  • 도입 단계는 프로젝트 범위와 사업 타당성을 정의하는 단계이다.
  • 구축 단계는 확정된 아키텍처 위에서 나머지 기능을 구현해 제품을 완성하는 단계이다.
  • 전이 단계는 완성된 제품을 사용자 환경에 배포하고 인도하는 단계이다.
문제 24
MTTF는 400시간, MTTR은 100시간인 시스템에서, MTTR은 유지한 채 가용성을 90%로 개선하고자 한다. 이때 필요한 MTTF는?
1600시간
2800시간
3900시간
41,000시간
정답 및 해설

가용성 90%를 얻으려면 MTTF가 900시간이어야 한다.

가용성 공식은 다음과 같다.
A=MTTFMTTF+MTTRA = \dfrac{\mathrm{MTTF}}{\mathrm{MTTF} + \mathrm{MTTR}}

값을 대입한다.
0.9=MTTFMTTF+1000.9 = \dfrac{\mathrm{MTTF}}{\mathrm{MTTF} + 100}
0.1×MTTF=900.1 \times \mathrm{MTTF} = 90
MTTF=900 h\mathrm{MTTF} = 900\,\mathrm{h}

현재 가용성은 400/500 = 80%이므로, MTTR을 유지한 채 MTTF를 늘려야 90%에 도달한다.

문제 25
다음 요구사항 중 기능적 요구사항만을 모두 고른 것으로 가장 적절한 것은?
(가)관리자는 규정 위반 회원의 계정을 정지시킬 수 있다.
(나)시스템은 연중무휴 24시간 운영되어야 한다.
(다)주문 완료 시 고객에게 전자 영수증을 이메일로 발송한다.
(라)데이터베이스 접근은 표준 SQL만 사용해야 한다.
1(가), (나)
2(가), (다)
3(나), (라)
4(다), (라)
정답 및 해설

계정 정지와 전자 영수증 발송은 시스템이 수행해야 할 기능을 기술하므로 기능적 요구사항이다.

기능적 요구사항은 시스템이 무엇을 하는가, 비기능적 요구사항은 성능·가용성·제약 등 어떻게·어떤 조건에서 동작하는가를 다룬다.

  • 연중무휴 24시간 운영은 가용성에 관한 비기능적 요구사항이다.
  • 표준 SQL만 사용해야 한다는 것은 구현 방식에 대한 제약 사항으로 비기능적 요구사항이다.
문제 26
다음 C 함수의 응집도 유형과 이를 개선하기 위한 리팩토링 기법으로 가장 적절한 것은? (단, 코드 실행에 대한 오류는 없는 것으로 함)
int Calc(int type, int n) {
switch (type) {
case 1: return n * 200; // 미성년 공제
case 2: return n * 150; // 경로 공제
···
case 9: return n * 10; // 일반 공제
}
return 0;
}
1기능적 응집 - 메소드 추출
2논리적 응집 - 조건문을 다형성으로 대체
3순차적 응집 - 클래스 추출
4우연적 응집 - 매직 넘버의 상수화
정답 및 해설

type 값에 따라 성격이 비슷한 여러 처리를 한 함수에 몰아넣은 구조는 논리적 응집이며, 이는 조건문을 다형성으로 대체하는 리팩토링으로 개선한다.

공제 유형별로 클래스를 나누고 공통 메소드를 재정의하게 하면 switch 분기가 사라지고 유형 추가 시 기존 코드를 고치지 않아도 된다.

  • 기능적 응집은 하나의 기능에 필요한 요소만 모인 경우로, 여러 공제 계산이 분기로 섞인 이 함수에 해당하지 않는다.
  • 순차적 응집은 한 처리의 출력이 다음 처리의 입력이 되는 관계인데, 이 함수의 분기들은 서로 데이터를 주고받지 않는다.
  • 우연적 응집은 아무 관련 없는 요소가 묶인 경우인데, 이 함수의 분기들은 모두 공제 계산이라는 같은 범주에 속한다.
문제 27
컴포넌트 기반 개발(CBD)에 대한 설명으로 가장 적절하지 않은 것은?
1컴포넌트는 독립적으로 배포 가능한 소프트웨어 단위이다.
2컴포넌트는 명세된 인터페이스를 통해 기능을 제공한다.
3컴포넌트를 재사용하려면 그 내부 소스 코드를 수정해야 한다.
4검증된 컴포넌트의 조립을 통해 개발 기간을 단축할 수 있다.
정답 및 해설

컴포넌트는 내부 소스 코드를 수정하지 않고 공개된 인터페이스만으로 조립해 재사용하는 것이 원칙이다.

CBD는 검증된 컴포넌트를 블랙박스처럼 조합해 생산성과 품질을 높이는 개발 방식이다.

  • 컴포넌트는 독립적으로 배포하고 교체할 수 있는 소프트웨어 단위이다.
  • 컴포넌트는 명세된 인터페이스를 통해서만 기능을 제공하고 내부 구현을 감춘다.
  • 검증된 컴포넌트를 조립하므로 개발 기간을 단축할 수 있다.
문제 28
UML 다이어그램에 대한 다음 설명 중 가장 적절하지 않은 것은?
1순차 다이어그램은 메시지를 이용해 객체 간 상호작용을 나타내며, 링크(link)를 사용해 객체 간의 관계를 표현한다.
2활동 다이어그램은 업무의 흐름에서 동작과 같은 행위가 수행되는 동안의 활동을 다이어그램으로 나타낸다.
3상태 다이어그램은 이벤트 발생이나 시간 흐름에 따라 바뀌는 객체의 상태 변화를 나타낸다.
4컴포넌트 다이어그램은 구현 관점에서 정적 모델링을 할 때 사용하는 것으로 어떤 실행 모듈이 존재하고 이들이 서로 어떤 연관성이 있는지의 종속 관계를 나타낸다.
정답 및 해설

객체 간 관계를 링크로 표현하는 것은 순차 다이어그램이 아니라 커뮤니케이션 다이어그램의 특징이다.

순차 다이어그램은 생명선과 메시지를 시간 순서에 따라 배치해 상호작용을 나타내며, 객체 간 링크는 그리지 않는다.

  • 활동 다이어그램은 업무 흐름에서 수행되는 활동과 처리 흐름을 나타낸다.
  • 상태 다이어그램은 이벤트나 시간에 따라 바뀌는 객체의 상태 변화를 나타낸다.
  • 컴포넌트 다이어그램은 구현 관점의 정적 모델로 실행 모듈 간 종속 관계를 나타낸다.
문제 29
다음 소프트웨어 개발 프로세스 모델과 설명을 바르게 연결한 것은?
(가)프로토타입 모델
(나)폭포수 모델
(다)스크럼

A.소프트웨어 개발을 순차적인 단계로 나누고, 각 단계를 마친 후 다음 단계로 진행한다.
B.짧은 개발 주기를 반복하며 점진적으로 제품을 개발한다.
C.완전한 소프트웨어를 만들기 전에, 사용자의 요구를 반영한 모형을 먼저 제작한다.

(가) (나) (다) (가) (나) (다)
1A B C
2C A B
3C B A
4B A C
정답 및 해설

프로토타입 모델은 모형 선제작, 폭포수 모델은 순차 단계 진행, 스크럼은 짧은 주기의 반복 개발과 연결된다.

프로토타입 모델은 완성품 전에 사용자 요구를 반영한 견본을 만들어 요구를 확인한다.

  • 폭포수 모델은 각 단계를 마친 뒤에야 다음 단계로 넘어가는 순차형 모델이므로 반복 개발과 연결되지 않는다.
  • 스크럼은 스프린트라는 짧은 주기를 반복하며 점진적으로 제품을 만드는 애자일 방법이므로 순차 단계나 모형 선제작과 연결되지 않는다.
문제 30
다음 클래스 다이어그램에 적용된 설계 개념으로 가장 적절하지 않은 것은?

1상속(inheritance)
2오버라이딩(overriding)
3오버로딩(overloading)
4다형성(polymorphism)
정답 및 해설

다이어그램에 적용되지 않은 개념은 오버로딩(overloading)이다.

오버로딩은 한 클래스 안에서 이름은 같고 매개변수가 다른 메서드를 여러 개 두는 것인데, 각 클래스에는 매개변수 없는 calArea() 하나만 있어 오버로딩이 나타나지 않는다.

  • 상속(inheritance): Triangle·Rectangle·Circle이 일반화 화살표로 Shape를 상속하며 area를 물려받는다.
  • 오버라이딩(overriding): 하위 클래스마다 상위 클래스의 calArea()를 같은 시그니처로 재정의한다.
  • 다형성(polymorphism): Shape 타입으로 calArea()를 호출해도 실제 객체에 따라 도형별 면적 계산이 수행된다.
문제 31
소프트웨어 개발 프로젝트를 수행하는 데 다음과 같은 조건이 적용될 때, 프로젝트 완료에 필요한 최소 소요 기간은?
○추정 소스코드 라인 수 : 200,000 LOC
○개발자 1인당 월 평균 생산성 : 1,200 LOC/MM
○개발자 수 : 5명
○프로젝트 복잡도 계수 : 1.2
128개월
234개월
340개월
446개월
정답 및 해설

복잡도를 반영한 총 노력은 200MM이고 5명이 투입되므로 최소 소요 기간은 40개월이다.

기본 노력을 구한다.
200000÷1200≈166.7 MM200000 \div 1200 \approx 166.7\,\mathrm{MM}

복잡도 계수를 곱한다.
166.7×1.2=200 MM166.7 \times 1.2 = 200\,\mathrm{MM}

개발자 수로 나눈다.
200÷5=40200 \div 5 = 40

복잡도 계수는 노력을 늘리는 방향으로 적용되므로 곱해서 반영한다.

문제 32
요구분석명세서의 품질 검증을 위한 방법으로 가장 적절하지 않은 것은?
1요구사항 구현을 위한 구조 및 알고리즘 명세를 구체적으로 작성하였는지 확인한다.
2기능 요구사항뿐 아니라 성능, 제약사항 등의 비기능 요구사항도 빠짐없이 작성하였는지 확인한다.
3서술된 명세서의 내용이 모호하지 않고 모든 참여자가 명확히 이해할 수 있도록 작성하였는지 확인한다.
4요구사항 간 모순되거나 충돌되는 점이 없도록 작성하였는지 확인한다.
정답 및 해설

구조와 알고리즘의 구체적 명세는 설계 단계의 산출물이므로 요구분석명세서 검증 항목으로 적절하지 않다.

요구분석명세서는 시스템이 무엇을 해야 하는지를 기술하며, 완전성·명확성·일관성 등을 검증한다.

  • 기능과 비기능 요구사항이 빠짐없이 작성되었는지 보는 것은 완전성 검증이다.
  • 모호하지 않고 모두가 명확히 이해할 수 있는지 보는 것은 명확성 검증이다.
  • 요구사항 간 모순·충돌이 없는지 보는 것은 일관성 검증이다.
문제 33
CPM으로 일정계획을 수립한 결과가 다음과 같을 때, 가장 적절하지 않은 것은? (단, 작업은 FS(Finish to Start) 관계임)
작업ABCDEFGH
선행 작업--A, BCCDEF, G
작업별 빠른 시작 시간0047781113
작업별 늦은 시작 시간2047881213
1여유 시간이 가장 많은 작업은 A이다.
2D 작업은 임계 경로에 포함된다.
3E 작업은 임계 경로에 포함되지 않는다.
4G 작업에 필요한 최소 시간은 2이다.
정답 및 해설

G 작업의 소요 시간은 1이므로 최소 시간이 2라는 설명이 틀렸다.

G의 늦은 시작은 12이고 후속 작업 H의 늦은 시작은 13이므로 G의 늦은 종료는 13이다.
13−12=113 - 12 = 1

여유 시간(늦은 시작 − 빠른 시작)은 A 2, E 1, G 1이고 나머지 B·C·D·F·H는 0으로 임계 경로를 이룬다.

  • A의 여유 시간 2가 가장 크므로 여유 시간이 가장 많은 작업은 A이다.
  • D는 여유 시간이 0이어서 임계 경로에 포함된다.
  • E는 여유 시간이 1이어서 임계 경로에 포함되지 않는다.
문제 34
다음 자바 언어로 작성된 소스 코드에서 나타나는 응집도로 가장 적합한 것은? (단, 코드 실행에 대한 오류는 없는 것으로 함)
public class Calculator {
public int add(int num1, int num2) {
return num1 + num2;
}

public int sub(int num1, int num2) {
return num1 - num2;
}

public int mul(int num1, int num2) {
return num1 * num2;
}

public int div(int num1, int num2) {
if(num2 != 0)
return num1 / num2;
}
}
1기능적 응집
2절차적 응집
3논리적 응집
4우연적 응집
정답 및 해설

더하기·빼기·곱하기·나누기처럼 성격이 비슷한 연산을 한 클래스에 모아 둔 구조는 논리적 응집으로 본다.

논리적 응집은 같은 범주에 속하는 처리들을 묶어 두고 필요한 것을 골라 쓰는 형태로, 각 연산끼리는 데이터나 실행 순서로 연결되지 않는다.

  • 기능적 응집은 모든 요소가 하나의 기능 수행에 협력하는 경우로, 서로 독립적인 네 연산이 나열된 이 클래스와 다르다.
  • 절차적 응집은 요소들이 정해진 실행 순서에 따라 묶인 경우인데, 이 연산들은 순서와 무관하게 각각 호출된다.
  • 우연적 응집은 서로 관련 없는 요소가 묶인 경우인데, 이 연산들은 모두 사칙연산이라는 공통 범주를 가진다.
문제 35
결합도에 대한 다음 설명 중 가장 적절하지 않은 것은?
1결합도는 모듈 간의 관계가 얼마나 강하게 연결되어 있는지를 평가하는 기준이다.
2데이터 결합은 배열, 레코드, 구조체 등의 데이터를 매개변수로 사용하는 모듈 사이의 결합을 의미한다.
3제어 결합은 제어 플래그(flag)를 매개변수로 사용하여, 한 모듈이 다른 모듈의 동작을 직접 결정하는 방식을 의미한다.
4공통 결합은 여러 모듈이 공통 변수를 공유하는 방식을 의미한다.
정답 및 해설

배열·레코드·구조체 같은 자료구조를 매개변수로 넘기는 결합은 데이터 결합이 아니라 스탬프 결합이다.

데이터 결합은 필요한 단순 데이터 값만 매개변수로 주고받는 가장 느슨한 결합이다.

  • 결합도는 모듈 간 상호 의존 정도를 평가하는 기준이다.
  • 제어 결합은 제어 플래그를 넘겨 다른 모듈의 처리 흐름을 결정하는 결합이다.
  • 공통 결합은 여러 모듈이 전역 변수 같은 공통 데이터 영역을 공유하는 결합이다.
문제 36
리스코프 교체의 원리에 대한 설명으로 가장 적절하지 않은 것은?
1상위 클래스의 객체가 들어갈 자리에 하위 클래스의 객체를 넣어도 문제없이 작동해야 한다.
2상위 클래스는 추상 클래스와 추상 메소드로 정의해야 한다.
3하위 클래스는 상위 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행해야 한다.
4클라이언트는 자신이 사용하지 않는 메소드와 의존 관계를 맺으면 안 된다.
정답 및 해설

클라이언트가 사용하지 않는 메소드에 의존하면 안 된다는 것은 인터페이스 분리의 원리로, 리스코프 교체의 원리에 대한 설명이 아니다.

리스코프 교체의 원리는 하위 클래스가 상위 클래스를 대체해도 프로그램이 올바르게 동작해야 한다는 원칙이다.

  • 상위 클래스 객체 자리에 하위 클래스 객체를 넣어도 문제없이 작동해야 한다는 것은 이 원리의 정의이다.
  • 상위 클래스를 추상 클래스와 추상 메소드로 정의해 하위 클래스가 이를 구현하게 하는 것은 교체 가능성을 확보하는 설계 방법으로 설명된다.
  • 하위 클래스가 상위 클래스의 책임을 무시하지 않고 확장만 해야 한다는 것은 교체 가능성을 지키기 위한 조건이다.
문제 37
프로그램 언어를 사용하여 변수, 함수, 메소드 등의 이름을 지을 때 사용하는 명명 규칙과 사용 예를 바르게 연결한 것은?
(가)파스칼 케이스(pascal case)
(나)카멜 케이스(camel case)
(다)스네이크 케이스(snake case)

A.StudentName
B.studentName
C.student_name

(가) (나) (다) (가) (나) (다)
1A B C
2A C B
3B A C
4C B A
정답 및 해설

파스칼 케이스는 StudentName, 카멜 케이스는 studentName, 스네이크 케이스는 student_name과 연결된다.

파스칼 케이스는 모든 단어의 첫 글자를 대문자로, 카멜 케이스는 첫 단어는 소문자로 시작하고 이후 단어의 첫 글자만 대문자로 쓴다.

  • 스네이크 케이스는 단어를 밑줄(_)로 연결하므로 대문자 표기 예시와 연결되지 않는다.
  • 카멜 케이스는 첫 글자가 소문자이므로 첫 글자가 대문자인 예시와 연결되지 않는다.
문제 38
프로젝트 제안서 평가 점수에 따른 등급이 다음 표와 같고, 경계값 분석 기법으로 테스트할 때 입력값으로 포함되지 않는 것은?
평가 점수등급
70점 이상 ∼ 100점 이하우수
60점 이상 ∼ 70점 미만보통
0점 이상 ∼ 60점 미만미흡
1-1
250
369
4100
정답 및 해설

50은 어느 구간의 경계에도 해당하지 않는 구간 내부 값이므로 경계값 분석의 입력값에 포함되지 않는다.

경계값 분석은 각 구간의 경계(0, 60, 70, 100)와 그 바로 안팎의 값을 테스트한다.

  • -1은 최솟값 0의 바로 아래 값으로 무효 경계 입력이다.
  • 69는 보통 구간의 상한이자 우수 구간 경계 70의 바로 아래 값이다.
  • 100은 우수 구간의 최댓값 경계이다.
문제 39
코드 검증기준(coverage)에 대한 다음 설명 중 가장 적절하지 않은 것은?
1문장 검증기준(statement coverage)은 원시 코드 내의 모든 문장이 최소한 한 번은 실행되도록 테스트하는 방식이다.
2조건 검증기준(condition coverage)은 조건문이 참(T)일 때와 거짓(F)일때의분기경로를각각한번이상실행하도록 테스트하는 방식이다.
3다중 조건 검증기준(multiple condition coverage)은 두 개 이상의 개별 조건식이 and 또는 or로 연결되었을 때, 단일 조건 검증에서 발생할 수 있는 마스크(mask) 문제를 해결하기 위해 활용하는 기준이다.
4경로 검증기준(path coverage)은 원시 코드의 독립적인 경로가 최소한 한 번은 실행되는 테스트 케이스를 찾아 테스트를 수행하는 방식이다.
정답 및 해설

조건문 전체가 참일 때와 거짓일 때의 분기를 각각 실행하는 것은 조건 검증기준이 아니라 결정(분기) 검증기준이다.

조건 검증기준은 결정문 안의 개별 조건식 각각이 참과 거짓을 최소 한 번씩 갖도록 테스트한다.

  • 문장 검증기준은 모든 문장을 최소 한 번 실행하도록 하는 가장 약한 기준이다.
  • 다중 조건 검증기준은 개별 조건식의 모든 참·거짓 조합을 테스트해 조건이 다른 조건에 가려지는 마스크 문제를 해결한다.
  • 경로 검증기준은 코드의 독립 경로를 최소 한 번 실행하도록 하는 기준이다.
문제 40
다음은 CMMI V3.0의 성숙도 단계별 프로세스 영역을 나타낸 것이다. 성숙도 단계와 프로세스 영역의 활동 중 하나를 가장 적절하게 연결한 것은?
(가)초기 단계
(나)관리 단계
(다)정의 단계
(라)정량적 관리 단계
(마)최적화 단계

A.요구사항 관리
B.프로세스 없음
C.조직 차원의 프로세스 성과 관리
D.근본 원인 분석 및 해결
E.조직 차원의 혁신 활동 전개
F.프로세스/제품 품질 보증
G.통합된 프로젝트 관리
H.협력 업체 관리
I.조직 차원의 교육 훈련

(가) (나) (다) (라) (마)
1A H I C D
2A G H D E
3B A F C E
4B F G C D
정답 및 해설

초기 단계는 프로세스 없음, 관리 단계는 품질 보증, 정의 단계는 통합된 프로젝트 관리, 정량적 관리 단계는 조직 차원의 프로세스 성과 관리, 최적화 단계는 근본 원인 분석과 연결된다.

관리 단계는 프로젝트 단위의 기본 관리, 정의 단계는 조직 표준 프로세스 정립, 정량적 관리 단계는 수치 기반 관리, 최적화 단계는 지속적 개선 활동이 중심이다.

  • 초기 단계에 요구사항 관리를 연결한 조합은 틀렸다. 초기 단계는 정해진 프로세스가 없는 상태이고 요구사항 관리는 관리 단계 활동이다.
  • 정의 단계에 품질 보증을 연결한 조합은 틀렸다. 품질 보증은 관리 단계 활동이다.