[경찰간부후보생 소프트웨어공학] 23년 1회차 기출문제 정답·해설 페이지

[경찰간부후보생 소프트웨어공학] 23년 1회차
    1[경찰간부후보생 소프트웨어공학] 23년 1회차
    프로젝트에 대한 고객 요구가 아래와 같을 때, 다음 보기 중 해당 프로젝트를 수행하기에 가장 적절한 소프트웨어 개발 프로세스 모델은?
    가.프로젝트 초반에 전체 시스템에 대한 모든 요구를 최초 계획단계에서 모두 확정하여 서브시스템으로 분할하고, 릴리즈 횟수와 시기를 정의해야 한다.
    나.이를 기반으로 전체 프로젝트 계획을 수립하여 ‘설계-구현/시험-설치/운영’ 과정의 반복을 통해 각 서브시스템 별로 단계적으로 릴리즈하는 형태로 진행하여, 전체 시스템을 확장하고 완성하여 최대한 신속히 작동하는 SW를 조기에 제공받고 싶다.
    다.이미 릴리즈된 서비스는 사용자로부터 제시된 새로운 아이디어나 의견을 받아 기 확정되어 있던 개발 범위에 추가 반영하여 개발하고, 함께 릴리즈함으로써 신규 시스템으로 인한 조직의 충격을 완화해야 한다.
    라.규모가 큰 개발 조직을 보유하고 있으니, 개발 기간 단축을 위해 분할된 서브시스템 간 병행 개발도 시도해 달라. 그러나, 대규모 프로젝트임을 고려하여 개발은 정확하게 정해진 표준 절차를 기반으로 수행해야 한다. 또한, 이전 릴리즈 된 SW와 개발해야 하는 서브시스템 간의 연계 및 통합에 대한 위험 부담, 디버깅 등을 통한 실시간 장애 관리 등을 고려할 때 우수한 프로젝트 관리자가 요구된다.
    1
    Agile 프로세스 모델
    2
    점증적 프로세스 모델
    3
    폭포수 프로세스 모델
    4
    Spiral 프로세스 모델
    해설

    제시된 요구에 가장 적합한 모델은 점증적 프로세스 모델이다.

    초기에 전체 요구를 확정해 서브시스템으로 나누고, 릴리즈 계획에 따라 설계–구현/시험–설치/운영을 반복하며 단계적으로 릴리즈하고, 서브시스템 병행 개발과 표준 절차 준수를 요구하는 것은 점증적 모델의 특징이다.

    • Agile 모델은 요구를 초기에 모두 확정하지 않고 짧은 반복마다 변경을 수용하므로, 초반 전체 요구 확정과 엄격한 표준 절차 요구와 맞지 않는다.
    • 폭포수 모델은 전체를 한 번에 개발해 마지막에 인도하므로, 작동하는 SW를 조기에 단계적으로 제공받으려는 요구와 맞지 않는다.
    • Spiral 모델은 반복마다 위험 분석을 중심으로 요구와 계획을 다시 세우는 모델로, 처음에 모든 요구와 릴리즈 시기를 확정하는 방식이 아니다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    2[경찰간부후보생 소프트웨어공학] 23년 1회차
    클라이언트-서버 아키텍처의 구조와 개념에 대한 설명으로 적절하지 않은 것은?
    1
    MOM(Message Oriented Middleware)은 일종의 소프트웨어 버스를 생성하여 레거시 시스템과 협력사의 외부 시스템을 통합할 수 있으며, 기본적으로 강력한 결합의 동기 기술로 메시지의 송신측과 수신측이 강하게 결합되어 있다.
    2
    CORBA는 이기종 분산 환경에서 서로 다른 시스템 간에 상호작용을 무리없이 제공하기 위하여 ORB(Object Request Broker)에 광범위하게 사용되는 표준으로 OMG(Object Management Group)에서 개발되었다.
    3
    애플리케이션 서버는 N-tier 아키텍처의 중간층에 위치하며 분산 통신, 보안, 트랜잭션 등을 제공하는 컴포넌트 기반의 서버 기술로, 클라이언트 레이어, 웹 레이어, 비즈니스 컴포넌트 레이어, 엔터프라이즈 정보 시스템 레이어로 구성된다.
    4
    피어 투 피어(Peer to Peer) 아키텍처는 원칙적으로 클라이언트와 서버의 구분이 존재하지 않는 구조로, 네트워크 상의 개별 노드에서 계산이 실행되며 이를 기반으로 한 대표적인 사례로 블록체인 기술이 있다.
    해설

    적절하지 않은 설명은 MOM이 강한 결합의 동기 기술이라는 내용이다.

    MOM은 메시지 큐를 매개로 송신측과 수신측을 분리하는 느슨한 결합의 비동기 통신 미들웨어로, 수신측이 즉시 응답하지 않아도 메시지가 전달된다.

    • CORBA는 OMG가 제정한 ORB 기반 분산 객체 표준으로 이기종 환경의 상호운용을 지원한다.
    • 애플리케이션 서버는 N-tier 구조의 중간층에서 분산 통신·보안·트랜잭션 등을 제공하는 컴포넌트 기반 서버이다.
    • P2P 구조는 각 노드가 클라이언트이자 서버 역할을 하며 블록체인이 대표 사례이다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    3[경찰간부후보생 소프트웨어공학] 23년 1회차
    IFPUG(International Function Point Users Group)에서 정의한 기능 점수 산정 기준에 따라 업무 규모를 산정 중이다. 다음에 제시된 주문상품삭제 화면에서 사용자 매뉴얼에 따라 삭제를 수행할 때 DET(Data Element Type) 개수는? (단, 회원정보에서 회원번호를 관리한다. 주문은 회원만 가능하고, 회원이 주문 시 회원주문정보(주문번호, 주문일시, 상품번호, 상품명, 주문수량, 단가, 주문총액, 주문확정여부, 회원번호)에 저장된다. 그 외 모든 상황은 제외된다.)
    [주문상품삭제 사용자 매뉴얼]

    가.‘회원 번호’는 회원정보를 통해 화면에 자동 입력된다.
    나.‘주문번호’는 입력 칸을 클릭 시, 해당 회원의 회원주문정보로부터 회원번호와 주문확정여부가 “N”인 조건을 만족하는 상품명 목록을 자동으로 출력한다. 사용자가 목록에서 삭제할 상품명을 선택하면 주문번호와 상품번호가 화면에 자동 입력된다. 상품명을 선택하지 않고 기존 삭제 화면으로 가려면 브라우저가 제공하는 종료 버튼(⌧)을 선택한다.
    다.‘주문상품삭제’ 버튼을 선택하여 정상수행되면 ‘삭제되었다’는 메시지를 출력한 후 화면이 종료되며, 실패하면 오류 메시지가 출력된다.

    문제 이미지
    1
    6
    2
    7
    3
    8
    4
    9
    해설
    등록된 해설이 없습니다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    4[경찰간부후보생 소프트웨어공학] 23년 1회차
    다음 UML 2.0 다이어그램에 대한 설명으로 적절하지 않은 것은?
    1
    배치 다이어그램은 컴포넌트 간의 커넥션을 나타내는 것으로 연결된 컴포넌트의 구조를 나타낸다.
    2
    커뮤니케이션 다이어그램은 순차 다이어그램과 같은 내용을 표현하나 위임과 전달의 관계를 네트워크 형태로 더 명확하게 표현한다.
    3
    인터랙션 오버뷰 다이어그램은 메시지 교환과 제어 흐름을 동시에 표현한다.
    4
    패키지 다이어그램은 관련된 클래스를 패키지로 그룹화하여 표현함으로써 의존도를 낮추는데 도움이 된다.
    해설

    적절하지 않은 설명은 배치 다이어그램을 컴포넌트 간 커넥션과 연결 구조를 나타내는 것으로 설명한 내용이다.

    배치 다이어그램은 노드(하드웨어·실행 환경)와 그 위에 배치되는 산출물의 물리적 배치를 표현하며, 컴포넌트 간 연결 구조는 컴포넌트 다이어그램이나 복합 구조 다이어그램이 다룬다.

    • 커뮤니케이션 다이어그램은 순차 다이어그램과 같은 상호작용을 객체 간 연결 관계 중심의 네트워크 형태로 표현한다.
    • 인터랙션 오버뷰 다이어그램은 활동 다이어그램 형식 안에 상호작용을 배치해 메시지 교환과 제어 흐름을 함께 보여 준다.
    • 패키지 다이어그램은 관련 요소를 패키지로 묶어 패키지 간 의존 관계를 관리하는 데 쓰인다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    5[경찰간부후보생 소프트웨어공학] 23년 1회차
    CPM 네트워크가 다음과 같을 때 프로젝트 소요기일은?
    -원형노드: 작업과 소요시간
    -박스노드: Milestone
    -화살표: 선후 의존 관계

    문제 이미지
    1
    16일
    2
    8일
    3
    18일
    4
    20일
    해설

    프로젝트 소요기일은 가장 긴 경로인 임계 경로의 길이로, 18일이다.

    마일스톤은 소요시간이 0이며, 선행 작업이 모두 끝나야 통과한다. 따라서 M2는 A(3일)·B(5일) 중 늦은 5일, M5는 C(6일)·D(10일) 중 늦은 10일에 도달한다.

    임계 경로는 시작 → B → M2 → D → M5 → G → M7 → H → 완료이다.
    5+5+3+5=185+5+3+5=18

    • 16일: 임계 경로보다 짧은 값이다. A를 거쳐 M2에 도달하는 3일을 기준으로 잡으면 B가 끝나기 전에 D를 시작하는 셈이 되어 기간이 줄어든다.
    • 8일: 가장 짧은 경로(F → M4 → J → K, 3+3+2)의 길이로, 최장 경로가 아니다.
    • 20일: 네트워크의 어떤 경로를 합해도 나오지 않는 값이다. I 경로는 15일(B → M3 → E → M6 → I), K 경로는 8일에 그친다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    6[경찰간부후보생 소프트웨어공학] 23년 1회차
    소프트웨어 구축 프로젝트가 8개월간 1억의 예산으로 착수되었다. 오늘은 4개월째 되는 마지막 날로 계획상으로 전체 공정의 60%를 완료했어야 했다. 그런데, 실제 작업 완료율은 52%이고, 지출된 비용은 5천만원이었다. 프로젝트에 대한 EVA(Earned Value Analysis) 결과 보고서의 내용으로 가장 적절하지 않은 것은?
    1
    SV(Schedule Variance)는 –8,000,000원이다.
    2
    CV(Cost Variance)는 2,000,000원이다.
    3
    SPI(Schedule Performance Index)는 0.86이다.
    4
    CPI(Cost Performance Index)는 1.2이다.
    해설

    적절하지 않은 내용은 CPI가 1.2라는 것이다.

    PV는 1억의 60%인 6천만 원, EV는 1억의 52%인 5천2백만 원, AC는 5천만 원이다.

    CPI=EVAC=52,000,00050,000,000=1.04\mathrm{CPI}=\dfrac{\mathrm{EV}}{\mathrm{AC}}=\dfrac{52{,}000{,}000}{50{,}000{,}000}=1.04

    따라서 CPI는 1.04로, 비용 효율이 계획보다 약간 나은 수준이다.

    • SV는 EV−PV=52,000,000−60,000,000=−8,000,000\mathrm{EV}-\mathrm{PV}=52{,}000{,}000-60{,}000{,}000=-8{,}000{,}000원으로 맞다.
    • CV는 EV−AC=2,000,000\mathrm{EV}-\mathrm{AC}=2{,}000{,}000원으로 맞다.
    • SPI는 5260≈0.867\dfrac{52}{60}\approx 0.867로, 소수 셋째 자리를 버리면 0.86이 되어 맞다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    7[경찰간부후보생 소프트웨어공학] 23년 1회차
    다음 중 GoF의 디자인 패턴에 속하지 않은 것은?
    1
    추상 팩토리(Abstract Factory)
    2
    단순 팩토리(Simple Factory)
    3
    팩토리 메서드(Factory Method)
    4
    템플릿 메서드(Template Method)
    해설

    GoF 디자인 패턴에 속하지 않는 것은 단순 팩토리(Simple Factory)이다.

    단순 팩토리는 객체 생성 코드를 한 클래스에 모아 두는 관용적 기법으로 GoF의 23가지 패턴 목록에는 없다. GoF 생성 패턴은 추상 팩토리·빌더·팩토리 메서드·프로토타입·싱글턴이다.

    • 추상 팩토리는 관련 객체군을 구체 클래스 지정 없이 생성하는 GoF 생성 패턴이다.
    • 팩토리 메서드는 생성할 객체의 클래스 결정을 하위 클래스에 맡기는 GoF 생성 패턴이다.
    • 템플릿 메서드는 알고리즘 골격을 상위 클래스에 두고 일부 단계를 하위 클래스가 정의하는 GoF 행위 패턴이다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    8[경찰간부후보생 소프트웨어공학] 23년 1회차
    요구분석(Requirement analysis) 단계를 올바른 순서로 나열한 것은?
    1
    요구 추출 –도메인 분석 –명세화 - 검토
    2
    도메인 분석 –요구 추출 –분석과 명세화- 검토
    3
    요구 추출 –분석과 명세화 - 도메인 분석 –검토
    4
    도메인 분석 –명세화 - 요구 추출 –검토
    해설

    요구분석 단계의 올바른 순서는 도메인 분석 → 요구 추출 → 분석과 명세화 → 검토이다.

    먼저 업무 영역(도메인)을 이해해야 이해관계자로부터 요구를 끌어낼 수 있고, 추출한 요구를 분석·정리해 명세서로 작성한 뒤 마지막에 검토로 명세의 정확성과 완전성을 확인한다.

    • 요구 추출 → 도메인 분석 → 명세화 순서는 업무 이해 없이 요구부터 수집하게 되어 맞지 않다.
    • 요구 추출 → 분석과 명세화 → 도메인 분석 순서는 명세가 끝난 뒤에야 도메인을 분석하게 되어 맞지 않다.
    • 도메인 분석 → 명세화 → 요구 추출 순서는 수집하지도 않은 요구를 먼저 문서화하게 되어 맞지 않다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    9[경찰간부후보생 소프트웨어공학] 23년 1회차
    소프트웨어공학 지식 체계 (SWEBOK, SoftWare Engineering Body Of Knowledge)에서 정의된 S/W 관리 측면에 속하지 않은 것은?
    1
    SW 형상관리
    2
    SW 프로세스
    3
    SW 유지보수
    4
    SW 도구, 방법론
    해설

    S/W 관리 측면에 속하지 않는 것은 SW 유지보수이다.

    SWEBOK의 지식 영역을 개발 측면과 관리 측면으로 나누면, 요구사항·설계·구현·테스트·유지보수는 제품을 만드는 개발 측면에, 형상관리·공학 관리·프로세스·도구와 방법론·품질은 관리 측면에 속한다.

    • SW 형상관리는 산출물의 변경을 통제하는 관리 측면 영역이다.
    • SW 프로세스는 개발 프로세스의 정의·평가·개선을 다루는 관리 측면 영역이다.
    • SW 도구, 방법론은 개발을 지원하는 도구와 방법을 다루는 관리 측면 영역이다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    10[경찰간부후보생 소프트웨어공학] 23년 1회차
    다음 중 형상변경 제어 단계에 수행되는 활동으로 적절하지 않은 것은?
    1
    형상 항목 변경 계획 수립
    2
    형상 항목 변경의 이유 파악
    3
    형상 항목에 대한 검토(verification)와 확인(validation)
    4
    형상 항목 변경 영향도 분석
    해설

    형상변경 제어 활동이 아닌 것은 형상 항목에 대한 검토와 확인이다.

    검토(verification)와 확인(validation)은 형상 항목이 요구와 기준선에 맞게 변경되었는지 점검하는 형상 감사 활동이다. 변경 제어는 변경 요청을 받아 이유와 영향을 분석하고 승인·계획하는 과정이다.

    • 형상 항목 변경 계획 수립은 승인된 변경을 어떻게 반영할지 정하는 변경 제어 활동이다.
    • 형상 항목 변경의 이유 파악은 변경 요청을 평가하는 변경 제어 활동이다.
    • 형상 항목 변경 영향도 분석은 변경 승인 여부를 판단하기 위한 변경 제어 활동이다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    11[경찰간부후보생 소프트웨어공학] 23년 1회차
    다음 보기의 설명은 공연예약시스템을 위하여 제시된 업무 프로세스(가)에 대하여, 정보은닉을 고려한 기초 설계 상태의 클래스 다이어그램 결과이다. 기초 설계가 가장 적절하지 않은 것은? (단, 회원정보관리, 공연티켓관리, 예약정보 클래스명은 각각 회원, 공연티켓, 예약정보로 하며, 클래스들에서 선언된 모든 속성과 메서드들의 이름은 나, 다와 같다. 그 외 모든 상황은 제외된다.)
    가.
    업무
    프로세스
    ①본 시스템을 통해 회원정보관리(등록, 수정, 삭제, 조회)와 공연티켓관리(등록, 수정, 삭제, 조회)를 수행한다.
    ②회원은 예약정보를 통해 공연 티켓을 구매한다. 예약 후에 티켓을 구매할 수 있다.
    ③구매 전 예약정보 확인을 위해 회원ID와 티켓번호를 입력하여 조회를 수행한다.
    나.
    선언된 모든
    속성명들
    회원ID, 비밀번호, 성명, 스마트폰번호, 예약번호, 예약일자, 티켓번호, 공연장소, 공연회차, 좌석번호, 공연시작일시, 공연종료일시
    다.
    선언된 모든
    메서드명들
    회원등록, 회원수정, 회원삭제, 회원조회, 예약, 구매, 티켓등록, 티켓수정, 티켓삭제, 티켓조회

    문제 이미지
    1
    회원 클래스에 데이터 변수 총 4개(회원ID, 비밀번호, 성명, 스마트폰번호)가 Private(-) 유형으로, 메서드 총 4개(회원등록, 회원수정, 회원삭제, 회원조회)가 Public(+)으로 정의되었다.
    2
    예약정보 클래스에 데이터 변수 총 2개(예약번호, 예약일자)가 Private(-) 유형으로, 메서드 총 2개(예약, 구매)가 Public(+) 유형으로 정의되었다.
    3
    공연티켓 클래스에 데이터 변수 총 6개(티켓번호, 공연장소, 공연회차, 좌석번호, 공연시작일시, 공연종료일시)가 Private (-) 유형으로, 메서드 총 4개(티켓등록, 티켓수정, 티켓삭제, 티켓조회)가 Public(+)으로 정의되었다.
    4
    회원, 예약정보, 공연티켓 클래스의 관계는 아래와 같다.
    해설
    등록된 해설이 없습니다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    12[경찰간부후보생 소프트웨어공학] 23년 1회차
    시퀀스 다이어그램의 메시지 설계 방법에 대한 설명으로 적절하지 않은 것은?
    1
    객체생명선은 수직 방향의 점선으로 표시하며, 위에서 아래로의 시간 흐름을 의미한다.
    2
    객체명은 “객체명:클래스명” 형태로 정의하며, 클래스명 만으로 정의할 수도 있다.
    3
    재귀 메시지를 제외한 일반적인 메시지 호출은 수평 방향의 화살표로 표시하며, 화살표 위에는 송신 객체가 가지고 있는 함수명을 정의한다.
    4
    수신 객체에게 요청한 함수가 완료될 때까지 기다리는 경우에는 동기 메시지로 호출하고, 수신 객체로부터 반환을 기다리지 않는 경우에는 비동기 메시지 호출로 설계한다.
    해설

    적절하지 않은 설명은 메시지 화살표 위에 송신 객체의 함수명을 쓴다는 내용이다.

    메시지는 수신 객체에게 작업을 요청하는 것이므로 화살표 위에는 수신 객체가 제공하는 함수(오퍼레이션)명을 적는다.

    • 객체 생명선은 객체 아래로 내려가는 수직 점선이며 위에서 아래로 시간이 흐른다.
    • 객체명은 객체명:클래스명 형태로 쓰며, 클래스명만 써서 익명 객체로 표기할 수도 있다.
    • 응답을 기다리는 호출은 동기 메시지, 기다리지 않는 호출은 비동기 메시지로 설계한다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    13[경찰간부후보생 소프트웨어공학] 23년 1회차
    다음 프로그램에서 sender와 receiver 함수 간의 결합도와 receiver 함수의 응집도가 적절하게 나열된 것은?
    void sender(void) {
    int num1, num2;
    int res;
    scanf(“%d %d”, &num1, &num2);
    res = receiver(num1, num2);
    printf(“Result = %d\n”, res);
    }

    int receiver(int a, int b) {
    if (a > b) {
    return (a * 3);
    } else {
    return (b * 2);
    }
    }
    1
    제어 결합도, 기능적 응집도
    2
    자료 결합도, 기능적 응집도
    3
    제어 결합도, 논리적 응집도
    4
    자료 결합도, 논리적 응집도
    해설

    sender와 receiver 사이는 자료 결합도, receiver는 논리적 응집도로 보는 것이 적절하다.

    sender는 receiver에 정수 두 개만 매개변수로 넘기고 결과 값만 돌려받으며 제어 플래그를 넘기지 않으므로 가장 느슨한 자료 결합도이다.

    receiver는 입력값 비교 결과에 따라 a*3과 b*2라는 서로 다른 처리 중 하나를 골라 수행하므로, 유사한 성격의 처리를 한 모듈에 모아 조건으로 선택하는 논리적 응집도로 판단한다.

    • 제어 결합도와 기능적 응집도의 조합은 플래그 전달이 없고 receiver가 조건에 따라 다른 계산을 고르므로 둘 다 맞지 않다.
    • 자료 결합도와 기능적 응집도의 조합은 결합도는 맞지만 receiver가 단일 기능만 수행한다고 보기 어려워 응집도가 맞지 않다.
    • 제어 결합도와 논리적 응집도의 조합은 응집도는 맞지만 순수 데이터만 넘기므로 결합도가 맞지 않다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    14[경찰간부후보생 소프트웨어공학] 23년 1회차
    sort() 알고리즘을 상속받은 여러 순서정렬 알고리즘들이 다형성을 이용하여 확장될 수 있도록 설계함으로써 sort() 알고리즘을 수정하는 상황에서도 client 프로그램은 수정에 영향을 받지 않았다. 이것이 만족하고 있는 Martin의 객체지향 설계 원칙으로 가장 적절한 것은?
    1
    단일 책임의 원칙(Single Responsibility Principle)
    2
    인터페이스 분리의 원칙(Interface Segregation Principle)
    3
    개방 폐쇄의 원칙(Open Closed Principle)
    4
    리스코프 대체의 원칙(Liskov Substitution Principle)
    해설

    설명된 설계가 만족하는 원칙은 개방 폐쇄의 원칙(OCP)이다.

    새 정렬 알고리즘을 상속과 다형성으로 추가하므로 기능 확장에는 열려 있고, client 코드는 수정하지 않아도 되므로 변경에는 닫혀 있다.

    • 단일 책임의 원칙은 클래스가 하나의 변경 이유(책임)만 가져야 한다는 원칙으로, 확장 시 기존 코드 보호와는 초점이 다르다.
    • 인터페이스 분리의 원칙은 클라이언트가 쓰지 않는 메서드에 의존하지 않도록 인터페이스를 잘게 나누라는 원칙이다.
    • 리스코프 대체의 원칙은 하위 타입이 상위 타입을 대체해도 프로그램이 올바르게 동작해야 한다는 상속 정합성에 관한 원칙이다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    15[경찰간부후보생 소프트웨어공학] 23년 1회차
    어떤 모듈의 설계 품질을 측정한 결과 팬아웃(Fan–out) 지표의 값이 과도하게 커서 재사용이 어렵고, 다른 모듈의 수정에 영향을 크게 받고, 다른 모듈과의 상호작용으로 유지보수 복잡도가 높아질 수 있다는 진단을 받았다. 다음 중 진단된 문제를 해소하기 위하여 고려할 수 있는 가장 적절한 설계 패턴은?
    1
    Facade 패턴
    2
    Adapter 패턴
    3
    Bridge 패턴
    4
    Composite 패턴
    해설

    팬아웃 과다 문제를 해소하기에 가장 적절한 패턴은 Facade 패턴이다.

    Facade는 여러 하위 모듈 앞에 단일 통합 인터페이스를 두어, 많은 모듈을 직접 호출하던 것을 하나의 창구 호출로 바꾸므로 팬아웃과 결합도가 줄어든다.

    • Adapter 패턴은 호환되지 않는 인터페이스를 변환해 맞춰 주는 패턴으로, 호출 대상 수를 줄이는 목적이 아니다.
    • Bridge 패턴은 추상과 구현을 분리해 각각 독립적으로 확장하게 하는 패턴이다.
    • Composite 패턴은 부분과 전체를 트리 구조로 구성해 개별 객체와 복합 객체를 동일하게 다루는 패턴이다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    16[경찰간부후보생 소프트웨어공학] 23년 1회차
    제임스 럼바우의 객체지향 분석 모델링과 각 모델링에서 사용되는 다이어그램으로 적절한 것은?
    1
    객체 모델 클래스 / 동적 모델 상태 / 기능 모델 데이터 흐름
    2
    객체 모델 상태 / 동적 모델 데이터 흐름 / 기능 모델 클래스
    3
    객체 모델 데이터 흐름 / 동적 모델 클래스 / 기능 모델 상태
    4
    객체 모델 상태 / 동적 모델 클래스 / 기능 모델 데이터 흐름
    해설

    럼바우 OMT의 올바른 대응은 객체 모델–클래스, 동적 모델–상태, 기능 모델–데이터 흐름 다이어그램이다.

    객체 모델은 객체와 관계를 클래스(객체) 다이어그램으로, 동적 모델은 시간에 따른 상태 변화를 상태 다이어그램으로, 기능 모델은 입력이 출력으로 변환되는 과정을 자료 흐름도(DFD)로 표현한다.

    • 객체 모델–상태, 동적 모델–데이터 흐름, 기능 모델–클래스 조합은 세 모델이 모두 어긋난다.
    • 객체 모델–데이터 흐름, 동적 모델–클래스, 기능 모델–상태 조합도 세 모델이 모두 어긋난다.
    • 객체 모델–상태, 동적 모델–클래스 조합은 기능 모델만 맞고 나머지 둘이 뒤바뀌었다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    17[경찰간부후보생 소프트웨어공학] 23년 1회차
    객체지향 설계 메트릭(Metric)이 아닌 것은?
    1
    클래스당 가중 메서드(Weighted method per class)
    2
    싸이클로매틱 복잡도(Cyclomatic complexity)
    3
    메서드 응집 결핍(Lack of cohesion in methods)
    4
    상속 트리의 깊이(Depth of inheritance tree)
    해설

    객체지향 설계 메트릭이 아닌 것은 싸이클로매틱 복잡도이다.

    싸이클로매틱 복잡도는 McCabe가 제안한 제어 흐름 그래프 기반의 전통적(구조적) 복잡도 척도로, 객체지향 고유 개념과 무관하게 모든 프로그램에 적용된다.

    • 클래스당 가중 메서드(WMC)는 클래스 메서드들의 복잡도 합을 재는 CK 메트릭이다.
    • 메서드 응집 결핍(LCOM)은 클래스 내 메서드들이 속성을 공유하지 않는 정도를 재는 CK 메트릭이다.
    • 상속 트리의 깊이(DIT)는 상속 계층에서 루트로부터 클래스까지의 깊이를 재는 CK 메트릭이다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    18[경찰간부후보생 소프트웨어공학] 23년 1회차
    아래 클래스 다이어그램이 위반하고 있는 SOLID 원칙은?

    문제 이미지
    1
    단일 책임의 원칙(Single Responsibility Principle)
    2
    개방 폐쇄의 원칙(Open Closed Principle)
    3
    리스코프 대체의 원칙(Liskov Substitution Principle)
    4
    의존성 역전의 원칙(Dependency Inversion Principle)
    해설

    이 다이어그램이 위반한 원칙은 리스코프 대체의 원칙이다.

    상위 클래스 고용인은 지급명세서()를 정의하고, 하위 클래스 네 개가 이를 상속한다. 그런데 자원봉사자는 급여를 받지 않으므로 지급명세서()를 의미 있게 수행할 수 없다.

    하위 타입은 상위 타입을 대신해도 프로그램이 올바르게 동작해야 한다. 고용인 자리에 자원봉사자를 넣으면 이 약속이 깨진다.

    • 단일 책임의 원칙: 한 클래스가 여러 변경 이유를 갖는 문제로, 이 그림의 핵심 결함은 상속 관계의 대체 가능성이다.
    • 개방 폐쇄의 원칙: 기존 코드를 수정하지 않고 확장할 수 있어야 한다는 원칙으로, 하위 클래스를 추가하는 구조 자체는 이를 따른다.
    • 의존성 역전의 원칙: 상위 모듈이 구체 클래스가 아닌 추상에 의존해야 한다는 원칙으로, 이 그림의 문제와 관련이 없다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    19[경찰간부후보생 소프트웨어공학] 23년 1회차
    아래 소스 코드에 대하여 문장(Statement) 커버리지, 조건(Condition) 커버리지, 결정(Decision) 커버리지, 조건-결정(Condition-Decision) 커버리지를 평가하고자 한다. 제시된 테스트 데이터를 기준으로 평가를 수행했을 때, 다음 보기의 설명이 적절하지 않은 것은? (단, Short-circuit evaluation은 수행하지 않는다.)
    소스 코드if (x >= -3 && y < 5)
    x=x+y;
    else
    x=x-y;
    테스트 데이터T = { (-5, -2), (1, 7) }
    단, (a, b)는 (x값, y값)임
    1
    문장 커버리지는 66% 임
    2
    조건 커버리지는 50% 임
    3
    결정 커버리지는 50% 임
    4
    조건-결정 커버리지는 50% 임
    해설

    적절하지 않은 설명은 조건 커버리지가 50%라는 내용이다.

    (-5, -2)는 x≥−3x \ge -3이 거짓, y<5y \lt 5가 참이고, (1, 7)은 x≥−3x \ge -3이 참, y<5y \lt 5가 거짓이다. 두 조건이 각각 참·거짓을 모두 가졌으므로 조건 커버리지는 100%이다.

    반면 두 데이터 모두 전체 결정은 거짓이 되어 else 쪽 문장만 실행된다.

    • 문장 커버리지는 if 문과 else 쪽 대입문은 실행되고 x=x+y는 실행되지 않아 3개 중 2개, 약 66%로 맞다.
    • 결정 커버리지는 결정이 거짓 쪽만 나와 2개 결과 중 1개, 50%로 맞다.
    • 조건-결정 커버리지는 조건과 결정을 함께 충족해야 하는데 결정이 절반만 충족되어 50%로 평가된다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    20[경찰간부후보생 소프트웨어공학] 23년 1회차
    다음 중 리팩토링을 하는 이유로 적절하지 않은 것은?
    1
    소프트웨어 설계를 개선하려고
    2
    소프트웨어 이해를 쉽게 하려고
    3
    추가 기능 구현 속도를 빠르게 하려고
    4
    소프트웨어 인증을 받으려고
    해설

    리팩토링의 이유로 적절하지 않은 것은 소프트웨어 인증 획득이다.

    리팩토링은 외부 동작을 바꾸지 않고 내부 구조를 개선하는 활동으로, 목적은 설계 개선·이해 용이성·개발 속도 향상 같은 코드 품질에 있으며 인증 취득과는 관계가 없다.

    • 설계 개선은 중복과 구조적 결함을 제거해 설계가 부패하는 것을 막는 대표적 목적이다.
    • 이해를 쉽게 하는 것은 코드 가독성을 높여 다른 개발자가 읽기 쉽게 하려는 목적이다.
    • 추가 기능 구현 속도 향상은 좋은 구조가 변경과 확장을 빠르게 해 주기 때문에 생기는 효과이다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    21[경찰간부후보생 소프트웨어공학] 23년 1회차
    유지보수 및 운영 중인 소프트웨어의 MTBF(Mean Time Between Failures)가 3,000시간이고, MTTR(Mean Time To Repair)이 120시간으로 측정되었다. 해당 시스템의 가용성은? (단, 소수점 이하에서 반올림한다.)
    1
    92%
    2
    94%
    3
    96%
    4
    98%
    해설

    시스템의 가용성은 약 96%이다.

    A=MTBFMTBF+MTTRA=\dfrac{\mathrm{MTBF}}{\mathrm{MTBF}+\mathrm{MTTR}}

    A=30003000+120=30003120≈0.9615A=\dfrac{3000}{3000+120}=\dfrac{3000}{3120}\approx 0.9615

    백분율로 약 96.15%이고, 소수점 이하를 반올림하면 96%가 된다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    22[경찰간부후보생 소프트웨어공학] 23년 1회차
    소프트웨어 품질 성숙도 수준 평가 체계인 CMMi와 SPICE(ISO/IEC 15504)에 대한 비교설명으로 적절하지 않은 것은?
    1
    일반적인 품질 성숙도 수준은 CMMi는 5단계, SPICE는 6단계로 구분한다.
    2
    성숙도 평가 시 다양한 영역으로 나누어 측정한 후 SPICE는 하나의 레벨로 조직의 성숙도 등급을 도출하지만, CMMi는 프로세스 영역별로 조직의 역량을 구분하여 성숙도 등급을 도출한다.
    3
    CMMi는 현재의 소프트웨어 개발 프로세스 개선을 통해 조직의 품질 성숙도를 향상하고자 하는 목적이 강한 반면, SPICE는 소프트웨어 조직이 제품을 생산하는 역량을 스스로 평가하거나 계약 시 사업자 평가를 위한 목적으로 많이 활용된다.
    4
    조직 차원에서 프로세스가 최적화되어 프로젝트 목표를 만족하며, 지속적으로 프로세스 개선이 시도되고 성과가 관리된다면 CMMi와 SPICE 모두 품질 성숙도는 5등급으로 평가될 수 있다.
    해설

    적절하지 않은 설명은 CMMi와 SPICE의 등급 도출 방식을 서로 바꾸어 설명한 내용이다.

    단계적 표현의 CMMi는 프로세스 영역들을 묶어 조직 전체에 하나의 성숙도 레벨을 부여하고, SPICE는 프로세스별로 능력 수준을 각각 평가한다.

    • CMMi는 1~5의 5단계, SPICE는 0~5의 6단계로 구분하므로 맞다.
    • CMMi는 프로세스 개선 목적이 강하고 SPICE는 자체 역량 평가나 계약 시 공급자 평가에 많이 쓰이므로 맞다.
    • 프로세스가 최적화되고 지속적 개선이 이루어지는 수준은 두 모델 모두 5등급(최적화 단계)에 해당하므로 맞다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    23[경찰간부후보생 소프트웨어공학] 23년 1회차
    다음에서 설명하는 객체지향 개념으로 적절한 것은?
    가.특정 항목에 대한 정보를 외부에 감출 수 있고, 필요에 따라 보이게 할 수도 있는 정보은닉을 실현하는 장치이다.
    나.사용자에게 해당 객체의 기능(서비스)과 사용법만 제공해 사용하기 쉽게 하고 내부는 함부로 변경할 수 없게 감추는 개념이다.
    다.소프트웨어 내부인 객체 내부에 서로 관련된 데이터와 그 데이터를 조작할 수 있는 메서드를 같이 포장하는 방법으로 안에 포함된 메서드만을 사용해 데이터 값을 변경할 수 있게 한다.
    1
    모듈화
    2
    상속성
    3
    캡슐화
    4
    다형성
    해설

    설명하는 개념은 캡슐화이다.

    데이터와 이를 조작하는 메서드를 하나로 묶고, 외부에는 기능과 사용법만 공개하며 내부 데이터는 메서드를 통해서만 바꾸게 하는 것이 캡슐화이며, 이를 통해 정보은닉이 실현된다.

    • 모듈화는 시스템을 기능 단위의 모듈로 분할하는 설계 원리이다.
    • 상속성은 상위 클래스의 속성과 메서드를 하위 클래스가 물려받는 개념이다.
    • 다형성은 같은 메시지에 대해 객체마다 서로 다른 방식으로 응답하는 개념이다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    24[경찰간부후보생 소프트웨어공학] 23년 1회차
    다음에서 설명하는 소프트웨어 개발 방법론으로 적절한 것은?
    가.1980년대 4세대 언어로부터 진화되어 데이터 중심 응용 시스템 개발을 위해 사용되었다.
    나.데이터를 생성, 검색, 표시, 보고하는 데이터베이스 프로그래밍 언어, 인터페이스 생성기, 보고서 생성기 등의 도구를 이용한다.
    다.재사용이 가능한 프로그램 컴포넌트의 개발을 강조하며 빠른 개발을 위해 객체 기술을 효과적으로 활용한다.
    라.비즈니스 모델링, 데이터 모델링, 프로세스 모델링, 애플리케이션 생성, 테스팅과 인수인계 과정을 통해 수행한다.

    Level 3 Level 5
    1
    바 사 아
    2
    라 마 바
    3
    다 라 사
    4
    가 바 아 다 다 나 나 ①RAD(Rapid Application Development) 방법론 ②CBD(Component-Based Development) 방법론 ③Prototype 방법론 ④Spiral 방법론
    해설
    등록된 해설이 없습니다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    25[경찰간부후보생 소프트웨어공학] 23년 1회차
    소프트웨어 유지보수 활동에 대한 설명으로 적절하지 않은 것은?
    1
    소프트웨어 재공학(Reengineering)은 추상화된 정보를 얻기 위한 정공학(Forward engineering)과 새로운 요구사항에 맞춰 구현하는 역공학(Reverse engineering) 작업을 포함한다.
    2
    소프트웨어 재공학은 소프트웨어 시스템의 개선 차원에서 활용되며, 소프트웨어의 유지보수와 소프트웨어 개발의 선택 시점에서 적용된다.
    3
    역공학은 유지보수 향상에 도움을 주는 설계에 대한 충분한 이해를 목적으로 하며, 대상 시스템의 변경이 아닌 분석에 중점을 둔다.
    4
    소프트웨어의 리스트럭처링(Restructuring)은 비구조적인 코드를 구조적인 코드로 변환시키는 것으로 변경 부분, 변경 빈도, 자원 소프트웨어에 대한 의존도를 고려하여 수행한다.
    해설

    적절하지 않은 설명은 재공학에서 정공학과 역공학의 역할을 서로 바꾸어 설명한 내용이다.

    기존 시스템에서 추상화된 설계 정보를 추출하는 것이 역공학이고, 새로운 요구사항에 맞춰 다시 구현하는 것이 정공학이다.

    • 재공학은 기존 시스템을 개선하는 활동으로, 계속 유지보수할지 새로 개발할지 선택하는 시점에서 적용된다.
    • 역공학은 시스템을 변경하지 않고 분석해 설계를 이해하는 데 중점을 둔다.
    • 리스트럭처링은 비구조적 코드를 구조적 코드로 바꾸는 것으로, 변경 부분·빈도·의존도를 고려해 수행한다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    26[경찰간부후보생 소프트웨어공학] 23년 1회차
    소프트웨어 프로세스 성숙도 모델인 CMMi의 Level 3과 Level 5에 해당하는 단계별 프로세스가 적절하게 짝지어진 것은?
    가.요구사항 개발 (Requirements development)
    나.근본 원인 분석과 해결책
    (Causal analysis and resolution)
    다.프로세스 및 제품 품질 보증
    (Process and product quality assurance)
    라.공급업체 계약관리
    (Supplier agreement and management)
    마.정량적 프로젝트 관리
    (Quantitative project management)
    바.통합을 위한 조직의 환경
    (Organizational environment for integration)
    사. 요구사항 관리
    (Requirements management)
    아. 제품 통합
    (Product integration)

    Level 3 Level 5
    1
    바, 사, 아 다
    2
    라, 마, 바 다
    3
    다, 라, 사 나
    4
    가, 바, 아 나
    해설

    Level 3은 요구사항 개발·통합을 위한 조직의 환경·제품 통합, Level 5는 근본 원인 분석과 해결책으로 짝지은 것이 적절하다.

    CMMi에서 요구사항 관리·프로세스 및 제품 품질 보증·공급업체 계약관리는 Level 2(관리), 정량적 프로젝트 관리는 Level 4(정량적 관리), 근본 원인 분석과 해결책은 Level 5(최적화)의 프로세스 영역이다.

    • 통합을 위한 조직의 환경·요구사항 관리·제품 통합과 프로세스 및 제품 품질 보증의 조합은 Level 3 묶음에 Level 2 영역이 섞였고 Level 5 항목도 Level 2 영역이다.
    • 공급업체 계약관리·정량적 프로젝트 관리·통합을 위한 조직의 환경과 프로세스 및 제품 품질 보증의 조합은 Level 2·4 영역이 섞였고 Level 5 항목도 맞지 않다.
    • 프로세스 및 제품 품질 보증·공급업체 계약관리·요구사항 관리와 근본 원인 분석의 조합은 Level 5는 맞지만 Level 3 묶음이 모두 Level 2 영역이다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    27[경찰간부후보생 소프트웨어공학] 23년 1회차
    두 모듈이 정보를 교환할 때 레코드나 배열과 같은 자료구조를 구성하는 데이터 중 하나의 데이터만을 필요로 하지만 레코드나 배열 전체가 넘어오는 경우에 해당하는 결합(Coupling)으로 적절한 것은?
    1
    데이터 결합(Data coupling)
    2
    공통 결합(Common coupling)
    3
    스탬프 결합(Stamp coupling)
    4
    내용 결합(Content coupling)
    해설

    설명하는 결합은 스탬프 결합이다.

    스탬프 결합은 모듈 간에 레코드·배열 같은 자료구조 전체를 넘기는 결합으로, 일부 데이터만 필요해도 구조 전체가 전달되어 구조가 바뀌면 그 필드를 쓰지 않는 모듈까지 영향을 받는다.

    • 데이터 결합은 필요한 단순 데이터 값만 매개변수로 주고받는 가장 느슨한 결합이다.
    • 공통 결합은 여러 모듈이 전역 변수 같은 공통 데이터 영역을 함께 참조하는 결합이다.
    • 내용 결합은 한 모듈이 다른 모듈의 내부 데이터나 코드를 직접 참조·변경하는 가장 강한 결합이다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    28[경찰간부후보생 소프트웨어공학] 23년 1회차
    다음 코드 사례에 해당하는 코딩 오류로 가장 적절한 것은?
    char* f(int n)
    {
    char *op;
    if (n > 0)
    op = (char*) malloc(size);
    if (n == 1)
    return NULL;
    return(op);
    }
    1
    NULL의 사용
    2
    버퍼 오버플로(Overflow)
    3
    중복된 프리(Free) 선언
    4
    메모리 누수(Leak)
    해설

    해당 코드의 오류는 메모리 누수이다.

    n이 1이면 n > 0 조건으로 malloc이 먼저 실행되어 메모리가 할당되지만 곧바로 NULL을 반환하므로, 할당된 주소를 잃어 해제할 방법이 없는 메모리가 남는다.

    • NULL의 사용 오류는 NULL 포인터를 역참조하는 경우를 말하는데, 이 코드는 NULL을 반환할 뿐 역참조하지 않는다.
    • 버퍼 오버플로는 할당 크기를 넘어 쓰는 경우인데, 이 코드에는 버퍼에 쓰는 동작이 없다.
    • 중복된 프리는 같은 메모리를 두 번 해제하는 오류인데, 이 코드에는 free 호출 자체가 없다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    29[경찰간부후보생 소프트웨어공학] 23년 1회차
    호텔 예약 시스템을 개발할 때, 기능 요구사항으로 적절하지 않은 것은?
    1
    고객이 객실 타입, 숙박 인원 등 예약 관련 사항을 입력하고 수정할 수 있어야 한다.
    2
    호텔 직원이 고객의 예약정보를 등록하고, 조회하고, 수정할 수 있어야 한다.
    3
    시스템의 날짜 표기는 표준에 따라 YYYY-MM-DD 형식으로 제공해야 한다.
    4
    시스템 사용자 역할별로 정보의 범위를 명시해야 한다.
    해설

    기능 요구사항이 아닌 것은 날짜 표기를 YYYY-MM-DD 형식으로 제공하라는 내용이다.

    날짜 표기 형식은 시스템이 무엇을 하는지가 아니라 따라야 할 표준·형식에 관한 제약(비기능 요구사항)이다.

    • 고객이 예약 관련 사항을 입력·수정하는 것은 시스템이 제공해야 할 기능이다.
    • 호텔 직원이 예약정보를 등록·조회·수정하는 것도 시스템이 제공해야 할 기능이다.
    • 사용자 역할별 정보 범위를 명시하는 것은 역할에 따라 다룰 수 있는 정보를 정하는 기능 요구로 본다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    30[경찰간부후보생 소프트웨어공학] 23년 1회차
    DevOps 프로세스 단계별 수행 활동에 대한 설명 중 적절한 것은?
    1
    운영 및 모니터링 단계에서는 사용자의 경험과 반응을 추적하고, 개발척도의 달성 여부를 확인한다.
    2
    배포 단계에서는 애플리케이션에 대한 비즈니스 가치와 요구사항을 정의하고, 배포 척도의 조정과 배포 계획의 조정을 수행한다.
    3
    테스트 단계에서는 정의된 요구사항을 기반으로 소스 코드를 개발하며 개발자 입장에서의 단위테스트를 수행한다.
    4
    빌드 단계에서는 배포된 애플리케이션을 설치하는 과정에서 발생한 문제를 복구하고, 필요 시 스토리지, 데이터베이스, 네트워크 등의 인프라를 구축한다.
    해설

    적절한 설명은 운영 및 모니터링 단계에서 사용자 경험과 반응을 추적하고 척도 달성 여부를 확인한다는 내용이다.

    DevOps는 계획–코드–빌드–테스트–배포–운영–모니터링이 순환하며, 운영 중 수집한 피드백이 다음 계획으로 이어진다.

    • 비즈니스 가치와 요구사항 정의는 배포가 아니라 계획 단계의 활동이다.
    • 요구사항을 기반으로 소스 코드를 개발하고 단위테스트하는 것은 테스트가 아니라 코드(개발) 단계의 활동이다.
    • 배포된 애플리케이션의 설치 문제 복구와 인프라 구축은 빌드가 아니라 배포·운영 단계의 활동이다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    31[경찰간부후보생 소프트웨어공학] 23년 1회차
    아래 제시된 제어 흐름 그래프에서 McCabe의 순환 복잡도는?

    문제 이미지
    1
    3
    2
    4
    3
    5
    4
    6
    해설

    이 그래프의 순환 복잡도는 5이다.

    순환 복잡도는 간선 수 − 노드 수 + 2로 구한다. 노드는 0부터 9까지 10개, 간선은 13개이다.
    V(G)=E−N+2=13−10+2=5V(G)=E-N+2=13-10+2=5

    분기 노드로 검산해도 같다. 노드 1은 4갈래(분기 3), 노드 2는 2갈래(분기 1)이므로 3+1+1=53+1+1=5이다.

    • 3: 노드 1의 갈래를 분기 하나로만 세는 등 분기 수를 적게 센 값이다.
    • 4: 노드 2의 분기를 빠뜨린 값이다.
    • 6: 간선이나 분기를 하나 더 센 값이다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    32[경찰간부후보생 소프트웨어공학] 23년 1회차
    리팩토링이 필요하다고 판단되는 의심나는 상황 또는 증표를 부르는 용어는?
    1
    두 개의 모자
    2
    코드의 나쁜 냄새
    3
    F.I.R.S.T
    4
    TDD(Test Driven Development)
    해설

    리팩토링이 필요한 징후를 가리키는 용어는 코드의 나쁜 냄새(code smell)이다.

    중복 코드, 긴 메서드, 거대한 클래스처럼 당장 오류는 아니지만 구조 개선이 필요함을 알려 주는 징후를 나쁜 냄새라 부른다.

    • 두 개의 모자는 기능 추가와 리팩토링을 동시에 하지 말고 번갈아 하라는 작업 방식의 비유이다.
    • F.I.R.S.T는 단위 테스트가 갖춰야 할 성질(빠름·독립·반복 가능·자가 검증·적시)을 뜻한다.
    • TDD는 테스트를 먼저 작성하고 이를 통과하는 코드를 구현하는 개발 방식이다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    33[경찰간부후보생 소프트웨어공학] 23년 1회차
    다음의 내용을 자료 사전으로 적절하게 표현한 것은?
    학생정보는 ID, 성명, 성별, 생년월일, 나이로 구성되며, 생년월일과 나이는 둘 중 하나만 선택 가능하고, 성별은 생략할 수 있다.
    1
    학생정보=ID+성명+(성별)+[생년월일|나이]
    2
    학생정보=ID+성명+{성별}+[생년월일|나이]
    3
    학생정보=ID+성명+(성별)+{생년월일|나이}
    4
    학생정보=ID+성명+{성별}+{생년월일|나이}
    해설

    적절한 표현은 학생정보=ID+성명+(성별)+[생년월일|나이]이다.

    자료 사전에서 ( )는 생략 가능, [ | ]는 여러 항목 중 하나 선택, { }는 반복을 뜻하므로 성별은 ( ), 생년월일과 나이는 [ | ]로 표현한다.

    • 성별을 { }로 표현하면 생략이 아니라 반복이 되어 맞지 않다.
    • 생년월일|나이를 { }로 묶으면 택일이 아니라 반복이 되어 맞지 않다.
    • 성별과 생년월일|나이를 모두 { }로 표현하면 두 부분 모두 반복이 되어 맞지 않다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    34[경찰간부후보생 소프트웨어공학] 23년 1회차
    데이터 추상화에 대한 설명으로 적절하지 않은 것은?
    1
    데이터와 함께 데이터에 대한 조작도 함께 정의한다.
    2
    시스템의 복잡성을 줄이는 데 도움이 된다.
    3
    서비스를 제공하는 객체의 집합으로 소프트웨어 시스템을 바라본다.
    4
    함수 내부에 대한 상세 정보 없이 호출 방법과 무엇을 수행하는지에 집중한다.
    해설

    데이터 추상화에 대한 설명이 아닌 것은 함수 내부 상세 없이 호출 방법과 수행 내용에 집중한다는 기능(절차) 추상화에 관한 설명이다.

    데이터 추상화는 데이터 구조와 그 데이터에 대한 연산을 함께 정의하고 내부 표현을 감추는 것으로, 추상 자료형과 객체의 기초가 된다.

    • 데이터와 조작을 함께 정의하는 것은 데이터 추상화의 핵심이다.
    • 세부 표현을 감춰 시스템의 복잡성을 줄이는 것은 데이터 추상화의 효과이다.
    • 서비스를 제공하는 객체의 집합으로 시스템을 보는 것은 데이터 추상화에 기반한 객체지향 관점이다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    35[경찰간부후보생 소프트웨어공학] 23년 1회차
    화이트 박스 테스트 기법으로 적절하지 않은 것은?
    1
    분기 커버리지(Branch coverage) 기법
    2
    기본 경로 테스트(Basis Path Test) 기법
    3
    MC/DC(Modified Condition/Decision Coverage) 기법
    4
    도메인 테스트(Domain Test) 기법
    해설

    화이트 박스 테스트 기법이 아닌 것은 도메인 테스트이다.

    도메인 테스트는 입력 영역을 구간으로 나누고 그 경계를 점검하는 블랙박스 계열 기법으로, 내부 코드 구조가 아니라 명세된 입력 범위를 기준으로 한다.

    • 분기 커버리지는 코드의 모든 분기가 참·거짓을 한 번 이상 수행하도록 하는 화이트박스 기법이다.
    • 기본 경로 테스트는 순환 복잡도만큼의 독립 경로를 수행하는 화이트박스 기법이다.
    • MC/DC는 각 조건이 결정 결과에 독립적으로 영향을 주는지 확인하는 화이트박스 커버리지 기법이다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    36[경찰간부후보생 소프트웨어공학] 23년 1회차
    프로그램에 결함이 있어도 오작동이 늘 일어나는 것은 아니다. 결함이 오작동으로 이어지기 위한 조건이 아닌 것은?
    1
    도달성 조건(Reachability condition)
    2
    분할 조건(Partitioning condition)
    3
    감염 조건(Infection condition)
    4
    오차 전파 조건(Error propagation condition)
    해설

    결함이 오작동으로 이어지기 위한 조건이 아닌 것은 분할 조건이다.

    결함이 실패로 드러나려면 결함 위치가 실행되고(도달), 프로그램 상태가 잘못 바뀌고(감염), 그 오류가 출력까지 전달되어야(전파) 하며, 이를 RIP 모델이라 한다.

    • 도달성 조건은 결함이 있는 문장이 실제로 실행되어야 한다는 조건이다.
    • 감염 조건은 결함 실행으로 프로그램의 내부 상태가 잘못되어야 한다는 조건이다.
    • 오차 전파 조건은 잘못된 상태가 외부에서 관찰 가능한 출력까지 전달되어야 한다는 조건이다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    37[경찰간부후보생 소프트웨어공학] 23년 1회차
    객체지향 방법에 따른 개발 순서가 적절한 것은?
    가. 클래스 단위로 테스트한다.
    나. 릴리즈하여 운영중인 시스템으로 통합한다.
    다. 코딩 표준을 작성한다.
    라. 클래스 구현이 끝나면 인스펙션(Inspection)을 수행한다.
    마. 요구사항과 상세 설계를 반영하여 메서드를 코딩한다.
    1
    가–나–다–라-마
    2
    마–라–다–가- 나
    3
    마–라–다 –나-가
    4
    다–마–라–가-나
    해설

    적절한 순서는 코딩 표준 작성 → 메서드 코딩 → 인스펙션 → 클래스 단위 테스트 → 운영 시스템 통합이다.

    구현 전에 코딩 표준을 정하고, 설계를 반영해 코딩한 뒤 정적 검토인 인스펙션으로 결함을 걸러내고, 클래스 테스트를 거쳐 마지막에 릴리즈·통합한다.

    • 테스트–통합–코딩 표준 작성–인스펙션–코딩 순서는 구현하기도 전에 테스트와 통합을 하는 셈이 되어 맞지 않다.
    • 코딩–인스펙션–코딩 표준 작성–테스트–통합 순서는 코딩 표준을 코딩 이후에 작성해 맞지 않다.
    • 코딩–인스펙션–코딩 표준 작성–통합–테스트 순서는 코딩 표준이 늦고 클래스 테스트 전에 운영 시스템에 통합해 맞지 않다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    38[경찰간부후보생 소프트웨어공학] 23년 1회차
    아래 그림은 소프트웨어 구성 요소인 모듈의 계층적 구성을 나타내는 프로그램 구조도이다. 팬인(Fan–in)과 팬아웃(Fan–out)의 차이가 1인 모듈의 전체 개수는? (단, 화살표는 모듈 간 호출을 나타낸다.)

    문제 이미지
    1
    2
    2
    3
    3
    4
    4
    5
    해설

    팬인과 팬아웃의 차이가 1인 모듈은 C, D, G, H의 4개이다.

    팬인은 해당 모듈을 호출하는 상위 모듈 수, 팬아웃은 해당 모듈이 호출하는 하위 모듈 수이다. 화살표를 따라 각 모듈을 세면 다음과 같다.

    모듈팬인팬아웃차이
    A044
    B110
    C121
    D121
    E110
    F220
    G211
    H211
    I202
    J312
    • 2개: C, D처럼 팬아웃이 팬인보다 많은 모듈만 세고, 팬인이 더 많은 G, H를 빠뜨린 값이다.
    • 3개: 차이가 1인 C, D, G, H 중 하나를 빠뜨린 값이다.
    • 5개: J → I 호출을 놓치면 I의 팬인이 1로 줄어 차이 1이 되므로 I까지 함께 세게 된다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    39[경찰간부후보생 소프트웨어공학] 23년 1회차
    다음에서 설명하는 디자인 패턴으로 적절한 것은?
    가.하위 클래스로 객체 생성에 대한 책임을 위임하고 하위 클래스의 정보를 은닉하고자 할 때 사용한다.
    나.객체를 만들기 위한 인터페이스를 정의하되, 하위 클래스가 인스턴스를 생성하는 클래스를 결정하도록 한다.
    다.생성해야 할 객체를 명세하는 하위 클래스가 필요한 경우에 사용한다.
    1
    Adapter패턴
    2
    Facade 패턴
    3
    Factory method패턴
    4
    Decorator 패턴
    해설

    설명하는 패턴은 Factory method 패턴이다.

    객체 생성용 인터페이스는 상위 클래스가 정의하고, 어떤 클래스의 인스턴스를 만들지는 하위 클래스가 결정하도록 생성 책임을 위임하는 생성 패턴이다.

    • Adapter 패턴은 호환되지 않는 인터페이스를 변환해 함께 동작하게 하는 구조 패턴이다.
    • Facade 패턴은 복잡한 하위 시스템에 단순한 통합 인터페이스를 제공하는 구조 패턴이다.
    • Decorator 패턴은 객체에 기능을 동적으로 덧붙이는 구조 패턴이다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.
    40[경찰간부후보생 소프트웨어공학] 23년 1회차
    다음에서 설명하는 소프트웨어 테스트 방법으로 적절한 것은?
    가.변경된 소프트웨어 컴포넌트에 중점을 둔 테스트로, 변경으로 인하여 영향을 받게 될 소프트웨어의 기능에 초점을 맞춰 변경이 추가 오류를 가져오지 않는다는 것을 보장하는 활동이다.
    나.특수하고 중요한 기능을 가지는 최소 모듈 집합을 먼저 구현하고 보조적인 기능의 모듈은 나중에 구현하여 테스트한 후 계속 추가한다.

    가 나
    1
    회귀(Regression) Test 스모크(Smoke) Test
    2
    회귀(Regression) Test 연쇄식(Threads) 통합 Test
    3
    백투백(Back-to-back) Test 스모크(Smoke) Test
    4
    백투백(Back-to-back) Test 연쇄식(Threads) 통합 Test
    해설

    가는 회귀 테스트, 나는 연쇄식(Threads) 통합 테스트이다.

    회귀 테스트는 변경된 부분과 그 영향 범위를 다시 시험해 변경이 새 오류를 만들지 않았음을 확인하고, 연쇄식 통합은 핵심 기능을 수행하는 최소 모듈 집합을 먼저 구현·통합한 뒤 보조 모듈을 차례로 덧붙인다.

    • 회귀 테스트와 스모크 테스트의 조합은 스모크 테스트가 빌드 직후 기본 동작만 빠르게 확인하는 테스트라서 나의 설명과 맞지 않다.
    • 백투백 테스트와 스모크 테스트의 조합은 백투백이 여러 버전에 같은 입력을 주고 결과를 비교하는 테스트라서 가와 맞지 않고, 나도 맞지 않다.
    • 백투백 테스트와 연쇄식 통합 테스트의 조합은 나는 맞지만 가의 변경 영향 확인 활동이 백투백 테스트가 아니라서 맞지 않다.

    오류나 개정된 내용이 보이면 알려주세요

    메모
    아직 메모가 없어요. 위 버튼으로 첫 메모를 남겨보세요.

[경찰간부후보생 소프트웨어공학] 23년 1회차 시험지 PDF 다운로드·인쇄 →

[경찰간부후보생 소프트웨어공학] 23년 1회차 정답과 해설은 무료인가요?

이 페이지의 40문항 정답과 해설은 로그인 없이 무료로 볼 수 있습니다. 무제한 풀이·실전 모의고사·PDF 출력·전자책 다운로드는 베이직 플랜에 포함됩니다.

이 회차를 CBT 로 직접 풀어볼 수 있나요?

경찰간부후보생 소프트웨어공학 기출문제 암기장에서 이 회차를 회차별·랜덤으로 풀고 오답노트에 자동으로 모을 수 있습니다. 경찰간부후보생 소프트웨어공학 기출문제 풀러 가기 →

시험지 PDF 나 전자책으로도 볼 수 있나요?

이 회차의 인쇄용 시험지 PDF 페이지에서 시험지를 받을 수 있습니다. 시험지 PDF 받기 →

[경찰간부후보생 소프트웨어공학] 23년 1회차 문항별 상세 페이지 전체 보기