새소식

자격증 공부/정보처리기사

[정보처리기사] 필기 준비 - 22년 3월 기출문제

  • -

최근 면접 준비로 인해 미뤄뒀던 정보처리기사 시험 준비... 어영부영 하다보니 벌써 일주일밖에 남지 않았다..!! (뜨아아)

책을 사긴 했으나 책은 펴보기는 커녕,,, 인터넷에 올라와있는 정리 노트도 다 보지 못한 채로 일단 기출 문제부터 돌리기 시작했다. 

 

가장 최근 시험이었던 22년 3월 5일 기출 문제

[첫번째 필기 연습]

정보처리기사 필기 시험은 각 과목 40점 이상, 평균 60점 이상을 맞아야 통과할 수 있다. 

다들 필기는 실기보다 쉽다 ~ 라고 하지만,, 프로그래밍 언어 활용 40점 실화인가 ... ㅋㅋㅋㅋ(전공생 무룩,,)

 

다음 기출 문제는 좀 더 열심히 공부해서 꼭 60점을 넘겨보리라..!!!

 

[기출문제집]

 

최강 자격증 기출문제 전자문제집 CBT

전자문제집, CBT, 컴씨비티, 씨비티, 기사, 산업기사, 기능사, 컴활, 컴퓨터활용능력, 1급, 2급, 워드, 정보처리, 전기, 소방, 기계, 사무자동화, 정보기기, 제과, 제빵, 한국사, 공무원, 수능, 필기,

www.comcbt.com

 


[오답노트] 

오답 노트 중에 외울 만한 것들 정리

- 해당 기출문제집의 풀이를 활용. 

 

1. 소프트웨어 설계 
정적(구조적)다이어그램 : 클객컴배복패 

cf. 순차 다이어 그램

 

스토리보드 : 디자이너와 개발자가 최종적으로 참고하는 작업지침서
상단이나 우측에 제복,작성자등을 입력하고 좌측에는 UI화면,우측엔 디스크립션을 기입한다.
프로토타입 : 와이어프레임이나 스토리보드등에 인터랙션을 적용함으로써 실제 구현된 것처럼 테스트가 가능한 동적인 형태의 모형
유스케이스 : 사용자 측면에서의 요구사항으로, 사용자가 원하는 목표를 달성하기 위해 수행할 내용을 기술한다.

 

<클래스 설계 원칙> 
단일 책임원칙 : 하나의 객체는 하나의 동작만의 책임을 가짐
개방-폐쇄의 원칙 : 클래스는 확장에 대해 열려 있어야 하며 변경에 대해 닫혀 있어야 한다.
리스코프 교체의 원칙 : 특정 메소드가 상위 타입을 인자로 사용할 때, 그 타입의 하위 타입도 문제 없이 작동해야 함
의존관계 역전의 원칙 : 상위 계층이 하위 계층에 의존하는 전통적인 의존관계를 반전(역전)시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있음
생성패턴
- 추상팩토리(Abstract Factory)
- 빌더(Builder)
- 팩토리메서드(FactoryMethod)
- 프로토타입(Prototype)
- 싱글톤(Sington)

구조패턴
- 어댑터(Adapter)
- 브리지(Bridge)
- 컴포지트(Composite)
- 데코레이터(Decorator)
- 파사드(Facade)
- 플라이웨이트(Flyweight)
- 프록시(Proxy)

행위패턴
- 책임 연쇄(Chain of Responsibility)
- 커맨드(Command)
- 인터프리터(InterPreter)
- 이터레이터(Iterator)
- 중재자(Mediator)
- 메멘토(Memento)
- 옵서버(Observer)
- 상태(State)
- 전략(Strategy)
- 템플릿메서드(Template Method)
- 방문자(Visitor)
디자인패턴 : 객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴.
Rumbaugh(럼바우) 방법
모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 기법으로, 객체 모델링 기법(Object Modeling Technique) 라고도 한다. 분석활동은 객체모델링 -> 동적 모델링 -> 기능 모델링 순으로 통해 이루어진다

Booch(부치) 방법
미시적(Micro) 개발 프로세스와 거시적(Macro) 개발 프로세스를 모두 사용하는 분석 방법으로, 클래스와 객체들을 분석 및 식별하고 클래스의 속성과 연산을 정의한다.

Jacobson 방법
Use Case를 강조하여 사용하는 분석 방법이다.

Coad와 Yourdon 방법
E-R 다이어그램을 사용하여 객체의 행위를 모델링하며, 객체 식별, 구조 식별, 주제 정의, 속성과 인스턴스 연결 정의, 연산과 메시지 연결 정의 등의 과정으로 구성하는 기법

Wirfs-Brock 방법
분석과 설계 간의 구분이 없고, 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행하는 기법
EAI(Enterprise Application Integration): 기업 응용 프로그램 통합으로 기업용 응용 프로그램의 구조적 통합 방안을 가리킴
FEP(Front-End Processor): 입력되는 데이터를 컴퓨터의 프로세서가 처리하기 전에 미리 처리하여 프로세서가 차지하는 시간을 줄여주는 프로그램이나 하드웨어
GPL(General Public License): 자유 소프트웨어 재단(OSF)에서 만든 자유 소프트웨어 라이선스
Duplexing: 이중화(데이터베이스의 회복 기법 중 가장 간단한 것)
Method(메서드) : 클래스로부터 생성된 객체를 사용하는 방법, 객체가 메시지를 받아 실행해야 할 객체의 구체적인 연산
Message(메시지) : 객체 간 상호 작용을 하기 위한 수단, 객체에게 어떤 행위를 하도록 지시하는 방법
Class(클래스) : 특정 객체 내에 있는 변수와 메서드를 정의하는 일종의 틀, 객체 지향 프로그래밍에서 데이터를 추상화하는 단위
Field(필드) : SQL에서 열 또는 속성이라고 불리는 것
2. 소프트웨어 개발
< 클린 코드 (Clean Code) > 
추상화 : 상위 클래스; 프로그램 특성만 간략하게, 하위 클래스; 세부적 내용 구현
의존성(배제) : 다른 모듈에 미치는 영향을 최소화하여 코드 변경시 영향이 가지 않도록
중복성(최소화) : 코드의 중복을 최소화
가독성 : 누구든지 읽기 쉽게 작성
단순성 : 코드를 단순하게 작성(프로그램을 최소단위로 분리해 작업을 한번에 하나씩 처리하도록)
<단위 테스트>
테스트 드라이버 - 테스트의 대상이 되는 하위 모듈을 호출하고, 파라미터를 전달하는 가상의 모듈로 상향식 테스트에 필요함. 
테스트 스텁 - 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로, 일시적으로 필요한 조건만을 가지고 있는 테스트용 모듈
테스트 슈트 - 테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합
테스트 케이스 - 사용자의 요구사항을 정확히 준수했는지 확인하기 위한 입력 값, 실행조건, 기대결과 등으로 만들어진 테스트 항목의 명세서
<자료 구조의 분류>
-비선형 구조 : 트리, 그래프
-선형 구조 : 스택, 큐, 데크, 리스트
-파일 구조 : 순차파일, 색인파일, 직접파일
<인터페이스 통신>
▶JSON(Javascript Object Notation)
속성-값 쌍 또는 “키-값 쌍”으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷, AJAX에서 많이 사용되고 XML을 대체하는 주요 데이터 포맷

▶ XML(Extensible Markup Language)
HTML의 단점을 보완한 인터넷 언어, SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어

▶ AJAX(Asynchronous Javascript And XML)
자바스크립트를 사용하여 웹 서버와 클라이언트 간 비동기적으로 XML 데이터를 교환하고 조작하기 위한 웹 기술, XMLHttpRequest 객체를 이용해 전체 페이지를 새로 로드하지 않고 필요한 부분만 로드한다.

▶ REST(Representational State Transfer)
⦁  웹과 같은 분산 하이퍼미디어 환경에서 자원의 존재/상태 정보를 표준화된 HTTP 메서드로 주고받는 웹 아키텍처 (리소스, 메서드, 메시지)
⦁  HTTP URI를 통해 자원을 명시하고, HTTP 메서드(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 생성, 조회, 갱신, 삭제 등의 명령을 적용할 수 있는 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처이다.

<NS-Chart(Nassi-Schneiderman Chart)>
- 3가지 기본구조만으로 논리를 표현(표준화 가능)
- Flow Chart의 최대 단점인 화살표가 표시되지 않음
- 기본구조의 입구와 출구는 각 하나씩
- 전체적인 알고리즘을 일목요연하게 볼 수 있음
Selection Sort - 배열 내에서 최소값을 찾은 다음 정렬 되지 않은 맨 앞 값과 교환을 하며 정렬을 해 나아가는 방법 (정렬 시간 복잡도 모두 O(n^2))

Bubble Sort - 왼쪽에서 부터 두 데이터를 비교해서 앞에 있는 데이터가 뒤에 있는 데이터 보다 크면 자리를 바꾸는 정렬 알고리즘(정렬 시간 복잡도 모두 O(n^2))

Insert Sort - 한 개의 값을 추출한 다음 앞쪽으로 비교해서 본인의 자리를 알맞게 찾아가게끔 하는 정렬 방법. 정렬 시간 복잡도는 최상일 경우 O(n), 평균과 최악일 경우 O(n^2)

Merge Sort(병합 정렬) - 또한 분할 정복에 기반한 알고리즘으로 리스트를 1 이하인 상태까지 절반으로 자른 다음 재귀적으로 합병 정렬을 이용해서 전체적인 리스트를 합병하는 정렬 과정. O(n log n)

Quick Sort - 분할 정복 (Divide and Conquer) 에 기반한 알고리즘. 피벗을 사용함. 최악의 경우 O(n^2)회의 비교를 수행하는 정렬
<화이트 박스 검사 기법>
1. 데이터 흐름 검사
2. 루프 검사

화이트박스 테스트의 종류
1. 기초경로 검사
2. 제어구조 검사

화이트박스 테스트 검증 기준
1. 문장 검증 기준
2. 분기 검증 기준
3. 조건 검증기준
4. 분기/조건 기준

블랙박스 테스트의 종류
1. 동치(동등)분할 검사
2. 경계값 분석
3. 원인-효과 검사
4. 오류 예측 검사
5. 비교검사
<소프트웨어 품질 관련 국제 표준 ISO/IEC 25000>
- ISO 9126, ISO 14598. ISO 12119의 여러 표준 문서를 통합하고 재구성하여 만든 표준 문서
- SQuaRE(Software Quality and Requirement Evaluation)라고도 함
- 2500n, 2501n, 2502n, 2503n, 2504n의 다섯가지 분야로 나눌수 있고, 확장 분야인 2505n이 있다.
- 2500n (9126-1, 품질 관리 지침)
  SQuaRE에 대한 개요, 전체에 대한 계획과 관리
- 2501n (9126-2, 품질 모형)
  품질 모델 및 품질 사용 안내
- 2503n (9126-3, 품질 측정)
  매트릭을 통한 측정 방법 제시
- 2504n (9126-4, 품질 정의(요구사항))
  품질 요구사항
- 2505n (9126-5, 품질 평가)
  품질 프로세스에 관한 개요, 관점들의 평가 프로세스

 

3. 데이터베이스 구축
<데이터 베이스 설계 단계 중 물리적 설계 시 고려 사항>
- 응답 시간
- 저장 공간의 효율화
- 트랜잭션 처리량
o 어떤 인덱스를 만들 것인지에 대한 고려
o 성능 향상을 위한 개념 스키마의 변경 여부 검토
o 레코드의 크기
o 파일과 구조 저장을 위한 최소한의 공간
o 빈번한 질의와 트랜잭션들의 수행 속도를 높이기 위한 고려사항
<DELETE>
- DELETE문은 테이블내의 튜플들만 삭제, DROP문은 테이블 자체를 삭제
- 테이블의 행을 삭제할 때 사용
- SQL을 사용 용도에 따라 분류할 경우; DML
- DELETE FROM [TABLE] WHERE [조건]
<정규형>
 - 제1정규형 : 릴레이션에 속한 모든 속성의 도메인이 원자값으로만 구성되어 있으면 제 1 정규형에 속한다.
- 제2정규형 : 제1 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 제2 정규형에 속한다.(부분 함수 종속 제거)
- 제3정규형 : 제2 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않으면 제3 정규형에 속한다.
- BCNF(보이스/코드) 정규형 : 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키이면 보이스/코드 정규형에 속한다.
- 제4정규형 : BCNF 정규형을 만족하면서 함수 종속이 아닌 다치 종속을 제거해야 만족할 수 있다.
- 제5정규형 : 제4 정규형을 만족하면서 후보키를 통하지 않는 조인 종속을 제거해야 만족할 수 있다.
   -> 모든 조인 종속성의 만족이 R의 후보 키를 통해서만 만족

솔직히 3강은 DB에서 다 배운 내용들.. 한국어로 번역하니까 하나도 모르겠음 ㅎ....

1. 기본키
*유일성과 최소성을 만족하는 속성을 가지는 후보키 중에 지정된 하나의 키
*중복되는 값, Null 값을 가질 수 없음.
* 값의 변화가 거의 없고 단순한 후보키가 기본키로 적합.

2. 슈퍼키
*데이터베이스에서 테이블의 행을 고유하게 식별할 수 있는 속성 or 속성의 집합

3. 외래키
* 관계형 데이터베이스에서 한 테이블 속성 집합이 다른 테이블의 기본키가 됨.
* 데이터베이스 내에 존재하는 테이블들의 관계에서 참조의 무결성을 보장하기 위함임
* 중복되는 값, 비어있는 값(Null) 가질 수 있음(<->기본키)
-> 다른 릴레이션의 기본키를 참조하는 키! 

4. 후보키
* 유일성과 최소성을 만족하는 속성 or 속성들의 집합
* 슈퍼키 중 최소성을 만족하는 것이 후보키가 됨.
* 후보키(candidate key)는 기본키(primary key)로 사용 할 수 있으며, 후보키가 여러개일 경우에는 하나를 지정해 사용.
(지정되지 않은 나머지 후보키 = 대체 키(alternate key))
카디널리티=행디그리(차수)=열'카행', '디열(차열)'로 암기
<CREATE TABLE>
PRIMARY KEY : 테이블의 기본 키를 정의 / 유일하게 테이블의 각 행을 식별
FOREIGN KEY : 참조 대상을 테이블로 명시 / 외래 키를 정의 / 열과 참조된 테이블의 열 사이의 외래 키 관계를 적용하고 설정
UNIQUE  : 테이블 내에서 얻은 유일한 값을 갖도록 하는 속성
NOT NULL  : 해당 컬럼은 NULL값을 포함하지 않도록 하는 속성
CHECK  : 개발자가 정의하는 제약조건 / 참(TRUE)이어야 하는 조건을 지정
DEFAULT : 해당 필드의 기본값을 설정
cf. 속성 타입 변경 없음.
<분산 데이터 시스템 (Distributed Database System)의 구성 요소 >
1) 분산 처리기
2) 분산 데이터베이스
3) 통신 네트워크
4) 분산 트랜잭션
*분산 데이터베이스의 구조 - 전역, 분할(단편화), 할당, 지역 스키마
<데이터 베이스 병행 제어의 목적>
- 여러 사용자들의 데이터베이스 공동 사용을 최대화
- 사용자의 응답 시간 최소화
- 데이터베이스 시스템의 활용도 최대화
- 데이터베이스의 일관성 유지
4. 프로그래밍 언어 활용
<IP 주소 체계>
1) IPv4
ㄱ. 32비트 주소
ㄴ. 유니캐스트/멀티캐스트/브로드캐스트 사용
2) IPv6
ㄱ. 128비트 주소
ㄴ. 기존 IPv4의 주소 부족 문제를 해결하기 개발
ㄷ. 인증성/기밀성/무결성 지원 (=보안성 강화)
ㄹ. 유니캐스트, 애니캐스트, 멀티캐스트 사용
1) || : OR 연산 - 둘 중 하나라도 참이면 1
2) && : AND 연산 - 둘 다 참이어야 1
3) ** : 거듭제곱
4) != : 부등(피연산자가 서로 다를 시 true)
ICMP(Internet Control Message Protocol) : TCP/IP 계층 구조의 IP의 동작 과정에서의 전송 오류가 발생하는 경우에 대비해 오류 정보를 전송하는 목적으로 사용하는 프로토콜
<응집도와 결합도>
좋은 소프트웨어일수록 결합도는 낮고, 응집도는 높다
결합도 : 어떤 모듈이 다른 모듈에 의존하는 정도
응집도 : 한 모듈 내부의 처리 요소들이 서로 관련되어 있는 정도(독립적 기능 수행 정도)
코딩할 때로 예를 들자면 모듈을 만들었는데 이 코드 저 코드 엮어서 거미줄 코딩을 한 경우 서로에 대한 의존도가 높으므로 결합도가 높다고 할 수 있고, 하나의 모듈을 만들었는데 독립적 기능을 수행하며 타 코드와 큰 연관성이 없을 경우 응집도가 높다고 할 수 있다. (한마디로 독립적인 모듈이냐 의존적인 모듈이냐!)
<개발 환경 구성을 위한 빌드 (Build) 도구>
* Build: Source Code -> 소프트웨어
1) Ant = 아파치 재단에서 개발한 자바의 공식적인 빌드 도구
2) Maven = 아파치 재단에서 개발, Ant 대안으로 개발되었음
3) Gradle = Ant, Maven 의 보완으로 개발된 빌드 도구(안드로이드 스튜디오 주 빌드 도구)
cf. Kerberos - 컴퓨터 네트워크 인증 암호화 프로토콜
<UNIX 시스템의 쉘(shell)의 주요 기능>
- 사용자 명령을 해석하고 커널로 전달하는 기능을 제공
- 반복적인 명령 프로그램을 만드는 프로그래밍 기능 제공
- 초기호 파일을 이용해 사용자 환경을 설정하는 기능
cf. 커널; 프로세스, 메모리 관리
5. 정보시스템 구축 관리 
<정보시스템>
고가용성 솔루션(HACMP:High Availability Cluster Multi Processing)
- AIX를 기반으로 한 IBM의 High Availability Solution
- Resource의 중복 또는 공유를 통해 Application의 보호를 가능하게 해줌
- 같은 Data를 공유하거나 동시에 access하는 node들에서 여러 개의 application을 실행하게 해줌
- 두대 이상의 시스템을 하나의 Cluster로 묶어 Cluster내의 한 시스템에서 장애가 발생할 경우 다른 시스템이 장애가 발생한 시스템의 자원을 인수할 수 있도록 하여 서비스의 중단을 최소화 할 수 있도록 도와주는 솔루션

점대점 연결 방식(Point-to-Point Mode)
- 네트워크에 있어 물리적으로는 중개 장치를 통과하지 않고 한 지점에서 다른 지점으로 직접 가는 채널
- 두 스테이션간을 별도의 회선을 사용하여 1 대 1로 연결.
- 전용회선이나 공중 전화 회선을 이용.
- 회선 구성이 간단하고 대용량 전송에 유리.
- 별도의 회선과 포트에 따른 높은 설치비용

스턱스넷(Stuxnet)
- 2010년 6월에 발견된 웜 바이러스
- 윈도우를 통해 감염, 지맨스산업의 SW 및 장비를 공격

루팅(Rooting)
- 모바일 기기에서 구동되는 안드로이드 운영체제상에서 최상위 권한 (루트 권한)을 얻음으로 해당 기기의 생산자 또는 판매자 측에서 걸어 놓은 제약을 해제하는 행위
- Parsing
    - 하나의 프로그램을 런타임 환경(예를 들면, 브라우저 내 자바스크립트 엔진)이 실제로 실행할 수 있는 내부 포맷으로 분석하고 변환하는 것을 의미함
- LAN Tapping
    - Lan+Tapping으로 해석한다면 LAN신호를 직접 자신에게 끌어오는 방식의 공격정도로 해석 가능함
- Switch Jamming
    - 스위치의 기능이 방해 받아 정상 동작을 하지 못해 스위치가 더미 허브처럼 작동 하게 되는 것
    - Switch + Jamming(방해)
- FTP(SYN) Flooding
    - TCP의 3 Way Handshake 취약점을 이용한 DoS 공격으로 다량의 SYN패킷을 보내 백로그큐를 가득 채우는 공격
    - 통상적으로 위의 공격법을 TCP SYN Flooding 이라고 칭하는 경우가 많음
    - FTP프로토콜을 사용한 서버에 다량의 SYN 패킷을 보내 마비시키는것을 FTP Flooding이라고 볼 수 있음.
<스토리지 시스템>
DAS (직접 연결 저장 장치; Directed-attached storage)
- 하드디스크와 같이 데이터 저장장치를 호스트 버스 어댑터에 직접 연결하는 방식
- 저장장치와 호스트 기기 사이에 네트워크 디바이스 없이 직접 연결하는 방식으로 구성
NAS (네트워크 결합 스토리지;  Network Attached Storage)
NFC (근거리 무선 통신)
<블루투스 공격>
블루버그: 블루투스 장비사이의 취약한 연결 관리를 악용한 공격
블루스나프(블루스나핑): 블루투스의 취약점을 활용하여 장비의 파일에 접근하는 공격으로 OPP를 사용하여 정보를 열람
블루재킹: 블루투스를 이용해 스팸처럼 명함을 익명으로 퍼뜨리는 것
블루 프린팅: 블루투스 공격 장치의 검색 활동을 의미
Smurf 공격; 브로드 캐스트를 활용하여 공격 대상이 네트워크의 임의의 시스템에 패밋을 보내게 만드는 공격
<DoS(Donial of Service)>
- Ping of Death 공격: 정상 크기보다 큰 ICMP 패킷을 작은 조각(Fragment)으로 쪼개어 공격 대상이 조각화 된 패킷을 처리하게 만드는 공격 방법
- SYN Flooding:  존재하지 않는 클라이언트가 서버별로 한정된 접속 가능 공간에 접속한 것처럼 속여 다른 사용자가 서비스를 이용하지 못하게 하는 것
- Land 공격:  패킷 전송 시 출발지 IP주소와 목적지 IP주소 값을 똑같이 만들어서 공격 대상에게 보내는 공격 방법
<HoneyPot>
- 1990년대 David Clock이 처음 제안
- 비정상적인 접근의 탐지를 위해 의도적으로 설치해 둔 시스템
- 침입자를 속여 실제 공격당하는 것처럼 보여줌으로써 크래커를 추적 및 공격 기법의 정보를 수집하는 역할
- 쉽게 공격자에게 노출되어야 하며 쉽게 공격이 가능한 것처럼 취약해 보여야 함. 
- Li-fi
    - 스펙트럼의 빛을 이용한 5세대 이동 통신 기술
- Scrapy
    - 파이썬 기반의 웹크롤러 프레임 워크
    - 가볍고 빠르고 확장성이 좋음
- SBAS(위성항법보강시스템)
    - GPS의 오차를 보정해 신뢰성과 안정성을 높인 기법
LOC 예측치; 낙관치, 비관치, 기대치 

cf. 모형치

 

< 테일러링 (Tailoring) >
- 프로젝트 상황 특성에 맞게 정의된 소프트웨어 개발 방법론 절차, 사용기법 등을 수정 및 보완
- 프로젝트에 최적화된 개발 방법론을 적용하기 위해 절차, 산출물 등을 적절히 변경하는 활동
- 관리 측면에서의 목적 중 하나는 최단기간에 안정적인 프로젝트 진행을 위한 사전 위험을 식별하고 제거
- 기술적 측면에서의 목적 중 하나는 프로젝트에 최적화된 기술 요소를 도입하여 프로젝트 특성에 맞는 최적의 기법과 도구를 사용
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.