2023.06.04 - [정보 처리 기사] - [정보처리기사] 1장 정리
<자료구조>
자료구조의 분류
1. 선형 구조
-배열
-연속리스트(Contiguous List)
-연결리스트(Linked List)
-스택
-큐
-테크
2. 비선형 구조
-트리
-그래프
트리(Tree)
트리의 운행법
-Preoreder(전위): 중앙->왼쪽->오른쪽
-Inorder(중위): 왼쪽->중앙->오른쪽
-Postorder(후위): 왼쪽->오른쪽->중앙
수식의 표기법
-Prefix(전위): 연산자->왼쪽->오른쪽
-Infix(중위): 왼쪽->연산자->오른쪽
-Postfix(후위): 왼쪽->오른쪽->연산자
<정렬>
-삽입 정렬(Insertion sort)
-쉘 정렬
-선택 정렬(selection sort)
-버블 정렬
-퀵 정렬
-힙 정렬
-2-way 합병 정렬(Merge sort)
-기수 정렬(Radix sort=Bucket sort)
<데이터베이스의 개요>
데이터베이스 정의
-통합된 데이터(Intergrated data)
-저장된 데이터(stored)
-운영 데이터(Operational)
-공용 데이터(Shared)
DBMS 필수기능 3가지
-정의 기능
-조작 기능
-제어 기능(무보권병)
스키마
-외부스키마
-개념스키마
-내부스키마
<데이터 입출력>
SQL
-데이터 정의어(DDL)
-데이터 조작어(DML)
-데이터 제어어(DCL)
데이터 접속(Data Mapping)
-SQL Mapping
-ORM(Objcet-Relational Mapping)
TCL(Transaction Control Language)
-Commit
-Rollback
-Savepoint
<절차형 SQL>
절차형 sql 종류
-프로시저(Procedure)
-트리거(Trigger)
-사용자 정의 함수
해싱함수
-제산법(Division)
-제곱법(MD-Square)
-폴딩법(Folding)
-기수 변환법(Radix)
-대수적 코딩법(Algebraic Coding)
-계수 분석법(숫자 분석법)
-무작위법(Random)
제어 검색(Control Search)
-이분검색(이진 검색)
-피보나치 검색
<단위 모듈 구현>
IPC(Inter-Process Communication) 대표 메소드 5가지
-Shared Memory
-Socket
-Semaphores
-Pipes&named Pipes
-Message Queueing
단위 기능의 종류에 따른 구현되는 모듈
-디바이스 드라이버 모듈
-네트워크 모듈
-파일 모듈
-메모리 모듈
-프로세스 모듈
<단위 모듈 테스트>
테스트 케이스 구성요소
-테스트 항목(Test Item)
-입력 명세(Input Specification)
-출력 명세(Output Specification)
-환경 설정(Environmental Needs)
테스트 프로세스 5단계
계획 및 제어 단계->분석 및 설계 단계->구현 및 실현 단계->평가 단계->완료 단계
<개발 지원 도구(통합 개발 도구, 빌드 도구, 그룹웨어)>
통합 개발 환경(IDE) 프로그램
-이클립스
-비주얼 스튜디오
-엑스 코드
-안드로이드 스튜디오
-IDEA
빌드 도구
-ANT
-Maven
-Gradle
https://choseongho93.tistory.com/296
소프트웨어 패키징
패키징 작업 순서
기능 식별->모듈화->빌드 진행->사용자 환경 분석->패키징 및 적용 시험->패키징 변경 개선->배포
디지털 저작권 관리(DRM)
디지털 저작권 관리의 흐름 및 구성 요소
-클리어링 하우스(권한, 라이선스, 키)
-콘텐츠 제공자(패키저)
-콘텐츠 분배자
-콘텐츠 소비자(DRM 컨트롤러)
소프트웨어 설치 매뉴얼 작성->소프트웨어 사용자 매뉴얼 작성
<소프트웨어 버전 등록>
형상 관리 기능
-형상 식별
-버전 제어
-형상 통제(변경 관리)
-형상 감사
-형상 기록(상태 보고)
소프트웨어 버전 등록 과정
가져오기(Import)->인축(Check-out)->예치(Commit)->동기화(Update)->차이(Diff)
소프트웨어 버전 관리 도구
-공유 폴더 방식
-클라이언트/서버 방식
-분산 저장소 방식
버전관리 도구 종류
-CVS
-Subversion(SVN):클/서
-Git(깃):분산 저장소
SVN 주요 명령어
add, commit, update, checkout, lock/unlock, import, export, info, diff, merge
Git 주요 명령어
add, commit, branch, checkout, merge, init, remote add, push, fetch, clone, fork
빌드 자동화 도구(Ant, Make, Maven, Gradle, Jenkins)
<애플리케이션 테스트>
-확인(Validation)
-검증(Verification)
애플리케이션 테스트의 기본원리
-특정 모듈 집중
-파레토 법칙
-살충제 패러독스
-정황에 의존
-오류-부재의 궤변(Absence of Errors Fallacy)
<애플리케이션 테스트의 분류>
프로그램 실행 여부에 따른 테스트
-정적 테스트(워크스루, 인스팩션, 코드 검사)
-동적 테스트(화이트 박스 테스트, 블랙 박스 테스트)
테스트 기반에 따른 테스트
-명세 기반 테스트(블박)
-구조 기반 테스트(화박)
-경험 기반 테스트
시각에 따른 테스트
-검증 테스트
-확인 테스트
목적에 따른 테스트 7가지
-회복 테스트
-안전 테스트
-강도 테스트
-성능 테스트
-구조 테스트
-회귀 테스트
-병행 테스트
테스트 기법에 따른 애플리케이션 테스트
1. 화이트 박스 테스트
-기초 경로 검사(Base Path Testing)
-제어 구조 검사(Control Structure Testing) (조건 검사, 루프 검사, 데이터 흐름 검사)
2. 블랙 박스 테스트
-동치 분할 검사(Equivalence Testing)
-경계값 분석(Boundary Value Analysis)
-원인-효과 그래프 검사(Cause-Effect Graphing Testing)
-오류 예측 검사(Error Guessing)
-비교 검사(Comparison Testing)
개발 단계에 따른 애플리케이션 테스트
소프트웨어 생명 주기 v 모델
소프트웨어 개발 단계: 요구사항->분석->설계->구현
테스트 단계: 단위 테스트->통합 테스트->시스템 테스트->인수 테스트
단위 테스트로 발견 가능한 오류: 알고리즘 오류, 탈출구 없는 반복문, 틀린 계산 수식
인수 테스트 종류 6가지
-사용자 인수 테스트
-운영상의 인수 테스트
-계약 인수 테스트
-규정 인수 테스트
-알파 테스트
-베타 테스트
<통합 테스트>
통합테스트 방법
1. 비점진적 통합 방식
2. 점진적 통합 방식(하스상드)
-하향식 통합 테스트(넓이 우선 통합법, 깊이 우선 통합법)
-상향식 통합 테스트
3. 혼합식 통합 테스트
상향식 통합 방법
하위 모듈들을 클러스터로 결합-> 드라이버 작성-> 통합된 클러스터 단위로 테스트-> 클러스터를 상위로 결합하고 드라이버는 실제 모듈로 대체
테스트 케이스/ 테스트 시나리오/ 테스트 오라클
테스트 오라클 종류 4가지
-참 오라클
-샘플링 오라클
-추정 오라클
-일관성 검사 오라클
테스트 자동화 도구
테스트 자동화 도구 유형 6가지
-정적 분석 도구
-테스트 케이스 생성 도구(자료 흐름도, 기능 테스트, 입력 도메인 분석, 랜덤 테스트)
-테스트 실행 도구
-성능 테스트 도구
-테스트 통제 도구(형상 관리 도구, 결함 추적/관리 도구)
-테스트 하네스 도구
테스트 수행 단계별 테스트 자동화 도구
(테스트 단계-자동화)
테스트 계획-요구사항 관리
테스트 분석/설계-테스트 케이스 생성
테스트 수행-테스트 자동화, 정적 분석, 동적 분석, 성능 테스트, 모니터링
테스트 관리-커버리지 분석, 형상 관리, 결함 추적/관리
<결함(Fault) 관리>
결함 관리 측정 지표
-결함 분포
-결함 추세
-결함 에이징
결함 관리 순서
에러 발견->에러 등록->에러 분석->결함 확정->결함 할당->결함 조치
결함 관리 도구
-Mantis
-Trac
-Redmine
-Bugzilla
애플리케이션 성능 분석
애플리케이션 성능 측정 지표 4가지
-처리량(Throughput)
-응답 시간(Response Time)
-경과 시간(Turn Around Time)
-자원 사용률*Resource Usage)
성능 테스트 도구
-JMeter
-LoadUI
-OpenSTA
복잡도
복잡도 측정 방법
-LOC
-순환 복잡도
-시간 북잡도
애플리케이션 성능 개선
-소스 코드 최적화
-소스 코드 품질 분석 도구 사용
나쁜 코드 종류
-스파게티 코드
-외계인 코드
클린 코드 작성 원칙 5가지
-단순성
-가독성
-의존성 배제
-중복성 최소화
-추상화
소스 코드 품질 분석 도구 종류
-정적 분석 도구(pmd, cppcheck, SonarQube, checkstyle, ccm, cobertura)
-동적 분석 도구(Avalanche, valgrind) val 들어가있음
<모듈 간 공통 기능 및 데이터 인터페이스 확인>
인터페이스 설계서
1. 일반적인 인터페이스 설계서
-시스템 인터페이스 설계서
-상세 기능별 인터페이스 명세서
2. 정적 동적 모형을 통한 인터페이스 설계서
<모듈 연계를 위한 인터페이스 기능 식별>
모듈 연계 방법
-EAI(Enterprise Application Interface)
-ESB(Enterprise Service Bus)
EAI 구축 유형
-point to point
-hub&spoke
-message bus
-hybrid
모듈 간 인터페이스 데이터 표준 확인
모듈 간 인터페이스 데이터 표준 확인 순서
1. 데이터 인터페이스를 통해 인터페이스 데이터 표준 확인
2. 인터페이스 기능을 통해 인터페이스 표준 확인
3. 1,2를 검토하여 인터페이스 데이터 표준 확인
인터페이스 기능 구현 정의
모듈 세부 설계서
-컴포넌트 명세서
-인터페이스 명세서
인터페이스 구현
인터페이스를 구현하는 방법
-데이터 통신을 이용한 인터페이스 구현(JSON, XML)
-인터페이스 엔티티를 이용한 인터페이스 구현(인터페이스 테이블)
<인터페이스 예외 처리>
데이터 통신을 이용한 인터페이스 예외 처리
1. 인터페이스 객체 송신 실패 시 예외 사항
-네트워크 불안정
-송신 데이터 크기, 데이터 정합성 체크 오류 발생
-송신 데이터 생성 시 프로세스의 논리적 결함
2. 인터페이스 객체 수신 실패 시 예외 사항
-네트워크 및 서버 불안정
-특수문자 등으로 파싱 시 오류 발생
-수신 데이터 처리 시 프로그램의 논리적 결함
인터페이스 엔티티를 이용한 인터페이스 예외 처리
1. 송신 인터페이스 테이블을 이용한 인터페이스 기능 실패 시
-인터페이스 데이터 생성 시 선택 SQL, 프로그램 오류, 데이터 객체 생성 오류
-테이블에 입력 시 입력 SQL 오류, 데이터 정합성 오류
-데이터 전송 시 DB connection 오류, 데이터 전송 주체의 논리적 오류
2. 수신 인터페이스 테이블을 이용한 인터페이스 기능 실패 시
-인터페이스 데이터 읽기 시 데이터 선택 시 오류
-데이터 트랜잭션 시 프로그램의 논리상 오류
-처리 결과 응답 시 DB connection 오류
<인터페이스 보안 >
인터페이스 보안 기능 적용
-네트워크 영역
-애플리케이션 영역
-데이터베이스 영역
데이터 무결성 검사 도구
-Tripwire
-AIDE
-Samhain
-Claymore
-Slipwire
-Fcheck
<연계 테스트>
연계 테스트 순서
연계 테스트 케이스 작성-> 연계 테스트 환경 구축-> 연계 테스트 수행-> 연계 테스트 수행 결과 검증
<인터페이스 구현 검증>
인터페이스 구현 검증 도구(통합 테스트 자동화 도구)
-Xunit: 다양한 언어 지원
-STAF: 다양한 환경 지원
-FitNesse: 웹 기반
-NTAF: STAF 와 Fitnesse 통합
-Selenium: 개발 언어 지원 웹 애플리케이션
-watir:Ruby 사용
인터페이스 구현 감시 도구
-스카우터
-제니퍼
인터페이스 오류 확인 및 처리 보고서 작성
인터페이스 오류 발생 즉시 확인
-오류 메시지 알람 표시
-오류 SMS 발송
-오류 내역 이메일 발송
주기적인 인터페이스 오류 발생 확인
-인터페이스 오류 로그 확인
-인터페이스 오류 테이블 확인
-인터페이스 감시 도구(APM) 사용
'정보 처리 기사' 카테고리의 다른 글
[정보처리기사] 1장 정리 (0) | 2023.06.04 |
---|