20년-3회차-정보처리기사-필기 시험지 PDF 다운로드
20년-3회차-정보처리기사-필기
요구사항 분석 시에는 이해관계자와의 청취·인터뷰, 요구사항 간 충돌을 조정하는 분석과 중재, 현장을 살피는 관찰 및 모델 작성 기술이 핵심이다.
반면 설계 및 코딩 기술은 요구사항이 확정된 이후 소프트웨어 설계·구현 단계에서 필요한 기술이므로 요구사항 분석 기술과는 거리가 멀다.
제시된 그림은 "객체를 생성하기 위한 인터페이스를 정의하며, 어떤 클래스가 인스턴스화될 것인지는 서브클래스가 결정하도록 하는 것"으로, Virtual-Constructor 패턴이라고도 불린다고 설명한다.
이는 GoF 생성 패턴 중 Factory Method 패턴의 정의와 정확히 일치한다.
Observer는 상태 변화의 통지, Bridge는 추상화와 구현의 분리, Visitor는 자료구조와 연산의 분리를 다루는 패턴으로 이 설명과 무관하다.
럼바우(Rumbaugh)의 객체지향 분석(OMT)은 객체 모델링·동적 모델링·기능 모델링의 세 가지로 구성된다.
"정적 모델링"은 럼바우 분석의 별도 단계로 존재하지 않으며 이는 객체 모델링에 포함되는 개념이므로 거리가 멀다.
애자일은 절차와 도구보다 개인과 소통을, 계획을 따르기보다 변화에 대한 대응을 더 중요한 가치로 삼는 방법론이다.
"계획에 중점을 두어 변경 대응이 난해하다"는 특성은 오히려 계획 중심의 전통적 개발 방법론(폭포수 모델)에 해당하므로 애자일에 대한 설명으로 옳지 않다.
미들웨어 솔루션 유형에는 데이터 통신을 중개하는 WAS, RPC, ORB, TP-Monitor, MOM, DB 미들웨어 등이 포함된다.
Web Server는 클라이언트 요청에 정적 콘텐츠를 제공하는 서버로, 이기종 시스템 간 연동을 중개하는 미들웨어 솔루션 유형에는 해당하지 않는다.
UML 시퀀스 다이어그램은 객체 사이의 상호작용을 시간 순으로 나타내며 생명선(Lifeline), 실행(Activation), 메시지(Message) 등으로 구성된다.
"확장(Extend)"은 유스케이스 다이어그램에서 유스케이스 간 관계를 나타내는 개념으로 시퀀스 다이어그램의 구성 항목이 아니다.
캡슐화(Encapsulation)는 데이터와 이를 처리하는 메서드를 하나로 묶고 외부에는 필요한 인터페이스만 노출하여 내부 구현을 감추는 것으로, 객체지향의 정보 은닉과 가장 밀접하게 연관된 개념이다.
GoF 디자인 패턴 중 행위 패턴에는 커맨드(Command), 옵저버(Observer), 상태(State), 전략, 템플릿 메서드 등이 속한다.
프로토타입(Prototype) 패턴은 원형 객체를 복제하여 새로운 객체를 만드는 생성 패턴에 해당하므로 행위적 패턴에 속하지 않는다.
UI 설계 원칙 중 직관성은 사용자가 별도의 학습 없이도 누구나 쉽게 이해하고 사용할 수 있도록 인터페이스를 설계해야 한다는 원칙이다.
코드의 기본 기능에는 대상을 유일하게 구분하는 식별, 유사 항목끼리 묶는 분류, 일관된 기준을 정하는 표준화 등이 있다.
복잡성은 코드 설계에서 오히려 지양해야 할 요소이지 코드가 갖춰야 할 기본 기능이 아니다.
컴포넌트 설계에서 "( )에 의한 설계"를 따를 경우 오퍼레이션 사용 전에 참이어야 할 선행조건(precondition), 사용 후 만족되어야 할 결과조건(postcondition), 실행되는 동안 항상 만족되어야 할 불변조건(invariant)을 명세에 포함시켜야 하는데, 이러한 기법을 협약(Contract)에 의한 설계(Design by Contract)라고 한다. 협약은 컴포넌트 제공자와 사용자 간에 지켜야 할 규약을 정의하는 것이므로 프로토콜·패턴·관계와는 구분된다.
UML의 행위(Behavioral) 다이어그램에는 유스케이스·시퀀스·활동·상태·커뮤니케이션 다이어그램 등이 속하며, 시스템의 동적인 동작을 표현한다. 반면 배치 다이어그램(Deployment Diagram)은 하드웨어 노드와 소프트웨어 컴포넌트의 물리적 배치를 나타내는 구조(Structural) 다이어그램이므로 행위 다이어그램에 해당하지 않는다.
클래스는 공통된 속성과 오퍼레이션(행위)을 가지는 유사한 객체들을 하나의 틀로 묶어 추상화한 것으로, 객체를 생성하는 템플릿 역할을 한다. 트랜지션·시퀀스·서브루틴은 유사한 객체들을 묶어 공통 특성을 표현하는 개념이 아니므로 클래스와 다르다.
제시된 UML 모델에서 버스·트럭·택시가 속이 빈 삼각형 화살표로 '차' 클래스를 향하는 것은, 하위 클래스가 상위 클래스의 속성과 오퍼레이션을 물려받는 일반화(Generalization) 관계, 즉 상속(is-a)을 나타내는 UML 표준 표기법이다. 따라서 이 구조는 추상화·의존·그룹 관계가 아니라 일반화 관계에 해당한다.
GoF 디자인 패턴을 구성하는 요소는 패턴 이름, 문제 및 배경(의도), 해결책, 사례(결과·효과), 샘플코드 등이며, 이는 패턴을 재사용 가능하도록 문서화하기 위한 항목이다. 패턴을 처음 고안한 개발자 이름은 패턴 자체의 구성요소가 아니므로 가장 거리가 멀다.
자료 사전(Data Dictionary) 표기법에서 { }는 자료의 반복(Iteration)을 의미하며, =는 정의(자료의 구성), ( )는 생략 가능한 선택 항목, [ ]는 여러 대안 중 하나를 택하는 선택을 나타낸다. 따라서 반복을 표현하는 기호는 { }이다.
리스코프 치환 원칙(LSP, Liskov Substitution Principle)은 상위 타입(기반 클래스)의 객체가 사용되는 자리에 하위 타입(서브타입)의 객체로 교체해도 프로그램의 동작이 정상적으로 유지되어야 한다는 객체지향 설계 원칙이다. ISP는 인터페이스 분리, DIP는 의존성 역전, SRP는 단일 책임 원칙을 의미하므로 서브타입 치환과는 직접 관련이 없다.
자료흐름도(DFD)의 기본 구성요소는 처리(process), 자료 흐름(data flow), 자료 저장소(data store), 시스템과 데이터를 주고받는 외부 개체인 단말(terminator)의 네 가지이다. comment·data dictionary·mini-spec은 DFD를 보완하는 별도 명세 도구일 뿐 DFD 자체의 구성요소는 아니다.
CASE 도구는 소프트웨어 개발 과정의 일부 또는 전체를 자동화하고 표준화된 개발 환경과 문서 자동화를 지원하며, 작업 결과 공유를 통해 작업자 간 커뮤니케이션을 증대시키는 도구이다. 그러나 CASE 도구는 이미 그 이전부터 폭포수·구조적 방법론 등 다양한 개발 방식에 폭넓게 활용되어 왔으므로, 2000년대 이후 소개되어 객체지향 시스템에 한해서만 효과적이라는 설명은 옳지 않다.
인터페이스 요구사항 검토 방법 중 동료검토(Peer Review)는 요구사항 명세서 작성자가 검토 회의에서 명세서 내용을 직접 설명하고 이해관계자들이 이를 들으면서 결함을 찾아내는 방식이다. 이와 달리 인스펙션은 작성자 외의 전문 검토 그룹이 명세서를 정밀히 조사해 결함·표준 위배를 찾는 공식 절차이며, 검토 자료를 사전 배포한 후 짧게 회의하는 방식은 워크스루에 해당하므로 나머지 보기는 검토 기법 명칭과 설명이 서로 맞지 않는다.
IPSec·SSL·S-HTTP는 네트워크 구간의 데이터를 암호화하거나 인증하는 보안 프로토콜이다. 반면 SMTP는 전자메일을 전송하기 위한 프로토콜일 뿐 자체적인 보안 기능을 제공하지 않으므로 인터페이스 보안 솔루션과 거리가 멀다.
소프트웨어 공학은 품질 높은 결과물 개발, 지속적인 검증, 산출물의 명확한 기록 관리를 기본 원칙으로 삼는다. 이미 지연된 프로젝트에 인력을 추가하면 의사소통 비용 증가로 오히려 일정이 더 지연된다는 브룩스의 법칙에 비추어, "최대한 많은 인력 투입"은 소프트웨어 공학의 기본 원칙으로 볼 수 없다.
패키지 소프트웨어의 일반적인 품질 요구사항 및 테스트 방법을 규정한 국제 표준은 ISO/IEC 12119이다. 나머지 보기는 실제 존재하는 표준 번호와 일치하지 않는다.
클린 코드는 누구나 쉽게 이해할 수 있도록 단순·명료하게 작성하고, 다른 모듈에 미치는 영향을 최소화하며, 중복을 최소화하는 것을 원칙으로 한다. "중복이 최대화된 코드 작성"은 유지보수성을 해치므로 클린 코드 원칙과 정반대된다.
블랙박스 테스트는 내부 로직을 보지 않고 입출력만으로 검증하는 기법으로 동등 분할, 경계값 분석, 오류 예측 등이 해당한다. 반면 조건·루프 검사는 프로그램 내부의 제어 흐름을 분석하는 화이트박스 테스트 기법이므로 블랙박스 테스트 유형이 아니다.
McCabe의 순환복잡도는 (E: 간선 수, N: 노드 수)로 구한다. 제시된 그래프는 노드 4개(a·b·c·d)와 간선 6개(a→b, a→c, a→d, b→c, d→c, c→d)로 구성되어 가 된다.
선택 정렬은 매 회전마다 남은 구간에서 최솟값을 찾아 맨 앞 요소와 교환한다. 초기값 37, 14, 17, 40, 35에서 1회전 후 14, 37, 17, 40, 35, 2회전 후 14, 17, 37, 40, 35가 되고, 3회전에서는 남은 구간(37, 40, 35)의 최솟값 35를 37과 교환해 14, 17, 35, 40, 37이 된다.
형상 관리 도구는 체크인·체크아웃·커밋·버전 추적 등 소스 버전을 저장·관리하는 기능을 제공한다. 정규화(Normalization)는 데이터베이스 설계에서 중복을 제거하는 개념으로 형상 관리 도구의 기능과는 무관하다.
Preorder(전위 순회)는 루트 → 왼쪽 서브트리 → 오른쪽 서브트리 순으로 방문한다. 제시된 트리에서 A가 루트이므로 서브트리를 순회하기 전에 가장 먼저 A가 탐색된다.
소프트웨어 품질 목표 중 주어진 시간 동안 주어진 기능을 오류 없이 수행하는 정도는 신뢰성(Reliability)의 정의 그대로이다. 사용 용이성은 사용자가 쉽게 다루는 정도, 이식성은 다른 환경으로 옮겨 쓸 수 있는 정도를 뜻해 이 정의와 다르다.
Static Block은 프로그래밍 언어의 초기화 구문 개념일 뿐 알고리즘 설계 기법이 아니다.
분할정복(Divide and Conquer)·탐욕법(Greedy)·백트래킹(Backtracking)은 대표적인 알고리즘 설계 기법이다.
형상 관리(Configuration Management)는 소스코드의 버전·이력 관리와 접근 통제를 통해 배포본 관리와 동시 개발을 지원하는 활동이다.
이전 리비전 정보 접근, 불필요한 수정 제한, 여러 개발자의 동시 개발 지원은 형상 관리의 핵심 역할이지만, 프로젝트 개발비용의 효율적 관리는 원가·일정 관리 영역이지 형상 관리의 역할이 아니다.
제품 소프트웨어 패키징 도구는 내부 콘텐츠에 대한 보안을 반드시 고려해야 한다.
암호화 알고리즘 선정, 다양한 이기종 환경과의 연동, 사용자 편의를 위한 복잡성·비효율성 완화는 모두 실제 고려사항이지만, 보안을 고려하지 않는다는 것은 패키징 도구의 목적에 반하므로 옳지 않은 진술이다.
DRM(디지털 저작권 관리)의 핵심 기술 요소는 콘텐츠 암호화·키 관리, 식별체계(메타데이터) 표현, 라이선스 발급·관리 등이다.
콘텐츠 오류 감지 및 복구는 데이터 무결성·복구 기술 영역으로, 저작권 보호나 접근 통제와 무관하여 DRM의 구성 요소에 해당하지 않는다.
물리 데이터 저장소의 파티셔닝 유형은 범위분할(Range)·해시분할(Hash)·조합분할(Composite)·목록분할(List) 등으로 구분된다.
유닛분할(Unit Partitioning)은 실제 존재하지 않는 파티션 유형이다.
하향식 통합 테스트는 상위(제어) 모듈부터 시작하여 하위 모듈을 순차적으로 결합해 가며 검증하는 방식으로, 아직 개발되지 않은 하위 모듈은 스텁(Stub)으로 대체한다.
주요 제어 흐름과 상위 인터페이스 오류를 개발 초기에 발견할 수 있다는 점이 이 방식의 특징이다.
AJAX(Asynchronous JavaScript and XML)는 웹페이지 전체를 다시 불러오지 않고 자바스크립트와 XMLHttpRequest(또는 fetch)로 서버와 비동기적으로 데이터를 주고받는 인터페이스 구현 기술이다.
Procedure·Trigger는 데이터베이스 내부에서 실행되는 객체이고 Greedy는 알고리즘 설계 기법이므로 인터페이스 구현 기술과는 거리가 멀다.
소프트웨어 재공학은 기존 시스템을 재구성·재문서화하여 재사용함으로써 재개발 대비 위험부담 감소, 비용 절감, 시스템 명세의 오류 억제 및 개발 시간 단축 효과를 가져온다.
따라서 개발시간의 증가는 재공학의 장점이 아니라 오히려 재공학을 통해 줄이고자 하는 문제에 해당한다.
인수 테스트(Acceptance Test)는 실제 사용자·고객이 개발된 소프트웨어가 요구사항을 충족하는지 검증하는 단계로, 개발사 내부 인력이 통제된 환경에서 수행하는 알파 테스트와 사용자 환경에서 실제 사용자가 수행하는 베타 테스트가 대표적인 하위 유형이다.
단위·통합·시스템 테스트는 개발자 관점의 테스트 레벨로 알파·베타 테스트와 직접적인 연관이 없다.
트리의 차수(degree)는 트리를 구성하는 모든 노드 중 자식 노드 수가 가장 많은 노드의 자식 개수로 정의된다.
주어진 트리에서 자식을 가장 많이 가진 노드의 자식 수가 3이므로 이 트리의 차수는 3이다.
보이스/코드 정규형(BCNF)은 릴레이션의 모든 결정자(determinant)가 후보키인 정규형으로 정의된다.
이는 제3정규형보다 강화된 조건으로, 후보키가 아닌 결정자로 인해 발생하는 이상현상까지 제거한다.
주어진 표는 고객ID·고객이름·거주도시 3개의 속성(attribute)을 갖는 릴레이션 1개이며, S1~S5 5개의 행(tuple)으로 구성된다.
따라서 relation 1개, attribute 3개, tuple 5개가 옳다.
COMMIT과 ROLLBACK은 트랜잭션의 연산을 데이터베이스에 전부 반영하거나 전혀 반영하지 않도록 하는 원자성(Atomicity)을 보장하는 명령어다.
트랜잭션은 ACID(원자성·일관성·고립성·지속성) 특성을 만족해야 하며, COMMIT은 성공적 완료를 확정하고 ROLLBACK은 실패 시 이전 상태로 되돌린다.
SELECT DISTINCT 학년 FROM R1;은 R1의 학년 컬럼 값(1,1,2,2,3)에서 중복을 제거해 1·2·3 세 개의 값만 남긴다.
따라서 학년 컬럼 하나에 1, 2, 3 세 개의 행이 출력되는 결과가 옳다.
DCL(Data Control Language)은 데이터베이스 접근 권한과 트랜잭션을 제어하는 언어로 GRANT·REVOKE·COMMIT·ROLLBACK이 이에 속한다.
반면 SELECT는 데이터를 조회하는 DML(Data Manipulation Language) 명령어이므로 DCL이 아니다.
로킹 단위가 커지면 관리할 잠금 수가 줄어 오버헤드는 감소하지만, 하나의 잠금이 더 넓은 범위를 독점하게 되어 여러 트랜잭션이 동시에 접근할 수 있는 병행성(공유도)은 오히려 감소한다.
따라서 로킹 단위가 커지면 데이터베이스 공유도가 증가한다는 설명은 옳지 않다.
개체 무결성(Entity Integrity)은 기본키를 구성하는 속성 값이 널(Null)이 아닌 원자값을 가져야 한다는 제약이다.
이는 각 튜플을 유일하게 식별하기 위한 기본키의 필수 조건이다.
뷰(View)는 실제 데이터를 저장하지 않는 가상 테이블이므로 자체적인 인덱스를 가질 수 없다.
데이터 보안·논리적 독립성·사용자 데이터 관리 용이성은 뷰의 실제 장점이지만, 인덱스 보유는 뷰의 특성상 불가능하다.
분산 데이터베이스의 투명성에는 위치 투명성(Location)·중복 투명성(Replication)·장애 투명성(Failure)·병행 투명성·단편화 투명성 등이 있다.
Media Access Transparency는 이러한 분산 데이터베이스 투명성 유형에 해당하지 않는다.
정규화는 함수적 종속성을 분석해 릴레이션을 분해함으로써 삽입·삭제·갱신 이상을 방지하는 것이 목적이다.
'중복을 배제하여 이상현상의 발생을 야기한다'는 설명은 정규화의 효과를 반대로 서술한 것이므로 옳지 않다.
이행 규칙(Transitivity Rule)은 함수 종속 X→Y, Y→Z가 성립하면 X→Z도 성립한다는 Armstrong 공리의 추론 규칙이다. 분해 규칙·결합 규칙은 함수 종속의 속성 집합을 나누거나 합치는 규칙이고, 반사 규칙은 Y가 X의 부분집합일 때 X→Y가 성립한다는 규칙으로 이와 구분된다.

Division 연산 R ÷ S는 R의 속성 중 S에 없는 속성으로 구성된 튜플 중에서, S의 모든 튜플과 매칭되는 것을 결과로 반환한다. 주어진 이미지에서 R은 (A, B) 속성을, S는 B 속성만 가지므로, 결과는 A 속성으로만 구성되며 S의 모든 B 값(b1, b2)과 쌍을 이루는 A 값을 찾아야 한다. R을 분석하면 A=a1일 때 (a1, b1), (a1, b2)가 모두 존재하고, A=a2일 때는 (a2, b1)만 존재하므로 a2는 b2와의 쌍이 없어 제외된다. 따라서 정답은 A=a1만 포함하는 보기 4번이다.
이미지의 SQL문을 확인하면, (1)~(4) 위치에서 문법 오류를 찾아야 한다. 일반적인 SQL 문법에서 GROUP BY 절을 사용할 때 SELECT 목록에는 그룹화 기준 컬럼 또는 집계함수만 포함되어야 한다. (4) 위치의 height 컬럼은 GROUP BY 절에 포함되지 않으면서 집계함수로도 감싸지지 않아 문법 오류가 발생한다. 이는 대부분의 DBMS(MySQL 엄격 모드, Oracle, SQL Server 등)에서 "non-aggregated column not in GROUP BY clause" 오류를 일으킨다.
즉각 갱신 기법(Immediate Update)은 트랜잭션 실행 도중에도 변경 내용을 즉시 데이터베이스에 반영하는 회복 기법이므로, 장애 발생 시 갱신 전·후 값을 이용해 REDO/UNDO를 수행할 수 있도록 로그(log)를 반드시 유지해야 한다.
DML(데이터 조작어)은 데이터를 검색·삽입·수정·삭제하는 명령어로 SELECT·INSERT·UPDATE·DELETE가 해당한다. ALTER는 테이블 등 객체의 구조를 변경하는 DDL(데이터 정의어) 명령어이므로 DML이 아니다.
제1정규형(1NF)은 릴레이션의 모든 속성이 더 이상 분해할 수 없는 원자값만 갖도록 만드는 정규화 단계로, 하나의 속성에 여러 값이 반복 저장된(반복 그룹) 릴레이션을 각 값이 하나의 튜플에 하나씩만 대응하도록 분해하는 작업이 이에 해당한다.
관계대수의 순수 관계 연산자는 Select·Project·Join·Division이다. Cartesian Product는 Union·Intersection·Difference와 함께 일반 집합 이론에서 차용한 일반 집합 연산자에 속하므로 순수 관계 연산자가 아니다.
SQL의 집계 함수는 그룹 단위로 값을 계산하는 함수로 AVG·COUNT·SUM·MAX·MIN 등이 있다. CREATE는 테이블 등의 객체를 생성하는 DDL 명령어이므로 집계 함수가 아니다.
anomaly(이상현상)는 데이터 중복으로 인해 삽입·삭제·갱신 연산 시 예기치 않게 발생하는 데이터 불일치 문제를 말하며, 이를 제거하기 위한 과정이 정규화(normalization)이다.
릴레이션은 수학적으로 튜플의 집합(set)으로 정의되므로 튜플 사이에는 순서가 존재하지 않는다. 따라서 '튜플 사이에는 순서가 있다'는 설명은 릴레이션의 특성과 거리가 멀다.
주어진 if~else 문은 i가 j보다 클 때 i-j, 그렇지 않으면 i+j를 k에 대입하는 구조이므로, 삼항 조건 연산자는 condition ? 참_표현식 : 거짓_표현식 문법에 따라 (i>j)?(i – j):(i + j)로 옮겨 적어야 한다. if문의 조건식과 참·거짓 분기의 계산식 순서를 그대로 대응시키면 조건과 두 분기 값이 모두 일치하는 보기만 정답이 된다.
공격자가 할당된 버퍼(메모리 영역)의 크기를 초과하는 데이터를 입력하여 인접한 메모리 영역까지 덮어쓰게 만드는 취약점을 버퍼 오버플로라 한다. 이로 인해 프로그램의 리턴 주소나 실행 흐름이 조작되어 임의 코드 실행이나 프로그램 오동작으로 이어질 수 있다. SQL 삽입은 데이터베이스 질의문 조작을, 디렉토리 접근 공격은 상위 경로 이동을 통한 파일 노출을 노리는 공격으로 이 취약점과는 성격이 다르다.
bash 쉘은 if, for, while, until, case 등의 제어문을 제공하지만 repeat_do라는 키워드는 존재하지 않는다. if는 조건 분기, for와 while은 반복 제어에 사용되는 실제 bash 문법이므로 나머지 세 보기는 정상적인 제어문이다.
IPv6은 주소 고갈 문제를 해결하기 위해 기존 IPv4의 32비트 체계를 확장한 128비트 주소체계를 사용하므로, "32비트의 주소체계를 사용한다"는 설명은 틀리다. IPv6은 IPSec을 기본 내장하여 보안성이 강화되었고, 실시간 멀티미디어 처리와 자동 네트워크 환경 구성(Plug and Play) 기능도 지원한다.
모듈은 기능이 예측 가능해야 하지만 지나치게 제한적이어서는 안 되며, 여러 상황에 유연하게 대응할 수 있을 정도의 일반성을 가져야 한다. 결합도를 낮추고 복잡도·중복성을 줄이며 일관성과 유지보수성을 높이는 것은 효과적인 모듈 설계의 원칙이지만, 기능을 과도하게 제한하는 것은 이 원칙과 거리가 멀다.
HRN(Highest Response Ratio Next) 스케줄링은 응답비율(Response Ratio) = (대기시간 + 서비스시간) / 서비스시간이 높은 작업부터 처리하는 방식이다. 이미지의 작업 정보에서 각 작업의 응답비율을 계산하면, 시간 0에서 D의 응답비율이 가장 높아 D를 먼저 처리한다. D 처리 후(예: t=3) 남은 작업들 중 그때의 대기시간을 반영하여 다시 응답비율을 계산하면 B, C, A 순서로 처리되어 D→B→C→A 순서가 된다.
매크로 프로세서, 어셈블러, 컴파일러는 언어 번역 프로그램(언어 처리기)에 해당하며, 운영체제가 아니라 운영체제 위에서 동작하는 시스템 소프트웨어이다. 운영체제는 CPU·메모리·입출력 장치 등 자원을 관리하고 다중 사용자·다중 프로그램 환경에서 스케줄링과 자원 분배를 담당하는 소프트웨어(Windows, Unix, Linux 등)를 가리킨다.
배치 프로그램에서 주어진 시간 내 처리를 완료하고 동시에 동작하는 다른 애플리케이션을 방해하지 않아야 한다는 것은 성능(Performance)에 대한 설명이며, 무결성(Integrity)과는 관련이 없다. 자동화(오류 상황 외 사용자 개입 없이 동작), 문제 발생 시점·원인 추적, 대용량 데이터 처리 능력은 배치 프로그램의 필수 요소를 올바르게 설명한 것이다.
TCP 헤더의 기본 크기는 20byte이며 옵션을 포함해 최대 60byte까지 확장 가능하므로, "기본 헤더 크기 100byte, 확장 시 160byte"라는 설명은 사실과 다르다. TCP는 신뢰성 있는 연결 지향형 프로토콜로 순서제어·오류제어·흐름제어와 스트림 전송 기능을 제공한다.
모듈 안의 구성 요소들이 서로 다른 기능을 수행하면서도 정해진 실행 순서(절차)에 따라 차례로 수행되도록 묶여 있을 때를 절차적 응집도라 한다. 하나의 단일 기능만 수행하는 기능적 응집도와 달리 요소들을 묶는 근거가 처리 순서뿐이므로 응집도 자체는 기능적 응집도보다 낮으며, 성격이 유사한 기능을 모아 매개변수로 골라 실행하는 논리적 응집도나 아무런 관련 없이 모인 우연적 응집도보다는 높다.
데이터링크 계층은 인접 노드 간 링크의 설정·유지·종료를 담당하며 프레임 단위의 오류제어·흐름제어 기능을 수행한다. 물리 계층은 비트 신호 전송만 담당하고, 세션 계층은 응용 프로세스 간 대화(세션) 관리를, 응용 계층은 사용자와 직접 상호작용하는 서비스를 제공하므로 해당하지 않는다.
결합도는 자료결합 < 스탬프결합 < 제어결합 < 외부결합 < 공통결합 < 내용결합 순으로 강해진다. 보기 중에서는 전역변수를 공유하는 공통결합(common coupling)이 가장 강한 결합도를 가지며, 자료결합(data coupling)이 가장 약하고 제어결합(control coupling)은 공통결합보다 약하다.
Worst fit 방법은 가장 큰 여유 공간에 프로그램을 할당하는 기법이다. 이미지의 메모리 맵에서 각 여유 공간을 확인하면 NO.2는 5K, NO.3은 8K, NO.4는 6K, NO.5는 12K이다. 10K 크기의 프로그램을 할당하기 위해서는 최소한 10K 이상의 여유 공간이 필요하므로 12K인 NO.5만 가능하며, Worst fit은 이 가장 큰 공간에 할당하므로 NO.5에 배치된다.
10개의 서브넷이 필요하므로 인 4비트를 서브넷 비트로 사용해 를 (블록 크기 16)로 나눈다. ip subnet-zero를 적용하면 첫 서브넷(200.1.1.0/28)부터 순서대로 사용하므로 10번째 네트워크는 200.1.1.0에서 16씩 9번 더한 200.1.1.144/28이고, 그 범위는 200.1.1.144~200.1.1.159이므로 브로드캐스트 주소는 200.1.1.159이다.
문자열의 처음 3글자는 string[0:3], 끝 3글자는 string[-3:]로 슬라이싱하며 두 결과를 +로 이어붙이면 처음·끝 3글자가 합쳐진 문자열이 만들어진다. string[1:3]은 두 번째~세 번째 글자만 뽑아 첫 글자를 빠뜨리고, string[-3:-1]은 마지막 직전 글자까지만 잘라 마지막 글자가 빠지므로 요구 조건을 만족하지 못한다.
파이썬 변수(식별자) 이름은 영문 대·소문자, 숫자, 밑줄(_)로만 구성되며 공백을 포함할 수 없다. 첫 글자에 숫자를 사용할 수 없고 예약어를 변수명으로 쓸 수 없다는 설명은 모두 옳으므로, "변수 이름 중간에 공백을 사용할 수 있다"는 설명이 틀린 것이다.
제어신호(플래그)로 다른 모듈의 내부 논리 흐름을 제어하도록 통신하는 것은 제어결합(control coupling)의 정의이다. 특히 하위 모듈이 상위 모듈에게 제어신호를 보내 처리를 지시하는 경우 호출 관계상 권한이 뒤바뀌는 권리전도현상이 나타나는데, 이는 제어결합에서 발생하는 대표적 문제로 설명된다.
다음 C 프로그램의 결과 값은?
main(void) {
int i;
int sum = 0;
for(i =1; i<=10; i=i+2)
sum = sum + i;
printf("%d", sum);
}1부터 10까지 2씩 건너뛰며 더하는, 즉 10 이하 홀수의 합을 구하는 코드이므로 출력값은 25다.
제어변수 i는 1에서 시작해 2씩 증가하므로 1, 3, 5, 7, 9 다섯 번만 본문을 실행하고, i가 11이 되는 순간 조건 i<=10 이 거짓이 되어 반복이 끝난다.
sum = 1 + 3 + 5 + 7 + 9 = 25
반복문에 중괄호가 없어 본문은 sum = sum + i 한 문장뿐이고, 출력은 반복이 모두 끝난 뒤 한 번만 실행된다.
1부터 10까지 모두 더하면 55, 짝수만 더하면 30이 되므로, 증가폭이 2라는 점을 놓치면 값이 크게 어긋난다.
UNIX/Linux에서 fork()는 호출한 프로세스를 복제하여 새로운 자식 프로세스를 생성하는 시스템 호출이다. ls는 파일 목록 조회, cat은 파일 내용 출력, chmod는 파일 권한 변경 명령으로 모두 프로세스 생성과는 무관하다.
C언어의 자료형은 정수를 다루는 int, 문자를 다루는 char, 부동소수점 실수를 다루는 float·double로 구분되며 이 중 정수 자료형은 int이다. float와 double은 소수점을 포함한 실수를 표현하는 실수형 자료형이므로 정수 자료형에 해당하지 않는다.
디지털 트윈은 물리적인 사물과 컴퓨터에 동일하게 표현되는 가상의 모델로, 실제 자산 대신 소프트웨어로 가상화하여 자산 최적화·돌발사고 최소화·생산성 증가 등 설계부터 제조·서비스까지 전 과정의 효율성을 높이는 기술이다. 물리적 실체를 컴퓨터 상에 쌍둥이처럼 복제해 시뮬레이션·예측에 활용한다는 점이 핵심이다.
정보보안의 3대 요소는 기밀성·무결성·가용성(CIA)이며, 휘발성은 메모리(RAM) 데이터가 전원 차단 시 사라지는 물리적 특성을 가리키는 개념일 뿐 보안 요소가 아니다.
빈칸의 설명은 "웹에서 제공하는 정보 및 서비스를 이용하여 새로운 소프트웨어나 서비스, 데이터베이스 등을 만드는 기술"이며, 이는 여러 웹 서비스·API의 콘텐츠를 조합해 새로운 서비스를 만드는 Mashup(매쉬업)의 정의와 일치한다. Quantum Key Distribution은 양자 키 분배, Digital Rights Management는 디지털 저작권 관리, Grayware는 유해 가능성이 있는 소프트웨어로 모두 콘텐츠 조합과는 무관하다.
기능점수(FP) 모형의 비용산정 요소는 외부입력·외부출력(출력보고서)·외부조회(명령어/사용자 질의수)·내부논리파일(데이터파일)·외부인터페이스파일의 5가지이며, 클래스 인터페이스는 객체지향 설계 개념으로 FP 산정 요소에 해당하지 않는다.
DES·AES·SEED는 고정된 크기의 블록 단위로 암호화하는 블록 암호 방식이지만, RC4는 데이터를 스트림(비트/바이트 단위)으로 처리하는 스트림 암호 방식이다.
SLIM은 Putnam 모형(Rayleigh-Norden 곡선 기반)을 이론적 기초로 하여 만들어진 소프트웨어 비용·일정 자동 산정 도구이다.
RSA는 큰 합성수의 소인수분해가 어렵다는 수학적 난제를 기반으로 1978년 Rivest, Shamir, Adleman이 MIT에서 제안한 대표적인 공개키(비대칭키) 암호화 알고리즘이다. DES·SEED·ARIA는 모두 대칭키 블록 암호로 소인수분해와 무관하다.
COCOMO 모델은 프로젝트 규모·복잡도에 따라 Organic(조직형)·Semi-detached(반분리형)·Embedded(내장형)의 3가지 유형으로 나뉘며, Sequentail(Sequential)은 COCOMO의 프로젝트 유형이 아니다.
Data Mining(데이터 마이닝)은 대량의 데이터를 분석하여 변수 사이의 숨겨진 상관관계와 일정한 패턴을 찾아내는 빅데이터 분석 기법이다. Zigbee와 Wm-Bus(M-Bus)는 저전력 무선 통신 프로토콜로 데이터 분석 기법과는 무관하다.
Mesh Network는 기존 무선 랜의 한계를 극복하기 위해 등장한 기술로, 노드들이 서로 다중 경로로 연결되어 대규모 디바이스 네트워크 구성에 최적화되어 있어 차세대 이동통신·홈네트워킹·공공안전 등 특수목적 네트워크에 활용된다.
Tribe Flood Network(TFN)는 다수의 좀비 PC를 원격 조종하여 표적 시스템에 대량의 트래픽을 동시에 전송하는 대표적인 DDoS 공격 도구이다. Secure shell은 암호화된 원격 접속 프로토콜이고 Nimda는 웜 바이러스, Deadlock은 자원 점유로 인한 교착상태 현상으로 DDoS 공격과는 직접적인 관련이 없다.
CPM 네트워크에서 임계경로는 가장 긴 소요기일을 갖는 경로이다. 이미지의 네트워크 다이어그램을 읽으면 노드 간 연결과 작업 기간이 표시되어 있으며, 시작점에서 종료점까지의 모든 가능한 경로를 계산해야 한다. 주어진 네트워크에서 확인할 수 있는 주요 경로들을 비교하면: 경로 1→2→4→5(또는 유사 구성)의 누적 기간을 합산하는 방식으로 각 경로의 총 소요기일을 구한다. 네트워크의 구조상 가장 길이가 긴 경로의 총합이 14일이므로, 이것이 임계경로의 소요기일이 된다.
RIP는 거리 벡터 라우팅 프로토콜로 최단경로 탐색에 Bellman-Ford 알고리즘을 사용하며 라우팅 정보가 단순해 소규모 네트워크 환경에 적합하다. 다만 최대 홉 카운트는 15홉까지만 허용하고 16홉 이상은 도달 불가(infinity)로 처리하므로, 홉 카운트 한도를 15홉이 아닌 다른 값으로 서술한 설명은 틀린 내용이다.
타당성 검토, 계획, 요구사항 분석, 구현, 테스트, 유지보수의 단계를 순서대로 거치는 고전적 생명주기 모형은 폭포수 모형이다. 각 단계를 순차적으로 진행하며 이전 단계로 되돌아가기 어려운 선형 순차적 모델이라는 점이 특징이며, 애자일 모형처럼 반복·점증적으로 진행되지 않는다.
소프트웨어 개발 모델 중 나선형 모델의 4가지 주요 활동이 순서대로 나열된 것은?
- Ⓐ 계획 수립
- Ⓑ 고객 평가
- Ⓒ 개발 및 검증
- Ⓓ 위험 분석
나선형(Spiral) 모델의 네 활동은 계획 수립 → 위험 분석 → 개발 및 검증 → 고객 평가 순으로 한 주기를 이루므로, 기호로는 Ⓐ-Ⓓ-Ⓒ-Ⓑ 순서로 반복된다.
먼저 목표·대안·제약을 정하는 계획 수립을 거친 뒤, 대안에 숨은 위험을 식별하고 평가한다. 위험을 줄인 상태에서 프로토타입을 만들어 개발하고 검증한 다음, 그 결과를 고객이 평가한다.
고객 평가에서 나온 피드백은 곧바로 다음 주기의 계획 수립에 반영되며, 나선을 돌 때마다 시스템이 점진적으로 완성된다.
따라서 계획 수립 다음에 고객 평가나 개발 및 검증이 오는 배열은 위험 분석을 건너뛰는 셈이라 나선형 모델의 순서가 될 수 없다.
전자 칩과 같은 소프트웨어 부품(모듈)을 만들어 서로 끼워 맞추어 소프트웨어를 완성하는 재사용 방법은 합성 중심(Composition-Based) 기법이다. 이와 달리 생성 중심(Generation-Based)은 특정 응용 분야에 특화된 패턴을 파라미터화된 프로그램으로 만들어 필요한 시점에 자동 생성하는 방식으로 구분된다.
암호화 키를 저장하는 변수(key)에 소스코드 내부의 고정된 상수 값을 직접 대입하는 코드는 하드코드된 암호화 키 사용 보안약점에 해당한다. 암호화 키가 소스코드에 그대로 노출되면 역공학이나 코드 열람만으로 키가 탈취되어 암호화의 의미가 무력화될 수 있다.
소프트웨어 프로세스를 평가하고 개선하여 품질 및 생산성을 향상시키기 위한 국제 표준은 SPICE(ISO/IEC 15504)이다. SCRUM은 애자일 개발 방법론, CASE는 소프트웨어 개발 지원 도구로 프로세스 평가·개선 표준과는 성격이 다르다.
Seven Touchpoints는 Gary McGraw가 제시한 방법론으로, 실무에서 검증된 SW 보안의 모범 사례들을 SDLC(소프트웨어 개발 생명주기)의 각 단계에 통합한 소프트웨어 개발 보안 생명주기 방법론이다. CLASP은 활동·역할 중심으로 구성된 별도의 경량 보안 프로세스이고 CWE는 소프트웨어 취약점 유형을 목록화한 분류 체계라는 점에서 구분된다.
하나의 공통 전송 매체(간선)에 모든 스테이션이 나란히 매달린 형태이므로 버스형 토폴로지다.
그림은 좌우로 길게 뻗은 한 줄의 간선 위에 '데이터 전송 방향'이 양방향 화살표로 표시되고, 그 아래로 스테이션1부터 스테이션5까지 다섯 개의 사각형이 각각 짧은 분기선으로 간선에 연결된 모습이다. 중앙에 집중 제어 장치가 없고 노드끼리 직접 이어지지도 않는다.
- 성형은 중앙 허브에 모든 노드가 개별 회선으로 방사형 연결된다.
- 링형은 노드들이 닫힌 고리를 이루고, 그물형은 노드끼리 여러 경로로 서로 연결된다.
버스형은 케이블 하나로 구성돼 설치와 노드 증설이 쉽지만, 간선이 끊기면 전체 통신이 마비되고 노드가 늘수록 충돌이 잦아지는 단점이 있다.