소프트웨어 개발 · 오답노트
2025년 2회
EAI(Enterprise Application Integration)의 구축 유형으로 옳지 않은 것은?
핵심 해설
EAI(Enterprise Application Integration)는 기업 내 서로 다른 플랫폼과 애플리케이션을 연계해 데이터와 프로세스를 통합하는 솔루션이다. 구축 유형은 연결 구조에 따라 Point-to-Point, Hub & Spoke, Message Bus(ESB), Hybrid 네 가지로 분류된다. Point-to-Point는 1:1 직접 연결, Hub & Spoke는 중앙 허브 집중형, Message Bus는 미들웨어 버스 경유형, Hybrid는 그룹 내부는 Hub & Spoke·그룹 간은 Message Bus를 쓰는 혼합형이다. Tree라는 명칭의 EAI 구축 유형은 존재하지 않으므로 옳지 않다.
보기별 해설
정리
소프트웨어 형상 관리의 의미로 적절한 것은?
핵심 해설
소프트웨어 형상 관리(SCM, Software Configuration Management)는 개발 과정에서 산출되는 소스 코드, 문서, 설계서 등 형상 항목의 변경 사항을 식별·통제·기록하고 그 무결성을 유지하는 활동이다. 주요 절차는 형상 식별, 형상 통제(변경 요청 검토 및 승인), 형상 상태 보고, 형상 감사로 구성된다. 형상 관리의 대상은 사람이나 비용이 아니라 '산출물의 변경'이므로, 개발 과정의 변경 사항을 관리하는 것이 형상 관리의 정확한 의미이다.
보기별 해설
정리
소프트웨어 품질 측정을 위해 개발자 관점에서 고려해야 할 항목으로 거리가 먼 것은?
핵심 해설
소프트웨어 품질 목표(McCall 품질 요인 등)는 관점에 따라 나뉘는데, 사용자 관점 항목은 정확성·신뢰성·효율성·무결성·사용성처럼 실행되는 제품의 품질을 보는 것이고, 개발자 관점 항목은 이식성·재사용성·상호운용성·유지보수성·시험 용이성처럼 코드를 다루는 사람이 보는 품질이다. 문제는 개발자 관점에서 '고려해야 할 항목'을 묻고 있는데, 정확성·무결성·사용성은 모두 McCall이 정의한 표준 품질 요인에 포함된다. 반면 간결성은 코드 작성 스타일에 관한 권고일 뿐 소프트웨어 품질 측정 항목으로 정의된 요인이 아니므로 거리가 멀다.
보기별 해설
정리
알파베타, 테스트와 가장 밀접한 연관이 있는 테스트 단계는?
핵심 해설
인수 테스트(Acceptance Test)는 개발이 끝난 소프트웨어가 사용자의 요구사항을 충족하는지 사용자가 직접 확인하는 최종 단계 테스트이다. 인수 테스트는 알파 테스트와 베타 테스트로 나뉘는데, 알파 테스트는 개발자 사이트에서 개발자가 지켜보는 통제된 환경에서 선정된 사용자가 수행하고, 베타 테스트는 실제 사용자 환경에서 개발자 없이 다수 사용자가 사용하며 문제를 보고한다. 따라서 알파·베타 테스트와 직접 연결되는 단계는 인수 테스트이다.
보기별 해설
정리
제품 소프트웨어 패키징 도구 활용 시 고려사항이 아닌 것은?
핵심 해설
제품 소프트웨어 패키징은 개발이 완료된 소프트웨어를 사용자가 설치·사용할 수 있는 형태로 묶는 작업으로, 사용자 중심으로 진행하는 것이 원칙이다. 패키징 도구 활용 시 고려사항은 암호화·보안 알고리즘 적용, 다양한 이기종 콘텐츠 및 단말 간 연동 고려, 사용자 편의성을 위한 복잡성·비효율성 최소화, 그리고 내부 콘텐츠에 대한 보안 고려이다. 패키징된 결과물은 외부로 배포되므로 내부 콘텐츠의 보안은 오히려 반드시 고려해야 할 핵심 사항이며, 이를 고려하지 않는다는 서술은 옳지 않다.
보기별 해설
정리
다음 트리를 Preorder 운행법으로 운행할 경우 가장 먼저 탐색되는 것은?
핵심 해설
Preorder(전위) 운행법은 루트(Root) → 왼쪽 서브트리(Left) → 오른쪽 서브트리(Right) 순으로 방문하고 이를 각 서브트리에 재귀적으로 적용한다. 정의상 첫 번째 방문 노드는 항상 트리의 최상위 루트이므로, 트리 그림이 없어도 보기 중 루트에 해당하는 노드를 고르면 된다. 관례적으로 노드에 A부터 레벨 순서로 이름을 붙인 트리에서 루트는 A이며, 실제로 정답도 A이다. 참고로 Inorder는 Left→Root→Right, Postorder는 Left→Right→Root로, Postorder에서는 루트가 가장 마지막에 방문된다.
보기별 해설
정리
인터페이스 보안을 위해 네트워크 영역에 적용될 수 있는 솔루션과 거리가 먼 것은?
핵심 해설
인터페이스 보안은 적용 영역을 네트워크 영역, 애플리케이션 영역, 데이터베이스 영역으로 나눈다. 네트워크 영역에서는 송수신 구간의 스니핑과 데이터 변조를 막기 위해 IPSec, SSL/TLS, S-HTTP 같은 암호화·인증 프로토콜을 적용한다. SMTP는 메일 서버 간 전자우편을 전달하는 응용 계층 전송 프로토콜로, 자체에 암호화나 인증 기능이 없어 기본적으로 평문으로 통신한다. 따라서 네트워크 영역 보안 솔루션과 거리가 먼 것은 SMTP이다.
보기별 해설
정리
저작권 관리 구성 요소에 대한 설명이 틀린 것은?
핵심 해설
디지털 저작권 관리(DRM)의 구성 요소는 콘텐츠 제공자(Contents Provider), 콘텐츠 분배자(Contents Distributor), 패키저(Packager), 클리어링 하우스(Clearing House), 콘텐츠 소비자(Consumer), DRM 컨트롤러, 보안 컨테이너로 구분된다. 이 중 콘텐츠를 메타 데이터와 함께 배포 가능한 단위로 묶어 암호화하는 역할은 패키저(Packager)의 기능이며, 콘텐츠 분배자는 쇼핑몰이나 서비스 포털처럼 패키징된 콘텐츠를 소비자에게 유통·중개하는 주체이다. 따라서 콘텐츠 분배자의 설명으로 패키저의 기능을 적어놓은 2번이 틀렸다.
보기별 해설
정리
소프트웨어 설치 매뉴얼에 대한 설명으로 틀린 것은?
핵심 해설
소프트웨어 설치 매뉴얼은 사용자가 제품을 직접 설치할 수 있도록 돕는 문서이므로 개발자가 아니라 '사용자 기준'으로 작성하는 것이 기본 원칙이다. 설치 시작부터 완료까지 모든 과정을 순서대로 빠짐없이 기술하고, 화면 캡처와 참고 사항·주의 사항을 함께 제공한다. 또한 설치 중 발생할 수 있는 오류 메시지와 예외 상황은 본문과 구분해 별도로 정리한다. 기본 구성은 목차 및 개요, 서문(문서 이력·설치 도구 구성·설치 환경), 기본 사항, 설치 절차, 설치 완료 및 참고 사항, FAQ, 오류 발생 시 조치 순이다.
보기별 해설
정리
다음 중 블랙박스 검사 기법은?
핵심 해설
블랙박스 테스트는 프로그램의 내부 구조를 보지 않고 요구사항 명세를 근거로 입력과 출력의 관계만 검증하는 기법으로, 동치 분할 검사, 경계값 분석, 원인-효과 그래프, 오류 예측, 비교 검사가 여기에 속한다. 반면 화이트박스 테스트는 소스 코드의 논리 구조와 제어 흐름을 직접 보고 검증하는 기법으로, 기초 경로 검사, 조건 검사, 루프 검사, 데이터 흐름 검사가 대표적이다. 보기 중 명세 기반으로 입력 경계 부근의 값을 골라 테스트 케이스를 만드는 경계값 분석만이 블랙박스 기법이다.
보기별 해설
정리
스택에 대한 설명으로 틀린 것은?
핵심 해설
스택(Stack)은 삽입(push)과 삭제(pop)가 리스트의 한쪽 끝인 top에서만 일어나는 선형 자료구조로, 나중에 들어온 것이 먼저 나오는 LIFO(Last In First Out) 방식이다. 따라서 위치를 가리키는 포인터는 top 하나만 필요하다. front와 rear 두 개의 포인터를 사용해 한쪽에서 삽입하고 반대쪽에서 삭제하는 것은 FIFO 구조인 큐(Queue)의 특징이다. 스택이 가득 찬 상태에서 push하면 오버플로, 비어 있는 상태에서 pop하면 언더플로가 발생한다.
보기별 해설
정리
디지털 저작권 관리(DRM)에 사용되는 기술 요소가 아닌 것은?
핵심 해설
디지털 저작권 관리(DRM)의 기술 요소는 암호화, 키 관리, 암호화 파일 생성(패키저), 식별 기술(DOI·URI), 저작권 표현(XrML 등 권리 표현 언어), 정책 관리, 크랙 방지(Tamper Resistance), 인증(Authentication)이다. 이들은 모두 콘텐츠 자체를 보호하고 이용 권한을 통제하는 데 초점이 있다. 반면 방화벽은 네트워크 경계에서 IP·포트·프로토콜을 기준으로 패킷을 필터링해 비인가 접근을 차단하는 네트워크 보안 장비로, 콘텐츠의 저작권을 보호하는 기술이 아니다.
보기별 해설
정리
버전 관리 항목 중 저장소에 새로운 버전의 파일로 갱신하는 것을 의미하는 용어는?
핵심 해설
버전 관리의 주요 활동은 인출(Check-Out), 체크인(Check-In), 커밋(Commit), 동기화(Update), 가져오기(Import)로 이루어진다. 이 중 체크인(Check-In)은 개발자가 수정을 마친 파일을 공유 저장소에 새로운 버전으로 갱신해 등록하는 작업을 말한다. 반대로 체크아웃은 저장소에서 파일을 자신의 작업 공간으로 내려받는 작업이며, 커밋은 체크인 과정에서 변경 사항을 실제로 반영해 확정하는 단계이다. 따라서 저장소에 새 버전 파일로 갱신하는 것은 체크인이다.
보기별 해설
정리
정렬된 N개의 데이터를 처리하는 데 O(Nlog2N)의 시간이 소요되는 정렬 알고리즘은?
핵심 해설
정렬 알고리즘의 시간 복잡도는 비교 횟수의 증가율로 구분된다. 합병 정렬은 배열을 절반씩 분할해 log₂N 단계의 깊이를 만들고, 각 단계마다 N개 원소를 병합하므로 최선·평균·최악 모두 O(N log₂N)이다. 반면 버블·선택·삽입 정렬은 매 회전마다 남은 원소 전체를 비교하는 이중 반복 구조여서 평균·최악이 O(N²)이다. 특히 '이미 정렬된 데이터'라는 조건에서 버블과 삽입은 O(N)까지 빨라지고 선택은 여전히 O(N²)이므로, N log₂N을 항상 보장하는 것은 합병 정렬뿐이다.
보기별 해설
정리
클린 코드 작성 원칙에 대한 설명으로 틀린 것은?
핵심 해설
클린 코드(Clean Code)는 누구나 쉽게 읽고 이해할 수 있으며 수정이 용이하도록 작성한 코드를 말한다. 작성 원칙은 가독성(이해하기 쉬운 이름과 주석), 단순성(한 번에 한 가지만 처리, 최소 단위로 분리), 의존성 배제(다른 모듈에 미치는 영향 최소화), 중복성 최소화(중복 코드 제거), 추상화(상위 클래스에서 애플리케이션 특성을 나타내고 세부 내용은 하위 클래스에서 구현)이다. 따라서 다른 모듈에 미치는 영향을 '최대화'한다는 서술은 의존성 배제 원칙과 정반대이므로 틀렸다.
보기별 해설
정리
테스트 케이스 자동 생성 도구를 이용하여 테스트 데이터를 찾아내는 방법이 아닌 것은?
핵심 해설
테스트 케이스 자동 생성 도구는 프로그램 명세나 구조를 분석해 테스트 데이터를 자동으로 만들어 내는 도구로, 자료 흐름도(Data Flow Diagram)를 이용한 경로 분석, 기능 테스트를 위한 입력 도메인 분석, 무작위 값을 생성하는 랜덤 테스트가 대표적인 방법이다. 반면 스터브와 드라이버는 테스트 데이터를 만들어 내는 것이 아니라, 아직 개발되지 않은 하위 모듈이나 상위 모듈을 대신해 테스트 환경을 갖춰 주는 가상의 모듈(테스트 하네스 구성 요소)이다. 따라서 테스트 데이터를 찾아내는 방법이 아닌 것은 스터브와 드라이버이다.
보기별 해설
정리
순서가 A, B, C, D로 정해진 입력 자료를 스택에 입력한 후 출력한 결과로 불가능한 것은?
핵심 해설
스택은 LIFO 구조이므로 입력 순서 A, B, C, D 사이사이에 pop을 끼워 넣을 수 있고, 이때 '먼저 push된 것보다 나중에 push된 것이 먼저 나온다'는 제약이 걸린다. 판정 규칙은 간단한데, 출력 순서에서 어떤 원소 뒤에 그보다 늦게 입력된 원소가 두 개 이상 나오면서 그 두 원소가 입력 역순이 아니면 불가능하다. 4번 D, B, C, A는 D를 꺼낸 시점에 스택이 아래에서부터 A, B, C 순으로 쌓여 있어 top이 C이므로 다음에 반드시 C가 나와야 하는데 B가 나오므로 불가능하다. 나머지는 push/pop 순서를 적절히 배치해 모두 만들 수 있다.
보기별 해설
정리
프로젝트에 내재된 위험 요소를 인식하고 그 영향을 분석하여 이를 관리하는 활동으로서프로젝트를, 성공시키기 위하여 위험 요소를 사전에 예측대비하는, 모든 기술과 활동을 포함하는 것은?
핵심 해설
위험 분석(Risk Analysis)은 프로젝트에 내재된 위험 요소를 식별하고 발생 확률과 영향도를 평가해 대응 전략을 세우는 활동이다. 절차는 위험 식별 → 위험 분석 및 평가 → 위험 관리 계획 수립 → 위험 감시 및 조치로 이어지며, 사전 예측과 대비를 통해 프로젝트 실패 가능성을 낮추는 모든 기술과 활동을 포함한다. 나선형(Spiral) 모형이 각 주기마다 위험 분석 단계를 두는 것도 같은 취지이다. 따라서 문제의 설명에 해당하는 것은 Risk Analysis이다.
보기별 해설
정리
인터페이스 간의 통신을 위해 이용되는 데이터 포맷이 아닌 것은?
핵심 해설
인터페이스 간 통신에 사용하는 데이터 포맷은 시스템 간에 데이터를 구조화해 주고받기 위한 표준 표기 형식으로, JSON, XML, YAML, CSV 등이 대표적이다. 이들은 모두 이기종 시스템이 파싱할 수 있는 텍스트 기반 직렬화 형식이라는 공통점이 있다. AJTML은 이러한 데이터 포맷 목록에 존재하지 않는 명칭으로, 비동기 통신 기법인 AJAX나 문서 표현 언어인 HTML과 철자가 섞인 형태의 가짜 용어이다. 따라서 데이터 포맷이 아닌 것은 AJTML이다.
보기별 해설
정리
정형 기술 검토(FTR)의 지침으로 틀린 것은?
핵심 해설
정형 기술 검토(FTR, Formal Technical Review)는 소프트웨어 산출물의 결함을 발견하고 표준 준수 여부를 확인하기 위해 수행하는 정적 검토 회의이다. 지침은 제품의 검토에만 집중할 것(개발자 개인을 비판하지 말 것), 의제를 제한할 것, 논쟁과 반박을 제한할 것, 문제 영역을 명확히 표현할 것, 해결책이나 개선책은 다루지 말 것, 참가자의 수를 제한하고 사전 준비를 강요할 것, 검토 과정과 결과를 기록으로 남길 것 등이다. 회의 효율을 위해 참가자 수를 제한해야 하므로 '제한하지 않는다'는 서술은 지침에 어긋난다.