01. 데이터베이스 모델링 과정 중 비정규화(Denormalization, 반정규화, 역정규화)의 개념을 간략히 서술하시오.
: 데이터베이스 정규화 이후, 성능향상과 개발 편의성 등 정규화 기법에 위배되는 수행 기법
* 반정규화
- 정규화된 엔티티, 속성, 관계에 대해 시스템의 성능 향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법을 의미한다.
- 정규화를 통하여 정합성과 데이터 무결성이 보장되지만, 테이블의 개수가 증가함에 따라 테이블 간의 조인이 증가하여 조회 성능이 떨어질 수 있다.
- 즉, 반정규화란 DB의 성능 향상을 목적으로 정규화를 통해 분할된 테이블을 다시 합치는 과정을 의미한다.
* 반정규화의 유형
구분 | 유형 | 설명 |
테이블 분할 | 수평 분할 | 레코드 단위로 분할 |
수직 분할 | 컬럼 단위로 분할 | |
테이블 중복 | 통계 테이블 추가 | DW, OLAP 데이터 용 |
진행 테이블 추가 | 업무 프로세스 상태 | |
컬럼기반 분할 | 조회 빈도 기반 | 고빈도 컬럼 분리 |
크기 기반 분할 | 일정 용량 컬럼 분리 | |
컬럼 중복 | 중복 컬럼 추가 | 자주 조회되는 컬럼 추가 |
파생 컬럼 추가 | 연산 결과 별도 저장 |
02. 다음 설명에 부합하는 마크업 언어는 무엇인지 영문 약어로 쓰시오.
|
: XML (eXtensible Markup Language)
* XML
- 데이터 통신을 이용해 인터페이스 구현에 사용되는 다목적 마크업 언어이다.
- HTML(웹 페이지 기본 형식) 문법과 웹 브라우저와 호환 문제와 SGML(Stand Generalized Markup Language)의 복잡성을 해결하기 위해 개발되었다.
* 인터페이스 전송 데이터
- JSON(JavaScript Object Notation)
- JavaScript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷
- 이름과 값의 쌍으로 이루어진다.
- XML(eXtensible Markup Language)
- 웹에서 구조화한 문서를 표현하고 전송하도록 설계한 마크업 언어
- CSV(Comma Separeted Values)
- 몇 가지 필드를 쉼표(,)로 구분한 텍스트 데이터 및 텍스트 파일
- YAML
- XML, C, Python, FRC2822, 펄에서 정의된 이메일 양식에서 개념을 얻어 만들어진 '사람이 쉽게 읽을 수 있는' 데이터 직렬화 양식
03. 소프트웨어 테스트 방법의 원리 중 하나인 살충제 패러독스(Pesticide Paradox)의 개념을 간략히 설명하시오.
: 동일한 테스트 케이스로 동일한 절차를 반복 수행하면 새로운 결함을 찾을 수 없다.
* 소프트웨어 테스트의 원리
- 테스팅은 결함이 존재함을 밝히는 활동이다.
- 완벽한 테스팅은 불가능하다.
- 테스팅은 개발 초기에 시작해야 한다.
- 결함 집중(파레토 법칙)
- 살충제 패러독스
- 테스팅은 정황(context)에 의존한다.
- 오류-부재의 궤변
* 살충제 패러독스
- 동일한 테스트 케이스로 동일한 절차를 반복 수행하면 새로운 결함을 찾을 수 없다는 것을 의미한다.
- 잠재된 수많은 결함을 발견하기 위해서는 테스트 케이스를 정기적으로 개선하는 것이 필요하다는 원리이다.
- 같은 테스트 케이스를 가지고 테스트를 계속해서 반복하면 내성으로 인해 결국은 버그가 발견되지 않는다.
- 이러한 현상을 방지하기 위해서는 테스터가 적극적인 자세를 가지고 지속적으로 테스트 케이스를 검토하고 개선해야 한다.
04. 프로그램 모듈화와 모듈의 독립성에 대한 설명이다. 아래 ①, ②에 해당하는 용어를 쓰시오.
|
: ① 결합도(Coupling) , ② 응집도(Cohesion)
* 응집도(Cohesion)
- 모듈 안의 요소들이 서로 기능적으로 관련되어 있는 정도
- 응집도가 강할수록 높은 품질의 모듈이다.
* 응집도 유형
기능적 (Functional) |
모듈 내부의 모든 기능 요소들이 한 문제와 연관되어 수행되는 경우 | 응집도 강함 |
순차적 (Sequential) |
한 모듈 내부의 한 기능요소에 의한 출력 자료가 다음 기능 요소의 입력 자료로 제공되는 경우 | |
통신적 (Communication) |
동일한 입력과 출력을 사용하는 소작업들이 모인경우 | |
절차적 (Procedural) |
모듈이 다수의 관련 기능을 가질 때 모듈 내부의 기능 요소들이 그 기능을 순차적으로 수행할 경우 | |
시간적 (Temporal) |
특정 시간에 처리되는 여러 기능을 모아 한 개의 모듈로 작성할 경우 | |
논리적 (Logical) |
유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우 | |
우연적 (Coincidental) |
모듈 내부의 각 기능 요소들이 서로 관련이 없는 요소로만 구성된 경우 | 응집도 약함 |
* 결합도(Coupling)
- 두 모듈 간의 상호 의존도
- 모듈 간의 결합도를 약하게 하면 모듈 독립성이 향상되어 시스템을 구현하고 유지보수 작업이 쉽다.
- 즉, 결합도가 낮을수록 높은 품질의 모듈이다.
* 결합도 유형
자료 (Data) |
- 모듈 간의 인터페이스가 자료 요소로만 구성된 경우 - 모듈 간의 인터페이스로 값이 전달되는 경우 |
결합도 약함 |
스탬프 (Stamp) |
- 두 모듈이 동일한 자료 구조를 조회하는 경우 - 모듈 간의 인터페이스로 배열이나 오브젝트, 스트럭처 등이 전달되는 경우 |
|
제어 (Control) |
- 어떤 모듈이 다른 모듈의 내부 논리 조작을 제어하기 위한 목적으로 제어신호를 이용하여 통신하는 경우 - 하위 모듈에서 상위 모듈로 제어신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도현상이 발생함 |
|
외부 (External) |
어떤 모듈에서 외부로 선언한 변수(데이터)를 다른 모듈에서 참조할 경우 | |
공통 (Common) |
여러 모듈이 공통 자료 영역을 사용하는 경우 | |
내용 (Content) |
한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 조회하도록 설계되었을 경우 | 결합도 강함 |
05. 다음은 어떤 프로그램의 구조를 나타낸다. Fan-in의 수가 2 이상인 모듈의 이름을 쓰시오.

: F, H
* 소프트웨어 구조에서 사용되는 용어
- 소프트웨어 구조는 소프트웨어의 구성요소인 모듈 간의 관계를 계층적 구성을 나타낸 것이다.
Fan-In | 주어진 한 모듈을 제어하는 상위 모듈 수, 들어오는 개수 |
Fan-Out | 주어진 한 모듈이 제어하는 하위 모듈 수, 나가는 개수 |
Depth | 최상위 모듈에서 주어진 모듈까지의 깊이 |
Width | 같은 등급(Level)의 모듈 수 |
Superordivate | 다른 모듈을 제어하는 모듈 |
Subordinate | 어떤 모듈에 의해 제어되는 모 |
06. 다음 설명 중 빈 칸에 가장 부합하는 용어를 영문약어로 쓰시오.
|
: JSON
* JSON(JavaScript Object Notation)
- 데이터 통신을 이용한 인터페이스 구현 방법이다.
- 속성-값의 쌍(Attribute-Value Pairs)인 데이터 객체 전달을 위해 사람이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷
- 비동기 처리에 쓰이는 AJAX(Asynchronous JavaScript and XML)에서 XML을 대체하는 주요 데이터 포맷
07. 다음 설명 중 빈 칸 ①~③에 가장 부합하는 애플리케이션 성능 측정을 위한 지표를 쓰시오.
|
: ① 처리량 , ② 응답 시간 , ③ 반환 시간 혹은 경과 시간
* 애플리케이션의 성능을 측정하기 위한 지표
처리량 (Throughput) |
- 애플리케이션이 제한된 시간에 처리할 수 있는 처리량, 트랜잭션 수 - 웹 애플리케이션의 처리량은 시간당 처리 가능한 페이지 수를 의미 |
자원 사용률 (Resource Usage) |
처리하는 동안 사용하는 CPU 사용량, 메모리 사용량, 네트워크 사용량 |
응답 시간 (Response Time) |
- 요구자의 작업 요청후 애플리케이션의 응답 출력이 개시될 때까지의 시간 - 웹 애플리케이션의 응답 시간은 메뉴 클릭 시 해당 메뉴가 나타나기까지 걸리는 시간을 의미 |
경과 시간 (Turnaround Time) |
요구를 입력한 시점부터 트랜잭션 처리 후 그 결과의 출력이 완료될 때까지 걸리는 시간 |
08. 학생(STUDENT) 테이블에 전자과 학생 50명, 전기과 학생 100명, 건축과 학생 50명의 정보가 저장되어 있을 때, 다음 ①~③ SQL문의 실행 결과 튜플 수를 쓰시오. (단, DEPT 컬럼은 학과명이다.)
① SELECT DEPT FROM STUDENT;
② SELECT DISTINCT DEPT FROM STUDENT; ③ SELECT COUNT(DISTINCT DEPT) FROM STUDENT WHERE DEPT=‘건축과’; |
: ① 200 , ② 3 , ③ 1
* SELECT(검색문)
SELECT (DISTINCT) 속성_이름 FROM 테이블_이름 (WHERE 조건) (GROUP BY 속성_이름 (HAVING 그룹조건)) (ORDER BY 속성_이름 (ASC/DESC)) |
- DISTINCT : 검색 결과에 중복되는 값이 있는 경우 한 번만 표현하도록 하는 옵션이며, 생략 시 중복된 값이 모두 표시된다.
- HAVING 그룹조건 : GROUP BY에 의해 그룹으로 분류를 한 후 조건을 제시할 때 사용된다.
- ASC : 오름차순(작은 값에서 큰 값)으로 정렬할 때 사용되는 옵션이다. 기본 옵션이다.
- DESC : 내림차순(큰 값에서 작은 값)으로 정렬할 때 사용되는 옵션이다.
09. 다음에 가장 부합하는 네트워크 공격 유형을 쓰시오.
|
: Land attack
* LAND Attack(Local Area Network Denial Attack)
- Dos(Denial of Service, 서비스 거부)의 종류, 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격 방법이다.
- IP 스푸핑을 이용한 SYN 공격이다.
- 공격자가 패킷의 출발지 주소나 포트를 임의로 변경하여 출발지와 목적지 주소를 동일하게 함으로써, 공격 대상 컴퓨터의 실행 속도가 느려지거나 동작이 마비되어 서비스 거부 상태에 빠지도록 하는 공격 방법이다.
- 패킷의 출발지와 목적지의 IP 주소를 희생자 측으로 동일하게 변조한다는 것이 핵심이다.
10. 통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다. 통신 프로토콜의 기본 요소 3가지를 쓰시오.
: 구문(Syntax), 의미(Semantic), 타이밍(Timing)
* 프로토콜의 기본 요소
- 프로토콜(Protocol)은 둘 이상의 컴퓨터 사이에 데이터 전송을 할 수 있도록 미리 정보의 송·수신 측에서 정해둔 통신 규칙
구문(Syntax) | 전송 데이터의 형식, 부호화, 신호 레벨 등을 규정함 |
의미(Semantic) | 전송 제어와 오류 관리를 위한 제어 정보를 포함함 |
타이밍(Timing) | 두 개체 간에 통신 속도를 조정하거나 메세지의 전송 및 순서도에 대한 특성을 가리킴 |
11. HRN(Highest Response-ratio Next) 우선순위를 결정하는 계산식을 쓰시오.
: ( 대기시간 + 실행시간 ) / 실행시간. 이때 실행시간 대신 서비스시간도 가능.
* 프로세스 스케줄링
- 프로세스의 생성 및 실행에 필요한 시스템의 자원을 해당 프로세스에 할당하는 작업을 말한다.
- 스케줄링의 기법은 비선점 기법과 선점 기법으로 구분할 수 있다.
* 비선점(Non-preemptive) 스케줄링
- 일단 CPU를 할당받으면 다른 프로세스가 CPU를 강제적으로 빼앗을 수 없는 방식
- 모든 프로세스에 대한 공정한 처리가 가능하다.
- 일괄 처리 시스템에 적합하다.
FCFS (First Come First Service) |
준비상태 큐에 도착한 순서대로 CPU를 할당하는 기법 - 평균 대기시간, 최대/최소 평균 반환시간 |
SJF (Shortest Job First) |
- 준비상태 큐에서 대기하는 프로세스들 중에서 실행 시간이 가장 짧은 프로세스에게 먼저 CPU를 할당하는 기법 - 평균 대기 시간을 최소화함 - 평균 실행시간, 평균 대기시간, 평균 반환시간 |
HRN (Highest Response-ratio Next) |
- 어떤 작업이 서비스 받을 시간과 그 작업이 서비스를 기다린 시간으로 결정되는 우선순위에 따라 CPU를 할당하는 기법 - 우선순위 계산식 = ( 대기시간 + 서비스시간 ) / 서비스시간 |
기한부 (Deadline) |
작업이 주어진 특별한 시간이나 만료시간 안에 완료되도록 하는 기법 |
우선순위 (Priority) |
- 준비상태 큐에서 대기하는 프로세스에게 부여된 우선순위가 가장 높은 프로세스에게 먼저 CPU를 할다하는기법 - 에이징(Aging) 기법 : 프로세스가 자원을 기다리고 있는 시간에 비례하여 우선순위를 부여함으로써 무기한 문제를 방지하는 기법 |
* 선점(Preemptive) 스케줄링
- 한 프로세스가 CPU를 할당받아 실행 중이라도 우선순위가 높은 다른 프로세스가 CPU를 강제적으로 빼앗을 수 있는 방식
- 긴급하고 높은 우선순위의 프로세스들이 빠르게 처리될 수 있다.
- 대화식 시분할 시스템에 적합하다.
SRT (Shortest Remaining Time) |
- 실행 중인 프로세스의 남은 시간과 준비상태 큐에 새로 도착한 프로세스의 실행 시간을 비교하여 실행 시간이 더 짧은 프로세스에게 CPU를 할당하는 기법 - 시분할 시스템에 유용함 - 평균 반환시간(최종 완료 시간 - 도착 시간) 그림그리기! |
RR (Round Robin) |
- 주어진 시간 할당량 안에 작업을 마치지 않으면 준비완료 리스트의 가장 뒤로 배치되는 기법 - 시간 할당량이 너무 커지면 FCFS와 비슷하고, 시간 할당량이 너무 작아지면 오버헤드가 커지게 됨 - 사용 순서, 평균 대기시간, 평균 반환시간(대기시간을 먼저 구한 후, 대기시간+실행시간/개수) |
다단계 큐 (MQ, Multi-level Queue) |
프로세스들을 우선순위에 따라 시스템 프로세스, 대화형 프로세스, 일괄처리 프로세스 등으로 상위, 중위, 하위 단계의 단계별 준비 큐를 배치하는 방법 |
다단계 피드백 큐 (MFQ, Multi-lever Feedback Queue) |
- 각 준비상태 큐마다 부여된 시간 할당량 안에 완료하지 못한 프로세스는 다음 단계의 준비상태 큐로 이동하는 기법 - 짧은 작업, 입/출력 위주의 작업 권에 우선권을 부여함 - 마지막 단계의 큐에서는 작업이 완료될 때까지 RR 방식을 취함 |
프로세스 스케줄링 계산식에 대한 특강은 흥달쌤 유투브를 참고하면 된다 !
https://youtu.be/3gyCZpqi6OM?si=1e5Fda-CHBFOb6sO
https://youtu.be/eLsf6qHZGzc?si=dqoBKU3a1Ouh6Mjo
https://youtu.be/AIbzzUXZN8k?si=66fsdAHfDdiPVh5g
https://youtu.be/z4wbl7hWIWU?si=LIKBYTyL61hwXHp0
12. 다음은 트랜잭션(Transaction)의 주요 특성 4가지이다. 빈칸 ①, ②에 알맞은 용어를 쓰시오.
( ① )
|
트랜잭션의 가장 기본적인 특성으로 트랜잭션 내의 연산은 반드시 모두 수행되어야 하며 그렇지 못한 경우 모두 수행되지 않아야 함
|
일관성
|
트랜잭션이 정상적으로 완료된 후 언제나 일관성 있는 데이터베이스 상태가 되어야 하며, 결과에 모순이 생겨서는 안 됨
|
( ② )
|
하나의 트랜잭션이 수행 중에는 다른 트랜잭션이 접근할 수 없고 각각의 트랜잭션은 독립적이어야 함
|
영속성
|
지속성이라고도 하며, 트랜잭션이 성공적으로 완료된 후 결과는 지속적으로 유지되어야 함
|
: ① 원자성 , ② 독립성 또는 격리성
* 트랜잭션의 특성 : ACID
- 원자성(Atomicity)
- 완전하게 수행이 완료되지 않으면 전혀 수행되지 않아야 한다.
- 연산은 Commit, Rollback을 이용하여 적용 또는 취소로 한꺼번에 완료되어야 한다.
- 중간에 하나의 오류가 발생되더라도 취소가 되어야 한다.
- 일관성(Consistency)
- 시스템의 고정 요소는 트랜잭션 수행 전후가 같아야 한다.
- 트랜잭션 결과는 일관성을 유지해야 한다.
- 트랜잭션 처리 전과 후의 데이터베이스 상태는 같아야 한다. 처리 후라고 해서 구조나 형식이 변경되어서는 안 된다.
- 격리성(Isolation)
- 트랜잭션 실행 시 다른 트랜잭션의 간섭을 받지 않아야 한다.
- 영속성(Durability)
- 트랜잭션의 완료 결과가 데이터베이스에 영구히 기억되어야 한다.
13. OSI 7 참조 모델 중 다음이 설명하는 계층을 쓰시오.
- 전기적, 기계적, 기능적인 특성을 이용해서 통신 케이블로 데이터를 전송
- 통신 단위는 비트이며 이것은 1과 0으로 나타내어지는, 즉 전기적으로 On, Off 상태이다. - 데이터를 전달할 뿐, 데이터가 무엇인지 어떤 에러가 있는지 신경쓰지 않는다. |
: 물리 계층
* OSI 7 참조 모델
OSI 7 참조 모델 | 단위 | 주요 장비 | TCP / IP | |
응용 계층 | 메시지 | 게이트웨이 | 응용 계층 | telnet, FTP, HTTP, POP, SMTP DHCP, SNMP, DNS |
표현 계층 | ||||
세션 계층 | ||||
전송 계층 | 세그먼트, 데이터그램 | 전송 계층 | TCP, UDP | |
네트워크 계층 | 패킷 | 라우터 | 인터넷 계층 | IP, ARP, RARP, ICMP, IGMP |
데이터링크 계층 | 프레임 | 브리지, 스위치 | 링크 계층 | Ethernet, IEEE 802 |
물리 계층 | 비트 | 허브, 리피터 |
14. 릴리즈 노트 작성 항목 중 문서 이름(릴리스 노트 이름), 제품 이름, 버전 번호, 릴리즈 날짜, 참고 날짜, 노트 버전 등을 기술하는 작성 항목은 무엇인지 쓰시오.
: 헤더 혹은 머리말(Header)
15. 데이터 마이닝(Data mining)의 개념을 간략히 서술하시오.
: 대규모로 저장된 데이터 안에서 체계적이고 자동적으로 통계적 규칙이나 패턴을 찾아내는 것
: 수많은 데이터에서 가치있는 유용한 정보를 찾아내는 것
* 데이터 마이닝
- 대량의 데이터에서 실제로 존재하지 않는 정보를 얻어내기 위해 각 데이터의 상관관계를 통계적 분석, 인공지능 기법 등을 통해 통계적 규칙이나 패턴을 찾아내는 것이다.
16. 1990년 R. Rivert가 MD4를 일방향 해시 함수로 개선한 알고리즘으로, 임의의 길이의 값을 입력받아서 128비트 길이의 해시값을 출력하는 알고리즘은 무엇인지 쓰시오.
: MD5 (Message-Digest algorithm 5)
* 암호화 알고리즘
- 비밀키(대칭키) 알고리즘
- DES
- AES
- ARIA
- SEED
- IDEA
- 공개키(비대칭키) 알고리즘
- RSA
- ElGama
- 해시 알고리즘
- SHA
- MD5
- HAS-16
17. LOC 기법에 의하여 예측된 총 라인 수가 30,000라인일 경우 개발에 투입될 프로그래머의 수가 5명이고, 프로그래머들의 평균 생산성이 월당 300라인일 때, 개발에 소요되는 기간을 구하는 계산식과 기간(개월)을 구하여 쓰시오.
: 30000/5/300=20 , 20개월
18. 다음은 C언어로 작성된 프로그램이다. 이를 실행한 결과를 쓰시오,
int a[] = { 95, 75, 85, 100, 50 };
int i, j, temp;
int n = sizeof(a) / sizeof(int);
int n = 5;
for(i = 0; i < n-1; i++) {
for(j = 0; j < 4-i; j++) {
if (a[j] > a[j+1] ) {
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for (i = 0; i<5; i++ ) {
printf("%d", a[i]);
}
: 50 75 85 95 100
버블 정렬 알고리즘을 C언어로 구현하여 오름차순으로 정렬된 1차원 배열의 요소(값)을 출력하는 프로그램이다.
버블정렬의 오름차순은 가장 큰 데이터가 가장 오른쪽으로 밀려 이동한다.
각 단계마다 이웃한 두 데이터를 교환하는 과정들이 일어나므로 교환 정렬이라고도 한다.
19. 다음은 JAVA로 작성된 프로그램이다. 이를 실행한 결과를 쓰시오.
public static int[] makeArray(int n){
int[] t = new int[n];
for (int i=0; i<n; i++){
t[i] = i;
}
return t;
}
public static void main(String[] args){
int[] a = makeArray(4);
for (int i=0; i<a.length; i++)
System.out.print(a[i]+" ");
}
: 0 1 2 3
해당 프로그램은 JAVA의 1차원 배열 객체를 생성하고 각 요소에 값을 할당한 후 배열의 요소(값)을 출력하는 프로그램이다.
20. 다음은 JAVA로 작성된 프로그램이다. 이를 실행한 결과를 쓰시오.
int i = 3, c = 1;
switch(i) {
case 1: c++;
case 2: c += 3;
case 3: c = 0;
case 4: c += 3;
case 5: c -= 10;
default: c--;
}
System.out.print(c);
: 0 + 3 - 10 - 1 = -8
선택 제어구조의 명령문인 switch~case 문에서는 switch 명령문의 정수값에 해당하는 블록 내의 case문으로 분기된다.
이때 break; 명령문이 존재하면 switch~case 블록을 벗어난다.
하지만, 위 프로그램에서는 break; 명령문이 존재하지 않으므로 레이블 case 3: 이후의 명령어를 차례대로 실행한다.
해설은 유투브 흥달쌤 강의와, 이기적 실기 기본서를 참고하였습니다 :)
https://youtu.be/S7l1qX0WhqE?si=u-TTN5ko29VYe6b6
'정보처리기사' 카테고리의 다른 글
[정보처리기사 실기 기출] 2021년 2회 (10) | 2024.10.08 |
---|---|
[정보처리기사 실기 기출] 2021년 1회 (2) | 2024.10.08 |
[정보처리기사 실기 기출] 2020년 4회 (11) | 2024.10.07 |
[정보처리기사 실기 기출] 2020년 3회 (7) | 2024.09.28 |
[정보처리기사 실기 기출] 2020년 2회 (17) | 2024.09.27 |