포스트

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

Computer Science / 정보처리기사

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

view

1과목 - 소프트웨어 설계


럼바우(Rumbaugh) 객체지향 분석 기법

체 모델링

  • 시스템 내의 주요 객체(실세계의 개념이나 엔티티)를 정의하고, 이 객체들 간의 속성, 연관성, 상속 관계 등을 표현
  • 객체 모델링은 클래스(객체) 다이어그램을 통해 객체들의 구조를 나타냄

적 모델링

  • 객체들이 시간에 따라 어떻게 상호작용하고 변화하는지 표현
  • 객체의 상태 변화, 이벤트 처리 등을 포함하며, 주로 상태 다이어그램을 사용하여 시스템의 동작을 정의

능 모델링

  • 시스템에서 발생하는 함수나 연산을 모델링
  • 주로 자료 흐름도(DFD)를 통해 입력과 출력 데이터를 나타내고, 프로세스 간의 데이터 흐름을 시각화함

2과목 - 소프트웨어 개발


인터페이스 구현 검증 도구

  • xUnit
    • JAVA(Junit), C++(Cppunit)m .Net(Nunit)와 같이 다양한 언어를 지원하는 단위 테스트 프레임워크
  • STAF
    • 서비스 호출 및 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크
    • 테스트 대상 분산 환경에 데몬을 사용
  • FitNesse
    • 웹 기반 테스트 케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임워크
  • NTAF
    • FitNesse의 장점인 협업과 STAF의 장점인 재사용 및 확장성을 통합한 NHN(Naver)의 테스트 자동화 프레임워크
  • Selenium
    • 다양한 브라우저 및 개발 언어를 지원하는 웹 애플리케이션 테스트 프레임워크
  • watir
    • Ruby를 사용하는 애플리케이션 테스트 프레임워크

테스트 드라이버 & 스텁

테스트 드라이버 (Driver)

  • 테스트 대상 하위 모듈을 호출하고, 파라미터 전달, 모듈 테스트 수행 후의 결과 도출
  • 상향식 테스트에 사용됨

테스트 스텁 (Stub)

  • 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구
  • 하향식 테스트에 사용됨

이진 트리 순회

tree

중위 순회 (in-order traversal)

왼 → me → 오

  • 결과
    1 → 3 → 4 → 6 → 7 → 8 → 10 → 14 → 13
  • 왼쪽 자손, 자신, 오른쪽 자손 순서로 방문하는 순회 방법
  • 이진 탐색 트리를 중위 순회하면 정렬된 결과를 얻을 수 있음
  • 이를 트리 정렬(Tree sort)이라고 함

전위 순회 (pre-order traversal)

me → 왼 → 오

  • 결과
    8 → 3 → 1 → 6 → 4 → 7 → 10 → 14 → 13
  • 자신, 왼쪽 자손, 오른쪽 자손 순서로 방문하는 순회 방법

후위 순회 (post-order traversal)

왼 → 오 → me

  • 결과
    1 → 4 → 7 → 6 → 3 → 13 → 14 → 10 → 8
  • 왼쪽 자손, 오른쪽 자손, 자신 순서로 방문하는 순회 방법

레벨 순서 순회 (level-order traversal)

노드 레벨 순서대로

  • 결과
    8 → 3 → 10 → 1 → 6 → 14 → 4 → 7 → 13
  • 너비 우선 순회(Breadth-First traversal)라고도 함
  • 노드를 레벨 순서로 방문하는 순회 방법
  • 위의 세 가지 방법은 스택을 활용하여 구현할 수 있는 반면 레벨 순서 순회는 큐를 활용해 구현할 수 있음

3과목 - 데이터베이스 구축


개체 무결성

  • 모든 테이블이 기본키로 선택된 컬럼을 가져야함

참조 무결성

  • 참조 관계의 두 테이블의 데이터가 항상 일관된 값을 갖도록 유지하는 것

도메인 무결성

  • DB에서 무결성 규칙은 데이터 무결성을 지키기 위한 모든 제약사항 뜻함

무결성 규정

무결성 규정 요소

  • 데이터가 만족해야 할 제약 조건과 참조할 때 사용하는 식별자 등을 포함할 수 있음
  • 이는 데이터 무결성을 유지하기 위한 규칙이나 조건을 명시함

무결성 규정 대상

  • 도메인 무결성, 키 무결성, 종속성 등이 데이터베이스 무결성 규정의 대상
  • 도메인 무결성
    • 특정 필드의 값이 정해진 도메인에 속해야 함을 보장
  • 키 무결성
    • 키 값의 유일성 및 존재성을 보장하는 것을 포함

릴레이션 무결성 규정

  • 릴에이션을 조작하는 과정에서 의미적 관계를 명세한 것
  • 데이터 간의 논리적인 관계와 연산 시 데이터의 무결성을 유지하는 규칙을 포함

데이터베이스 인덱스 (Index)

  • 인덱스는 데이터를 빠르게 찾을 수 있는 수단으로, 테이블에 대한 조회 속도를 높여주는 자료 구조
  • 인덱스는 자동으로 생성되지 않음
  • 인덱스의 종류 중, 순서 인덱스(Ordered Index)는 B-Tree 알고리즘(오름차순/내림차순 지정 가능)을 활용
  • ⚠️ 기본키에 대한 인덱스는 자동 생성
  • ⚠️ 사용자가 데이터정의어를 사용해서 변경, 생성, 제거 가능

관계대수

  • 관계대수는 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어
  • 릴레이션을 처리하기 위해 연산자와 연산 규칙을 제공하는 언어로 피연산자가 릴레이션이고, 결과도 릴레이션
  • 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시
  • 관계대수에는 관계 데이터베이스에 적용하기 위해 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 존재

순수 관계 연산자

  • Select
  • Project
  • Join
  • Division

일반 집합 연산자

  • UNION (합집합)
  • INTERSECTION (교집합)
  • DIFFERENCE (차집합)
  • CARTESIAN PRODUCT (교차곱)

함수적 종속

  • 함수적 종속은 데이터들이 어떤 기준값에 의해 종속되는 것을 의미
  • 예시
    1. <수강> 릴레이션이 (학번, 이름, 과목명)
    2. 학번이 결정되면 과목명에 상관없이 학번에는 항상 같은 이름이 대응
    3. 학번에 따라 이름이 결정될 때, 이름학번에 함수 종속적이라고 함
      • 학번 → 이름과 같이 씀

C의 연산자

1. 관계 연산자

  • 두 수의 관계를 비교하여 참(true) 또는 거짓(false)을 결과로 얻는 연산자
  • 거짓은 0, 참은 1로 사용되지만, 0 이외의 모든 숫자도 참으로 간주됨
연산자의미
==같음
!=같지 않음
>큼 (左)
<작음 (左)
>=크거나(左) 같음
<=작거나(左) 같음

2. 비트 연산자

  • 비트 연산자는 비트별(0, 1)로 연산하여 결과를 얻는 연산자
연산자의미비고
&and모든 비트가 1일때만 1
^xor모든 비트가 같으면 0, 하나라도 다르면 1
|or모든 비트 중 한 비트라도 1이면 1
~not각 비트의 부정 (0 → 1 / 1 → 0)
<<왼쪽 시프트비트를 왼쪽으로 이동
>>오른쪽 시프트비트를 오른쪽으로 이동

3. 논리 연산자

연산자의미비고
!not부정
&&and모두 참이면 true
||or하나라도 참이면 true

4. 대입 연산자

  • 연산 후 결과를 대입하는 연산식을 간략하게 입력할 수 있도록 대입 연산자를 제공
  • 산술, 관계, 비트, 논리 연산제에 모두 적용 가능
연산자예시의미
+=a += 1a = a + 1
-=a -= 1a = a - 1
*=a *= 1a = a * 1
/=a /= 1a = a / 1
%=a %= 1a = a % 1
<<=a «= 1a = a « 1
>>=a »= 1a = a » 1

5. 조건 연산자

  • 조건 연산자는 조건에 따라 서로 다른 수식을 수행
  • 형식
    • 조건 ? 수식1(true) : 수식2(false)
    • 조건의 수식이 참이면 수식1을, 거짓이면 수식2을 실행

6. 연산자의 우선순위

  1. 단항 연산자 (!, ~, ++, --, sizeof)
  2. 이항 연산자
    1. 산술 연산자 (*, /, %, +, -)
    2. 시프트 연산자 (<<, >>)
    3. 관계 연산자 (<, <=, =>, >)
    4. 비트 연산자 (==, !=)
    5. 논리 연산자 (&, ^, |)
  3. 조건 연산자 (a ? true : false)
  4. 대입 연산자 (=, +=, -=, *=, %=, <<=, >>=)
  5. 순서 연산자 (,)

4과목 - 프로그래밍 언어 활용


세그멘테이션 (Segmentation)

정의

  • 프로세스를 논리적 내용일 기반으로 나눠 메모리에 배치하는 것을 말함
  • 세그먼트의 집합으로, 각 세그먼트의 크기는 일반적으로 같지 않음
  • 프로세스를 code, data, stack으로 나누는 것 역시 세그멘테이션의 모습
    • 각각 내부에서 더 작은 세그먼트로 나누는 것도 가능

세그먼트 주소 변환

No.BaseLimit
014001000
16300400
24300400
332001100
447001000
  • 논리주소 (2, 100) 계산하기 ⭕️
    1. 2번에 해당하는 열의 Base 값(4300)에 100을 더함
    2. 물리주소 = 4400 번지
  • 논리주소 (1,500) 계산하기 ❌
    1. 1번에 해당하는 열의 Base 값(6300)에 500을 더함
    2. ⚠️ Limit400이기 때문에 500 값을 더할 수 없음
    3. 인터럽트로 인해 프로세스 강제 종료 (범위 벗어남)

5과목 - 정보시스템 구축관리


공개키(비대칭키) 암호화

key_2

  • 특징
    • 복호화할 때의 키를 서로 다른 키로 사용하는 암호화 알고리즘
    • 외부에 절대 노출되어서는 안되는 개인키(Private Key)와 공개적으로 개방되어 있는 공개키(Public Key)가 쌍으로 이루어진 형태
  • 장점
    • 키 분배 및 키 관리가 용이 (관리할 키 개수가 적음)
    • 기밀성, 무결성을 지원
    • 부인 방지1 기능을 제공
    • 암호학적 문제 해결 가능
  • 단점
    • 상대적으로 키의 길이가 긺
    • 연산 속도가 느림
  • 종류
    • RSA
    • 디피-헬만 (Diffie-Hellman)
    • 타원곡선암호 (Elliptic Curve Cryptosystem, ECC)
    • 전자서명 (digital signature)

  1. 부인 방지: 송신자나 수신자가 메세지를 주고받은 사실을 부인하지 못하도록 방지하는 것 ↩︎

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.