[정보처리기사] 2022년 필기 기출 정리

sookyoung.k·2025년 2월 27일
0
post-thumbnail

2022년 1회 문제 풀이

1과목: 소프트웨어 설계

형상 관리

→ 소프트웨어 시스템이 사용되는 동안 발견되는 오류를 정리하는 과정

상향식 설계

→ 하위 모듈에서 상위 모듈 방향으로 설계하는 것으로 인터페이스가 이미 성립되어 있어야만 기능 추가가 가능

→ 최하위 수준에서 각각의 모듈들을 설계하고 이러한 모듈이 완성되면 이들을 결합하여 검사

* 하향식 설계

→ 통합 검사 시 인터페이스가 이미 정의되어 있어 통합이 간단

→ 레벨이 낮은 데이터 구조의 세부 사항은 설계 초기 단계에서 필요

자료 흐름도 구성 표기법

Process (프로세스) → 원이나 둥근 사각형으로 표시, 자료를 변환시키는 시스템의 한 부분을 나타냄

Data Flow (자료 흐름) → 화살표 위에 자료의 이름 기입, 자료의 이동인 연관관계를 나타냄

Data Store (자료 저장소) → 평행선(=) 안에 자료 저장소 이름 기입, 시스템에서의 자료 저장소를 나타냄

Terminator (단말) → 사각형 안에 이름 기입, 시스템과 교신하는 외부 개체

UML (Unified Modeling Language)

→ 객체 지향 시스템을 개발할 때 산출물을 명세화, 시각화, 문서화하는데 사용 (객체지향 모델링 언어)

UI 설계 도구

  • 와이어프레임 → 페이지에 대한 개략적인 레이아웃이나 UI 요소 등의 뼈대
  • 목업 → 와이어프레임보다 좀 더 실제 화면과 유사하게 만든 정적인 형태의 모형
  • 스토리보드 → 와이어프레임에 설명, 페이지 이동 흐름 등을 추가
  • 프로토타입 → 와이어프레임이나 스토리보드에 인터랙션 적용, 실제 구현된 것처럼 테스트 가능한 동적인 형태의 모형
  • 유스케이스 → 사용자가 원하는 목표를 달성하기 위해 수행할 내용을 기술한 것

순차 다이어그램

→ 시간에 흐름에 따라 상호 작용하는 개체들을 표현하는 동적 다이어그램

SOLID 원칙

객체지향 설계에서 시스템 변경이나 확장에 유연한 시스템을 설계하기 위해 지켜야 할 다섯 가지 원칙

  • 단일 책임 원칙(SRP, Single Responsibility Principle) → 객체는 단 하나의 책임만! 응집도는 높고 결합도는 낮게 설계
  • 개방-폐쇄 원칙(OCP, Open-Closed Principle) → 기존의 코드를 변경하지 않고 기능을 추가할 수 있도록 설계해야 함! 확장에 대해 열려있고, 수정에 대해는 닫혀있어야 함
  • 리스코프 치환 원칙(LSP, Liskov Substitution Principle) → 자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위는 수행할 수 있어야 함! 부모 클래스 무시하거나 재정의 x 확장만 수행해야 함
  • 인터페이스 분리 원칙(ISP, Interface Segregation Principle) → 자신이 사용하지 않는 인터페이스는 구현하지 말아야 함! 인터페이스가 갖는 하나의 책임
  • 의존 역전 원칙(DIP, Dependency Inversion Principle) → 각 객체들이 의사소통하며 의존 관계가 성립될 때 각 객체들은 추상성이 낮은 클래스보다 추상성이 높은 클래스와 의존 관계를 맺어야 함! 일반적으로 인터페이스를 활용하면 알아서 지켜짐

디자인 패턴

소프트웨어 설계에서 자주 발생하는 문제에 대한 일반적이고 반복적인 해결 방법

추상 팩토리 → 생성 패턴

컴포지트, 어댑터 → 구조 패턴

옵서버 → 행위 패턴

소프트웨어 아키텍처의 설계 과정

설계 목표 설정 → 시스템 타입 결정 → 아키텍처 패턴(스타일) 적용 → 서브시스템 구체화 → 설계 검토

럼바우 모델

→ 객체 모형, 동적 모형, 기능 모형

FEP (Front End Processor)

→ 입력되는 데이터를 컴퓨터의 프로세서가 처리하기 전에 미리 처리하여 프로세서가 처리하는 시간을 줄여주는 프로그램이나 하드웨어

* EAI (Enterprise Application Integration) → 기업 내 각종 애플리케이션 및 플랫폼 간의 정보 전달, 연계, 통합 등 상호 연동이 가능하게 해주는 솔루션

* GPL (General Public License) → 자유 소프트웨어 재단에서 만든 자유 소프트웨어 라이선스

* Duplexing → 서비스 중단에 대비하여 동일한 기능을 수행하는 예비 시스템을 동시에 운용하는 것

2과목: 소프트웨어 개발

테스트 드라이버

→ 단위 테스트에서 테스트의 대상이 되는 하위 모듈을 호출하고, 파라미터를 전달하는 가상의 모듈로 상향식 테스트에 필요

* 테스트 스텁 → 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로, 일시적으로 필요한 조건만을 가지고 있는 테스트용 모듈

스택

→ LIFO 후입 선출 방식으로 자료를 처리

→ 인터럽스 처리, 서브루틴 호출 작업 등에 응용

* 큐 → FIFO 방식으로 처리, 순서 리스트의 뒤(Rear)에서 노드가 삽입되며, 앞(Front)에서 노드가 제거됨

* 데크 → 선형 리스트의 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료 구조

프로젝트 관리

주어진 기간 내에 최소의 비용으로 사용자를 만족시키는 시스템을 개발

→ 일정 관리, 비용 관리, 인력 관리, 위험 관리, 품질 관리

FTR (Formal Technical Review), 정형 기술 검토

소프트웨어 기술자들에 의해 수행되는 소프트웨어 품질 보증 활동, 가장 일반적인 검토 방법

  • 의제 제한
  • 참가자 수 제한
  • 논쟁과 반박 제한
  • 문제 영역을 명확히 표현

자료 구조 분류

  • 선형 구조 → 배열, 선형 리스트, 스택, 큐, 데크
  • 비선형 구조 → 트리, 그래프

인터페이스 간 통신을 위해 이용되는 데이터 포맷

  • JSON
    • 속성-값 쌍으로 이루어진 데이터 객체를 전달하기 위해 사람이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷
  • XML
    • 특수한 목적을 갖는 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어
  • YAML
    • XML, C, Python 등에서 정의된 이메일 양식에서 개념을 얻어 만들어진, 사람이 쉽게 읽을 수 있는 데이터 포맷으로 XML과 문법적으로 유사하지만 태그를 사용하지 않고 공백 위주로 데이터 구분

N-S 차트

→ GOTO나 화살표를 사용하지 않음

  • 논리의 기술에 중점을 두고 도형을 이용한 표현 방법
  • 이해하기 쉽고 코드 변환이 용이함
  • 연속, 선택, 반복 등의 제어 논리 구조를 표현

스택 연산

A, B, C, D로 정해진 입력 자료를 push, push, pop, push, push, pop, pop, pop 순서로 스택 연산을 수행하면?

image.png

퀵 정렬

→ 분할 정복에 기반한 알고리즘으로 피봇을 사용하는 정렬

화이트박스 테스트

→ 데이터 흐름 검사, 루프 검사, 조건 검사

* 블랙박스 테스트 → 동등 분할 검사, 경계값 분석, 원인 결과 그래프 기법, 오류예측 기법

ISO/IEC 25000

  • 소프트웨어 품질 평가를 위한 소프트웨어 품질평가 통합모델 표준
  • SQuaRE
  • ISO/IEC 2501n에서는 소프트웨어의 내부 및 외부 품질과 사용 품질에 대한 모델 등 품질 모델 부분을 다룸
  • ISO/IEC 2502n에서는 소프트웨어의 내부 측정, 외부 측정, 사용 품질 측정, 품질 측정 요소 등 품질 측정 부분을 다룸
  • 기존 소프트웨어 품질 평가 모델과 소프트웨어 평가 절차 모델인 ISO/IEC 9126과 ISO/IEC 14598을 통합

코드 인스펙션

→ 정적 테스트 시에만 활용하는 기법

위험 관리 (Risk Analysis)

→ 프로젝트에 내재된 위험 요소를 인식하고 그 영향을 분석하여 이를 관리하는 활동

→ 프로젝트를 성공시키기 위하여 위험 요소를 사전에 예측, 대비하는 모든 기술과 활동을 포함하는 것

3과목: 데이터베이스 구축

물리적 설계

→ 논리적 설계 단계에서 논리적 구조로 표현된 데이터를 디스크 등의 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정

→ 트랜잭션 처리량, 응답시간, 디스크 용량 등을 고려해야 함

제5정규형

→ 릴레이션 R의 모든 조인 종속성의 만족의 R의 후보키를 통해서만 만족됨

관계해석 관련 기호

image.png

차수 - 속성의 수 / 카디널리티 - 튜플의 수

순수 관계 연산자

π이름 (σ학과 = ‘교육’(학생))

π이름: ‘이름’ 필드를 표시함

σ학과 = ‘교육’: ‘학과’가 “교육”인 자료만을 대상으로 함

(학생): <학생> 테이블의 자료를 검색함

⇒ 교육과 학생의 ‘이름’을 검색

SELECT 이름 FROM 학생 WHERE 학과 = '교육';

  • π(파이) - Project
  • σ(시그마) - SELECT
  • ⨝ - JOIN
  • ÷- DIVISION

이행적 종속

A → B이고 B → C일 때 A → C를 만족하는 관계

* 이행적 종속은 2NF → 3NF 단계에서 제거됨

분산 데이터베이스 시스템

→ 주요 구성 요소: 분산 처리기, 분산 데이터베이스, 통신 네트워크 등

CASCADE

→ 제거할 요소를 참조하는 다른 모든 개체를 함께 제거

데이터베이스 병행 제어의 목적

  • 공유 최대화
  • 시스템 활용도 최대화
  • 사용자에 대한 응답시간 최소화
  • 데이터베이스 일관성 유지

4과목: 프로그래밍 언어 활용

IP 주소체계

  • IPv6의 패킷 헤더는 40옥텟(octet)의 고정된 길이를 가짐
  • IPv6는 주소 자동설정 기능을 통해 손쉽게 이용자의 단말을 네트워크에 접속시킬 수 있음
  • IPv4는 호스트 주소를 자동으로 설정하며 유니캐스트를 지원
  • IPv4는 클래스별로 네트워크와 호스트 주소의 길이가 다름

C언어

포인터… 배열… 버릴까…

데이터링크 계층의 프로토콜

→ HDLC, PPP, LLC, MAC, LAPD, LAPB

IPv6

→ 16비트씩 8부분, 총 128비트로 구성되어 있으며 각 부분을 16진수로 표현

  • 2^128개의 주소를 표현할 수 있음
  • 등급별, 서비스별로 패킷을 구분할 수 있어 품질 보장 용이함
  • 확장기능을 통해 보안기능 제공

JAVA의 예외(exception)

문법 오류가 날 경우 코드가 실행조차 되지 않으므로 예외 처리 불가

image.png

ICMP (Internet Control Message Protocol)

→ TCP/IP 계층 구조에서 IP 동작 과정에서의 전송 오류가 발생하는 경우에 대비해 오류 정보를 전송하는 목적으로 사용하는 프로토콜

빌드 자동화 도구

→ Ant, Make, Maven, Gradle, Jenkins

* Kerberos → 네트워크 인증 프로토콜

쉘의 기능

  • 사용자의 명령을 해석하고 커널로 전달하는 기능 제공
  • 반복적인 명령 프로그램을 만드는 프로그래밍 기능을 제공
  • 초기화 파일을 이용해 사용자 환경을 설정하는 기능 제공

* 커널 → 쉘 프로그램 실행을 위해 프로세스와 메모리를 관리

5과목: 정보시스템 구축 관리

스위치 재밍(Switch Jamming)

  • 위조된 매체 접근 제어(MAC) 주소를 지속적으로 네트워크로 흘려보내, 스위치 MAC 주소 테이블의 저장 기능을 혼란시켜 더미 허브(Dummy Hub)처럼 작동하게 하는 공격

* LAN Tapping → LAN 회선 중간에서 전기 신호를 도청하는 행위

DAS (Direct Attached Storage)

→ 하드디스크와 같은 데이터 저장장치를 호스트버스 어댑터에 직접 연결하는 방식

→ 저장 장치와 호스트 기기 사이에 네트워크 디바이스 없이 직접 연결하는 방식으로 구성

* NAS(Network Attached Storage) → 서버와 저장장치를 네트워크를 통해 연결하는 방식

* SAN (Storage Area Network) → DAS + NAS, 서버와 저장 장치를 연결하는 전용 네트워크를 별도로 구성하는 방식

V-모델

→ 소프트웨어 생명주기, 요구사항 - 분석 - 설계 - 구현 단계로 수행되며 각 단계를 테스트와 연결하여 표현

블루투스 공격

  • 블루 버그 → 블루투스 장비 사이의 취약한 연결 관리를 악용한 공격, 휴대폰을 원격 조정하거나 통화를 감청할 수 있음
  • 블루스나프 → 블루투스의 취약점을 활용하여 장비의 파일에 접근하는 공격으로, 인증없이 간편하게 정보를 교환할 수 있는 OPP(Object Push Profile)를 사용하여 정보를 열람
  • 블루재킹 → 블루투스를 이용해 스팸처럼 명함을 익명으로 퍼뜨리는 공격
  • 블루프린팅 → 블루투스 공격 장치의 검색 활동을 의미함

Smurf

→ 네트워크 라우터의 브로드캐스트 주소를 활용한 DoS 공격

공격 대상이 네트워크의 임의의 시스템에 패킷을 보내게 만드는 공격

Secure 코딩에서 입력 데이터 검증 및 표현의 보안 약점

  • SQL 삽입 → 사용자의 입력 값 등 외부 입력 값이 SQL 쿼리에 삽입되어 공격
  • 크로스사이트 스크립트 → 검증되지 않은 외부 입력 값에 의해 브라우저에서 악의적인 코드가 실행
  • 운영체제 명령어 삽입 → 운영체제 명령어 파라미터 입력 값이 적절한 사전검증을 거치지 않고 사용되어 공격자가 운영체제 명령어를 조작
  • 자원 삽입 → 데이터 입/출력 경로를 조작하여 서버 자원을 수정 및 삭제

FTFS 파일 시스템

→ FAT와 비교했을 때 성능, 보안, 안정성 면에서 뛰어남

wtmp

→ 리눅스 시스템에서 사용자의 성공한 로그인/로그아웃 정보기록

→ 시스템의 종료/시작 시간 기록

* xferlog → FTP로 접속하는 사용자에 대한 로그를 기록

* utmp → 현재 로그인한 사용자의 상태에 대한 로그를 기록

LOC 기법

→ 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 기법

DPI (Deep Packet Inspection)

→ OSI 7 Layer 전 계층의 프로토콜과 패킷 내부의 콘텐츠를 파악하여 침입 시도, 해킹 등을 탐지하고 트래픽을 조정하기 위한 패킷 분석 기술

* PLCP (Packet Level Control Processor) → 패킷 교환 서브 시스템에서 패킷 레벨 제어 및 경로 정보 처리 기능과 가입자 링크, 과금, 통계 자료 수집 등을 담당

테일러링

→ 프로젝트 상황 및 특성에 맞도록 정의된 소프트웨어 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업


2022년 2회 문제 풀이

1과목: 소프트웨어 설계

순차 다이어그램

시간의 흐름에 따라 상호작용하는 개체들을 표현하는 것, 주로 시스템의 동적인 측면을 모델링하기 위해 사용

  • 객체 간의 동적 상호작용을 시간 개념을 중심으로 모델링하는 것
  • 일반적으로 다이어그램의 수직 방향이 시간의 흐름을 나타냄
  • 회귀 메시지, 제어블록 등으로 구성

MOM (Message-Oriented Middleware), 메시지 지향 미들웨어

메시지 기반의 비동기형 메시지를 전달하는 방식의 미들웨어

→ 온라인 업무보다는 이기종 분산 데이터 시스템의 데이터 동기를 위해 많이 사용됨

  • 독립적인 애플리케이션을 하나의 통합된 시스템으로 묶기 위한 역할을 함
  • 송신측과 수신측의 연결 시 메시지 큐를 활용하는 방법
  • 상이한 애플리케이션 간 통신을 비동기 방식으로 지원

유스케이스 다이어그램

연관 Association, 집합 Aggregation, 포함 Composition, 일반화 Generalization, 의존 Dependency, 실체화 Realization, 확장 Extend

기능 요구사항 / 비기능 요구사항

  • 기능 요구사항: 시스템이 무엇을 하는지, 어떤 기능을 하는지에 대한 사항
  • 비기능 요구사항
    • 시스템 장비 구성 요구사항
    • 성능 요구사항
    • 인터페이스 요구사항
    • 데이터 요구사항
    • 테스트 요구사항
    • 보안 요구사항
    • 품질 요구사항
    • 제약사항
    • 프로젝트 관리 요구사항
    • 프로젝트 지원 요구사항

UI 설계 지침

→ 오류가 발생하면 사용자가 쉽게 인지할 수 있도록 설계해야 함!

메소드 오버로딩

→ 메소드 명은 같지만 매개 변수의 개수나 타입을 다르게 함으로써 구현, 구분할 수 있음

인터페이스

→ 소프트웨어에 의해 간접적으로 제어되는 장치와 소프트웨어를 실행하는 하드웨어

→ 기존의 소프트웨어와 새로운 소프트웨어를 연결하는 소프트웨어

→ 순서적 연산에 의해 소프트웨어를 실행하는 절차

클래스

→ 공통된 속성과 연산(행위)을 갖는 객체의 집합

Encapsulation, 캡슐화

→ 속성과 관련된 연산을 클래스 안에 묶어서 하나로 취급하는 것

디자인 패턴 - 구조 패턴

→ 어댑터, 브릿지, 프록시

* 생성 패턴 → 빌더

유스케이스 다이어그램

→ 시스템과 상호 작용하는 모든 외부 요소를 액터라고 함

MVC 패턴

→ 모델은 서브시스템의 핵심 기능과 데이터를 보관하는 역할

  • 사용자 인터페이스를 담당하는 계층의 응집도를 높일 수 있고, 여러 개의 다른 UI를 만들어 그 사이에 결합도를 낮출 수 있음
  • 뷰는 모델에 있는 데이터를 사용자 인터페이스에 보이는 역할
  • 제어는 모델에 명령을 보냄으로써 모델의 상태 변경 가능

2과목: 소프트웨어 개발

통합 테스트

→ 상향식 통합 테스트: 프로그램의 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트하는 기법

  • 시스템을 구성하는 모듈의 인터페이스와 결합을 테스트하는 것
  • 하향식 통합 테스트의 경우 넓이 우선 방식으로 테스트를 할 모듈을 선택할 수 있다
  • 모듈 간의 인터페이스와 시스템의 동작이 정상적으로 잘 되고 있는지를 빨리 파악하고자 함 → 하향식 통합 테스트

이진 검색 방법

image.png

워크 스루, Workthrough

  • 사용사례를 확장하여 명세하거나 설계 다이어그램, 원시코드, 테스트 케이스 등에 적용
  • 복잡한 알고리즘 또는 반복, 실시간 동작, 병행 처리와 같은 기능이나 동작을 이해하려고 할 때 유용
  • 단순한 테스트 케이스를 이용하여 프로덕트를 수작업으로 수행해보는 것

* 인스펙션, Inspection → 워크스루를 발전시킨 형태, 소프트웨어 개발 단계에서 산출된 결과물의 품질을 평가하고 이를 개선하기 위한 방법 등을 제시

위험 모니터링

→ 위험 요소 징후들에 대하여 계속적으로 인지하는 것

RCS (Revision Control System)

→ 동시에 소스를 수정하는 것을 방지하며 다른 방향으로 진행된 개발 결과를 합치거나 변경 내용을 추적할 수 있는 소프트웨어 버전 관리 도구

선형 검색

→ 정렬이 되어 있지 않은 파일에서 순차적으로 검색하는 방식

찾고자 하는 키 값을 첫 번째 레코드 키 값부터 차례로 비교하여 검색하는 방식

버블 정렬

주어진 파일에서 인접한 두 개의 레코드 키 값을 비교하여 그 크기에 따라 레코드 위치를 서로 교환하는 정렬 방식

image.png

인스펙션

계획 → 사전 교육 → 준비 → 인스펙션 회의 → 수정 → 후속 조치

테스트 드라이버 / 테스트 스텁

  • 테스트 드라이버 - 필요 데이터를 인자를 통해 넘겨주고, 테스트 완료 후 그 결과 값을 받는 역할을 하는 가상의 모듈
  • 테스트 스텁 - 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구, 일시적으로 필요한 조건만을 가지고 있음

IDE (Integrated Development Environment)

  • Coding - 프로그래밍 언어를 가지고 컴퓨터 프로그램을 작성할 수 있는 환경을 제공
  • Compile - 개발자가 작성한 고급 언어로 된 프로그램을 컴퓨터가 이해할 수 있는 목적 프로그램으로 번역하여 컴퓨터에서 실행 가능한 형태로 변환하는 기능
  • Debugging - 프로그램에서 발견되는 버그를 찾아 수정할 수 있는 기능
  • Deployment - 소프트웨어를 최종 사용자에게 전달하기 위한 기능

후위 순회

Left → Right → Root

xUnit

→ JUnit, CppUnit, HttpUnit, NUnit 등

3과목: 데이터베이스 구축

BCNF

→ 테이블 R에서 존재하는 모든 함수적 종속에서 결정자가 후보키인 정규형

물리적 데이터베이스

→ 저장 레코드의 양식 설계시 데이터 타입, 데이터 값의 분포, 접근 빈도 등을 고려

* 트랜잭션 모델링 → 개념적 설계 단계에서 수행해야 함

데이터 사전

→ 일반 사용자가 데이터 사전에 직접 내용을 추가하거나 수정할 수 없고 내용을 검색할 수만 있음

트랜잭션의 상태

  • 활동(Active) - 트랜잭션이 실행 중인 상태
  • 실패(Failed) - 트랜잭션 실행 중 오류가 발생하여 중단
  • 철회(Aborted) - 트랜잭션이 비정상적으로 종료되어 롤백 연산을 수행한 상태
  • 부분 완료(Partially Commited) - 트랜잭션의 마지막 연산까지 완료했지만, Commit 연산이 실행되기 직전의 상태
  • 완료(Commited) - 트랜잭션이 성공적으로 종료되어 Commit 연산까지 수행한 상태

연산 (Operation)

→ 데이터 구조에 따라 개념 세계나 컴퓨터 세계에서 실제로 표현된 값들을 처리하는 작업

권한 부여

GRANT CREATE    # 생성 권한 부여
TABLE           # 테이블을 생성할 수 있는 권한 부여 
TO PARK         # ID가 'PARK'인 사용자에게 부여 

4과목: 프로그래밍 언어 활용

C언어

strlen(s) - s의 길이 구함

strcpy(s1, s2) - s2를 s1으로 복사 (copy)

strcmp(s1, s2) - s1과 s2에 저장된 문자열이 동일한지 비교 (compare)

strrev(s) - s를 거꾸로 변환 (reverse)

IP 프로토콜

  • Header Length: IP 프로토콜의 헤더 길이를 32비트 워드 단위로 표시
  • Packet Length: IP 헤더를 포함한 패킷 전체의 길이를 나타내며 최대 크기는 2^16-1
  • Time To Live: 송신 호스트가 패킷을 전송하기 전 네트워크에서 생존할 수 있는 시간을 지정한 것
  • Version Number: IP 프로토콜의 버전 번호

RIP 라우팅 프로토콜

  • 경로 선택 메트릭은 홉 카운트
  • 최단 경로 탐색에 Bellman-Ford 알고리즘 사용
  • 각 라우터는 이웃 라우터들로부터 수신한 정보를 이용하여 라우팅 표를 갱신
  • IGP(내부 게이트웨이 프로토콜)에 해당

HRN 스케줄링

→ 대기 시간과 서비스(실행) 시간을 이용하는 기법

→ 최소 작업 우선(SJF) 기법의 약점을 보완한 비선점 스케줄링 기법

UNIX

→ Multi-User, Multi-Tasking을 지원하는 운영체제

  • 하나 이상의 작업에 대하여 백그라운드에서 수행 가능
  • 트리 구조의 파일 시스템
  • 이식성이 높으며 장치 간 호환성이 높음

응집도 (강 → 약)

기능적 응집도 → 순차적 응집도 → 교환적 응집도 → 절차적 응집도 → 시간적 응집도 → 논리적 응집도 → 우연적 응집도

C언어

#include <stdio.h>
int main(int arge, char* argv[]) {
	int n1 = 1, n2 = 2, n3 = 3;
	int r1, r2, r3;
	r1 = (n2 <= 2) || (n3 > 3);
	r2 = !n3;
	r3 = (n1 > 1) && (n2 < 3);
	printf("%d", r3 - r2 + r1);
	return 0;
}

r1

→ n2는 2보다 작거나 같으므로 참

→ n3의 값은 3보다 크지 않으므로 거짓

|| 연산자는 둘 중 하나라도 참이면 참이므로 참(1)

r2

⇒ n3의 값은 참이므로 부정인 거짓(0)

r3

→ n1의 값은 1보다 크지 않으므로 거짓

→ n2의 값은 3보다 작으므로 참

&& 연산자는 모두 참일 때만 참이므로 거짓(0)

⇒ 0 - 0 + 1 = 1

IP 프로토콜

→ 헤더 체크섬만 제공함!

  • 패킷을 분할, 병합하는 기능을 수행하기도 함
  • 비연결형 서비스 제공
  • Best Effort 원칙에 따른 전송 기능 제공

커널 수준 스레드 / 사용자 수준 스레드

  • 커널 수준 스레드
    • 한 프로세스가 운영체제를 호출할 때 전체 프로세스가 대기할 필요가 없으므로 시스템 성능 높일 수 있음
    • 동시에 여러 스레드가 커널에 접근할 수 있으므로 여러 스레드가 시스템 호출을 동시에 사용할 수 있음
    • 각 스레드를 개별적으로 관리할 수 있으므로 스레드의 독립적인 스케줄링이 가능
  • 사용자 수준 스레드
    • 커널 모드로의 전환 없이 스레드 교환이 가능하므로 오버헤드가 줄어듦

응집도 / 결합도

  • 응집도 - 명령어나 호출문 등 모듈의 내부 요소들의 서로 관련되어 있는 정도
  • 결합도 - 모듈과 모듈 사이의 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계

5과목: 정보시스템 구축 관리

정보보안 3요소

→ 기밀성, 무결성, 가용성

tcp wrapper

→ 외부 컴퓨터의 접속 여부를 제어할 수 있는 접근제어 유틸리티

Zing

→ 10cm 이내 거리에서 3.5Gbps 속도의 데이터 전송이 가능한 초고속 근접무선통신

image.png

응용 프로그램의 보안 설정

→ 실행 프로세스 권한 설정, 운영체제의 접근 제한, 운영체제의 정보 수집 제한

* 서버 관리실 출입 통제는 ㅋㅋ 물리적 보안에 포함되는 보안 조치

프레임워크

  • 모듈화, 재사용성, 확장성, 제어의 역흐름

* 라이브러리 → 사용자가 제어를 갖고 직접 호출해서 사용하는 것

Mesh Network

→ 다른 국을 향하는 호출이 중계에 의하지 않고 직접 접속되는 그물 모양의 네트워크

→ 대용량을 빠르고 안전하게 전달할 수 있어 행사장이나 군 등에서 많이 화용

웜(Worm)

→ 악성코드의 유형 중 다른 컴퓨터의 취약점을 이용하여 스스로 전파(복제)하거나 메일로 전파되며 스스로를 증식하는 것

* 로그 웨어(Rogue Ware) - 사용자를 속여 악성 코드를 설치하도록 유도하는 소프트웨어

* 애드웨어(Adware) - 소프트웨어 자체에 광고를 포함하여 이를 보는 대가로 무료로 사용하는 소프트웨어

* 반사 공격(Reflection Attack) - 송신자가 생성한 메시지를 가로채 접근 권한을 얻는 형태의 공격 기법

Ping of Death

→ 시스템 공격 기법 중 하나로 허용 범위 이상의 ICMP 패킷을 전송하여 대상 시스템의 네트워크를 마비

* 세션 하이재킹(Session Hijacking) - 서버에 접속하고 있는 클라이언트들의 세션 정보를 가로채는 공격 기법

* 피기백 공격(Piggyback Attack) - 시스템의 올바른 인증 절차나 보안 프로그램에 편승하는 공격 방법

* 크로스사이트 스크립팅(XSS: Cross Site Scripting) - 웹페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취하거나, 비정상적인 기능 수행을 유발하는 보안 약점

대칭 알고리즘 / 비대칭 알고리즘

→ 대칭 알고리즘은 비밀키를 공유해야 하기 때문에 키 관리의 어려움이 있지만 알고리즘이 단순하여 암호화 및 복호화 속도가 빠름

RBAC (Role Based Access Control), 접근 통제

→ 접근 통제 방법 중 조직 내에서 직무, 직책 등 개인의 역할에 따라 결정하여 부여하는 접근 정책

SDN (Software Defined Networking)

→ 네트워크를 제어부, 데이터 전달부로 분리하여 네트워크 관리자가 보다 효율적으로 네트워크를 제어, 관리할 수 있는 기술

PERT 차트

→ 작업들의 상호 관련성, 결정경로, 경계시간, 자원할당 등을 제시

* 간트 차트

→ 각 작업들이 언제 시작하고 언제 종료되는지에 대한 일정을 막대 도표를 이용하여 표시

→ 시간선 차트라고도 함 (수평 막대의 길이: 각 작업의 기간)


2022년 3회 문제 풀이

1과목: 소프트웨어 설계

인스펙션(Inspection)

→ 워크스루를 발전시킨 형태, 소프트웨어 개발 단계에서 산출된 결과물의 품질을 평가하고 이를 개선하기 위한 방법 등을 제시

* 워크스루(Walkthrough)

  • 사용사례를 확장하여 명세하거나 설계 다이어그램, 원시코드, 테스트 케이스 등에 적용 가능
  • 복잡한 알고리즘 또는 반복, 실시간 동작, 병행 처리와 같은 기능이나 동작을 이해하려고 할 때 유용
  • 단순한 테스트 케이스를 이용하여 프로덕트를 수작업으로 수행해보는 것

결합도 (약→강)

  • 자료 결합도(Data Coupling) - 모듈 간의 인터페이스가 자료 요소로만 구성될 때의 결합도
  • 스탬프(검인) 결합도 (Stamp Coupling) - 모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 때의 결합도
  • 제어 결합도 (Control Coupling) - 한 모듈에서 다른 모듈로 논리적인 흐름을 제어하는 데 사용하는 제어 요소
  • 외부 결합도 (External Coupling) - 어떤 모듈에서 외부로 선언한 데이터(변수)를 다른 모듈에서 참도할 때의 결합도
  • 공통(공유) 결합도 (Common Coupling) - 공유되는 데이터 영역을 여러 모듈이 사용할 때의 결합도
  • 내용 결합도 (Content Coupling) - 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때의 결합도

HIPO (Hierarchy Input Process Output)

시스템의 분석 및 설계나 문서화할 때 사용되는 기법

→ 하향식 소프트웨어 개발을 위한 문서화 도구

  • 가시적 도표, 총체적 도표, 세부적 도표가 있음
  • 기능과 자료의 의존 관계를 동시에 표현 할 수 있음
  • 보기 쉽고 이해하기 쉬움

NUI

→ Tap, Double Tap, Drag, Pan, Press, Flick, Pinch

* Flick - 빠르게 스크롤

나선형 모형

→ 보헴이 제안, 위험 분석 기능이 있으며, 여러 번의 개발 과정을 거쳐 점진적으로 개발하는 모형

자료 흐름도

→ process, data flow, data store, terminator

SOLID 원칙 (객체지향 설계 원칙)

  • 단일 책임 원칙 (SRP)
  • 개방-폐쇄 원칙 (OCP)
  • 리스코프 치환 원칙 (LSP)
  • 인터페이스 분리 원칙 (ISP)
  • 의존 역전 원칙 (DIP)

UML의 관계 (Relationships)

  • 연관 관계 - 2개 이상의 사물이 서로 관련 (Association)
  • 집합 관계 - 하나의 사물이 다른 사물에 포함 (Aggregation)
  • 포함 관계 - 집합의 특수한 형태, 포함하는 사물의 변화가 포함되는 사물에게 영향을 미침 (Composition)
  • 일반화 관계 - 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지 (Generalization)
  • 의존 관계 - 연관 관계와 같이 사물 사이에 서로 연관은 있으나 필요에 의해 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계 (Dependency)
    • 한 사물의 명세가 바뀌면 다른 사물에 영향을 주며, 일반적으로 한 클래스가 다른 클래스를 오퍼레이션의 매게 변수로 사용하는 경우에 나타나는 관계
  • 실체화 관계 - 사물이 할 수 있거나 해야 하는 기능으로 서로를 그룹화 할 수 있는 관계 (Realization)

파이프-필터 패턴

→ 서브 시스템이 입력 데이터를 받아 처리하고 결과를 다음 서브 시스템으로 넘겨주는 과정을 반복

UML의 시퀀스 다이어그램의 구성 요소

→ 액터, 객체, 라이프라인, 활성 상자, 메시지, 객체 소멸, 프레임

* 확장은 관계의 한 형태로 시퀀스 다이어그램의 구성 요소 X

2과목: 소프트웨어 개발

소프트웨어 테스트

  • 테스트케이스에는 일반적으로 시험 조건, 테스트 데이터, 예상 결과가 포함되어야 함
  • 화이트박스 테스트
    • 기본 경로(기초 경로, Base Path = Basis Path)는 수행 가능한 모든 경로를 의미함
    • 모듈의 논리적인 구조를 체계적으로 점검 가능
  • 블랙박스 테스트
    • 프로그램의 구조를 고려하지 않음

후위 순회 (Postorder)

Left → Right → Root

EAI

기업 내 각종 애플리케이션 및 플랫폼 간의 정보 전달, 연계, 통합 등 상호 연동이 가능하게 해주는 솔루션

→ Point-to-Point(가장 기본), Hub & Spoke(단일 접점인 허브 시스템), Message Bus(ESB, 애플리케이션 사이에 미들웨어), Hybrid (Hub & Spoke + Message Bus)

테스트 오라클

  • 참(True) 오라클 - 모든 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하는 오라클, 발생된 모든 오류를 검출할 수 있음
  • 샘플링 오라클 - 특정한 몇몇 테스트 케이스의 입력 값들에 대해서만 기대하는 결과를 제공하는 오라클
  • 추정 (Heuristic) 오라클 - 샘플링 오라클을 개선, 나머지 값은 추정으로 처리
  • 일관성 검사 (Consistent) 오라클 - 애플리케이션의 변경이 있을 때, 전후 결과 값이 동일한지 확인

IPSec

→ 암호화와 복호화가 모두 가능한 양방향 암호 방식

스택의 응용 분야

  • 함수 호출의 순서 제어
  • 인터럽트의 처리
  • 수식 계산 및 수식 표기법
  • 컴파일러를 이용한 언어 번역
  • 부 프로그램 호출 시 복귀주소 저장
  • 서브루틴 호출 및 복귀 주소 저장

* 큐 → 운영체제의 작업 스케줄링

선택 정렬

→ n개의 레코드 중에서 최소값을 찾아 첫 번째 레코드 위치에 놓고, 나머지 n-1개 중에서 다시 최소값을 찾아 두 번째 레코드 위치에 놓는 방식을 반복하여 정렬 (자리 교환)

해싱 함수의 종류

→ 제산법, 제곱법, 폴딩법, 기수 변환법, 대수적 코딩법, 계수 분석법, 무작위법

인터페이스 구현 검증 도구

→ xUnit, STAF, NTAF, Selenium, watir

* ESB → 애플리케이션 간 연계, 데이터 변환, 웹 서비스 지원 등 표준 기반의 인터페이스를 제공하는 솔루션

정적 분석 도구 / 동적 분석 도구

  • 정적 분석 도구 → pmd, cppcheck, SonarQube, checkstyle, ccm, cobertura 등
  • 동적 분석 도구 → Avalanche, Valgrind 등

인수테스트

개발한 소프트웨어가 사용자의 요구사항을 충족하는지에 중점을 두고 테스트하는 방법

→ 사용자 인수 테스트, 운영상의 인수 테스트, 계약 인수 테스트, 규정 인수 테스트, 알파/베타 테스트

테스트 드라이버 vs 테스트 스텁

구분드라이버스텁
필요 시기상위 모듈 없이 하위 모듈이 있는 경우 하위 모듈 구동상위 모듈은 있지만 하위 모듈이 없는 경우 하위 모듈 대체
테스트 방식상향식 테스트하향식 테스트
공통점소프트웨어 개발과 테스트를 병행할 경우 이용동일
차이점- 이미 존재하는 하위 모듈과 존재하지 않는 상위 모듈 간의 인터페이스 역할
- 소프트웨어 개발이 완료되는 드라이버는 본래의 모듈로 교체됨- 일시적으로 필요한 조건만을 가지고 임시로 제공되는 가짜 모듈의 역할을 함
- 시험용 모듈이기 때문에 일반적으로 드라이버보다 작성하기 쉬움

→ 테스트 대상 모듈이 호출하는 하위 모듈의 역할을 수행하는 것은 스텁

연결 리스트 (Linked List)

→ 노드들이 포인터로 연결되어 포인터를 찾아가는 시간이 필요하므로 선형 리스트에 비해 검색 속도가 느림

  • 노드의 삽입이나 삭제가 쉬움
  • 연결을 해주는 포인터를 위한 추가 공간이 필요
  • 연결 리스트 중에서 중간 노드 연결이 끊어지면 그 다음 노드를 찾기 어려움

O(1)

→ 빅오 표기법의 시간 복잡도를 표기하는 방법의 하나, 입력 데이터 수에 관계 없이 문제 해결에 하나의 단계만을 거친다는 것을 의미함

3과목: 데이터베이스 구축

트랜잭션의 특성 - 원자성

→ Commit과 Rollback 명령어에 의해 보장받는 트랜잭션의 특성

분산 데이터베이스

→ 데이터베이스 설계 및 소프트웨어 개발이 어려움

정규화

  • 결정자가 모두 후보키인 정규형: BCNF

→ 제3정규형에서 결정자가 후보키가 아닌 것을 제거

관계형 데이터베이스

→ 한 릴레이션에는 동일한 이름의 속성이 있을 수 없다!

→ 대체키: 후보키 중에서 기본키를 제외한 나머지 후보키

트리거

→ 이벤트가 발생할 때마다 관련 작업이 자동을오 수행되는 절차형 SQL

* 이벤트 → 시스템에 어떤 일이 발생한 것

* 프로시저 → 특정 기능을 수행하는 일종의 트랜잭션 언어, 호출을 통해 실행되어 미리 저장해 놓은 SQL 작업을 수행

* 옵티마이저 → DBMS에 내장되어 작성된 SQL이 효율적으로 수행되도록 최적의 경로를 찾아 주는 모듈

관계 대수와 관계 해석

  • 관계 대수
    • 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어
    • 관계 해석으로 표현 가능
  • 관계 해석
    • 관계 데이터의 연산을 표현하는 방법
    • 수학의 프레디킷 해석에 기반을 두고 있음
    • 원하는 정보가 무엇이라는 것만 정의하는 비절차적인 특징을 가짐

4과목: 프로그래밍 언어 활용

OSI 7계층 - 세션 계층

→ 두 응용 프로세스 간의 통신에 대한 제어 구조를 제공

→ 연결의 생성, 관리, 종료를 위해 토큰 사용

HRN (Hightest Response-ratio Next)

실행 시간이 긴 프로세스에 불리한 SJF 기법을 보완하기 위한 것으로, 대기 시간과 서비스(실행) 시간을 이용하는 기법

→ 우선순위 계산식을 통해 산출된 값이 클수록 우선 순위가 높다

  • 대기 시간이 긴 프로세스일 경우 우선 순위가 높다

C언어 - malloc()

→ 입력한 Byte 만큼 메모리를 할당하는 함수

포인터 변수 = malloc(크기);

IPv6

→ IPv4에 비해 자료 전송 속도가 빠르다!

  • IPv4는 각 부분을 옥텟으로 구성, 총 32비트로 구성
  • IPv6는 각 부분을 콜론으로 구분
  • IPv4는 네트워크 부분의 길이에 따라 A클래스에서 E클래스까지 총 5단계로 구성되어 있음

OSI 7계층 → 네트워크 계층

→ 프로토콜 데이터 단위는 패킷 (* 데이터링크 계층 → 프레임)

  • 패킷을 발신지로부터 최종 목적지까지 전달하는 책임을 진다
  • 패킷에 발신지와 목적지의 논리 주소를 추가
  • 라우터 또는 교환기는 패킷 전달을 위해 경로를 지정하거나 교환 기능을 제공

5과목: 정보시스템 구축 관리

보안 약점

  • 자원 삽입: 데이터 입출력 경로를 조작하여 서버 자원을 수정/삭제하는 보안 약점
  • 위험한 형식 파일 업로드: 악의적인 명령어가 포함된 스크립트 파일을 업로드함으로써 시스템에 손상을 줌
  • SQL 삽입: 웹 응용 프로그램에 SQL을 삽입하여 내부 데이터 베이스 서버의 데이터를 유출 및 변조하고, 관리자 인증을 우회
  • 크로스사이트 스크립트: 웹페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보 탈취
  • 운영체제 명령어 삽입: 외부 입력값을 통해 시스템 명령어의 실행을 유도함으로써 권한을 탈취하거나 시스템 장애를 유발

정보 보안 요소의 무결성

→ 시스템 내의 정보는 오직 인가된 사용자만 수정할 수 있다

세션 하이재킹 탐지 방법

  • 비동기화 상태 탐지
  • ACK Storm 탐지
  • 패킷의 유실과 재전송 증가 탐지
  • 예상치 못한 접속의 리셋 탐지

WPA (Wi-Fi Protected Access)

→ Wi-Fi에서 제정한 무선 랜(WLAN) 인증 및 암호화 관련 표준

AES

→ DES의 보안 문제 해결을 위해 NIST에서 개발한 개인키 암호화 알고리즘

* SEED → 한국인터넷진흥원에서 개발한 블록 암호화 알고리즘

* ARIA → 국자정보원과 산학협회가 개발한 블록 암호화 알고리즘

* DES → 미국 NBS에서 발표한 개인키 암호화 알고리즘

* AES → 미국 표준 기술 연구소(NIST)에서 발표한 개인키 암호화 알고리즘

* RSA → MIT의 라이베스트, 샤미르, 애들먼에 의해 제안된 공개키 암호화 알고리즘, 소인수 분해 문제를 이용한 공개키 암호화 기법에 널리 사용

침입 탐지 시스템

  • 이상 탐지 기법: 평균적인 시스템의 상태를 기준으로 비정상적인 행위나 자원의 사용이 감지되면 이를 알려주는 시스템
  • 오용 탐지 기법 - Signature Base나 Knowledge Base, 이미 발견되고 정립된 공격 패턴을 입력해두었다가 탐지 및 차단
  • HIDS - 운영체제에 설정된 사용자 계정에 따라 어떤 사용자가 어떤 접근을 시도하고 어떤 작업을 했는지에 대한 기록을 남기고 추적
  • NIDS - Snort
  • 외부 인터넷에 섭비스를 제공하는 서버가 위치하는 네트워크인 DMZ에는 IDS가 설치될 수 있다

네트워크 장비

  • 리피터: 전송되는 신호가 전송 선로의 특성 및 외부 충격 등의 요인으로 인해 원래의 형태와 다르게 왜곡되거나 약해질 경우 원래의 신호 형태로 재생하여 다시 전송하는 역할을 수행
  • 브라우터: 브리지와 라우터의 기능을 모두 갖추고 있는 네트워크 장비
  • 네트워크 인터페이스 카드: 케이블을 통해 정보 전송
  • 허브: 한 사무실이나 가까운 거리의 컴퓨터들을 연결하는 장치
  • 스위치: 브리지와 같이 LAN과 LAN을 연결하여 훨씬 더 큰 LAN을 만드는 장치
  • 라우터: 브리지와 같이 LAN과 LAN의 연결 기능에 데이터 전송의 최정 경로를 선택할 수 있는 기능 추가
  • 게이트웨이: 전 계층의 프로토콜 구조가 다른 네트워크의 연결을 수행

STA (Spanning Tree Algorithm)

→ 루프(폐회로)를 형성하지 않으면서 연결을 설정하는 알고리즘

알고리즘

  • AES → 개인키 암호화 알고리즘
  • MD4, MD5, SHA-1 → 해시 알고리즘

SAN

→ 네트워크상에 광채널 스위치의 이점인 고속 전송과 장거리 연결 및 멀티 프로토콜 기능을 활용

Mesh Network

→ 기존 무선 랜의 한계 극복을 위해 등장하였으며, 대규모 디바이스의 네트워크 생성에 최적화되어 차세대 이동통신, 홈네트워킹, 공공 안전 등의 특수목적에 사용되는 새로운 방식의 네트워크 기술을 의미함

CPM (Critical Path Method)

프로젝트 완성에 필요한 작업을 나열하고 작업에 필요한 소요 기간을 예측하는데 사용하는 기법

  • 프로젝트 내에서 각 작업이 수행되는 시간과 각 작업 사이의 관계를 파악할 수 있음
  • 효과적인 프로젝트의 통제를 가능하게 해줌
  • 경영층의 과학적인 의사 결정을 지원
profile
영차영차 😎

0개의 댓글