Certificate
Engineer-Information-Processing
이론 준비 체크리스트
- 필수 - 모르면 시험 들어가면 안됨
- 테스트 종류와 방식 (블랙/화이트)
- 라우팅 프로토콜
- 데이터베이스 이론 중 약술형 나올만한 것 (로킹, 상호배제 조건 등)
- 결합도/응집도
- 테스트 스텁, 드라이버
- 나머지
운영체제
-
메모리 관리
-
배치 전략: 프로세스를 통으로 메모리에 넣음
- 최초 적합(First-fit): 가장 앞부분부터 탐색하다가 처음 만난 곳에 넣음
- 최적 적합(Best-fit): 최대한 낭비 없이 넣음 (남는 공간이 가장 적은 공간에 할당)
- 최악 적합(Worst-fit): 제일 낭비되는 곳에 넣음 (가장 큰 공간에 할당)
-
가상 메모리 관리 (페이징 기법): 프로세스를 페이지로 나누어 가상 메모리로 올리고 교체
- 페이징 교체 알고리즘
- OPT(Optimal): 향후에 가장 안쓰는 것을 빼기(미래를 알고있다 가정)
- FIFO(First-in First-out): 가장 먼저 온 것을 먼저 빼기
- LRU(Least Recently Used): 사용한지 가장 오래된 것 빼기
- LFU(Least Frequently Used): 참조 횟수가 가장 적은 페이지 교체 (참조횟수 같을 때는 가장 오래된것 빼는걸 기본으로 하자)
- MFU(Most Frequently Used): 참조 횟수가 가장 많은 페이지 교체 (참조횟수 같을 때는 가장 오래된것 빼는걸 기본으로 하자)
- NUR(Not Used Recently): 최근에 사용되지 않은 페이지 교체
-
CPU 스케줄링 알고리즘: 여러 프로세스를 CPU가 수행할 수 있게 연산 시간을 분배하는 것
-
선점형: 프로세스가 CPU 사용 중일 때, 더 높은 우선순위의 프로세스가 CPU 연산 빼앗아갈 수 있음
- 라운드로빈(Round-Robin): 모든 프로세스에 공평하게 시간 할당, 할당시간 실행 후 가장 뒤로 세움
- SRT(Shortest Remaining Time First): 남은 시간이 가장 적은 프로세스를 우선 순위로 연산, 실행 중에 남은 시간이 더 적은 프로세스가 들어오면 그 프로세스를 먼저 해결
-
비선점형: 한 프로세스가 CPU를 차지하면, 끝날 때까지 다른 프로세스가 점유 불가
- FCFS(First come, First Served): 먼저 온 프로세스 순으로 처리 (선착순)
- SJF(Shortest Job First): 실행 시간이 가장 짧은 프로세스를 먼저 처리
- 우선순위(Priority): 프로세스가 가지고 있는 우선순위 별로 먼저 처리
- 운영체제 목적
- 처리능력(Throughput) 향상
- 반환시간 단축
- 사용 가능도 향상
- 신뢰도 향상
- 페이지 VS 프레임
- 페이지: 프로세스를 자른 것
- 프레임: 물리 메모리를 자른 것
- 페이지 폴트(page fault): 프로그램이 참조하려는 페이지가 현재 메모리에 없는 상황
- 스레싱(Thrashing): 프로세스 처리 시간보다 페이지 교체 시간이 더 많아지는 현상
- e.g. 프로세스 처리시간 1초, 페이지 교체 시간 2초
- 프로세스 상태 종류: 생성, 준비, 실행, 대기, 완료, 끝
- 교착상태: 여러 개의 프로세스가 특정 자원 할당을 계속 대기하면서 서로 소비 못하는 상황
- 조건: 상호배제, 점유와 대기, 비선점, 환형대기
- 해결방법: 예방, 회피, 발견, 복구
- 뮤텍스: 하나의 프로세스가 공유자원에 접근하는 동안, 다른 프로세스가 해당 자원에 접근 못하게 막는 도구 (락을 걸어줌)
- 세마포어: 운영체제에서 여러 프로세스가 공유 자원을 사용할 때 문제를 해결하는 동기화 도구 (보통 정수값으로 관리)
데이터 입출력 구현
- 데이터 모델링 순서
- 데이터베이스 계획 -> 요구사항 분석
- -> 개념적 데이터 모델링: 개체타입, 속성 등 명시해서 현실 세계 반영
- -> 논리적 데이터 모델링: 개념적 구조를 정규화하고 규칙과 관계 완성 (엔터티, 속성, 관계 구조적 정의)
- -> 물리적 데이터 모델링: 레코드 양식 순서, 경로 인덱싱, 클러스터링, 해싱
- 이상(Anomaly): DB 조작 시 비정상적으로 동작하는 현상 (삽입 이상, 갱신 이상, 삭제 이상)
-
정규화
- 제1 정규형 (1NF): 모든 속성이 원자값
- 제2 정규형 (2NF): 복합키일 때, 부분 함수 종속성 없어야 함
- 제3 정규형 (3NF): 이행 함수 종속성 없어야 함
- 보이스-코드 정규형 (BCNF): 모든 결정자가 후보키 되도록 해, 모든 함수적 종속성이 후보키에 의해 결정
- 제4 정규형 (4NF): 다치 종속성 없어야 함 (다치종속: 1개 속성에 여러 속성이 매핑)
- 제5 정규형 (5NF): 조인 종속성이 없어야 함 (조인종속: 여러 테이블 조합했을 때, 현재 결과 구성 가능)
- 샤딩: 대규모 데이터베이스 시스템에서 여러 개 독립적인 부분으로 분할하여 성능을 향상시키는 기술
- 인덱스: 추가적인 저장 공간을 활용해, 테이블의 검색 속도를 향상시키기 위한 자료구조
- 시스템 카탈로그: 데이터베이스에 저장되어 있는 데이터 개체들에 대한 정보가 수록되어 있는 시스템
- 분산 데이터베이스의 목표: 위치 투명성, 중복 투명성, 병행 투명성, 장애 투명성
- 데이터베이스 회복기법: 즉시갱신, 지연갱신, 검사시점, 그림자 페이징, 미디어 회복기법
서버 프로그램/인터페이스 구현
- 서버의 종류: 웹 서버, 웹 애플리케이션 서버, 데이터베이스 서버, 파일 서버
- 웹 서버: 정적 컨텐츠 처리, HTTP 요청 및 응답 처리
- 웹 애플리케이션 서버(WAS): 동적 컨텐츠, DB 연결 처리
-
응집도와 결합도 (매우 중요)
- 응집도 (강할수록 좋음) - 모듈 내부 코드들 간
- 결합도 (강할수록 안좋음) - 모듈 간
- 공통 모듈 구현 절차
- DTO/VO -> SQL -> DAO -> Service -> Controller -> View
- 매우 큰 소프트웨어의 분석
- FAN-IN: 특정 모듈이 호출하는 모듈 (내가 부르는 것, 기준 모듈의 하위 모듈)
- FAN-OUT: 특정 모듈을 호출하는 모듈 (나를 부르는 것, 기준 모듈의 상위 모듈)
- 미들웨어: 서로 다른 소프트웨어 사이를 연결하는 중간다리 소프트웨어
- e.g. JDBC, RabbitMQ, Apache Tomcat
- 인터페이스 설계: 데이터 주고 받을 때 노드 구성 방법
- EAI(Enterprise Application Integration) - 큰 규모 회사
- Point-to-Point
- Hub-and-Spoke
- Message Bus
- Hybrid
- ESB(Enterprise Service Bus)
- 서비스 지향 아키텍처(SOA)를 지원하는 기업 애플리케이션 통합을 위한 아키텍처 패턴
- EAI 보완
화면설계/애플리케이션 테스트
- UI 유형: CLI, GUI, NUI(Natural, 말이나 행동), OUI (Organic, 모든 사물)
- UI 설계원칙: 직관성, 유효성, 학습성, 유연성
- UML 다이어그램 종류
- 구조적 다이어그램 (대표: 클래스 다이어그램, 객체 다이어그램)
- 행위적 다이어그램 (대표: 유스케이스 다이어그램, 순차 다이어그램, 상태 다이어그램)
- 애플리케이션 테스트
- 정적 테스트
-
동적 테스트 (중요)
-
화이트 박스 테스트: 코드를 오픈한 상태에서 논리적인 모든 경로 테스트
- 기초 경로 검사(Base Path Test): 모든 독립적인 실행 경로를 테스트하는 방법
- 제어 구조 검사: 조건 검사, 루프 검사, 데이터 흐름 검사
-
블랙 박스 테스트: 사용자 요구사항 명세서 보면서 동작 원리는 모르고 기능 작동해보며 테스트
- 동등 분할 검사 (Equivalence Partitioning)
- 입력 데이터를 유사한 특성을 가진 그룹으로 나누고, 각 그룹에서 대표값 선택해 테스트
- 경계값 분석 (Boundary Value Analysis)
- 결정 테이블 테스트 (Decision Table Testing)
- 도표, 테이블을 만들어 입력에 따라 상태 변화 체크
- 상태 전이 테스트 (State Transition Testing)
- 유스 케이스 테스트 (Use Case Testing)
- 사용자의 특정 행위 (유스 케이스) 따른 시스템 동작 테스트
- 오류 추정 (Error Guessing)
- 테스터의 경험과 직관을 바탕으로 오류 추정 및 테스트
- 테스트 평가 지표
- 구문 커버리지: 프로그램의 모든 구문이 한 번씩 실행될 수 있게 테스트 데이터 선정
- 결정 커버리지: 전체 결정문(조건문)을 테스트 하는 방법
- 조건 커버리지: 조건문 내에 참, 거짓을 적어도 한 번씩 결과가 나오도록 수행
- 조건/결정 커버리지: 전체 조건식과 개별 조건식이 참/거짓 한 번씩 나오게 (모든 결과 테스트)
- 변경조건/결정 커버리지: 각 개별 조건식이 독립적으로 영향주도록 테스트
- 다중조건/결정 커버리지: 모든 개별 조건식 모든 조합 다 커버리지
- 애플리케이션 테스트 기본원리
- 파레토 법칙: 애플리케이션의 20% 코드에서 전체 80% 결함이 발견됨
- 살충제 패러독스: 동일한 테스트 케이스 반복은 더이상 다른 결함 발견 못함
- 오류-부재의 궤변: 오류와 결함이 없더라도 요구사항을 만족하지 않으면 소프트웨어 품질은 낮은 것
- 완벽한 테스트 불가능: 테스트는 결함을 완전히 없애는 것이 아니라, 결함을 발견하는데 의의가 있음
- 테스트 하네스: 테스트 환경의 일부분으로 테스트를 지원하기 위해 생성된 코드나 데이터
-
테스트 드라이버
- 테스트 대상 모듈을 호출하는 더미 프로그램 (상향식 테스트 시, 임시로 만든 상위 모듈)
-
테스트 스텁
- 테스트 대상 모듈이 호출하는 프로그램 (하향식 테스트 시, 임시로 만든 하위 모듈)
관계대수
- 관계대수는 수학적 이론이고 이것을 구현해낸 것이 현재 컴퓨터과학의 데이터베이스 (RDBMS, SQL)
- 주로 나올 SQL
- SELECT, UPDATE, DELETE, INSERT INTO
- CREATE, ALTER, DROP
- CREATE INDEX, DROP INDEX
- 관계 대수 기호
- 프로젝션은 중복값을 제거하고 릴레이션 만듦
- 합집합도 중복값 제거하고 릴레이션 만듦
- 합집합: SQL의 UNION
- 교집합: SQL의 INTERSECT
- 제약조건 키워드
- PRIMARY KEY, FOREIGN KEY(+REFERENCES)
- UNIQUE, NOT NULL, DEFAULT, CHECK, AUTOINCREMENT
- ON DELETE CASCADE, ON UPDATE CASCADE
- DCL
- GRANT 권한 ON 테이블 TO 유저
- REVOKE 권한 ON 테이블 FROM 유저
- 조인
- 세타조인
- 조인에 참여하는 두 릴레이션의 속성 값을 비교하고, 조건을 만족하는 튜플만 반환
- 조건의 종류: =, ≠, ≤, ≥, <, >
- 동등조인
- 세타조인에서 = (는) 연산자를 사용한 조인
- 가장 일반적으로 통용되는 “조인연산”
- 자연조인
- 동등 조인에서 조인에 참여한 속성이 두 번 나오지 않도록, 두 번째 속성을 제거한 결과를 반환
- 즉, 중복된 속성을 제거
- 세미조인
- 자연조인을 한 후에, 두 릴레이션 중에 한쪽 릴레이션의 결과만 반환
- 왼쪽과 오른쪽 중에 제거할 속성 쪽을 열어두는 형식으로 기호 작성
프로그래밍 코드 영역 외울 것
- 아스키 코드
- 완전수 (1~100 사이)
- 문자열 상수풀
- 리터럴을 사용했을 때는 상수풀에 넣고 재사용 (같은 리터럴은 같은 참조객체를 쓴다)
- new String()은 참조값이 다른 아얘 새로운 객체 생성, 힙 영역에 저장
- Integer 캐싱 (Double 같은 자료형은 캐싱이 없음)
- 자바는 -128~127 범위안에 정수는 캐싱해 재사용 (참조값 동일) e.g. Integer num = 100
- 만일, int와 Integer를 == 비교하면, 언박싱으로 인해 true 나옴
- new Integer(100)은 역시 참조값이 아얘 다른 새로운 객체 생성, 힙 영역 저장
- (Boolean 등등…도 new 하면 참조값 아얘 다른 새로운 객체)
- 비트 연산자 종류
-
&
(and), |
(or), ^
(xor), ~
(not)
- 비트연산 XOR
- XOR은 비트가 서로 다르면 1, 같으면 0
- 같은 XOR 연산을 3번하면 두 변수 값이 SWAP됨
- e.g. a = a ^ b; b = a ^ b; a = a ^ b
- 비트연산 ~
- 양수에 not을 취하는 경우 결과값: -(해당 양수 + 1)
Reference
(2024) 일주일만에 합격하는 정보처리기사 실기