[정보처리기사] 정보처리기사 필기 오답노트 2
정보처리기사 필기 대비 암기를 위한 오답노트 (2022.03.05 CBT)
1과목 - 소프트웨어 설계
2과목 - 소프트웨어 개발
정형 기술 검토 (FTR)
정형 기술 검토의 지침
- 제품 검토의 집중성
- 오류 검출에 초점을 두고 해결책을 나중으로 미룸
- 사전 준비성
- 검토를 위한 자료를 사전에 배포하여 검토하도록 함
- 의제의 제한성
- 의견을 제한하되, 충분히 받아들임
- 안건 고수성
- 안건을 세우면 고수함
- 논쟁 반박의 제한성
- 논쟁과 반박을 제한함
- 문제 공개성
- 문제 영역을 공개함
- 참가 인원의 제한성
- 참가자의 수를 제한함
- 문서성
- 발견된 오류는 문서화함
소프트웨어 재사용
소프트웨어 재사용을 통한 장점
- 개발 시간과 비용 단축
- 소프트웨어 품질 및 생산성 향상
- 프로젝트 실패 위험 감소
- 시스템 구축 방법에 대한 지식 공유
소프트웨어 재사용을 통한 단점
- 재사용할 소프트웨어 선정 필요
- 시스템에 공통적으로 사용되는 요소 발견 필요
- 프로그램의 표준화 부족
- 새로운 개발 방법론 도입이 어려움
- 재사용을 위한 관리 및 지원 부족
- 기존 소프트웨어에 재사용 소프트웨어를 추가하기 어려움
정렬 시간복잡도
빠른 순서
$O(1)$ > $O(logN)$ > $O(N)$ > $O(NlogN)$ > $O(N^2)$ > $O(2^N)$ > $O(N!)$
$O(N^2)$ = $\frac{N(N-1)}{2}$
시간복잡도 정리
종류 | 최악 | 평균 | 최선 |
---|---|---|---|
버블 정렬 | $O(N^2)$ | $O(N^2)$ | $O(N^2)$ |
선택 정렬 | $O(N^2)$ | $O(N^2)$ | $O(N^2)$ |
퀵 정렬 | $O(N^2)$ | $O(NlogN)$ | $O(NlogN)$ |
힙 정렬 | $O(NlogN)$ | $O(NlogN)$ | $O(NlogN)$ |
병합 정렬 | $O(NlogN)$ | $O(NlogN)$ | $O(NlogN)$ |
삽입 정렬 | $O(N^2)$ | $O(N^2)$ | $O(N)$ |
쉘 정렬 | $O(N^2)$ | $O(N^{1.3, 1.5})$ | $O(N)$ |
기수 정렬 | $O(N)$ | $O(N)$ | $O(N)$ |
카운팅 정렬 | $O(N)$ | $O(N)$ | $O(N)$ |
ISO/IEC 25000
- SW 품질 평가 통합 모델
- SQuaRE로도 불림
- ISO/IEC 9126, ISO/IEC 12119, ISO/IEC 14598의 3개 표준을 통합한 모델
- 2500n
- 개요 및 품질 관리
- 2501n
- 품질 모델
- 2502n
- 품질 측정
- 2503n
- 품질 요구
- 2504n
- 품질 평가
- 2505n
- 확장 분야
3과목 - 데이터베이스 구축
데이터베이스 설계
개념적 설계
- 산출물로 E-R 다이어그램이 만들어짐
- DBMS에 독립적인 개념 스키마를 설계 요구분석 단계에서 나온 결과(명세)를 E-R 다이어그램과 같은 DBMS에 독립적이고 고차원적인 표현 기법을 기술하는 것
- 논리적 설계 단계의 앞 단계에서 수행
- 트랜잭션 모델링
논리적 설계
- DBMS에 따라 서로 다른 논리적 스키마를 정의
- 현실 세계를 표현하기 위한 데이터베이스의 논리적 구조, 즉 정규화 과정을 이용한 릴레이션의 속성을 결정하는 단계
- 논리적 설계 단계에서 수행되는 작업
- 논리적 데이터 모델로 변환
- 트랜잭션 인터페이스 설계
- 스키마의 평가 및 정제
물리적 설계
- 목표 DBMS에 맞는 물리적 구조 설계
- 기본적인 데이터 단위는 저장 레코드
- 데이터베이스 시스템의 성능에 중대한 영향을 미침
- 여러 가지 타입의 저장 레코드 집합이라는 면에서 단순한 파일과 다름
- 데이터베이스에 포함될 여러 파일 타입에 대한 저장 레코드의 양식, 순서, 접근 경로를 표현한 것
- 물리적 설계 단계에서 수행되는 작업
- 저장 레코드 양식 설계
- 접근 경로 설계
- 레코드 집중의 분석 및 설계
- 파일의 저장 구조 및 탐색 기법
- 물리적 설계 단계의 고려사항
- 어떤 인덱스를 만들 것인지에 대한 고려
- 성능 향상을 위한 개념 스키마의 변경 여부 검토
- 레코드의 크기
- 파일과 구조 저장을 위한 최소한의 공간
- 빈번한 질의와 트랜잭션들의 수행 속도를 높이기 위한 고려사항
- 응답 시간
- 저장 공간의 효율화
- 트랜잭션 처리량
정규화
- 테이블 간에 중복된 데이터를 허용하지 않게 만드는 것이 목표
- 중복된 데이터를 허용하지 않음으로서 무결성, 일관성, 유연성을 향상시킬 수 있으며, DB의 저장 용량도 줄일 수 있음
제1정규화 (1NF)
- 원자값
- 테이블의 컬럼이 원자값(하나의 값)을 갖도록 테이블을 분해
제2정규화 (2NF)
- 부분 함수 종속 제거
- 제1정규화를 만족하면서 기본키에 대한 부분 함수 종속 제거
제3정규화 (3NF)
- 이행 함수 종속 제거
- 제2정규화를 만족하면서 비 기본키에 대한 이행 함수 종속 제거
BCNF 정규화
- 결정자 함수 종속
- 제3정규화를 만족하면서 모든 결정자 함수 종속
제4정규화 (4NF)
- 다치 종속 제거
- BCNF 정규화를 만족하면서 다치 종속 제거
제5정규화 (5NF)
- 조인 종속성 제거
- 제4정규화를 만족하면서 조인 종속성 제거
SQL의 BETWEEN 연산
1
SELECT * FROM "성적" WHERE ("점수" BETWEEN 90 AND 95) AND "학과" = "컴퓨터공학과"
- 해당 SQL문에서
"점수" BETWEEN 90 AND 95
→ 점수 >= 90 AND 점수 <= 95- SQL문의 조건은 이상, 이하
트랜잭션
트랜잭션의 연산
- Commit 연산
- 갱신 연산이 완료되었다고 트랜잭션 관리자에게 알려주고 결과를 최종적으로 데이터베이스에 반영하는 연산
- Rollback 연산
- 트랜잭션이 지금까지 실행한 연산의 결과가 취소되고 트랜잭션 수행 이전의 상태로 돌아가는 연산
트랜잭션의 상태
- 활성화 (Active)
- 트랜잭션이 작업을 시작하여 실행 중인 상태
- 실패 (Failed)
- 트랜잭션에 오류가 발생하여 실행이 중단된 상태
- 철회 (Aborted)
- 트랜잭션이 비정상적으로 종료되어 Rollback 연산을 수행한 상태
- 부분 완료 (Partially commited)
- 트랜잭션의 마지막 연산까지 실행하고 Commit 요청이 들어온 직후의 상태
- 최종 결과를 데이터베이스에 아직 반영하지 않은 상태
- 완료 (Commited)
- 트랜잭션이 성공적으로 종료되어 Commit 연산을 실행한 후의 상태
분산 데이터베이스
정의
- 논리적으로 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 컴퓨터 사이트에 분산되어 있는 데이터베이스
분산 데이터베이스의 구성요소
- 분산 처리기
- 자체적으로 처리 능력을 가지며, 지리적으로 분산되어 있는 컴퓨터 시스템
- 분산 데이터베이스
- 지리적으로 분산되어 있는 데이터베이스로, 해당 지역의 특성에 맞게 데이터베이스가 구성됨
- 통신 네트워크
- 분산 처리기를 통신망으로 연결하여 논리적으로 하나의 시스템처럼 작동할 수 있도록 하는 통신 네트워크
분산 데이터베이스의 목표
- 위치 투명성 (Location Transparency)
- 액세스하려는 데이터베이스의 실제 위치를 알 필요 없이 데이터의 논리적인 명칭으로 액세스 가능
- 중복 투명성 (Replication Transparency)
- 동일 데이터가 여러 곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용하고, 시스템은 자동으로 여러 자료에 대한 작업을 수행
- 병행 투명성 (Concurrency Transparency)
- 분산 데이터베이스와 관련된 다수의 트랜잭션들이 동시에 실행되더라도 그 트랜잭선의 결과는 영향을 받지 않는다.
- 장애 투명성 (Failure Transparency)
- 트랜잭션, DBMS, 네트워크, 컴퓨터 장애에도 불구하고 트랜잭션을 정확하게 처리
분산 데이터베이스의 장점
- 지리적 이점
- 지역자치성
- 기능적 이점
- 자료 공유성, 분산제어, 시스템 성능 향상, 중앙 컴퓨터의 장애가 전체 시스템에 영향을 미치지 않음
- 효율성, 융통성, 신뢰성, 가용성, 점진적 시스템 용량 확장 용이
분산 데이터베이스의 단점
- DBMS가 수행할 기능이 복잡함
- 데이터베이스 설계가 어려움
- 개발 비용이 증가하며, 처리 비용 또한 증가
- 잠재적 오류가 증가 (개발이 어려움)
4과목 - 프로그래밍 언어 활용
JAVA의 예외
예외 클래스
ArimeticException
- 어떠한 숫자를 0으로 나누는 경우와 같이 수학적 연산에서 발생되는 예외
NullPointerException
null
값을 갖는(참조할 수 없는) 객체에 접근하여 사용하는 경우에 발생하는 예외
ArrayIndexOutOfBoundsException
- 배열의 인덱스 범위를 초과하여 사용하는 경우에 발생하는 예외
NumberFormatException
- 문자열을
int
형으로 변환할 때 변환할 수 없는 값이 포함된 경우에 발생하는 예외
- 문자열을
ClassCastException
- 잘못된 방법으로 레퍼런스 형변환을 하는 경우에 발생하는 예외
- 이 외에도
IOException
(입출력 관련 예외),FileNotFoundException
(파일이 없는 경우 발생되는 예외),SQLException
(데이터베이스 관련 예외) 등 많은 예외 클래스 존재
문법 오류로 인해 발생하는 것은 예외가 아닌 컴파일 시에 에러가 발생
TCP/IP 계층 구조에서의 프로토콜
- ARP (Address Resolution Protocol)
- 호스트의 IP주소를 호스트와 연결된 네트워크 접속 장치의 물리적 주소(MAC)로 바꾸는 역할을 하는 프로트콜
- ICMP (Internet Control Message Protocol)
- IP와 조합하여 통신 중에 발생하는 오류의 처리와 전송 경로 변경 등을 위한 제어 메시지를 관리하는 역할을 하는 프로토콜
- PPP (Point-to-Point Protocol)
- 점대점 데이터링크를 통해 3계층 프로토콜들을 캡슐화시켜 전송하는 프로토콜
상호 배제 알고리즘
데커의 알고리즘 (Dekker’s algorithm)
- 프로세스가 두개일 때, 상호 배제를 보장하는 최초의 알고리즘
flag
와turn
변수를 사용하여 조정
램퍼드의 베이커리 알고리즘 (Lamport’s bakery algorithm)
- 프로세스 $n$개의 상호 배제 문제를 해결한 알고리즘
- 프로세스에게 고유한 번호를 부여하고, 번호를 기준으로 우선순위를 정하여 우선순위가 높은 프로세스가 먼저 임계 구역에 진입하도록 구현
피터슨의 알고리즘 (Peterson’s algorithm)
- 프로세스가 두개일 때 상호 베제를 보장, 데커의 알고리즘과 유사하지만 상대방에게 진입 기회를 양보한다는 차이가 있고, 보다 더 간단하게 구현됨
세마포어 (Semaphore)
- 공유된 자원의 데이터 혹은 임계 영역 등에 따라서 여러 Process 혹은 Thread가 접근하는 것을 막아줌 (동기화 대상이 하나 이상)
5과목 - 정보시스템 구축관리
네트워크 공격
Switch Jamming
- 스위치의 기능이 방해받아 정상 동작을 하지 못해 스위치가 더비 허브처럼 작동하게 되는 현상
- Switch + Jamming (방해)
FTP(SYN) Flooding
- TCP의 3 Way Handshake 취약점을 이용한 DoS 공격으로 다량의 SYN 패킷을 보내 백로그 큐를 가득 채우는 공격
SYN 패킷 홍수 공격
- 통상적으로 위의 공격법을 TCP SYN Flooding이라고 칭하는 경우가 많음
- FTP 프로토콜을 사용한 서버에 다량의 SYN 패킷을 보내 마비시키는 것을 FTP Flooding이라고 볼 수 있음
DoS(Denial of Service) 공격
- Ping of Death 공격
- 정상 크기보다 큰 ICMP 패킷을 작은 조각(Fragment)으로 쪼개어 공격 대상이 조각화 된 패킷을 처리하게 만드는 공격 방법
- Smurf 공격
- 브로드캐스트(Broadcast)를 활용하여 공격 대상이 네트워크의 임의의 시스템에 패킷을 보내게 만드는 공격
- SYN Flooding
- 존재하지 않는 클라이언트가 서버별로 한정된 접속 가능 공간에 접속한 것처럼 속여 다른 사용자가 서비스를 이용하지 못하게 하는 것
- Land 공격
- 패킷 전송 시, 출발지 IP 주소와 목적지 IP 주소 값을 똑같이 만들어서 공격 대상에게 보내는 공격 방법
리눅스의 파일 권한
- 파일 권한이
644
일 경우 unmask 값 →022
- 디렉토리일 경우
777
에서 unmask를 뺀 값을 초기 접근 권한으로 갖음
- 디렉토리일 경우
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.