포스트

[정보처리기사] 정보처리기사 필기 오답노트 2

Computer Science / 정보처리기사

정보처리기사 필기 대비 암기를 위한 오답노트 (2022.03.05 CBT)

view

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과목 - 데이터베이스 구축


데이터베이스 설계

db_modeling

개념적 설계

  • 산출물로 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문의 조건은 이상, 이하

트랜잭션

트랜잭션의 연산

transaction_1

  • Commit 연산
    • 갱신 연산이 완료되었다고 트랜잭션 관리자에게 알려주고 결과를 최종적으로 데이터베이스에 반영하는 연산
  • Rollback 연산
    • 트랜잭션이 지금까지 실행한 연산의 결과가 취소되고 트랜잭션 수행 이전의 상태로 돌아가는 연산

트랜잭션의 상태

transaction_2

  • 활성화 (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)

  • 프로세스가 두개일 때, 상호 배제를 보장하는 최초의 알고리즘
  • flagturn 변수를 사용하여 조정

램퍼드의 베이커리 알고리즘 (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 라이센스를 따릅니다.