정보처리기사 필기 2023년 1,2,3회
정보처리기사 필기 2024년 1,2,3회
기출 문제 풀이 후 자주 출제되는 개념과 오답을 정리한 글 입니다.
2과목 - 소프트웨어 개발
알고리즘과 자료구조
탐색 및 정렬 알고리즘
- 해싱(Hashing) 탐색 → 키를 주소에 매핑하여 탐색 속도 향상
- 트리 차수 → 노드에서 자식으로 간 개수 중 가장 많은 차수가 트리의 차수
- 선형 자료구조 → 스택, 큐, 데크, 리스트
- 비선형 자료구조 → 트리, 그래프
- 정렬 알고리즘 비교
- 선택 정렬 (Selection Sort) → 작은 값을 찾아 첫 번째 원소와 교환
- 퀵 정렬 (Quick Sort) ⭐ → 피봇을 기준으로 분할하여 정렬 (O(NlogN))
- 합병 정렬 (Merge Sort) → O(NlogN), 안정 정렬
- 힙 정렬 (Heap Sort) → O(NlogN), 불안정 정렬
- 버블 정렬 (Bubble Sort) → 인접한 요소를 비교하여 정렬 (O(N²), 비효율적)
소프트웨어 개발 방법론 및 프로세스
소프트웨어 생명주기 모델
- V-모델 → 요구사항 → 분석 → 설계 → 구현 후 테스트
- 폭포수 모델 → 단계별 순차적 진행 (이전 단계로 회귀 어려움)
- 애자일(Agile) 모델 → 반복적 개발, 고객 피드백 반영
소프트웨어 품질 및 유지보수
소프트웨어 품질 관리
- ISO/IEC 25010 품질 특성
- 기능 적합성, 신뢰성, 사용성, 효율성, 유지보수성, 이식성
- 파레토 법칙 ⭐ → 오류 80%가 전체 코드의 20%에서 발생
- 브룩스 법칙 → 프로젝트에 사람을 추가할수록 기간이 증가
소프트웨어 유지보수
- 역공학 (Reverse Engineering) → 기존 시스템을 분석하여 재구성
- 소프트웨어 재구성 → 기능 변화 없이 코드 및 구조 개선
소프트웨어 테스트 기법
테스트 기법 및 검증
- 블랙 박스 테스트 → 원인-결과 그래프 기반 테스트
- 화이트 박스 테스트 → Nassi-Shneiderman 도표 사용
- 정형 기술 검토 (FTR) ⭐ → 논쟁 제한, 참가자 제한, 문제 영역 명확히 표현
- 테스트 오라클 → 테스트 결과의 올바름 판단
- 테스트 케이스 → 개별 테스트 명세서
- 테스트 시나리오 → 테스트 케이스의 실행 순서
테스트 커버리지
- 구문, 결정, 조건, 조건/결정 커버리지
테스트 종류
- 단위 테스트 → 모듈 단위의 테스트 (1개만 테스트)
- 통합 테스트
- 하향식 통합 테스트 → "임시 모듈(Stub)" 사용
- 상향식 통합 테스트 → "임시 모듈(Driver)" 사용
- 인수 테스트 (Acceptance Test) ⭐
- 사용자 요구사항 충족 여부 확인
- 알파 테스트(개발자 앞), 베타 테스트(사용자 환경)
형상 관리 및 버전 관리
형상 관리
- 체크아웃(Checkout) → 파일을 수정할 때 가져오기
- 체크인(Check-in) ⭐ → 수정 완료 후 새로운 버전으로 갱신
데이터 구조 및 저장소 설계
자료구조
- 스택(Stack) 응용
- 인터럽트 처리, 서브루틴 호출 등에 사용
- 후입선출 (LIFO)
- 큐(Queue)
- 선입선출 (FIFO)
- 데크(Deque)
- 양쪽 끝 삽입 및 삭제 가능
트리 및 그래프
- 이진 트리 → 연습 필요
- 이진 검색(Binary Search)
- 방향 그래프의 최대 간선 수 → n(n-1)
- 무방향 그래프의 최대 간선 수 → n(n-1)/2
데이터 저장
- 해싱 함수 종류
- 제산법, 제곱법, 숫자 분석법(계수 분석법), 무작위법
- 개방 주소법 X
소프트웨어 보안 및 저작권 보호
소프트웨어 보안 기법
- 디지털 저작권 관리(DRM) 기술 요소
- ⭐ 정책 관리, 저작권 표현, 식별 기술
- 복호화 기술 X
보안 및 위험 관리
- 위험 관리 절차
- ① 위험 식별 → ② 위험 분석 및 평가 → ③ 위험 관리 계획 → ④ 위험 감시 및 조치