[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 |