소프트웨어 개발 · 오답노트
2025년 1회
소스 코드 품질 분석 도구 중 정적 분석 도구가 아닌 것은?
핵심 해설
소스 코드 품질 분석 도구는 프로그램을 실행하지 않고 코드 자체를 검사하는 정적 분석 도구와, 프로그램을 실행하면서 메모리 누수·성능을 측정하는 동적 분석 도구로 나뉜다. 정적 분석 도구의 대표는 pmd, cppcheck, checkstyle, SonarQube, ccm, cobertura이며, 동적 분석 도구에는 Avalanche, Valgrind가 있다. 정적 분석은 코딩 표준 위반, 잠재적 널 참조, 사용되지 않는 변수처럼 실행 전에 드러나는 결함을 잡아낸다. 보기 중 valMeter는 이러한 도구 목록에 존재하지 않는 명칭이므로 정적 분석 도구가 아니다.
보기별 해설
정리
White Box Testing에 대한 설명으로 옳지 않은 것은?
핵심 해설
화이트박스 테스트(White Box Testing)는 프로그램 내부의 소스 코드와 제어 구조를 직접 들여다보고 논리적 경로를 점검하는 구조 기반 기법이다. 대표 기법은 기초 경로 검사(Base Path Testing), 조건 검사, 루프 검사, 데이터 흐름 검사이며, 검증 기준으로 문장·분기·조건 커버리지를 사용한다. 반면 경계값 분석(Boundary Value Analysis)은 입력 조건의 경계 부근 값을 테스트 데이터로 삼는 기법으로, 내부 구조를 보지 않고 명세만으로 케이스를 설계하는 블랙박스 테스트에 속한다. 따라서 두 기법을 함께 화이트박스의 대표 기법으로 묶은 1번이 옳지 않다.
보기별 해설
정리
소프트웨어 테스트에서 오류의 80%는 전체 모듈의 20% 내에서 발견된다는 법칙은?
핵심 해설
소프트웨어 테스트의 기본 원리 중 결함 집중(Defect Clustering)은 전체 결함의 대부분이 소수의 모듈에 몰려 있다는 경험적 사실을 말하며, 흔히 '오류의 80%는 전체 모듈의 20%에서 발견된다'로 표현된다. 이는 이탈리아 경제학자 파레토가 발견한 80대 20 법칙을 소프트웨어 품질에 적용한 것이므로 Pareto의 법칙이라 부른다. 결함이 몰린 모듈을 집중적으로 테스트하면 효율이 크게 오르지만, 같은 테스트만 반복하면 새 결함이 나오지 않는 살충제 패러독스에 유의해야 한다.
보기별 해설
정리
다음 트리의 차수(degree)는?
핵심 해설
트리의 차수(degree)는 트리에 속한 모든 노드의 차수 중 가장 큰 값을 말하며, 각 노드의 차수는 그 노드가 가진 자식(서브트리)의 개수이다. 즉 어떤 노드도 자식을 3개보다 많이 갖지 않고 자식이 3개인 노드가 최소 하나 존재하면 그 트리의 차수는 3이 된다. 정답이 3이므로 제시된 트리에는 자식이 3개인 노드가 있고 그보다 많은 자식을 가진 노드는 없다. 여기서 트리의 높이(레벨 수)나 단말 노드 수와 혼동하지 않는 것이 중요하다.
보기별 해설
정리
디지털 저작권 관리(DRM) 기술과 거리가 먼 것은?
핵심 해설
디지털 저작권 관리(DRM)는 디지털 콘텐츠의 생성부터 유통·사용까지 전 과정에서 저작권을 보호하고 이용 권한을 통제하는 기술이다. 기술 요소로는 콘텐츠 암호화 및 키 관리, 암호화 파일 생성(패키저), 콘텐츠 식별체계(DOI·URI), 저작권 표현(XrML 등 권리 표현 언어), 정책 관리, 라이선스 발급·관리, 크랙 방지(Tamper Resistance), 인증(Authentication)이 있다. 반면 오류 감지 및 복구는 전송 중 손상된 데이터를 검출·정정하는 데이터 통신·저장 신뢰성 기술로, 패리티 검사·CRC·해밍 코드가 이에 속한다. 권한 통제와 무관하므로 DRM 기술 요소가 아니다.
보기별 해설
정리
다음 자료에 대하여 “Selection Sort”를 사용하여 오름차순으로 정렬한 경우 PASS 3의 결과는? 초기상태 : 8, 3, 4, 9, 7
핵심 해설
선택 정렬(Selection Sort)은 아직 정렬되지 않은 구간에서 최솟값을 찾아 그 구간의 맨 앞 원소와 교환하는 과정을 반복하며, PASS k가 끝나면 앞쪽 k개가 작은 값부터 확정된다. 초기 상태 8, 3, 4, 9, 7에서 PASS 1은 전체 최솟값 3을 찾아 첫 자리 8과 교환해 3, 8, 4, 9, 7이 된다. PASS 2는 2번째 자리부터의 최솟값 4를 찾아 8과 교환해 3, 4, 8, 9, 7이 되고, PASS 3은 3번째 자리부터의 최솟값 7을 찾아 8과 교환해 3, 4, 7, 9, 8이 된다. 따라서 PASS 3의 결과는 3, 4, 7, 9, 8이다.
보기별 해설
정리
소프트웨어 공학의 기본 원칙이라고 볼 수 없는 것은?
핵심 해설
소프트웨어 공학의 기본 원칙은 첫째 품질 높은 소프트웨어 상품을 개발하는 것, 둘째 개발 과정 전반에 걸쳐 지속적인 검증을 시행하는 것, 셋째 결과에 대한 명확한 기록을 유지하는 것 세 가지이다. 이는 최소 비용으로 최단 기간에 최상의 품질을 얻기 위한 공학적 접근을 압축한 것이다. 반면 인력을 많이 투입한다고 생산성이 비례해 오르지는 않으며, 오히려 의사소통 경로가 늘어 지연을 유발한다는 것이 브룩스의 법칙이다. 따라서 최대한 많은 인력 투입은 기본 원칙이 아니다.
보기별 해설
정리
빌드 자동화 도구에 대한 설명으로 틀린 것은?
핵심 해설
빌드 자동화 도구는 소스 코드의 컴파일·테스트·패키징·배포를 자동으로 수행하는 도구로 Ant, Maven, Gradle, Jenkins가 대표적이며, 지속적 통합(CI) 환경의 핵심 요소이다. 이 중 Gradle은 Groovy 기반의 오픈 소스 빌드 도구로 안드로이드 앱 개발의 공식 빌드 시스템으로 채택되어 있다. Jenkins는 Java 기반의 서버형 CI 도구로, 여러 개발자의 커밋을 모아 주기적으로 빌드·테스트를 실행하고 결과를 알려주는 역할을 한다. 따라서 Jenkins에 Gradle의 설명을 붙인 4번이 틀렸다.
보기별 해설
정리
소프트웨어 형상 관리에서 관리 항목에 포함되지 않는 것은?
핵심 해설
소프트웨어 형상 관리(SCM)는 개발 과정에서 산출되는 결과물의 변경 사항을 체계적으로 관리해 가시성과 추적성을 확보하는 활동이다. 관리 대상인 형상 항목(Configuration Item)은 개발 과정에서 생성되어 버전이 바뀌며 유지되는 산출물, 즉 프로젝트 요구 분석서, 설계서, 소스 코드, 운영 및 설치 지침서, 테스트 케이스 같은 문서와 코드이다. 반면 개발 비용은 프로젝트 관리·비용 산정 영역에서 다루는 관리 지표일 뿐 버전 관리 대상 산출물이 아니다. 따라서 형상 관리 항목에 포함되지 않는 것은 프로젝트 개발 비용이다.
보기별 해설
정리
EAI(Enterprise Application Integration) 구축 유형 중 Hybrid에 대한 설명으로 틀린 것은?
핵심 해설
EAI(Enterprise Application Integration)는 기업 내 서로 다른 응용 프로그램을 연계·통합하는 솔루션으로, 구축 유형은 Point-to-Point, Hub & Spoke, Message Bus(ESB), Hybrid 네 가지이다. Hybrid는 그룹 내부는 Hub & Spoke로, 그룹 사이는 Message Bus로 연결하는 혼합 방식이어서 필요에 따라 한 가지 방식만으로도 구현할 수 있고 데이터 병목 현상을 줄일 수 있다. 반면 미들웨어를 두지 않고 애플리케이션을 1대1로 직접 연결하는 것은 가장 단순한 유형인 Point-to-Point의 설명이다. 따라서 Hybrid에 대한 설명으로 틀린 것은 4번이다.
보기별 해설
정리
자료 구조에 대한 설명으로 틀린 것은?
핵심 해설
자료 구조는 원소들이 일렬로 나열되는 선형 구조와 계층·망 형태로 연결되는 비선형 구조로 나뉜다. 선형 구조에는 배열, 연결 리스트, 스택, 큐, 데크가 속하고, 비선형 구조에는 트리와 그래프가 속한다. 큐는 뒤쪽 rear에서 삽입(enqueue)하고 앞쪽 front에서 삭제(dequeue)하는 FIFO 방식의 선형 구조로, 원소가 한 줄로 늘어서 있으며 계층 관계를 갖지 않는다. 따라서 큐를 비선형 구조라고 한 1번이 틀린 설명이다.
보기별 해설
정리
그래프의 특수한 형태로 노드(Node)와 선분(Branch)으로 되어 있고, 정점 사이에 사이클(Cycle)이 형성되어 있지 않으며자료, 사이의 관계성이 계층 형식으로 나타나는 비선형 구조는?
핵심 해설
문제의 설명은 노드(Node)와 선분(Branch)으로 구성되고, 사이클이 없으며, 자료 사이의 관계가 부모-자식의 계층 형식으로 나타나는 비선형 구조를 가리킨다. 이 조건을 모두 만족하는 자료 구조가 트리(Tree)이며, 트리는 사이클이 없는 연결 그래프라는 점에서 그래프의 특수한 형태로 정의된다. 하나의 루트(Root)에서 출발해 각 노드가 여러 자식을 가질 수 있고, 노드가 n개면 간선은 항상 n-1개이다. 따라서 답은 tree이다.
보기별 해설
정리
테스트와 디버그의 목적으로 옳은 것은?
핵심 해설
테스트(Test)와 디버깅(Debugging)은 목적이 명확히 구분된다. 테스트는 프로그램에 결함이 존재하는지 확인하기 위해 계획된 입력을 넣고 기대 결과와 실제 결과를 비교하는 활동으로, 오류의 '존재를 드러내는' 것이 목적이다. 디버깅은 테스트로 드러난 오류의 원인이 되는 코드 위치를 찾아 실제로 수정하는 활동이다. 즉 테스트가 결함을 발견하고 디버깅이 그 결함을 제거하므로, 옳은 설명은 3번이다.
보기별 해설
정리
인터페이스 구현 검증 도구가 아닌 것은?
핵심 해설
인터페이스 구현 검증 도구는 모듈 간 인터페이스가 명세대로 동작하는지 자동으로 시험하는 테스트 자동화 도구이며, 대표적으로 xUnit, STAF, FitNesse, NTAF, Selenium, watir가 있다. xUnit은 다양한 언어를 지원하는 단위 테스트 프레임워크, STAF는 분산 환경에서 서비스 호출과 컴포넌트 재사용을 지원하는 테스트 프레임워크, watir은 Ruby 기반의 웹 애플리케이션 테스트 도구이다. 반면 Foxbase는 1980~90년대에 쓰이던 dBase 계열의 DBMS 제품으로 테스트와는 무관하다. 따라서 인터페이스 구현 검증 도구가 아닌 것은 Foxbase이다.
보기별 해설
정리
소프트웨어 패키징에 대한 설명으로 틀린 것은?
핵심 해설
소프트웨어 패키징은 개발이 완료된 모듈을 사용자가 설치·사용할 수 있는 배포 단위로 묶는 작업이다. 패키징의 가장 중요한 원칙은 개발자가 아니라 사용자 중심으로 진행한다는 것으로, 사용자의 실행 환경을 미리 파악해 그에 맞는 배포본을 만들고 설치·삭제·업데이트가 쉽도록 구성해야 한다. 또한 신규·변경 소스를 식별해 모듈화하고, 범용 환경에서 쓸 수 있는 일반적 배포 형태를 취하며, 매뉴얼과 버전 관리를 지속해야 한다. 따라서 개발자 중심으로 진행한다는 1번이 틀렸다.
보기별 해설
정리
소프트웨어 품질 목표 중 하나 이상의 하드웨어 환경에서 운용되기 위해 쉽게 수정될 수 있는 시스템 능력을 의미하는 것은?
핵심 해설
소프트웨어 품질 목표(McCall의 품질 요인)에서 이식성(Portability)은 하나 이상의 하드웨어 환경이나 운영체제에서 운용될 수 있도록 소프트웨어를 쉽게 수정할 수 있는 능력을 뜻한다. 즉 다른 플랫폼으로 옮길 때 드는 수정 노력이 적을수록 이식성이 높다. 다른 품질 목표로는 정확성(요구 기능 충족), 효율성(자원 사용 대비 성능), 사용 용이성, 신뢰성, 무결성, 유지보수성, 시험 역량, 유연성, 재사용성, 상호 운용성이 있다. 문제의 정의에 해당하는 것은 Portability이다.
보기별 해설
정리
개별 모듈을 시험하는 것으로모듈이, 정확하게 구현되었는지, 예정한 기능이 제대로 수행되는지를 점검하는 것이 주목적인 테스트 는?
핵심 해설
테스트 레벨은 개발 단계에 따라 단위 → 통합 → 시스템 → 인수 순으로 구성된다. 단위 테스트(Unit Test)는 코딩 직후 모듈이나 컴포넌트 하나를 독립적으로 실행해 그것이 명세대로 정확히 구현되었는지, 예정한 기능을 제대로 수행하는지를 점검하는 테스트이다. 인터페이스, 자료 구조, 독립적 경로, 오류 처리 경로, 경계 조건이 주요 확인 대상이며 구조 기반(화이트박스) 테스트가 중심이 된다. 개별 모듈이 대상이라고 명시했으므로 답은 단위 테스트이다.
보기별 해설
정리
소프트웨어 테스트에서 검증(Verification)과 확인(Validation)에 대 한 설명으로 틀린 것은?
핵심 해설
검증(Verification)과 확인(Validation)은 관점이 다르다. 검증은 '제품을 올바르게 만들고 있는가'를 보는 개발자 관점으로, 개발 과정의 산출물이 명세된 기능·비기능 요구사항을 제대로 준수하는지 측정한다. 확인은 '올바른 제품을 만들었는가'를 보는 사용자 관점으로, 완성된 결과물이 실제 사용자의 요구와 기대에 적합한지를 측정한다. 4번은 검증을 사용자 요구 적합성, 확인을 개발자 기대 충족으로 서술해 두 관점을 정반대로 바꿔 놓았으므로 틀렸다.
보기별 해설
정리
테스트를 목적에 따라 분류했을 때강도, (Stress) 테스트에 대한 설명으로 옳은 것은?
핵심 해설
목적에 따른 테스트 분류에서 강도(Stress) 테스트는 시스템에 정상 범위를 크게 넘는 정보량이나 부하를 일부러 걸어, 과부하 상황에서도 시스템이 정상적으로 작동하는지와 어느 지점에서 무너지는지를 확인하는 테스트이다. 이는 시스템의 한계 용량을 파악해 용량 산정과 장애 대비의 근거로 삼기 위한 것이다. 나머지 보기는 회복 테스트, 성능 테스트, 보안 테스트의 설명이므로 강도 테스트에 해당하는 것은 2번이다.
보기별 해설
정리
프로그램 설계도의 하나인 NS Chart에 대한 설명으로 가장 거리가 먼 것은?
핵심 해설
NS Chart(Nassi-Schneiderman Chart)는 논리 기술에 중점을 두고 도형으로 프로그램 논리를 표현하는 설계 도구로, 박스 다이어그램 또는 구조적 순서도라고도 한다. 연속·선택·다중 선택·반복이라는 구조적 프로그래밍의 제어 구조를 상자 모양으로만 표현하며, 상자 안에 논리가 계층적으로 중첩되므로 이해하기 쉽고 코드 변환이 용이하다. 가장 큰 특징은 화살표나 GOTO를 사용하지 않는다는 점으로, 이 때문에 임의의 분기가 원천적으로 불가능하고 구조적 프로그래밍이 강제된다. 따라서 화살표나 GOTO를 사용한다고 서술한 3번이 가장 거리가 멀다.