2021-05-15 정보처리기사 오답노트 정리

Jieun·2023년 5월 15일
0

2021-05-15 시험문제

1과목

객체지향 기법

instance : 클래스에 속한 각각의 객체
message : 객체에게 어떤 행위를 하도록 지시하는 명령
method : 객체에 소속된 함수
module : 실행코드와 객체(함수,클래스,변수)의 묶음


요구사항 개발 프로세스

도출 -> 분석 -> 명세 -> 확인


GOF(Gangs of Four)디자인패턴

  • factory method pattern은 상위클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위클래스에서 인스턴스를 생성하도록 하는 방식이다.
  • prototype pattern은 prototype을 먼저 생성하고 인스턴스를 복제하여 사용하는 구조이다.
  • mediator pattern은 객체간의 통제와 지시의 역할을 하는 중재자를 두어 객체지향의 목표를 달성하게 해준다.

생성패턴: 객체를 생성하는 것에 대한 패턴

추상팩토리 패턴, 빌더 패턴, 팩토리 메소드 패턴, 프로토타입 패턴, singleton pattern

singleton pattern(단일체): 한 클래스에 한 객체만 존재하도록 제한

구조 패턴: 구조를 통해 확장성을 꾀하는 패턴

adapter pattern, bridge pattern, 컴포지트 패턴, decorator pattern, 퍼사드 패턴, 플라이웨잇 패턴, 프록시 패턴

adapter pattern(적응자): 인터페이스가 호환되지 않는 클래스들을 함께 이용할 수 있도록, 타 클래스의 인터페이스를 기존 인터페이스에 덧씌운다
decorator pattern(장식자): 0개, 1개 혹은 그 이상의 객체를 묶어 하나의 객체로 이용할 수 있다

행위 패턴: 행위의 변경, 수정 등을 위한 패턴

역할 사슬 패턴, 커맨드 패턴, 인터프리터 패턴, 이터레이터 패턴, 미디에이터 패턴, 메멘토 패턴, 옵저버 패턴, state pattern, 스트래티지 패턴, 템플릿 메소드 패턴, 비지터 패턴

state pattern(상태): 동일한 동작을 객체의 상태에 따라 다르게 처리해야 할 때 사용하는 디자인 패턴


소프트 아키텍처 설계 <시스템 품질속성 6가지>

  1. 가용성
  2. 변경용이성
  3. 성능
  4. 보안성
  5. 사용편의성
  6. 시험용의성

연계시스템 구성

1. 송신 시스템
시스템 인터페이스를 구성하는 시스템.
연계할 데이터를 DB와 어플리케이션으로부터 연계테이블 또는 파일 형태로 생성하여 송신

2. 수신 시스템
수신한 연계테이블, 파일데이터를 수신시스템에서 관리하는 데이터 형식에 맞게 변환하여 DB에 저장하거나 애플리케이션에서 활용할 수 있도록 제공

3. 중계 서버
송/수신 시스템 사이에서 데이터를 송수신하고, 연계데이터의 송수신 현황을 모니터링함, 연계데이터의 보안강화 및 다중플랫폼 지원 등이 가능


CASE(Computer-Aided Software Engineering) 원천기술

구조적 기법
프로토타이핑 기술
자동프로그래밍 기술
정보 저장소 기술
분산 처리기술


  1. 클라이언트 서버 구조
    컴포넌트가 다른 컴포넌트에게 서비스를 요청. 데이터가 여러 컴포넌트를 거치며 처리.
  2. 계층구조
    모듈들로 응집된 계층 단위로 SW를 구성.
    계층간에 사용 가능의 관계로 표현
  3. MVC 구조
    모델-뷰-컨트롤러, 기능을 분리한 아키텍처
  4. 파이프 필터
    서브시스템이 입력 데이터를 받아 처리하고 결과를 다른 시스템에 보내는 작업이 반복

럼바우 객체지향 분석활동 (객.동.기)

  • 객체 모델링
  • 동적 모델링 - 상태도
  • 기능 모델링 - 자료흐름도

UML 다이어그램 (정리수정)

1. 구조적 다이어그램

  • 클객컴배복패 (클래스, 객체, 컴포넌트, 배치, 복합체, 패키지)

2. 행위 다이어그램

  • 유시커상활타상 (유스케이스, 시퀀스 다이어그램 , 커뮤니케이션, 상태, 액티비티 다이어그램 , 타이밍, 상호작용)

UML 모델

1. Dependency(의존)
한 사물의 명세서가 바뀌면 그것을 사용하는 다른 사물에게 영향을 끼치는 것을 말함

2.Realization(실체화)
한 객체가 다른 객체에 의해 오퍼레이션을 수행하도록 지정

3.Generalization(일반화)
일반화된 사물과 좀 더 특수화된 사물 사이의 관계를 말함
('is-a')관계

4. Association(연관)
두 사물간의 구조적 관계로, 어느 한 사물 객체가 다른 사물 객체와 연결되어 있음을 말함
('has-a')관계


CASE

  • 시스템 개발과정의 일부 또는 전체를 자동화시킨 것
  • 소프트웨어 생명주기의 전체 단계를 연결해 주고 자동화해주는 통합된 도구를 제공
  • 소프트웨어, 하드웨어, 데이터베이스, 테스트 등을 통합하여 소프트웨어를 개발하는 환경을 제공

상위 CASE: 요구 분석과 설계 단계를 지원

  • 모델들 사이의 모순검사 기능
  • 모델의 오류 검증 기능
  • 자료흐름도 작성 기능

하위 CASE: 코드를 작성하고 테스트하며 문서화하는 과정 지원

  • 원시코드 생성 기능

통합 CASE: 소프트웨어 개발 주기 전체과정을 지원


애자일 개발 방법론 종류

  • 익스트림 프로그래밍(XP , Extreme Programming)
  • 스크럼크리스털 패밀리
  • 기능 주도 개발(FDD , Feature-Driven Development)
  • 적응형 소프트웨어 개발 (ASD , Adaptive Software Development(

하둡(Hadoop)

분산 환경에서 빅 데이터를 저장하고 처리할 수 있는 자바 기반의 오픈 소스 프레임 워크.


2과목

단위 테스트 발견하는 오류

  1. 알고리즘 오류에 따른 원치 않는 결과
  2. 탈출구가 없는 반복문의 사용
  3. 틀린 계산 수식에 의한 잘못된 결과
  4. 테스트코드가 독립적. 상호작용 해당 X

소프트웨어 테스트 기본 원칙

1. 살충제 패러독스
동일한 테스트 케이스로 반복 실행하면 더이상 새로운 결함을 발견할 수 없으므로
주기적으로 테스트 케이스를 점검하고 개선해야 한다.

2.결함 집중
결함은 발생한 모듈에서 계속 추가로 발생할 가능성이 높다.

3. 오류 부재의 궤변
사용자의 요구사항을 만족하지 못한다면 오류를 발견하고 제거해도 품질이 높다고 말할 수 없다.


소프트웨어 버전 등록 관련 주요 용어

형상 감사(Configuration Audit)

기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업

저장소 : 최신 버전의 파일들과 변경 내역에 대한 정보들이 저장되어 있는 곳

가져오기(import) : 버전 관리가 되고 있지 않은 아무것도 없는 저장소에 처음으로 파일을 복사

체크아웃(check-out) : 프로그램을 수정하기 위해 저장소에서 파일을 받아 옴, 소스 파일과 함께 버전 관리를 위한 파일들을 받아 옴

체크인(check-in) : 체크아웃한 파일의 수정을 완료한 후 저장소의 파일을 새로운 버전으로 갱신

커밋(commit) : 체크인을 수행할 때 이전에 갱신된 내용이 있는 경우에는 충돌을 알리고 diff 도구를 이용해 수정한 후 갱신 완료
롤백(rollback) : 데이터베이스에서 업데이트에 오류가 발생할 때, 이전 상태로 되돌리는 것을 말한다.

동기화 : 저장소에 있는 최신 버전으로 자신의 작업공간을 동기화


소프트웨어 버전 관리도구 방식

1. 단일저장소 방식

2. 분산저장소 방식

  • 버전관리 자료가 원격저장소와 로컬저장소에 함께 저장되어관리
  • 대표적인 버전관리도구로 git

3. 공유폴더방식
로컬 컴퓨터의 공유폴더에 저장되어 관리

4. 클라이언트/서버 방식

  • 중앙 시스템(서버)에 저장되어 관리방식
  • 개발자 별로 자신의 pc(클라이언트)로 복사
  • 모든 버전관리는 서버에서 수행

소프트웨어 테스트

1. 화이트 박스 테스트

  • 개발자 관점의 테스트
  • 내부 소스코드를 테스트
  • 기본 경로는 싸이클을 최대 한번만 지나야한다.
  • 내부의 논리적인 모든 경로를 테스트해 테스트 케이스를 설계함

2. 블랙 박스 테스트

  • 사용자 관점의 테스트
  • 작동원리를 모르는 상태에서 동작을 검사
  • 경계값 분석
  • 프로그램의 구조를 고려하지 않는다

3. 테스트 케이스

  • 일반적으로 시험 조건,테스트 데이터, 예상 결과가 포함되어야한다.

단위 테스트 종류

명세 기반 테스트 : 주어진 명세를 빠짐없이 테스트 케이스로 구현하고 있는지 확인하는 테스트
구조 기반 테스트 : 프로그램 내부 구조 및 복잡도를 검증하는 화이트박스 테스트 시행, 제어 흐름과 조건 결정 등이 목적

성능 테스트 도구(Performance Test Tools)

  • 애플리케이션의 처리량, 응답시간, 경과시간, 자원 사용률 등 성능 목표 달성 여부 확인
  • 인위적으로 적용한 가상 사용자를 만들어 테스트 수행

소프트웨어 형상관리

  • 소프트웨어에 가해지는 변경을 제어하고 관리한다.
  • 유지 보수 단계뿐만 아니라 개발 단계에도 적용할 수 있다.
  • 프로젝트 계획, 분석서, 설계서, 프로그램, 테스트 케이스 모두 관리 대상이다.
  • 대표적인 형상 관리 도구 : GIT,CVS, Subversion

    Ant, Maven, Gradle 은 빌드자동화 도구


디지털 저작권 관리(DRM)

콘텐츠 분배자(Contents Distributor) : 암호화된 콘텐츠를 유통하는곳/사람

패키저(Packager) : 콘텐츠를 메타데이터와 함께 배포가능한 형태로 묶어 암호화

클리어링 하우스(Clearing House) : 키 관리 및 라이센스 발급 관리

DRM 컨트롤러(DRM Controller) : 배포된 콘텐츠의 이용권한을 통제

Dataware house
사용자의 의사 결정에 도움을 주기 위하여 기간시스템의 데이터베이스에 축적된 데이터를 공통의 형식으로 변환해서 관리하는 데이터베이스를 말한다


버블 정렬(Bubble Sort)

첫 번째 자료와 두 번째 자료를, 두 번째 자료와 세 번째 자료를, 세 번째와 네 번째를, … 이런 식으로 (마지막-1)번째 자료와 마지막 자료를 비교하여 교환하면서 자료를 정렬

96735

Pass 1
9 6 7 3 5 → 6 9 7 3 5 → 6 7 9 3 5 → 6 7 3 9 5 → 6 7 3 5 9

Pass 2
6 7 3 5 9 → 6 3 7 5 9 → 6 3 5 7 9


[prefix] : 전의표기법

+LR

[infix] : 중위표기법

L+R

[postfix] : 후위표기법

LR+


인터페이스 구현 검증 도구

xUnit, STAF, Fitnesse, NTAF, Selenium, watir

Foxbase는 프로그래밍 언어입니다.


테스트(Test)와 디버그(debug)

테스트는 오류를 찾는 작업이고 디버깅은 오류를 수정하는 작업


3과목

순수관계연산자

  • select δ ⇒수평단절, 행을 다가져옴
  • project π ⇒수직단절, 열을 다가져옴
  • join ▷◁ : 공통 속성을 이용해 두개의 릴레이션 튜플을연결→만들어진 튜플로 반환
  • division ÷ : 릴S의 모든 튜플과 관련있는 릴R의 튜플반환

일반 집합 연산자

  • UNION 합집합
  • INTERSECTION 교집합
  • DIFFERENCE 차집합
  • CARTESIAN PRODUCT 교차곱

관계형 데이터 모델 (릴레이션)

테이블 =릴레이션
튜플 = 각각 행. ROW
속성 = 어트리뷰트 테이블에서 번호,이름,주소에 해당하는 header부분을 의미

  • 각각의 튜플은 고유한 값을 가진다. (튜플은 모두 다름)
  • 튜플사이에는 순서가 없다
  • 속성(어트리뷰트)의 이름은 유일해야 하지만, 값은 동일할 수도 있다.
    (번호,이름,성별 등은 유일, 하지만 성별엔 남,여 동일한 값이 들어갈 수 있음)
  • 속성의 순서는 중요하지 않다. (번호가 먼저 오든, 이름이 먼저오든 중요하지 않음)
  • 속성은 더이상 쪼갤 수 없는 원자값이 들어간다.

차수와 카디널리티

속성(attribute)의 수 = 차수(degree) = 열
튜플(tuple)의 수 = 기수 = 카디널리티(cadinality) = 행

릴레이션 R의 차수가 4이고 카디널리티가 5이며, 릴레이션 S의 차수가 6이고 카디널리티가 7일 때,
두 개의 릴레이션을 카티션 프로덕트한 결과의 새로운 릴레이 션의 차수와
카디널리티 차수는 +를 해주고 카디널리티는 *를 해주면 해당 결과가 나옵니다.

차수 = 4+6=10
카디널리티 = 5*7=35


UPDATE문 기본형식

UPDATE SET WHERE


데이터의 이상현상

갱신 이상(Modification Anomaly)
삽입 이상(Insertion Anomaly)
삭제 이상(Deletion Anomaly)


정규형순서 (도부이결다조)

비정규형 →
[도메인 분해 →] 제1정규형
[부분 함수 종속 제거 →] 제2정규형
[이행 함수 종속 제거 →] 제3정규형
[결정자가 후보키가 아닌 함수 종속 제거 →]
보이스 코드 정규형(BCNF)
[다중치 종속 제거 →] 제4정규형
[조인 종속제거 →] 제5정규형


4과목

결합도 (강->약)

내용(content) > 공통(common) > 외부(external) > 제어(control) > 스템프(stamp) > 자료(data)


모듈 내 응집도 // 우.논.시.절.교.순.기. (약->강)

우연적(Coincidental)응집도 < 논리적(Logical) 응집도 < 시간적 응집도(Temporal) < 절차적(Procedural) 응집도 < 교환적(Communication) 응집도 < 순차적(Sequential) 응집도 < 기능적(Functional)


교착상태 해결 방법

  • Detection(탐지) : 교착상태 발생을 허용하고 발생 시 원인을 규명하여 해결 (ex 자원할당 그래프)
  • Avoidance (회피) : 교착상태 가능성을 배제하지 않고 적절하게 피해나가는 방법 (ex 은행원 알고리즘)
  • Recovery (복구) : 교착상태 발견 후 현황대기를 배제시키거나 자원을 중단하는 메모리 할당 기법 (ex 선점, 프로세스 중지(희생자 선택)
  • Prevention(예방) : 교착상태의 필요조건을 부정함으로써 교착상태가 발생하지 않도록 미리 예방하는 방법 (ex 환형대기, 비선점, 점유와 대기, 상호배제 4가지 부정)

소프트웨어 프레임워크의 특징

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

페이징 기법

  • 컴퓨터가 메인 메모리에서 사용하기 위해 데이터를 저장하고 검색하는 메모리 관리 기법
  • 페이징기법을 통해 물리적 메모리는 연속적으로 할당되어 존재할 필요가 없음
  • 페이징기법을 통해 비연속적 메모리를 연속적메모리처럼 만들 수 있음

<페이지 크기가 작은경우>

더 많은 페이징 사상테이블 필요
내부 단편화 감소
페이지의 집합을 효율적으로 운영가능
기억장치의 효율이 좋음
총 입출력 시간 증가

<페이지크기가 큼>

주기억 장치 공간 절약
참조되는 정보와 무관한 양의 정보가 주기억 장치에 남게 됨
테이블이 복잡하지 않아 관리 용이


C언어 용어

stdio.h
표준 입출력 라이브러리

stdlib.h 함수
C 언어의 표준 라이브러리
문자열 변환, 사 난수 생성, 동적 메모리 관리 등의 함수들을 포함하고 있다.

  • atoi: 문자열을 정수로 변환하는 함수
  • atof: 문자열을 실수로 변환하는 함수
  • itoa: 정수형을 문자열로 변환하는 함수

strlen() 함수
string.h 에 포함되어 있습니다.

math.h 함수
삼각 함수, 제곱근, 지수 등 수학적인 함수


5과목

접근제어모델

Bell-Lapadula Model :
기밀성에 따라 상하관계가 구분된 정보를 보호
자신의 권한보다 낮은 보한레벨 권한을 가진경우 높은보안레벨의 문서를 읽을 수 없음

자신의 권한보다 높은 보안 레벨의 문서는
쓰기는 가능. 낮은 문서의 쓰기 권한 제한

BLP 기밀성 모델: 정보의 불법적인 파괴나 변조보다는 불법적인 비밀 유출 방지에 중점 - 기밀성 강조

Clark-Wilson 무결성 모델: 비밀 노출 방지보다 자료의 변조 방지가 더 중요함(금융, 회계관련 데이터, 기업 재무재표 등)

Chinese Wall: 충돌을 야기시키는 어떠한 정보의 흐름도 없어야 한다. 이익의 충돌 금지, 최근 일을 한 적 있는 파트너는 동일 영역에 있는 다른 회사 자료에 접근해서는 안된다.


소프트웨어 비용 추정모형

  • COCOMO : 시스템의 비용을 산정하기 위해 시스템을 구성하고 있는 모듈과 서브 시스템의 비용 합계를 계산하는 방식
  • Putnam : 소프트웨어 개발 주기의 간 단계별로 요구할 인력의 분포를 가정하는 모형
  • Function-Point(FP) : 요구 기능을 증가시키는 인자별로 가중치를 부여하여 기능의 점수를 계산하여 비용을 산정하는 방식

PERT : 계획 평가 및 재검토 기술, 프로젝트 관리를 분석하거나 주어진 완성 프로젝트를 포함한 일을 묘사하는데 쓰이는 모델


COCOMO

시스템의 비용을 산정하기 위해 시스템을 구성하고 있는 모듈과 서브 시스템의 비용 합계를 계산하는 방식

COCOMO모형의 개발유형

소프트웨어의 복잡도 or 원시 프로그램의 규모에 따라 분류

  • 조직형(Organic Mode) : 5만 라인 이하 / 기관 내부에서 개발된 중·소규모의 소프트웨어
  • 반분리형(Semi-Detached Mode) : 30만 라인 이하 / 트랜잭션 처리 시스템, 운영체제 DBMS 등
  • 내장형(Embedded Mode) : 30만 라인 이상 / 최대형 규모의 트랜잭션 처리시스템이나 운영체제

오류 종류

'12536‘으로 기입되어야 하는데 ’12936‘으로 표기되었을 경우,
정답은 Transcription 오류!

생략 오류(omission error) : 입력 시 한 자리를 빼놓고 기록한 경우
(1234 → 123)

필사 오류(Transcription error) : 입력 시 임의의 한 자리를 잘못 기록한 경우
(1234 → 1235)

전위 오류(Transposition error) : 입력 시 좌우 자리를 바꾸어 기록한 경우
(1234 → 1243)

**이중 오류(Double Transposition error) : 전위 오류가 두 가지 이상 발생한 경우
(1234 → 2143)

추가 오류(Addition error) : 입력 시 한 자리 추가로 기록한 경우
(1234 → 12345)

임의 오류(Random error) : 위의 오류가 두 가지 이상 결합하여 발생한 경우
(1234 → 12367)


하드웨어 관련 신기술

1. Memristor : memory + register. 전원 공급이 끊어져도 다시 전원이 공급되면 이전 상태 복원
2. MEMS : 센서, 엑추에이터 등 기계구조를 다양한 기술로 미세 가공 후 전기기계적 동작 가능케 한 초미세장치
3. SNMP : 하드웨어 신기술 아님. 간이 망 관리 프로토콜
4. N-Screen : N개의 서로 다른 단말기에서 동일콘텐츠를 자유롭게 이용 가능한 서비스

암호화

1. 단방향 (해시)

종류
SHA, MD5, N-NASH, SNEFRU 등

특징

  • 임의의 길이의 입력 데이터나 메시지를 고정 길이의 값이나 키로 변환
  • 암호화, 무결성 검증을 위하여 사용

2. 양방향 (개인키, 공개키)

2-1. 개인키 (암호화, 복호화 시 동일한 개인키를 이용)

종류

  • Stream 방식 (평문과 동일한 길이의 스트림을 생성하여 비트 단위로 암호화) : LFSR, RC4
  • Block 방식 (한 번에 하나의 데이터 블록을 암호화) : DES, SEED, AES, ARIA

AES (암호화 키와 복호화 키가 동일한 암호화 알고리즘)

특징

  • 암호화/복호화 속도가 빠르며, 알고리즘이 단순
  • 공개키 암호 기법보다 파일 크기가 작음
  • 사용자의 증가에 따라 관리해야 할 키의 수가 상대적으로 많아진다

2-2. 공개키

  • 암호화 시 사용자에게 공개되는 공개키 사용
  • 복호화 시 비밀키 사용

종류 : RSA

특징 : 키의 분배가 용이하고, 관리해야 할 키 수가 적음
암호화/복호화 속도가 느리며 알고리즘이 복잡, 개인키 암호화 방법보다 파일의 크기가 크다.


Stack Guard

메모리상에서 프로그램의 복귀 주소와 변수 사이에 특정 값을 저장해 두었다가 그 값이 변경되었을 경우 오버플로우 상태로 가정하여 프로그램 실행을 중단하는 기술

라우터

브리지와 같이 LAN과 LAN의 연결 기능에 데이터 전송의 최적 경로를 선택할 수 있는 기능이 추가된 것
서로 다른 LAN이나 LAN과 WAN의 연결도 수행한다.

type : 말 그대로 type
mkdir : 디렉토리 생성하는 명령어
ftp : 응용계층 프로토콜
nmap : 서버에 열린 포트 정보를 스캐닝해서 보안취약점을 찾는데 사용하는 도구

profile
👩‍💼👩‍💼➡️➡️➡️👩‍💻👩‍💻 생산자의 삶을 살기 위해 개발공부중

0개의 댓글

Powered by GraphCDN, the GraphQL CDN