정보처리기사(2020년 1회~4회 기출정리+오답노트)

조영문·2023년 4월 12일
0

정보처리기사

목록 보기
5/9

1회

소프트웨어 테스트 원리

  • 테스팅은 결함이 존재함을 밝히는 것 / 결함이 없다는 것을 증명할 수 없음.
  • 완벽한 테스팅은 불가능
  • 개발 초기에 테스팅 시작
  • 결함집중 : 적은 수의 모듈에서 대다수의 결함이 발생함 / 오류의 80%는 전체 모듈의 20% 내에서 발견
  • 살충제 패러독스 : 동일한 테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못함
  • 테스팅은 정황에 의존적
  • 오류-부재의 궤변 : 요구사항을 충족시켜주지 못하면, 결함이 없다고 해도 품질이 높다고 못함.

데이터 마이닝

  • 대규모로 저장된 데이터 안에서 체계적이고 자동적으로 통계적 규칙이나 패턴을 찾아내는 기술

프로토콜 3요소

  • 구문(Syntax) : 시스템 간의 정보 전송을 위한 데이터 형식, 코딩, 신호 레벨 등의 규정
  • 의미(Sementic) : 시스템 간의 정보 전송을 위한 제어 정보로 조정과 에러 처리를 위한 규정
  • 타이밍(Timing) : 시스템 간의 정보 전송을 위한 속도 조절과 순서 관리 규정

XML / JSON / AJAX

XML(eXtensible Markup Language)

  • 송수신시스템 간 데이터 연계의 편의성을 위해서 전송되는 데이터 구조를 동일한 형태로 정의한다. 인간과 기계 모두 이해할 수 있는 텍스트 형태로 마크업 포맷을 정의하기 위한 메타언어이다.

JSON(JavaScript Object Notation)

  • 비동기 브라우저, 서버 통신(AJAX)을 위해 '속성-값 쌍','키-값 쌍'으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포멧이다.

AJAX(Asynchronous JavaScript and XML)

  • 웹 페이지 전체를 다시 로딩하지 않고도, 웹 페이지의 일부분만을 갱신할 수 있습니다.

비선점 스케줄링

  • 우선순위 : 프로세스별로 우선순위가 주어지고, 우선순위에 따라 CPU 할당
  • 기한부 : 작업들이 명시된 시간이나 기한 내에 완료되도록 계획
  • FCFS : First Come First Service
  • HRN(High Response Ratio Next) : 대기 중인 프로세스 중 현재 응답률이 가장 높은 것 선택

트랜잭션의 특성

  • 원자성 : 분해가 불가능한 작업의 최소단위 / 연산 전체가 성공 또는 실패 / 하나라도 실패하면 전체가 취소되어야하는 특성
  • 일관성 : 트랜잭션이 실행 성공 후 항상 일관된 데이터베이스 상태를 보존해야하는 특성
  • 격리성 : 트랜잭션 실행 중 생성하는 연산의 중간 결과를 다른 트랜잭션이 접근 불가한 특성
  • 영속성 : 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장하는 특성

랜드 어택(Land Attack)

  • 출발지(Source) IP와 목적지(Destination) IP를 같은 패킷 주소로 만들어 보냄으로써 수신자가 자기 자신에게 응답을 보내게하여 시스템의 가용성을 침해하는 공격

해시 암호화 알고리즘 종류

  • MD5 : MD4를 개선한 암호화 알고리즘으로 프로그램이나 파일의 무결성 검사에 이용
  • SHA-1 : NSA에서 미 정부 표준으로 지정, DSA(Digital Signature Algorithm)에서 사용
  • SHA-256/384/512 : SHA알고리즘의 종류로 256bit의 해시값을 생성하는 해시 함수
  • HAS-160 : 국내 표준 서명 알고리즘을 위해 개발된 해시 함수 / MD5와 SHA-1의 장점을 취하여 개발된 해시 알고리즘

결합도 / 응집도

결합도

  • 결합도는 모듈 내부가 아닌 외부의 모듈과의 연관도 또는 모듈 간의 상호의존성으로서 낮을수록 좋다.
    - 내용 결합도 : 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
    - 공통 결합도 : 파라미터가 아닌 모듈 밖에 선언되어있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용하는 경우의 결합도
    - 외부 결합도 : 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토골, 또는 디바이스 인터페이스를 공유할 경우의 결합도
    - 제어 결합도 : 단순 처리할 대상인 값만 전달되는 게 아니라 어떻게 처리를 해야한다는 제어 요소가 전달되는 경우의 결합도
    - 스탬프 결합도 : 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도
    - 자료 결합도 : 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호작용이 일어나는 경우의 결합도

응집도

  • 응집도는 모듈의 독립성을 나타내는 개념으로, 모듈 내부 구성요소 간 연관 정도로서 높을수록 좋다.
    - 우연적 응집도 : 모듈 내부의 각 구성요소가 연관이 없을 경우의 응집도
    - 논리적 응집도 : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도
    - 시간적 응집도 : 연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 함 모듈에서 처리할 경우의 응집도
    - 절차적 응집도 : 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
    - 통신적 응집도 : 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우의 응집도
    - 순차적 응집도 : 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우의 응집도
    - 기능적 응집도 : 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도

릴리즈 노트

릴리즈 노트의 주요 작성 항목

  • 헤더 : 문서 이름(릴리스 노트 이름), 제품 이름, 버전 번호, 릴리즈 날짜, 참고 날짜, 노트 버전 등의 정보
  • 개요 : 제품 및 변경에 대한 간략한 전반적 개요
  • 목적 : 릴리스 버전의 새로운 기능목록과 릴리스 노트의 목적에 대한 개요, 버그 수정 및 새로운 기능 기술
  • 이슈 요약 : 버그의 간단한 설명 또는 릴리즈 추가 항목 요약
  • 재현 항목 : 버그 발견에 따른 재현 단계 기술
  • 수정,개선 내용 : 수정, 개선의 간단한 설명 기술
  • 사용자 영향도 : 버전 변경에 따른 최종 사용자 기준의 기능 및 응용 프로그램 상의 영향도 기술
  • 소프트웨어 지원 영향도 : 버전 변경에 따른 소프트웨어 지원 프로세스 및 영향도 기술
  • 노트 : 소프트웨어 및 하드웨어 설치 항목, 제품, 문서를 포함한 업그레이드 항목 메모
  • 면책 조항 : 회사 및 표준 제품과 관련된 메시지, 프리웨어 및 불법 복제 방지, 중복 등 참조에 대한 고지사항
  • 연락 정보 : 사용자 지원 및 문의에 관련한 연락처 정보

비정규화(=반정규화, 역정규화)

  • 정규화된 엔티티, 속성, 관계에 대해 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터모델링 기법

정규화

  • 함수적 종속성 등의 종속성 등의 종속성 이론을 이용하여 잘못 설게된 관게형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어 가는 과정

애플리케이션 성능 측정 지표

  • 처리량 : 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션의 수
  • 응답시간 : 사용자 입력이 끝난 후, 애플리케이션의 응답 출력이 개시될 때까지 시간
  • 경과시간 : 애플리케이션에 사용자가 요구를 입력한 시점부터 트랜잭션을 처리 후 그 결과의 출력이 완료할 때까지 걸리는 시간
  • 자원 사용률 : 애플리케이션이 트랜잭션을 처리하는 동안 사용하는 CPU 사용량, 메모리 사용량, 네트워크 사용량

2회

개발방법론

  • 소프트웨어 개발, 유지보수 등에 필요한 수행방법과 각종 기법 및 도구를 체계적으로 정리하여 표준화하는 것
    • 구조적 방법론 : 사용자 요구사항을 파악하여 문서화하는 처리 중심의 방법론
    • 정보공학 방법론 : 계획, 분석, 설계, 구축에 정형화된 기법들을 통합 및 적용하는 자료 중심의 방법론
    • 객체지향 방법론 : 객체들을 조립해서 소프트웨어를 구현하는 방법론
    • 컴포넌트 기반 방법론 : 컴포넌트를 조합하여 새로운 애플리케이션을 만드는 방법론
    • 제품 계열 방법론 : 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
    • 스크럼 : 팀이 중심이 되어 개발의 효율성을 높이는 기법
    • 애자일 방법론 : 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발과정을 진행하는 방법론

IPSec(Internet Protocol Security)

  • IP계층에서 무결성과 인증을 보장하는 인증 헤더와 기밀성을 보장하는 암호화를 이용한 IP보안 프로토콜

테스트 자동화 도구

정적 분석 도구

  • 프로그램을 실행하지 않고 분석하는 도구
  • 소스 코드의 코딩 표준, 코딩 스타일, 코드 복잡도, 남은 결함등을 발견하기 위해 사용

동적 분석 도구

  • 대상 시스템의 시뮬레이션을 통해 오류를 검출하는 도구

SOAP(Simple Object Access Protocol)

  • HTTP, HTTPS, SMTP 등을 사용하여 XML 기반의 메시지를 네트워크 상태로 교환하는 프로토콜

입력 데이터 검증 및 표현

  • XSS(Cross Site Script) : 검증되지 않은 외부 입력 데이터가 포함된 웹페이지가 전송되는 경우, 사용자가 해당 웹페이즈를 열람함으로써 웹페이지에 포함된 부적절한 스크립트가 실행되는 공격
  • 사이트 간 요청 위조 : 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹 사이트에 요청하게 하는 공격
  • SQL 삽입(SQL Injection) : 응용 프로그램의 보안 취약점을 이용해서 악의적인 SQL 구문을 삽입, 실행시켜서 데이터베이스의 접근을 통해 정보를 탈취하거나 조작 등의 위를 하는 공격 기법

UI 설계 원칙

  • 직관성 : 누구나 쉽게 이해하고, 쉽게 사용할 수 있어야 함
  • 유효성 : 정확하고 완벽하게 사용자의 목표를 달성될 수 있도록 제작
  • 학습성 : 초보와 숙련자 모두가 쉽게 배우고 사용할 수 있게 제작
  • 유연성 : 사용자의 인터렉션을 최대한 포용하고, 실수를 방지할 수 있도록 제작

형상 관리

  • 소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경사항을 관리하기 위한 활동

형상 관리 절차

  1. 형상 식별 : 형상 관리 대상을 정희 및 식별하는 활동
  2. 형상 통제 : 형상 항목의 버전 관리를 위한 형상통제위원회 운영
  3. 형상 감사 : 소프트웨어 베이스라인의 무결성 검사
  4. 형상 기록 : 소프트웨어 향상 및 변경관리에 대한 각종 수행결과를 기록

3회

리팩토링

  • 복잡한 코드의 단순화, 소스의 가독성을 통해 유지보수성 향상, 생산성 향상, 품질 향상 목적

식별자 표기법

  • 카멜 표기법 : 식별자 표기 시에 여러단어가 이어지면 첫 단어 시작만 소문자로 표시, 각 단어의 첫 글자는 대문자로 지정하는 표기법
  • 파스칼 표기법 : 식별자 표기 시에 여러 단어가 이어지면 각 단어의 첫 글자는 대문자로 지정하는 표기법
  • 스네이크 표기법 : 식별자 표기 시에 여러 단어가 이어지면 단어 사이에 언더 바를 넣는 표기법
  • 헝가리안 표기법 : 식벼자 표기 시 두어에 자료형을 붙이는 표기법

데이터베이스 스키마

  • 데이터베이스 구조, 제약조건 등의 정보를 담고 있는 기본적인 구조
    - 외부스키마
    - 개념스키마
    - 내부스키마

EAI의 구축 유형

  • 포인트 투 포인트 : 1대1
  • 허브 앤 스포크 : 허브 시스템을 이용
  • 메시지 버스 : 미들웨어 이용
  • 하이브리드 : 허브 앤 스포크 + 메시지버스

4회

디자인 패턴

  • 목적
    - 생성 : 객체 인스턴스 생성에 관여, 클래스 정의와 객체 생성 방식을 구조화, 캡슐화
    - 구조 : 더 큰 구조 형성 목적으로 클래스나 객체의 조합을 다루는 패턴
    - 행위 : 클래스나 객체들이 상호작용하는 방법과 역할 분담을 다루는 패턴
  • 범위
    - 클래스 : 클래스 간 관련성 / 컴파일 타임에 정적으로 결정
    - 객체 : 객체 간 관련성을 다루는 패턴 / 런타임에 동적으로 결정

네트워크 공격 기법

  • 스니핑(Sniffing) : 공격 대상에게 직접 공격을 하지 않고 데이터만 몰래 들여다보는 수동적 공격기법
  • 네트워크 스캐너/스니퍼 : 네트워크 하드웨어 및 소프트웨어 구성의 취약점 파악을 위해 공격자가 취약점을 탐색하는 공격도구
  • 패스워드 크래킹 : 사전 크랙킹 공격, 무차별 크래킹 공격, 패스워드 하이브리드 공격(앞 두개 합친거), 레인보우 테이블 공격(패스워크별 해시값을 미리 생성해서 테이블을 모아놓고, 크래킹하고자 하는 해시값을 테이블에서 검색해서 역으로 패스워드를 찾는 공격기법)
  • IP 스푸핑(Spoofing) : 침입자가 인증된 컴퓨팅 시스템인 것처럼 속여서 타깃 시스템의 정보를 빼내기 위해서 본인의 패킷 헤더를 인증된 호스트의 IP어드레스로 위조하여 타깃에 전송하는 공격 기법
  • ARP 스푸핑(Spoofing) : 공격자가 특정 호스트의 MAC주소를 자신의 MAC로 위조한 ARP Reply를 만들어 희생자에게 지속적으로전송하여 희생가즤 ARp Cache Table에 특정 호스트의 MAC정보를 공격자의 MAC 정보로 변경, 희생자로부터 특정 호스트로 나가는 패킷을 공격자가 스니칭하는 공격
  • ICMP Redirect 공격 : 3계층에서 스니핑 시스템을 네트워크에 존재하는 또 다른 라우터라고 알림으로써 패킷의 흐름을 바꾸는 공격
  • 트로이 목마 : 악성 루팅이 숨어있는 프로그램으로 겉보기에는 정상적인 프로그램으로 보이지만 실행하면 악성코드를 실행하는 프로그램

NAT(Network Address Transformation)

  • 보통 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP주소를 사용하여 인터넷에 접속하기 위하여 사용

분산 컴퓨팅 플랫폼

  • 하둡 : 오픈소스를 기반으로 한 분산 컴퓨팅 플랫폼으로, 일반 PC급 컴퓨터들로 가상화된 대형 스토리지를 형성하고 그 안에 보관된 거대한 데이터 세트를 병렬로 처리할 수있도록 개발된 자바 소프트웨어 프레임워크로 구글, 야후 등에 적용한 기술이다.
    - 하둡 분산 파일 시스템 : 대용량 파일을 분산된 서버에 저장하고, 그 저장된 데이터를 빠르게 처리할 수 있게 하는 하둡 분산 파일 시스템
    - 맵리듀스 : 대용량 데이트 세트를 병렬 컴퓨팅에서 처리하거나 생성하기 위한 목적으로 만들어진 소프트웨어 프레임워크

프로세스 상태 전이

  • 생성 : 사용자에 의해 프로세스가 생성된 상태
  • 준비 : CPU를 할당받을 수 있는 상태
  • 실행 : 프로세스가 CPU를 할당받아 동작 중인 상태
  • 대기 : 프로세스 실행 중 입출력 처리 등으로 인해 CPU를 양도하고 입출력 처리가 완료까지 대기리스트에 기다리고 있는 상태
  • 완료 : 프로세스가 CPU를 할당받아 주어진 시간 내에 완전히 수행을 종료

테스팅 오라클

  • 테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참값을 입력하여 비교하는 기법
    • 참 오라클 : 모든 입력갑에 대해여 기대하는 결과를 생성함으로써 발생된 오류를 모두 검출할 수 있다.
    • 샘플링 오라클 : 특정한 몇개의 입력값에 대해서만 기대하는 결과를 제공하는 오라클
    • 휴리스틱 오라클 : 샘플링 오라클을 개선한 오라클로, 특정 입력값에 대해 올바른 결과를 제공하고, 나머지 값들에 대해서는 휴리스틱(추정)으로 처리하는 오라클
    • 일관성 검사 오라클 : 애플리케이션 변경이 있을 때, 수행 전과 후의 결과값이 동일한지 확인하는 오라클

SW 개발 보안의 3대 요소

  • 기밀성 : 인가되지 않은 개인 혹은 시스템 접근에 따른 정보 공개 및 노출을 차단하는 특성
  • 무결성 : 정당한 방법을 따르지 않고서는 데이터가 변경될 수 없으며, 데이터의 정확성 및 완전성과 고의/악의로 변경되거나 휘손 또는 파괴되지 않음을 보장하는 특성
  • 가용성 : 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속해서 사용할 수 있도록 보장하는 특성

0개의 댓글