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

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

첫 기출에서 과락에 점수 미달나서 충격받았는데... 그래도 어찌어찌 4회에서는 합격...! (턱걸이) 제발... 잘 풀어라...


2020년 1, 2회 문제 풀이

1과목: 소프트웨어 설계

디자인 패턴

  • 행위(Behavioral) 패턴: Visitor, Observer, Strategy, Command 등
  • 생성(Creational) 패턴: Builder, Prototype, Factory Method 등
  • 구조(Structural) 패턴: Bridge, Adapter, Composite등

객체지향 프로그램

클래스 → 객체의 상태와 행위를 추상화하여 정의하는 틀

메소드 → 클래스 내의 함수

메시지 → 객체 간의 통신 수단

* 상속성 → 클래스의 특성을 물려받는 것

객체지향 기법

집단화 → 부분(part)과 전체(whole)의 관계 표현

일반화 → 상위-하위 클래스 관계

추상화 → 공통적인 특성 추출

캡슐화 → 데이터와 프로세스를 하나로 묶는 것

객체지향 분석 방법론

Coad와 Yourdon 방법

→ E-R 다이어그램을 사용하여 객체의 행위를 모델링 (객체 식별, 구조 식별, 주제 정의, 속성 및 관계 정의 등의 과정으로 구성)

→ 다른 방법론들과 달리 E-R 다이어그램을 적극 활용

코드 설계

순차 코드 → 일련 번호 부여 방식

블록 코드 → 구분 가능한 블록별로 코드 부여

연상 코드 → 명칭이나 품목의 특성을 나타내는 문자 사용

플랫폼 성능특성 분석

소프트웨어 설계 시 구축된 플랫폼의 성능 특성 분석에 사용되는 주요 지표는 응답 시간, 가용성, 사용률

* 서버 튜닝 → 성능 개선을 위한 작업

자료 사전

() : 생략

{} : 반복

[] : 선택

| : 또는

요구사항 검토 방법 - 워크 스루

검토회의 전 사전 검토 후 짧은 회의로 오류 검출, 동료 검토나 개발자 검토와는 달리 체계적이고 공식적인 절차 有

CASE가 갖고 있는 주요 기능

→ 그래픽 지원, 소프트웨어 생명주기 전 단계 연결, 다양한 개발 모형 지원

* 언어 번역 : 컴파일러의 기능

XP(eXtreme Programming) 5가지 가치

→ 의사소통, 단순성, 피드백, 용기, 존중

* 정형 분석 → 개발 방법론의 한 종류

DBMS 분석

주요 고려 사항: 성능, 가용성, 상호 호환성

* 네트워크 구성도 → 시스템 아키텍처 설계 시 고려사항

HIPO(Hierarchy Input Process Output)

  • 하향식 소프트웨어 개발을 위한 문서화 도구
  • 가시적 도표, 총체적 도표, 세부적 도표로 구성
  • 기능과 자료의 의존관계를 동시에 표현 가능

UI 설계 원칙

직관성: 누구나 쉽게 이해하고 사용 가능해야

유효성: 사용자의 목적을 정확하게 달성해야

유연성: 환경 변화에 대응할 수 있는 능력

무결성: 오류 없이 정확하게 수행해야

럼바우(Rumbaugh)의 객체지향 분석 절차

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

  • 객체 모형: 시스템의 정적인 구조를 표현
  • 동적 모형: 시스템의 제어 흐름을 표현
  • 기능 모형: 시스템의 기능적 특성을 표현

데이터 흐름도(DFD)의 구성요소

  • Process, Data Flow, Data Store

* Data Dictionary는 별도의 보조 자료

UML 확장 모델 - << >> 스테레오 타입 객체를 표현할 때 사용하는 기호

UML의 기본 요소를 확장하여 사용할 때 적용

TP monitor - 트랜잭션 처리를 감시하고 제어

분산 환경에서 트랜잭션 처리를 관리

소프트웨어 개발 방법 - 요구사항 분석

  • 비용과 일정에 대한 제약 설정
  • 타당성 조사
  • 요구사항 정의 문서화

* 설계 단계 → 설계 명세서 작성

공통 모듈에 대한 명세 기법

명확성 → 기능에 대한 일관된 이해와 해석이 가능하도록 작성

UML Structural Diagram

→ Class Diagram, Object Diagram, Component Diagram

* Behavioral Diagram → Activity Diagram

2과목: 소프트웨어 개발

경계 값 분석

입력 범위의 경계값에서 버그가 자주 발생한다는 점을 이용한 테스트 기법
→ 각 범위의 경계가 되는 값과 그 근처의 값을 테스트 케이스로 선택

image.png

문제에서 중요한 경계값

→ 59와 60 사이 (C와 B등급의 경계)

→ 79와 80사이 (B와 A등급의 경계)

90은 A등급 범위(80-100) 내의 중간값이기 때문에 경계값이 아니어서 버그 발견 가능성이 상대적으로 낮다!

좋은 테스트 케이스

  • 59, 60 (C/B 경계)
  • 79, 80 (B/A 경계)
  • 0 (최소값)
  • 100 (최대값)

차수와 노드

image.png

  • 차수: 노드가 가지는 최대 하위 노드의 수
  • 단말 노드: 하위 노드가 없는 노드 (leaf node)

검증 검사 기법

  • 알파 검사 → 개발자 환경에서 통제된 상태로 수행
  • 베타 검사 → 실제 사용자 환경에서 수행

하향식 통합 테스트에서 Stub

→ 하위 모듈 역할을 임시로 대체하는 더미 모듈

* Driver → 상위 모듈 역할을 대체하는 더미 모듈

소프트웨어 품질 측정에서 개발자 관점에서 고려해야 할 항목

→ 정확성, 무결성, 산결성

* 사용성 → 사용자 관점

소프트웨어 테스트 - Pareto의 법칙

오류의 80%는 전체 모듈의 20% 내에서 발견된다는 법칙 (80:20법칙으로도 알려져있다)

→ 테스트 효율성의 중요한 원리!

DRM(디지털 저작권 관리)의 기술 요소

→ 암호화, 정책 관리, 크랙 방지

* 방화벽 → 네트워크 보안 기술

인터페이스 보안을 위한 솔루션

IPSec, SSL, S-HTTPS

STAF(Software Testing Automation Framework)

인터페이스 구현 검증 도구 중 하나

→ 분산 환경 테스트 자동화 프레임워크

→ 데몬을 이용한 테스트 수행 및 통합

SW 패키징 도구 활용 시 고려 사항

→ 다양한 환경에서의 사용을 고려해야 한다!

* 보안은 중요하지만 호환성도 고려해야 한다

소프트웨어 형상 관리

→ 소프트웨어 개발 전 과정의 변경사항 추적 및 통제

Black Box Testing

→ Boundary Value Analysis가 대표적인 기법

외계인 코드(Alien Code)

오래되거나 참고문서 또는 개발자가 없어 유지보수가 어려운 프로그램

전위 순회

루트 → 왼쪽 서브트리 → 오른족 서브트리

image.png

+ * * / A B C D E

알고리즘 시간 복잡도 O(1)

→ 알고리즘 수행시간이 입력 데이터 수와 관계 없이 일정함

정렬 알고리즘 중 합병 정렬 → O(NlogN)

ISO/IEC 9126 소프트웨어 품질 특성

  • 기능성 → 하위특성: 적합성, 정확성, 보안성
  • 사용성 → 하위특성: 학습성

EAI(Enterprise Application Integration)의 구축 유형

→ Point-to-Point, Hub & Spoke, Message Bus

소스코드 품질 분석 도구 중 정적 분석 도구

→ cppchieck, pmd, checkstyle

바정규화 유형 중 중복 테이블을 추가하는 방법

→ 집계 테이블, 진행 테이블, 특정 부분 테이블

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

로킹(Locking)

여러 사용자가 동시에 데이터베이스에 접근할 때, 데이터의 일관성을 유지하기 위해 데이터의 접근을 제어하는 기법

→ 한 사용자가 데이터를 수정할 때 다른 사용자가 같은 데이터를 수정하지 못하도록 ‘잠금’을 거는 것, 병행제어의 단위

  • 데이터베이스, 파일, 레코드 등은 로킹 단위가 될 수 있다
  • 로킹 단위가 작아지면 로킹 오버헤드가 증가한다
  • 로깅 단위가 작아지면 데이터베이스 공유도가 증가한다
  • 한꺼번에 로킹할 수 있는 객체의 크기를 로킹 단위라고 한다

분산 데이터베이스의 특징

  • 장애 투명성
  • 병행 투명성
  • 위치 투명성
  • 중복 투명성

후보키 - 유일성 + 최소성

  • 유일성: 튜플을 유일하게 식별
  • 최소성: 필요 최소한의 속성으로 구성

DCL - 데이터 제어언어

  • 데이터 보안
  • 무결성 유지
  • 병행수행 제어

트랜잭션 - Atomicity

→ All or Nothing의 원칙

트랜잭션의 연산이 모두 반영되거나 전혀 반영되지 않아야 한다

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

UNIX의 쉘

  • 명령어 해석, 사용자 인터페이스 제공

* 커널 - 프로세스, 기억장치, 입출력 관리 수행

TCP/IP 프로토콜

  • 전송계층: TCP, UDP

* 응용계층 프로토콜: SMTP, HTTP, FTP

C언어의 비트 논리 연산자

& , | , ^ (XOR), ~ (NOT)

* ? → 조건 연산자

결합도 (Coupling)

모듈 간의 상호 의존도

→ 결합도가 낮을수록 좋은 설계

→ 결합도가 높으면 시스템 구현 및 유지보수가 어렵다

스레드(Thread)

하나의 프로세스는 여러 개의 스레드를 가질 수 있다

→ 멀티스레딩을 통한 병렬 처리 가능

C언어의 배열

static int b[9] = {1, 2, 3}

→ 초기화되지 않은 요소는 0으로 자동 초기화

b[5] = 0

은행가 알고리즘 - 교착상태 회피(Avoidance) rlqjq

IEEE 802.11 무선 LAN 표준

802.11e → QoS 강화를 위해 MAC 지원 기능 채택

ARP

TCP/IP 네트워크에서 IP주소를 MAC 주소로 변환하는 프로토콜

HRN(Hightest Response-ratio Next)

응답률이 높은 프로세스가 우선 실행

* 응답률 = (대기시간+서비스시간) / 서비스시간

  • 대기 시간이 긴 프로세스일 경우 우선순위가 높아짐
  • SJF 기법을 보완하기 위한 방식
  • 긴 작업과 짧은 작업 간의 지나친 불평등 해소

교착 상태 발생

  • 필요충분조건: 상호배제, 점유와 대기, 비선점, 환형대기

* 선점 - 교착상태 해결 방법 중 하나

페이지 교체 (FIFO 페이지 교체)

  • 페이지: 메모리를 일정한 크기로 나눈 블록
  • 페이지 프레임: 물리적 메모리의 한 조각
  • 페이지 부재: 필요한 페이지가 메모리에 없는 상황
  • FIFO 페이지 교체 - 가장 먼저 들어온 페이지를 가장 먼저 교체하는 방식

image.png

필요한 페이지가 현재 프레임에 없을 때 페이지 부재 발생 → 가장 오래된 페이지를 제거하고 새로운 페이지를 넣음

음 걍 버리자

사용할 수 없는 변수명 - C언어

  • text-color → 변수명에 하이픈(-) 사용 불가
  • 알파벳, 숫자, 언더스코어(_)만 사용 가능

IPv6

  • 128qlxmdml wnth rhdrks wprhd
  • 인증 및 보안 기능 포함
  • 패킷 크기는 가변적
  • IPv6 확장 헤더를 통해 네트워크 기능 확장이 용이함

기본 프로세스 상태

→ Ready, Running, Blocked, Exit 등

IPv6 주소 체계

  • Unicast, Anycast, Muticast

응집도 순서 (높음→낮음)

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

JAVA 언어의 접근제한자

→ public, protected, private

* package → 키워드

스크립트 언어

→ PHP, Python, Basic

* 컴파일 언어 - COBOL

OSI-7계층

신뢰성 있는 데이터 전송 → 전송 계층

오류 검출, 복구, 흐름 제어 담당

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

JSON

데이터의 객체를 속성값의 쌍 형태로 표현하는 형식

JavaScript Object Notation

→ 웹과 프로그램 간의 데이터 교환에 널리 사용되는 경량의 데이터 형식

RIP 라우팅 프로토콜

  • 최대 홉수를 15로 제한
  • 홉 수를 기반으로 하는 거리 벡터 라우팅 프로토콜
  • Routing Information Protocol

Smurfing

IP나 ICMP의 특성을 악용하여 시스템을 마비시키는 공격

네트워크 자원을 고갈시켜 서비스 거부 상태를 만든다

CMM (Capability Maturity Model)

초기 → 반복 → 정의 → 관리 → 최적화

PICONET - 무선 네트워크 기술

여러 개의 독립된 통신장치가 UWB나 블루투스 기술을 사용하여 통신망을 형성하는 무선 네트워크 기술

COCOMO model

  • organic 유형 : 5만 라인 이하의 소규모 소프트웨어 개발 프로젝트에 적용

Key Logger Attack

키보드 입력을 탐지해 정보를 빼가는 해킹 공격

사용자의 키보드 입력을 몰래 기록하여 정보 탈취

LOC 기법에 의한 개발 소요 기간 계산

  • 총 라인 수 : 50000
  • 월간 생산성 : 200라인
  • 개발자 수 : 10명
  • 계산 = 50000 / (200 x 10) = 25개월

Putnam 모형

→ Rayleigh-Norden 곡선을 이용한 프로젝트 비용 산정 기법

RSA

소인수 분해 문제를 이용한 공개키 암호화 알고리즘

→ 가장 널리 사용되는 비대칭 암호화 알고리즘

나선형 모형

프로토타입을 지속적으로 발전시켜 최종 소프트웨어를 개발하는 방법

  • 위험 분석과 관리가 중심
  • 점진적인 개발 방법론

Ransonware

사용자의 컴퓨터에 침입해 내부 분서 파일 등을 암호화해 사용자가 열지 못하게 하는 공격

→ 암호 해독용 프로그램의 전달을 조건으로 사용자에게 돈을 요구하기도 한다

백도어 탐지 방법

→ 단일 포트 x! 모든 포트를 검사해야 한다

스택가드

버퍼 오버플로우 공격을 탐지하고 방지하는 기술

프레임워크

소프트웨어 개발 프레임워크 적용 시 시스템 복잡도를 감소시킨다

시스템 무결성

오직 인가된 사용자만 수정할 수 있는 보안 요소

하둡

  • 분산 컴퓨팅 플랫폼
  • 빅데이터 처리에 사용

tripwire

→ 크래커의 침입으로 인한 백도어 설치나 설정 파일 변경을 분석하는 도구

폭포수 모형

  • 요구사항 변경이 어렵다!
  • 순차적인 접근 방법
  • 단계적 정의와 산출물 명확
  • 모형의 적용 경험과 성공 사례가 많음

테일러링 개발 방법론

내부 기준 → 기술환경, 납기/비용, 구성원 능력


2020년 3회 문제 풀이

1과목: 소프트웨어 설계

디자인 패턴 - Factory Method

  • 객체 생성을 위한 인터페이스 정의
  • 실제 생성될 클래스는 서브클래스가 결정
  • Virtual-Constructor 패턴이라고도 함

럼바우 객체 지향 분석

객체 모델링 → 동적 모델링 → 기능 모델링

미들웨어 솔루션 유형

  • WAS (Web Application Server)
  • ORB (Object Request Broker)
  • RPC (Remote Procedure Call)

* Web Server → HTTP 프로토콜을 기반으로 클라이언트의 요청을 처리하는 서버 소프트웨어

UML 시퀀스 다이어그램

주요 구성 요소 → 객체 (Object), 생명선(Lifeline), 실행 (Activation), 메시지 (Message)

* 확장은 시퀀스 다이어그램의 요소가 아니다

디자인 패턴 → 행위적 패턴

  • 커맨드 패턴
  • 옵저버 패턴
  • 상태 패턴

* 생성 패턴 → 프로토타입 패턴

계약에 의한 설계 (Design by Contract)

선행조건 : 오퍼레이션 사용 전에 참이어야 할 조건

결과조건 : 사용 후 만족되어야 할 조건

불변조건 : 실행 중 항상 만족되어야 할 조건

행위 다이어그램

유스케이스 다이어그램, 시퀀스 다이어그램, 활동 다이어그램

* 구조 다이어그램 → 배치 다이어그램

일반화 관계

image.png

‘차’ 클래스와 하위 클래스 간의 일반화(상속) 관계

LSP (Liskov Substitution Principle)

리스코프 치환 원칙

→ 상위 타입의 객체를 하위 타입의 객체로 치환해도 작동에 문제가 없어야 한다는 원칙

자료 흐름도(DFD) 구성 요소

  • Process
  • Data Flow
  • Data Store
  • Terminator

CASE(Computer-Aided Software Engineering) 도구

  • 소프트웨어 개발 과정의 일부 또는 전체를 자동화하기 위한 도구
  • 표준화된 개발 환경 구축 및 문서 자동화 기능 제공
  • 작업 과정 및 데이터 공유를 통해 작업자간 커뮤니케이션 증대
  • 2000년대 이전부터 사용되어 왔음

인터페이스 요구사항 검토 방법 : 동료검토

→ 요구사항 명세서 작성자가 설명하고 이해 관계자들이 설명을 들으면서 결함을 발견하는 방식

2과목: 소프트웨어 개발

ISO/IEC 12119

패키지 소프트웨어의 품질 요구사항 및 테스트를 위한 국제 표준

블랙박스 테스트 유형

  • 동등 분할 기법
  • 경계값 분석
  • 오류 예측

* 화이트박스 테스트 → 조건, 루프 검사

McCabe의 cyclomatic 공식

V(G) = 에지(e) - 노드(n) + 2 또는 영역(p) + 1

image.png

에지 = 6, 노드 = 4, 영역 = 3

→ 6 - 4 + 2 = 4 or 3 + 1 = 4

선택 정렬

  1. 주어진 리스트에서 최솟값을 찾음
  2. 맨 앞의 값과 교체
  3. 맨 앞을 제외한 나머지 리스트에서 반복

image.png

1회전 → 14, 37, 17, 40, 35

2회전 → 14, 17, 37, 40, 35

3회전 → 14, 17, 35, 40, 37

소프트웨어 품질 목표 - 신뢰성

→ 주어진 시간 동안 주어진 기능을 오류 없이 수행하는 정도를 나타냄

알고리즘 설계 기법

  • Divide and Conquer (분할 정복)
  • Greedy (탐욕)
  • Backtracking (백트래킹)

제품 소프트웨어의 형상 관리 역할

→ 형상 관리를 통해 이전 리버전이나 버전에 대한 정보에 접근 가능하여 배포본 관리에 유용

→ 불필요한 사용자의 소스 수정 제한

→ 동일한 프로젝트에 대해 여러 개발자 동시 개발 가능

* 비용 관리 → 별도의 영역

DRM(디지털 저작권 관리) 기술

  • 콘텐츠 암호화 및 키 관리
  • 콘텐츠 식별체계 표현
  • 라이센스 발급 및 관리

물리데이터 저장소의 파티션 설계에서 파티션 유형

  • 범위 분할
  • 해시 분할
  • 조합 분할

하향식 통합 테스트

→ 깊이 우선 방식 또는 너비 우선 방식

→ 상위 컴포넌트를 테스트하고 점증적으로 하위 컴포넌트를 테스트

→ 하위 컴포넌트 개발이 완료되지 않은 경우 스텁(Stub)을 사용하기도 함

AJAX

→ 자바스크립트를 사용한 비동기 통신 기술

클라이언트와 서버 간에 XML 데이터를 주고받는 기술

소프트웨어 재공학의 장점

  • 위험부담 감소
  • 비용 절감
  • 시스템 명세의 오류 억제

인수테스트

→ 알파/베타 테스트 수행

트리

  • 차수(degree) → 가장 많은 자식을 가진 노드의 자식 수

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

보이스/코드 정규형

→ 릴레이션 R의 모든 결정자가 후보키

트랜잭션의 원자성 (Atomicity)

→ Commit과 Rollback 명령어에 의해 보장 받음

로킹 (병행제어 기법)

  • 로킹의 대상이 되는 객체의 크기를 로킹 단위라고 함
  • 데이터베이스, 파일, 레코드 등은 로킹 단위가 될 수 있음
  • 로킹의 단위가 작아지면 로킹 오버헤드가 증가
  • 로킹의 단위가 커지면 데이터베이스의 공유도가 감소

뷰(View)

  • 데이터 보안 용이
  • 사용자 데이터 관리 용이
  • 논리적 독립성 제공

분산 데이터베이스의 투명성 종류

  • Location Transparency
  • Repliation Transparency
  • Failure Transparency

이행 규칙

X → Y이고 Y→ Z이면 X→Z가 성립함

BETWEEN A AND B

즉각 갱신 기법

→ 데이터베이스 로그(log)를 필요로하는 회복 기법

관계대수의 순수관계 연산자

→ Cartasian Product, Division, Project

* Select → 확장된 관계 연산자

이상 현상(abnomaly)

→ 데이터의 중복으로 인해 발생하는 곤란한 현상

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

버퍼 오버플로

→ 메모리를 다루는 데 오류가 발생하여 잘못된 동작을 하는 프로그램 취약점

IPv6

→ 128비트의 주소체계를 사용

→ 멀티미디어의 실시간 처리 가능, IPv4보다 보안성 강화, 자동으로 네트워크 환경 구성 가능

HRN 방식 스케줄링 ㅓㅊ리 순서

응답률 = (대기시간 + 서비스 시간) / 서비스 시간

운영체제

  • 다중 사용자와 다중 응용 프로그램 환경 하에서 자원의 현재 상태를 파악하고 자원 분배를 위한 스케줄링 담당
  • CPU, 메모리 공간, 기억 장치, 입출력 장치 등의 자원 관리
  • 입출력장치와 사용자 프로그램 제어

* 매크로 프로세서, 어셈블리, 컴파일러 → 시스템 소프트웨어의 종류

배치 프로그램의 필수 요소

  • 자동화: 심각한 오류 상황 외에는 사용자의 개입 없이 동작해야 함
  • 안정성: 어떤 문제가 생겼는지, 언제 발생했는지 등을 추적
  • 대용량 데이터: 대용량의 데이터를 처리할 수 있어야 함
  • 성능: 주어진 시간 내에 처리를 완료할 수 있어야 하고, 동시에 동작하고 있는 다른 애플리케이션을 방해하지 말아야 함

TCP 프로토콜

→ 헤더의 기본 크기는 20바이트이며, 최대 60바이트까지 확장 가능

→ 신뢰성이 있는 연결 지향형 전달 서비스, 스크림 전송 기능 제공, 순서 제어/오류 제어/흐름 제어 기능 제공

절차적 응집도

→ 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도

OSI-7Layer: 데이터링크 계층

  • 링크의 설정과 유지 및 종료를 담당
  • 노드 간의 오류 제어와 흐름 제어 기능을 수행

결합도

가장 강한 것 - Common Coupling

그 다음 - Control Coupling

메모리 관리 기법 - Worst fit

가장 큰 공간에 할당하는 방식

broadcast IP 주소 구하기

200.1.1.0/24 네트워크를 FLSM 방식을 이용하여 10개의 Subnet으로 나누고, ip subnet-zero를 적용

이 때 서브네팅된 네트워크 중 10번째 네트워크의 broadcast IP 주소는?

1. 10개의 서브넷을 만들기 위해서는 4비트가 필요함
- 2^3 = 8 (부족)
- 2^4 = 16 (충분)

2. `/24` 네트워크를 4비트 더 사용하므로 서브넷 마스크는 `/28`이 된다 
- 각 서브넷은 2^4 = 16개의 IP주소를 가짐 

3. 각 서브넷의 시작 주소는 16씩 증가 
- 0번째: 200.1.1.0
- 1번째: 200.1.1.16
- 2번째: 200.1.1.32
...
- 9번째(10번째 네트워크): 200.1.1.144

4. 브로드캐스트 주소는 다음 서브넷의 시작 주소 -1
- 10번째 네트워크의 시작: 200.1.1.144
- 다음 서브넷의 시작: 200.1.1.160
-> 브로드캐스트 주소: 200.1.1.159

서브넷 주소가 0번부터 시작하는 것은 ip subnet-zero 적

파이썬의 문자열 자르기

string[0:3]+string[-3:]

→ 문자열에서 처음 3글자와 마지막 3글자를 추출하여 합침

제어 결합도 (Control Coupling)

→ 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어신호를 이용하여 통신하는 경우

→ 하위 모듈에서 상위 모듈로 제어신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도현상이 발생하게 되는 결합도

UNIX

→ 새로운 프로세스를 생성하는 명령어 : fork

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

디지털 트윈

→ 물리적 사물과 동일하게 컴퓨터에 표현되는 가상의 모델

→ 실제 자산을 소프트웨어로 가상화하여 최적화, 문제 예측, 생산성 향상 등을 도모하는 기술

정보 보안의 3대 요소

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

Mashup

→ 웹에서 제공하는 정보 및 서비스를 이용하여 새로운 소프트웨어나 서비스, 데이터베이스 등을 만드는 기술

기능 점수(Funtional Point) 모형에서 비용산정에 이용되는 요소

  • 입력 양식 수
  • 출력 보고서 수
  • 조회수
  • 내부 논리파일 수
  • 외부 연계파일 수

블록 암호화 방식

  • DES
  • SEED
  • AES

* 스트림 암호화 방식 → RC4

SLIM

→ Putnam 모형을 기초로 만든 자동화 추정 도구

RSA

→ 1978년 MIT에서 제안된 공개키 암호화 알고리즘

→ 큰 숫자를 소인수분해하기 어렵다는 것에 기반

COCOMO 모델의 프로젝트 유형

  • Organic (조직형)
  • Semi-detached (반분리형)
  • Embedded (임베디드형)

Data Mining

→ 대량의 데이터를 분석하여 데이터 간의 상호관계를 규명하고 패턴을 찾아내는 기법

Mesh Network

→ 대규모 디바이스의 네트워크 생성에 최적화된 새로운 방식의 네트워크 기술

DDos 공격

→ Tribe Flood Network

RIP(Routing Information Protocol)

  • 거리 벡터 라우팅 프로토콜
  • 소규모 네트워크 환경에 적합
  • 최단경로탐색에는 Bellman-Ford 알고리즘 사용
  • 최대 홉 카운트는 15홉(16은 무한대로 간주)

폭포수 모형

→ 소프트웨어 생명주기 모형 중 고전적 생명주기 모형

→ 선형 순차적 모델

타당성 검토 → 계획 → 요구사항 분석 → 구현 → 테스트 → 유지보수

소프트웨어 나선형 모델

계획 수립 → 위험 분석 → 개발 및 검증 → 고객 평가

소프트웨어 재사용 방법 → 생성 중심

전자 칩과 같은 소프트웨어 부품을 만들어 끼워 맞추는 방식의 재사용 방법

SPICE

→ 소프트웨어 프로세스 평가 및 개선을 위한 국제 표준

Seven Touchpoints

→ SW 개발보안 방법론 중 하나

→ 보안의 모범 사례를 SDLC에 통합한 방법론


2020년 4회 문제 풀이

1과목: 소프트웨어 설계

XP(eXtreme Programming) 기본 원리

  • Pair Programming: 두 명이 짝을 이뤄 코딩
  • Collective Ownership: 코드의 공동 소유
  • Continuous Intergration: 지속적인 통합

럼바우(Rumbaugh)의 객체지향 분석 기법의 동적 모델링

→ 상태 다이어그램 (객체의 상태 변화와 이벤트 표현)

CASE(Computer Aided Software Engineering)의 주요 기능

  • S/W 생명주기 전 단계 연결
  • 그래픽 지원
  • 다양한 개발 모형 지원

* 컴파일러 → 언어 번역

캡슐화(Encapsulation)

  • 데이터와 함수를 하나로 묶음
  • 인터페이스 단순화
  • 재사용성 향상
  • 변경 시 영향 최소화

* 상속(Inheritance) → 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받음

인터페이스 분리 원칙 (Interface Segregation Principle)

→ 클라이언트는 자신이 사용하지 않는 메서드에 의존하면 안 된다는 원칙

파이프-필터 아키텍처

→ 데이터 스트림을 순차적으로 처리하는 구조, 각 필터가 입력을 받아 처리하고 다음 필터로 출력을 전달

블록 코드

→ 물리적 수치를 이용해 만든 코드

→ 무게, 면적, 용량 등의 물리적 수치를 활용하여 코드 생성

디자인 패턴

  • 소프트웨어 구조 파악 용이
  • 객체지향 설계 생산성 향상
  • 재사용성 증가

* 절차형 언어와는 관계 없음

DFD(data flow diagram)

→ 시스템의 자료 흐름을 표현하는 도구

  • 자료 흐름 그래프 또는 버블 (bubble) 차트라고도 함
  • 구조적 분석 기법에 이용
  • 화살표, 원, 사각형, 직선(단선/이중선)으로 표시

* 시간 흐름을 명확하게 표기하기는 어렵다

럼바우 분석 기법

→ 객체 모델링, 동적 모델링, 기능 모델링

UML의 기본 구성 요소

  • Things(사물)
  • Relationship(관계)
  • Diagram(다이어그램)

소프트웨어 상위 설계

→ 아키텍처 설계, 인터페이스 정의, 사용자 인터페이스 설계

* 모듈 설계 → 하위 설계

자료 사전(Data Dictionary)

  • [] → 선택
  • {} → 반복

UI 개발 시스템의 기능

  • 사용자 입력 검증
  • 에러 처리와 메시지
  • 도움말과 프롬프트 제공

요구사항 명세 기법

  • 비정형 명세는 자연어 기반
  • Z 명세는 정형 명세에 속함
  • 정형 명세는 수학적 기반
  • 정형 명세 기법은 비정형 명세 기법에 비해 표현이 간결

→ 정형 명세는 수학적 기반이므로, 비정형 명세가 Z 기법을 사용한다는 설명은 틀림

요구 분석 과정

→ 문서화를 통한 유지보수 용이, 자료흐름도, 자료사전 활용, 소단위 명세서 활용

애자일 방법론

→ 스크럼, XP(익스트림 프로그래밍), 기능중심 개발

미들웨어

→ 클라이언트와 서버 간 통신 담당

GoF(Gangs of Four) 디자인 패턴

  • 생성 패턴
  • 구조 패턴
  • 행위 패턴

* 추상 패턴같은 건 존재하지 않는다

2과목: 소프트웨어 개발

EAI(Enterprise Application Integration) Hybrid 구축 유형

  • Hub & Spoke와 Message Bus의 혼합 방식
  • 필요한 경우 한 가지 방식으로 EAI 구현 가능
  • 데이터 병목현상 최소화

* point to point 방식은 중간 미들웨어 없이 직접 연결하는 방식 → Hybrid 유형과 다르다

소스 코드 품질 분석 도구

  • 정적 분석 도구: checkstyle, pmd, cppcheck
  • 동적 분석 도구: valance

Postfix 연산식

3 4 * 5 6 * + 연산 결과

  1. 3 4 * = 12 (첫 번째 연산)
  2. 5 6 * = 30 (두 번째 연산)
  3. 12 + 30 = 42 (마지막 연산)

인터페이스 보안을 위한 네트워크 영역 보안 프로토콜

  • SSL: 웹 보안 프로토콜
  • IPSec: IP 계층 보안 프로토콜
  • S-HTTP: HTTP 보안 프로토콜

검증(Validation) 검사 기법

  • 알파 검사: 개발자 장소에서 사용자가 개발자 앞에서 검사
  • 베타 검사: 선정된 사용자가 직접 장소에서 검사
  • 디버깅 검사: 오류 발견과 수정
  • 형상 검사: 형상 관리 항목 검사

삽입 정렬 1회전 후 결과

초기 자료: 8, 3, 4, 9, 7

1회전 과정

  • 3과 8 비교 → 3, 8, 4, 9, 7

소프트웨어 설치 매뉴얼

→ 사용자 중심으로 작성, 설치 시작부터 완료까지 순서대로, 예외 상황 별도 구분, 목차/개요/기본사항 포함

인터페이스 구현 검증 도구

  • xUnit: 단위 테스트 프레임워크
  • ESB: 서비스 통합 플랫폼
  • STAF: 소프트웨어 테스트 자동화 프레임워크

* NTAF → 검증 도구 아님

소프트웨어 형상 관리 항목

→ 소스 코드, 프로젝트 요구 분석서, 운영 및 설치 지침서

* 프로젝트 개발 비용은 형상 관리 대상이 아님

내부 스키마

  • 물리적 저장 장치 관점에서 데이터베이스 구조
  • 실제 데이터베이스에 저장될 레코드 형식 정의
  • 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄

INORDER 운행 트리

왼쪽 서브트리 → 루트 → 오른쪽 서브트리 순으로 방문

n개의 노드로 구성된 무방향 그래프의 최대 간선 수

  • 무방향 그래프에서 한 노드는 다른 모든 노드와 연결 가능
  • 최대 간선 수 = n(n-1)/2

테스트 오라클

  • 테스트 결과의 참/거짓을 판단하기 위한 기준
  • 참 값을 미리 정의하여 비교하는 기법
  • 종류 → 참 오라클, 샘플링 오라클, 휴리스틱 오라클, 일관성 검사

빌드 자동화 도구

  • Gradle은 태스크 기반 빌드 자동화 도구
  • 지속적 통합 개발환경에서 활용
  • Ant, Gradle, Jenkins 등이 대표적
  • Jenkins는 Groovy 기반, 안드로이드 앱 개발 환경 전용은 x

저작권 관리 구성 요소

  • 콘텐츠 제공자: 저작권자
  • 콘텐츠 분배자: 암호화된 콘텐츠를 유통하는 사람이나 곳
  • 클리어링 하우스: 키 관리 및 라이선스 발급
  • DRM 컨트롤러: 이용 권한 통제

블랙박스 테스트 기법

  • 동치 클래스 분해, 경계값 분석, 원인-결과 그래프

* 화이트박스 테스트 기법 → 기초 경로 검사

해싱 함수 - 폴딩법

→ 레코드 키를 여러 부분으로 나누고, 나눈 부분의 각 숫자를 더하거나 XOR 한 값을 홈 주소로 사용

→ 키의 각 부분을 더하여 주소 계산

DRM(Digital Rights Management) 기술

  • 콘텐츠 암호화 및 키 관리
  • 콘텐츠 식별체계 표현
  • 라이선스 발급 및 관리

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

트랜잭션의 특성 - 원자성(Atomicity)

→ 트랜잭션의 연산은 모두 실행되거나 모두 실행되지 않아야 한다

→ 트랜잭션은 더 이상 분해할 수 없는 작업의 최소 단위

CRUD 분석

→ 데이터베이스에 영향을 주는 생성(CREATE), 읽기(READ), 갱신(UPDATE), 삭제(DELETE) 연산을 분석

→ 프로세스와 테이블 간의 매트릭스를 생성하여 트랜잭션을 분석

반정규화(De-normalization)

  • 시스템의 성능 향상과 개발/운영의 단순화를 위해 중복, 통합, 분리 등을 수행
  • 정규화된 엔티티, 속성, 관계에 대해 수행
  • 성능 향상을 위해 의도적으로 정규화 원칙 위배

E-R 다이어그램 기호

  • 사각형: 개체 타입
  • 마름모: 관계 타입
  • 타원: 속성
  • 선: 개체 타입과 속성을 연결

슈퍼키(Super Key)

→ 릴레이션에서 튜플을 유일하게 식별할 수 있는 속성 또는 속성들의 집합

→ 유일성은 만족하지만 최소성은 만족하지 못함

SQL GRANT문

  • DBA가 사용자에게 특정 권한을 부여할 때 사용
  • UPDATE ON 구문으로 테이블 갱신 권한 부여

관계 대수(Relational Algebra)

  • 릴레이션 조작을 위한 연산의 집합
  • 일반 집합 연산과 순수 관계 연산으로 구분
  • 절차적 언어이므로, 원하는 정보를 어떻게 유도하는가를 명시

* 비절차적이라는 설명은 틀림

로킹(Locking) 기법

  • 로킹 단위가 작아지면 병행성 수준이 높아짐
  • 로킹의 대상이 되는 객체의 크기를 로킹 단위라고 함
  • 데이터베이스도 로킹 단위가 될 수 있음
  • 로킹 단위가 커지면 로크 수가 작아 로킹 오버헤드가 감소

데이터베이스 권한 회수

REVOKE 명령어 사용하여 권한 회수

뷰(VIEW)

  • 뷰 정의는 ALTER문이 아닌 CRAETE VIEW 문을 사용
  • 뷰 위에 다른 뷰를 정의할 수 있음
  • 뷰에 대한 삽입, 갱신, 삭제 연산은 제약이 따른다

데이터 모델 요소

  • 구조
  • 연산
  • 제약조건

BCNF(Boyce-Codd Normal Form)

  • 결정자가 후보키가 아닌 함수적 종속 제거
  • 제3정규형보다 더 엄격한 정규화 단계

데이터베이스 물리적 설계 단계

  • 저장 레코드 양식 설계
  • 레코드 집중의 분석 및 설계
  • 접근 경로 설계

릴레이션의 차수(degree)

→ 릴레이션 스키마의 속성 수가 차수이다!!!

OLAP 연산

  • roll-up: 상위 레벨로 데이터 집계
  • drill-down: 하위 레벨로 데이터를 상세화
  • dicing

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

UNIX SHELL 환경 변수 출력 명령어

  • env : 환경 변수 출력
  • printenv : 환경 변수 출력
  • setenv : 환경 변수 설정

Java 데이터 타입 크기

  • byte: 1byte
  • short: 2byte
  • int: 4byte
  • long: 8byte

Java 출력 함수

  • System.out.println(): 출력 후 줄바꿈
  • System.out.print(): 출력만 수행
  • System.out.printf(): 형식화된 출력

운영체제 커널의 기능

  • 프로세스 생성/종료
  • 파일 시스템 관리
  • 기억 장치 할당/회수

OSI 7계층 - 전송 계층

  • 단말기 사이의 오류 수정과 흐름 제어 담당
  • 신뢰성 있는 데이터 전송 보장
  • 종단간(End-to-End) 통신 서비스 제공

Python의 슬라이싱

>>> a=[0,10,20,30,40,50,60,70,80,90]
>>> a[:7:2]

→ 처음부터 인덱스 7전까지 2칸씩 건너뛰며 추출

[0, 20, 40, 60]

SJF(Shortest Job First) 스케줄링

실행 시간이 가장 짧은 프로세스 먼저 실행

FIFO 페이지 교체 알고리즘

페이지 참조 순서: 1, 2, 3, 1, 2, 4, 5, 1

TCP 흐름제어 기법

  • Stop and Wait: 하나의 프레임 전송 후 응답 대기
  • 손실된 프레임 1개만 전송하고 수신자의 응답을 기다림

결합도(Coupling)

  • 데이터 결합도: 매개변수로 데이터 전달 시의 결합
  • 내용 결합도: 다른 모듈의 내용 직접 참조
  • 공통 결합도: 전역 데이터를 참조하는 결합

우연적 응집도

→ 모듈 내 구성 요소들 간에 의미있는 연관관계가 없음

→ 서로 다른 기능을 수행하는 요소들이 모여있음

Java 접근 제어자

→ private, public, default, protected

UDP 특성

  • 비연결형 서비스로 흐름제어 없음
  • 신뢰성보다 속도 중시
  • 헤더가 단순하여 오버헤드가 적음

세그먼트 테이블 논리주소 계싼

  • 논리주소(2, 176)에서 2는 세그먼트 번호
  • 시작주소 222에 오프셋 176을 더함
  • 결과: 398

TCP/IP 프로토콜

→ ARP: 논리주소를 물리주소로 변환

PHP 연산자

  • @: 에러 제어 연산자

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

VPN(Virtual Private Network)

  • 공중망에 사설망을 구축하여 전용망과 같은 효과
  • 인터넷과 같은 공중망을 사용하면서도 보안성 제공
  • 비용 효율적인 네트워크 구축 가능

CMM(Capability Maturity Model) 레벨

→ 초기, 관리, 정의, 최적화 단계로 구성

폭포수 모형(Waterfall Model)

  • 가장 오래된 소프트웨어 개발 생명주기 모형
  • 각 단계가 순차적으로 진행
  • 이전 단계가 완료되어야 다음 단계 진행 가능

SOA(Service Oriented Architecture)

→ 표현층, 프로세스층, 비즈니스층 구성

DAS(Direct Attached Storage)

→ 저장장치를 호스트에 직접 연결하는 방식, 네트워크 디바이스 없이 직접 연결

SADT(Structured Analysis and Design Technique)

  • SoftTech사가 개발한 구조적 분석 도구
  • 블록 다이어그램 사용

XP(eXtreme Programming)의 5가지 가치

→ 용기, 단순성, 의사소통, 피드백

MAC(Mandatory Access Control)

  • 강제적 접근 통제
  • 보안 등급과 허가 등급을 비교하여 접근 통제

나선형 모델

계획 수립 → 위험 분석 → 개발 및 검증 → 고객 평가

소프트웨어 비용 추정 모형

→ COCOMO, Putnam, Function-Point 모형

공개키 암호화 방식

  • 공개키로 암호화된 메시지는 개인키로 복호화
  • 비대칭 암호기법

WDM(Wavelength Division Mulitplexing)

  • 광섬유 통신에서 서로 다른 파장의 빛을 동시에 전송
  • 파장이 다른 광신호를 다중화하는 방식

XXS(Cross Site Scripting)

  • 웹페이지에 악성 스크립트를 삽입하여 실행
  • 사용자의 정보를 탈취하는 공격 기법

CBD(Component Based Development)

  • 컴포넌트 기반 개발 방법론
  • 새로운 기능 추가가 쉬운 확장성
  • 소프트웨어 재사용 가능

* 1960년대 적용되었다는 설명은 틀림

SDDC(Software Defined Data Center)

  • 커뮾팅, 네트워크, 스토리지 등을 소프트웨어로 정의
  • 인력 개입 없이 소프트웨어 조작만으로 자동 제어 관리
  • 데이터센터 내 모든 자원을 가상화하여 서비스

* 특정 하드웨어 종속은 특징 x

보안 운영체제 (Secure OS)

  • 운영체제 커널에 보안 기능 추가
  • 해킹으로부터 시스템 보호

NS(Nassi-Schneiderman) 차트

  • 논리의 기술에 중점을 둔 도형식 표현
  • 연속, 선택 및 다중 선택, 반복 등의 제어논리 구조로 표현
  • 조건이 복합되어 있는 곳의 처리를 시각적으로 명확히 식별하는데 적합

* 화살표 사용은 ns의 특징 x

MapReduce

  • 구글이 개발한 분산 처리 프로그래밍 모델
  • 대용량 데이터의 분산 처리에 사용

SPICE(Software Process Improvement and Capability dEtermination)

  • 소프트웨어 프로세스 개선 및 능력 측정의 국제 표준
  • ISO/IEC 15504
profile
영차영차 😎

0개의 댓글

Powered by GraphCDN, the GraphQL CDN