소프트웨어 개발 · 오답노트
2025년 3회
ISO/IEC 9126의 소프트웨어 품질 특성 중 기능성(Functionality)의 하위 특성으로 옳지 않은 것은?
핵심 해설
ISO/IEC 9126은 소프트웨어 품질을 기능성(Functionality), 신뢰성(Reliability), 사용성(Usability), 효율성(Efficiency), 유지보수성(Maintainability), 이식성(Portability) 여섯 가지 특성으로 규정한 국제 표준이다. 이 중 기능성은 요구된 기능을 정확히 제공하는가에 관한 특성으로 하위 특성은 적합성(Suitability), 정확성(Accuracy), 상호운용성(Interoperability), 보안성(Security), 준수성(Compliance)이다. 학습성(Learnability)은 사용자가 소프트웨어의 사용법을 얼마나 쉽게 익히는가를 나타내므로 사용성(Usability)의 하위 특성이다. 따라서 기능성의 하위 특성이 아닌 것은 학습성이다.
보기별 해설
정리
SW 패키징 도구 활용 시 고려사항과 거리가 먼 것은?
핵심 해설
소프트웨어 패키징 도구는 개발이 끝난 모듈을 사용자가 설치·실행할 수 있는 배포 단위로 묶으면서 콘텐츠 암호화와 DRM을 함께 적용하는 도구이다. 활용 시 고려 사항은 내부 콘텐츠에 대한 암호화와 보안, 제품 특성에 맞는 암호화 알고리즘 적용, 사용자 편의성을 해치는 복잡성·비효율성 제거, 그리고 다양한 이기종 환경에서 연동될 수 있도록 하는 호환성 확보이다. 사용자의 운영체제와 기기가 제각각이므로 이기종 지원은 필수 요건이며, 특정 기종에서만 동작하도록 제한하는 것은 오히려 배포 목적을 훼손한다. 따라서 거리가 먼 것은 단일 기종 전용으로 만들라는 3번이다.
보기별 해설
정리
하향식 통합에 있어서 모듈 간의 통합 시험을 위해 일시적으로 필요한 조건만을 가지고 임시로 제공되는 시험용 모듈을 무엇이라고 하는가?
핵심 해설
통합 테스트에서는 아직 개발되지 않은 모듈을 대신할 가상 모듈이 필요하며, 이를 테스트 하네스(Test Harness)라 한다. 하향식 통합은 상위 모듈부터 아래로 내려가며 결합하므로 아직 없는 하위 모듈 자리를 채울 가짜 모듈이 필요한데, 이것이 스텁(Stub)이다. 스텁은 실제 로직 없이 호출을 받으면 미리 정해 둔 값만 되돌려 주는 최소한의 임시 모듈이다. 반대로 상향식 통합에서는 아직 없는 상위 모듈 대신 하위 모듈을 호출해 주는 드라이버(Driver)를 사용한다. 따라서 하향식 통합에서 임시로 제공되는 시험용 모듈은 Stub이다.
보기별 해설
정리
소프트웨어 재공학이 소프트웨어의 재개발에 비해 갖는 장점으로 거리가 먼 것은?
핵심 해설
소프트웨어 재공학(Re-engineering)은 기존에 운영 중인 소프트웨어를 분석(Analysis)·재구성(Restructuring)·역공학(Reverse Engineering)·이식(Migration) 과정을 거쳐 재활용하는 유지보수 기법이다. 이미 검증된 자산을 그대로 살려 쓰기 때문에 처음부터 새로 만드는 재개발에 비해 개발 비용과 기간이 줄고, 기존 시스템에 이미 반영된 업무 규칙을 그대로 쓰므로 명세 오류와 실패 위험도 낮아진다. 즉 재공학의 장점은 비용 절감, 개발 기간 단축, 위험 부담 감소, 시스템 명세 오류 억제, 품질 향상 등이다. 개발 시간이 늘어난다는 것은 장점이 아니라 재개발 대비 이점을 정반대로 서술한 것이므로 거리가 멀다.
보기별 해설
정리
제품 소프트웨어의 형상 관리 역할로 틀린 것은?
핵심 해설
소프트웨어 형상 관리(SCM)는 개발 과정에서 산출되는 소스 코드와 문서 등의 변경 사항을 식별·통제·감사·기록해 가시성과 추적성을 확보하는 활동이다. 역할은 이전 리비전·버전 정보에 접근해 배포본을 관리하고, 승인되지 않은 임의의 소스 수정을 제한하며, 여러 개발자가 동일 프로젝트에서 동시에 작업할 수 있게 하고, 변경 이력으로 오류 원인을 추적하는 것이다. 반면 개발비용을 산정하고 예산을 배분·집행하는 것은 프로젝트 관리(비용 관리)의 영역으로, 형상 관리의 역할이 아니다. 따라서 틀린 것은 3번이다.
보기별 해설
정리
제어흐름 그래프가 다음과 같을 때 McCabe의 cyclomatic 수는 얼마인가?
핵심 해설
McCabe의 순환 복잡도(Cyclomatic Complexity)는 제어 흐름 그래프에서 V(G) = E − N + 2로 계산한다(E는 간선 수, N은 노드 수). 같은 값을 '그래프가 나누는 영역(region)의 개수'로 세거나, 조건문·반복문 같은 분기점의 개수에 1을 더해 구할 수도 있다. 정답이 4라는 것은 이 그래프가 간선 수 − 노드 수 = 2인 형태, 예를 들어 노드 6개에 간선 8개(8 − 6 + 2 = 4)이거나 분기 노드가 3개인 구조임을 뜻한다. 순환 복잡도 4는 모든 경로를 덮는 데 필요한 독립 경로가 4개, 즉 기초 경로 검사에서 최소 4개의 테스트 케이스가 필요함을 의미한다.
보기별 해설
정리
디지털 저작권 관리(DRM) 기술과 거리가 먼 것은?
핵심 해설
디지털 저작권 관리(DRM)는 디지털 콘텐츠의 생성부터 유통·사용까지 전 과정에서 저작권을 보호하고 이용 권한을 통제하는 기술이다. 기술 요소로는 콘텐츠 암호화 및 키 관리, 암호화 파일 생성(패키저), 콘텐츠 식별체계(DOI·URI), 저작권 표현(XrML 등 권리 표현 언어), 정책 관리, 라이선스 발급·관리, 크랙 방지(Tamper Resistance), 인증(Authentication)이 있다. 반면 데이터 전송·저장 중 발생한 비트 오류를 검출하고 되살리는 것은 패리티·CRC·해밍코드 같은 오류 제어 기술의 영역으로, 저작권 보호와는 목적이 다르다. 따라서 DRM 기술과 거리가 먼 것은 콘텐츠 오류 감지 및 복구이다.
보기별 해설
정리
다음이 설명하는 테스트 용어는? ㆍ테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참값을 입력하여 비교하는 기법 및 활 동을 말한다. ㆍ종류에는 참, 샘플링, 휴리스틱, 일관성 검사가 존재 한다.
핵심 해설
테스트 오라클(Test Oracle)은 테스트 결과가 참인지 거짓인지 판정하기 위해 사전에 정의해 둔 참값을 실제 실행 결과와 비교하는 기법과 활동을 말한다. 종류는 네 가지로, 모든 입력값에 대해 기대 결과를 준비해 검증하는 참(True) 오라클, 일부 입력값에만 기대 결과를 제공하는 샘플링(Sampling) 오라클, 샘플링을 개선해 나머지 입력은 추정으로 처리하는 휴리스틱(Heuristic) 오라클, 변경 전후의 실행 결과가 동일한지를 확인하는 일관성 검사(Consistent) 오라클이 있다. 참·샘플링·휴리스틱·일관성 검사라는 네 종류가 곧 오라클의 분류이므로 설명에 해당하는 용어는 테스트 오라클이다.
보기별 해설
정리
다음 트리에 대한 INORDER 운행 결과는?
핵심 해설
INORDER(중위) 운행법은 왼쪽 서브트리 → 루트 → 오른쪽 서브트리 순으로 방문하며 각 서브트리에 재귀적으로 적용한다. 정답 D B A E C F를 역산하면 루트 A를 기준으로 왼쪽 서브트리는 {D, B}, 오른쪽 서브트리는 {E, C, F}이며, 노드 6개짜리 완전 형태의 트리에서 A의 왼쪽 자식은 B, 오른쪽 자식은 C이다. 왼쪽 부분 D B는 B의 왼쪽 자식이 D임을 뜻하고, 오른쪽 부분 E C F는 C의 왼쪽 자식이 E, 오른쪽 자식이 F임을 뜻한다. 이 트리의 PREORDER는 A B D C E F, POSTORDER는 D B E F C A가 되며, 보기 2번이 바로 이 트리의 전위 순회 결과라는 점이 구조를 확인해 준다.
보기별 해설
정리
검증(Validation) 검사 기법 중 개발자의 장소에서 사용자가 개발자 앞에서 행해지며오류와, 사용상의 문제점을 사용자와 개발자가 함께 확인하면서 검사하는 기법은?
핵심 해설
검증(Validation) 검사는 완성된 소프트웨어가 사용자의 요구를 실제로 만족하는지 확인하는 인수 테스트 단계의 활동이며, 대표적으로 알파 검사와 베타 검사가 있다. 알파 검사는 개발자의 사업장(통제된 환경)에서 사용자가 개발자가 지켜보는 가운데 프로그램을 사용하고, 발견된 오류와 사용상의 문제점을 개발자가 그 자리에서 기록하는 방식이다. 반대로 베타 검사는 실제 사용자 환경에서 다수의 사용자가 개발자 없이 사용해 본 뒤 문제점을 보고하는 방식이다. 개발자 장소에서 개발자 앞에서 함께 확인한다는 조건에 부합하는 것은 알파 검사이다.
보기별 해설
정리
해싱 함수(Hashing Function)의 종류가 아닌 것은?
핵심 해설
해싱 함수(Hashing Function)는 키 값을 저장 주소(버킷 번호)로 변환하는 계산식으로, 종류에는 제산법(Division), 제곱법(Mid-Square), 폴딩법(Folding), 기수 변환법(Radix Conversion), 대수적 코딩법, 숫자 분석법(Digit Analysis), 무작위법(Random)이 있다. 반면 개방주소법(Open Addressing)은 서로 다른 키가 같은 주소로 계산되는 충돌(Collision)이 일어났을 때 다른 빈 버킷을 찾아 저장하는 충돌 해결 방법이다. 즉 주소를 만들어 내는 함수가 아니라 주소가 겹친 뒤의 처리 방식이므로 범주가 다르다. 따라서 해싱 함수의 종류가 아닌 것은 개방주소법이다.
보기별 해설
정리
퀵 정렬에 관한 설명으로 옳은 것은?
핵심 해설
퀵 정렬(Quick Sort)은 분할 정복 방식의 정렬로, 기준값인 피봇(Pivot)을 정해 이보다 작은 값은 왼쪽, 큰 값은 오른쪽으로 몰아 파일을 두 부분으로 나눈 뒤 각 부분에 같은 과정을 재귀적으로 적용한다. 인접 원소를 하나하나 교환하지 않고 멀리 떨어진 원소끼리 한 번에 자리를 바꾸므로 불필요한 자료 이동이 크게 줄어드는 것이 특징이다. 평균 시간 복잡도는 O(n log n)이고, 피봇이 항상 최솟값이나 최댓값으로 선택되면 최악의 경우 O(n²)이 된다. 따라서 '자료 이동을 없애고 파일을 부분적으로 나누어 가며 정렬한다'는 설명이 퀵 정렬에 해당한다.
보기별 해설
정리
소프트웨어 설치 매뉴얼에 포함될 항목이 아닌 것은?
핵심 해설
소프트웨어 설치 매뉴얼은 사용자가 제품을 설치하는 전 과정을 순서대로 안내하는 문서로, 목표 독자는 최종 사용자이다. 포함 항목은 제품 소프트웨어 개요, 설치 관련 파일과 설치 아이콘, 설치 환경(하드웨어·운영체제 요구사항), 설치 절차와 화면별 안내, 설치 시 주의사항 및 오류 메시지 대처법, 설치 이후의 프로그램 삭제(제거) 방법, 저작권 정보와 기술 지원 연락처 등이다. 반면 개발에 몇 개월이 걸렸는지 같은 개발 기간은 프로젝트 관리 정보로, 사용자가 설치를 수행하는 데 아무런 도움이 되지 않는다. 따라서 설치 매뉴얼에 들어가지 않는 항목은 소프트웨어 개발 기간이다.
보기별 해설
정리
다음 중 단위 테스트를 통해 발견할 수 있는 오류가 아닌 것은?
핵심 해설
단위 테스트(Unit Test)는 코딩 직후 모듈이나 컴포넌트 하나를 독립적으로 실행해 내부 로직의 결함을 찾는 테스트로, 구조 기반(화이트박스) 기법이 중심이 된다. 검출 대상은 모듈 내부의 알고리즘 오류, 잘못된 계산식, 자료 구조·변수 사용 오류, 탈출 조건이 없는 무한 반복문, 경계값 처리 오류 등 모듈 하나만 실행해도 드러나는 결함이다. 반면 모듈 간 인터페이스 규격 불일치나 파라미터 전달 오류처럼 두 개 이상의 모듈이 결합되어야 나타나는 결함은 통합 테스트(Integration Test)의 대상이다. 따라서 단위 테스트로 발견할 수 없는 것은 모듈 간 비정상적 상호 작용으로 인한 오류이다.
보기별 해설
정리
다음 설명의 소프트웨어 버전 관리 도구 방식은? ㆍ버전 관리 자료가 원격 저장소와 로컬 저장소에 함께 저장되어 관리된다. ㆍ로컬 저장소에서 버전 관리가 가능하므로 원격 저장소 에 문제가 생겨도 로컬 저장소의 자료를 이용하여 작업 할 수 있다. ㆍ대표적인 버전 관리 도구로 Git이 있다.
핵심 해설
소프트웨어 버전 관리 도구는 저장소 운영 방식에 따라 공유 폴더 방식, 클라이언트/서버 방식, 분산 저장소 방식으로 나뉜다. 분산 저장소 방식은 원격 저장소의 이력 전체를 로컬 저장소에도 복제해 두는 방식으로, 개발자가 네트워크에 연결되지 않았거나 원격 서버에 장애가 생겨도 로컬에서 커밋·이력 조회 같은 버전 관리 작업을 계속할 수 있다. 대표 도구는 Git과 Bitkeeper이며, 로컬 작업 결과는 나중에 push로 원격 저장소에 반영한다. 자료가 원격과 로컬에 함께 저장되고 Git이 대표 도구라는 설명은 분산 저장소 방식에 해당한다.
보기별 해설
정리
다음 중 최악의 경우 검색 효율이 가장 나쁜 트리 구조는?
핵심 해설
이진 탐색 트리(BST)는 왼쪽 서브트리에 작은 값, 오른쪽 서브트리에 큰 값을 두는 트리로 평균 검색 시간은 O(log n)이다. 그러나 균형을 스스로 맞추는 장치가 전혀 없어 오름차순으로 정렬된 데이터를 차례로 삽입하면 모든 노드가 한쪽으로만 이어지는 편향 트리(사향 이진 트리)가 되어 사실상 연결 리스트와 같아지고, 이때 검색은 최악 O(n)이 된다. 반면 AVL 트리, 2-3 트리, 레드-블랙 트리는 삽입·삭제 시 회전이나 노드 분할로 높이를 스스로 조정하는 균형 트리라서 최악의 경우에도 높이가 O(log n)으로 유지된다. 따라서 최악의 경우 검색 효율이 가장 나쁜 것은 이진 탐색 트리이다.
보기별 해설
정리
코드의 간결성을 유지하기 위해 사용되는 지침으로 틀린 것은?
핵심 해설
소스 코드 작성 지침에서 간결성(단순성)은 코드를 한눈에 읽고 이해할 수 있게 유지하라는 원칙이다. 실행문 그룹과 주석을 공백으로 구분하고, 복잡한 수식은 괄호와 들여쓰기로 계산 순서를 드러내며, 빈 줄로 선언부와 구현부를 나누는 것이 모두 가독성을 높이는 구체적 방법이다. 반대로 한 줄에 여러 문장을 몰아 넣으면 각 문장의 경계가 흐려지고 디버깅 시 문제 지점을 특정하기 어려워져 오히려 코드가 난해해진다. 클린 코드의 단순성 원칙은 '한 번에 한 가지 처리만 수행'하는 것이므로, 한 줄에 최대한 많은 문장을 코딩하라는 4번이 틀렸다.
보기별 해설
정리
다음 중 선형 구조로만 묶인 것은?
핵심 해설
자료 구조는 원소들이 한 줄로 나열되어 앞뒤 관계가 1:1로 정해지는 선형 구조와, 계층이나 망 형태로 연결되어 1:N 또는 N:M 관계를 갖는 비선형 구조로 나뉜다. 선형 구조에는 배열, 연결 리스트, 스택, 큐, 데크가 속하고, 비선형 구조에는 트리와 그래프가 속한다. 큐는 rear에서 삽입하고 front에서 삭제하는 FIFO 선형 구조이고, 데크(Deque)는 양쪽 끝 모두에서 삽입·삭제가 가능한 선형 구조이다. 따라서 선형 구조로만 묶인 것은 큐와 데크이다.
보기별 해설
정리
코드 인스펙션과 관련한 설명으로 틀린 것은?
핵심 해설
코드 인스펙션(Code Inspection)은 소프트웨어 검토(Review) 기법의 하나로, 프로그램을 실행하지 않고 소스 코드를 여러 명이 읽으며 결함을 찾아내는 정적 테스트에 속한다. 사전에 배포된 자료를 참가자들이 미리 검토한 뒤 회의를 열어 결함을 지적하고, 발견된 문제는 기록해 수정 여부를 추적하는 공식적 절차를 따른다. 코딩 표준 준수 여부, 성능·효율성, 가독성 같은 품질 이슈도 함께 점검하는 코드 품질 향상 기법이다. 프로그램을 실제로 수행하며 결과를 확인하는 동적 테스트와 정반대이므로, 동적 테스트 시에만 활용한다는 3번이 틀렸다.
보기별 해설
정리
소프트웨어를 재사용함으로써 얻을 수 있는 이점으로 가장 거리가 먼 것은?
핵심 해설
소프트웨어 재사용(Reuse)은 이미 개발되어 검증된 모듈이나 컴포넌트를 새 시스템에 다시 활용하는 기법으로, 합성 중심(부품 조립)과 생성 중심(명세로부터 생성) 방식이 있다. 기대 효과는 개발 시간과 비용 절감에 따른 생산성 향상, 검증된 자산 사용에 따른 품질 및 신뢰성 향상, 프로젝트 문서의 공유와 표준화, 시스템 구축 시간 단축이다. 반면 재사용은 기존 자산의 구조와 인터페이스에 새 시스템을 맞추게 하므로 오히려 낡은 기술·구조에 묶여 새로운 개발 방법론을 도입하기 어려워지는 요인이 된다. 따라서 이점과 가장 거리가 먼 것은 새로운 개발 방법론 도입 용이이다.