Tiny Bunny
본문 바로가기
정보처리기사

정보처리기사 - 2과목

by 내이름효주 2024. 2. 24.

[1] 검색

  • 선형 검색(순차 검색)
  • 이진 검색(이분 검색): 중간 값을 비교
  • 인덱스 검색
  • 해싱 검색

[2] 자료구조: 자료를 저장하는 논리적인 방법

  • 선형구조: 배열, 선형리스트(연속리스트, 연결리스트), 스택(한쪽으로만 삽입, 삭제가 이루어지는 후입선출(LIFO)), 큐(한쪽에는 반드시 삽입 또 다른 한쪽에는 반드시 삭제가 이루어지는 선입선출(FIFO)), 데크
  • 비선형구조: 트리, 그래프
    • 트리: 정점과 가지를 이용한 사이클이 이루어지지 않은 자료 구조
      • 노드: 트리를 구성하는 기본 원소
      • 차수: 특정 노드의 자식 수 
      • 단말 노드(리프 노드): 자식이 없는 노드
    • 이진트리: 전위(Root > Left > Right), 중위(Left > Root > Right), 후위(Left > Right > Root)
    • 그래프: 정점과 간선의 두집합으로 이루어진 사이클이 있는 자료 구조
      • 그래프 최대 간선 수: 무방향 (n(n-1) /2 개), 방향(n(n-1) 개)
      • 깊이 우선 탐색: 노드의 자식들을 우선으로 탐색
      • 너비 우선 탐색: 노드의 인접한 모든 정점들을 우선으로 탐색

[3] 정렬 알고리즘

  • 선택정렬: 자료 배열 중 최솟값을 찾아 그 값을 첫번째 위치에 놓고, 첫번째 위치를 제외한 나머지 자료 배열 중 최솟값을 찾아 두번째 위치에 놓는 과정을 반복, O(n^2)
  • 버블정렬: 인접한 두 요소를 비교하여 교체하는 방법, O(n^2)
  • 삽입정렬: 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여 자신의 위치를 찾아 삽입하는 정렬, O(n^2)
  • 퀵정렬
  • 2-Way 병합 정렬(합병정렬): O(Nlog2N)
  • 힙정렬

[4] 소프트웨어 테스트

  • 확인 테스트
    • 사용자 입장
    • 고객의 요구사항에 맞게 구현되었는지 확인하는 것, 결과가 중요
  • 검증 테스트
    • 개발자 또는 시험자 입장
    • 설계 명세서에 맞게 만들어졌는지 점검, 생산과정 중요
  • 원리: 결함집중 - 결함의 대부분은 소수의 특정한 모듈에 집중되어 존재
  • 유형: 회복, 안전, 강도(시스템에 과다 정보량을 부과하여 과부화 시에도 시스템이 정상적으로 작동되는지 검증), 성능, 구조, 회귀, 병행
  • 분류
    • 정적테스트: 프로그램 실행 없이 코드 구조를 분석하여 논리적으로 검증
      • 코드검사, 워크스루, 인스펙션 등
    • 동적테스트: 프로그램 실행을 요구하는 테스트
      • 블랙박스 테스트: 사용자의 요구사항 명세서를 보면서 구현된 기능테스트
        • 발견할 수 있는 오류: 성능, 부정확한 기능, 인터페이스 오류 등
      • 화이트박스 테스트: 프로그램의 수행 경로 구조, 루프 등의 내부 로직을 보면서 테스트
        • Condition Testing, Loop Testing, Data Flow Testing
  • 소프트웨어 생명 주기의 V모델
    • 단위테스트(Unit Test): 구현된 모듈의 기능 수행 여부 판정, 내부에 존재하는 논리적 오류 검출
    • 통합테스트(Integration Test): 모듈 간의 인터페이스 연계 검증 및 오류 확인, 모듈 간의 상호작용 및 연계 동작 여부를 판정하는 방안 파악
      • 하향식 통합테스트: 메인 제어 모듈로부터 아래 방향으로
        • 스텁(Stub): 모듈 간에 통합 테스트를 하기 위해 일시적으로 제공되는 시험용 모듈(인자를 통해 받은 값을 가지고 수행한 후 그 결과를 테스트할 모듈에 넘겨주는 역할)
      • 상향식 통합테스트: 최하위 레벨의 모듈 또는 컴포넌트로부터 위쪽 방향으로 제어의 경로 따라 이동
        • 드라이버(Driver): 하위 모듈은 있으나 상위 모듈이 없는 경우 하위 모듈을 구동하기 위한 제어 프로그램(필요 데이터를 인자를 통해 넘겨주고, 테스트 완료 후 그 결과값을 받는 역할)
    • 시스템테스트(System Test): 단위, 통합 테스트 후 전체 시스템이 정상적으로 작동하는지
    • 인수테스트(Acceptance Test): 요구분석 명세서에 명시된 사항을 모두 충족하는지
      • 알파 검사: 개발자의 장소에서 사용자가 시험
      • 베타 검사: 실 업무를 가지고 사용자가 직접
  • 테스트케이스: 입력 값, 실행 조건, 기대 결과로 구성된 테스트 항목의 명세서
  • 테스트오라클: 결과가 참인지 거짓인지 판단하기 위해 사전에 정의된 참 값을 입력하여 비교
  • 테스트시나리오: 테스트 수행을 위한 여러 테스트 케이스의 집합, 동작 순서를 기술
  • 파레토 법칙 : 오류의 80%는 전체의 20%내에서 발견된다는 법칙
  • Brooks의 법칙 : 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다.

[5] 어플리케이션 성능 개선

  • 소스코드: 나쁜코드, 외계인코드, 클린코드
    • 외계인코드: 아주 오래되거나 참고 문서 또는 개발자가 없어 유지보수 작업이 어려운 코드

[6] 인터페이스 구현 및 예외처리

  • JSON(JavaScript Object Notation, 제이슨): 속성-값의 쌍으로 이루어진 데이터 객체를 전달하기 위해 사용하는 개방형 표준 포맷
    • AJAX(비동기식 자바스크립트 XML)에서 많이 사용 - JavaScript를 사용한 클라이언트와 서버 간에 XML 데이터를 주고받는 기술
    • XML을 대체하는 주요 데이터 포맷 - 다목적 마크업 언어
    • 인터페이스 구현 검증 도구
      • xUnit: java(Junit), C++(Cppunit), .Net(Nunit) 등 다양한 언어를 지원하는 단위 테스트 프레임워크
      • STAF: 서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임 워크
      • FitNesse: 웹 기반 테스트 케이스 설계/실행/결과 확인 등을 지원하는 테스트 프레임워크
      • NTAF: STAF와 FitNesse를 통합한 Naver 테스트 자동화 프레임워크

[7] 소프트웨어 품질목표

  • 이식성(Portability): 다양한 하드웨어 환경에서도 운용 가능하도록 쉽게 수정될 수 있는 능력
  • 효율성(Efficiency): 최소의 작업으로 요구되는 기능을 수행하는 정도
  • 사용용이성(Usability): 소프트웨어를 쉽게 사용할 수 있는 정도
  • 정확성(Correctness): 사용자의 요구사항을 충족시키는 정도

[8] 반정규화

  • 집계 테이블 추가 - sum,avg 등의 계산 미리 수행
  • 중복 테이블 추가 - 서버 분리 또는 업무 구별
  • 이력 테이블 추가 - 레코드 중복 저장
  • 부분 테이블 추가 - 접근 시도가 많은 자료만 모아두기
  • 진행 테이블 추가 - A에 접근하기위해 다수의 테이블을 거칠 경우 간소화

'정보처리기사' 카테고리의 다른 글

정보처리기사(실기) - 데이터 저장소  (0) 2024.04.07
정보처리기사 - 4과목  (0) 2024.02.25
정보처리기사 - 3과목  (0) 2024.02.25
정보처리기사 - 1과목  (0) 2024.02.23
정보처리기사 - 5과목  (0) 2024.02.22