[25년] 정보처리기사 실기 합격까지의 과정
📌 정보처리기사 실기 합격까지의 과정
2024년 정기 기사 3회 떨어지고,
2025년 정기 기사 1회 또 불합격...
그리고 이번 2025년 정기 기사 2회,
가채점 90점으로 합격 예정!
필기는 한 번에 붙었는데,
실기 시험은 처음 떨어지고 나니까
그 뒤로는 시험 볼 때마다 긴장되고,
멘탈 잡는 게 제일 힘들었음.
진짜 실기 공부는 진심으로 열심히 했고,
나오는 유형은 정말 다 풀어봤다고 해도 될 정도.
유튜브에 홍달쌤이 올린 실기 문제 영상 전부 풀어봤고,
은우쌤 강의도 전 영상 두 번씩 정복 완료.
그리고 내가 따로 정리한 요약본은
진짜 50번 넘게 반복해서 복습했음.
지겨울 틈 없이 계속 돌리고 또 돌리고!
00. 필수 강의 영상
https://www.youtube.com/@HeungSsaem
흥달쌤
흥달쌤과 함께하는 IT 채널입니다. 정보처리기사 자격증 관련된 강의 및 실무 노하우, 프로그래밍 언어(JAVA, C언어, Python) 특강 등이 진행됩니다. 앞으로 진행 예정인 동영상은 IT 관련된 이야기
www.youtube.com
https://www.youtube.com/@eunwoossaem
은우쌤
정보처리기사 예상문제 및 빈출개념을 설명해드립니다! 이 채널은 우리가 함께 만들어 갑니다. 서로 도움을 주고 받는 귀한 공간이 되었으면 합니다. 우리 모두 좋은 결과를 이룰 수 있도록 함
www.youtube.com
01. 통합테스트
- 스텁(Stub)
- 하향식 테스트 시 상위 모듈은 존재하나 하위 모듈이 없는 경우의 테스트를 위해 임시 제공되는 모듈이다.
- 특별한 목적의 소프트웨어를 구현하는 것으로 컴포넌트를 개발하거나 테스트할 때 사용된다
- 서버-클라이언트 구조에서 서버만 구현된 상태로 테스트를 해보고 싶을때 단순히 값만 넘겨주는 가상의 클라이언트를 만들어서 테스트 할 수 있다.
- 드라이버
- 상향식 테스트 시 상위 모듈 없이 하위 모듈이 존재할 때 하위 모듈 구동 시 자료 입출력을 제어하기 위한 제어 모듈(소프트웨어)이다
- 서버-클라이언트 구조에서 클라이언트만 구현된 상태로 테스트를 해보고 싶을때 접속 인증 등의 간단한 기능만 하는 가상의 서버를 만들어서 테스트 할 수 있다.
- 하위 모듈들을 클러스터(Cluster) 로 결합
02. 관계형 데이터베이스
- 관계 대수
- 원하는 데이터를 어떻게 얻을지 표현하는 절차적 질의 언어(수학적 연산 기반/중간 결과 생성)
- SELECT(σ) : 조건에 맞는 튜플 선택
- PROJECT(π) : 속성(열) 추출
- JOIN(⨝) : 두 릴레이션 결합
- UNION(∪) : 합집합
- DIFFERENCE(−) : 차집합
- CARTESIAN PRODUCT(×) : 교차곱 |
- | ✔ 시험 포인트 | SELECT → 튜플 / PROJECT → 속성 / JOIN → 공통 속성 기준 결합 |
- 원하는 데이터를 어떻게 얻을지 표현하는 절차적 질의 언어(수학적 연산 기반/중간 결과 생성)
- 관계 해석
- 결과를 얻기 위한 조건을 기술하는 비절차적 질의 언어, 어떻게가 아니라 무엇을 중심으로 기술
03. 무결성
- 개체 무결성
- 기본 테이블의 기본키를 구성하는 어떤 속성도 Null 값이나 중복값을 가질 수 없다는 규정
- 도메인 무결성
- 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정이다.
- 참조 무결성(Referential Integrity)
- 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 한다. 즉, 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정이다. 외래키가 참조하려는 테이블의 기본키는 도메인과 속성 개수가 같아야 한다.
03. 화이트 박스, 블랙박스 테스트 전체 정리
https://starrykss.tistory.com/1634
[정보처리기사 실기] 07. 애플리케이션 테스트 관리
07. 애플리케이션 테스트 관리 (1) 애플리케이션 테스트 애플리케이션 테스트 애플리케이션에 잠재되어 있는 결함을 찾아내는 일련의 행위 또는 절차 개발된 소프트웨어가 고객의 요구사항을 만
starrykss.tistory.com
- 블랙 박스 테스트
- 동치 분할 검사
- 경계값 분석 검사
- 원인-효과 그래프 검사
- 오류 예측 검사
- 비교 검사
- 화이트 박스 테스트
- 기초 경로 검사
- 제어 구조 검사
- 조건 검사
- 루프 검사
- 데이터 흐름 검사
- 블랙 박스 테스트(Black Box Testing)
- 기능 중심의 테스트, 내부 구조는 모름 • 목적: 사용자가 기대하는 기능이 제대로 동작하는지 확인
- 동치 분할 검사(Equivalence Partitioning Testing)
- 입력 자료에 초점을 맞춰 테스트 케이스를 만들고 검사하는 방법으로 동등 분할 기법이라고도 한다.
- 경계값 분석(Boundary Value Analysis)
- 입력 자료에만 치중한 동치 분할 기법을 보완 하기 위한 기법이다. • 입력 조건의 중간값보다 경계값에서 오류가 발생될 확률이 높다는 점을 이용하여 입력 조건의 경계값을 테스트 케이스로 선정 하여 검사하는 기법이다.
- 원인-효과 그래프 검사(Cause-Effect Graphing Testing)
- 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법이다.
- 오류 예측 검사(Error Guessing)
- 과거의 경험이나 확인자의 감각으로 테스트하는 기법 다른 블랙 박스 테스트 기법으로는 찾아낼 수 없는 오류를 찾아내는 일력의 보충적 검사 기법, 데이터 확인 검사 라고도 한다.
- 비교 검사(Comparison Testing)
- 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법이다.
- 화이트박스 테스트(White Box Testing)
- 프로그램 내부 논리 구조와 동작 흐름을 분석하여 테스트 • 코드의 모든 경로, 조건, 루프 등이 정확하게[ 수행되는지 확인
- 기초 경로 검사(Base Path Testing)
- 대표적인 화이트 박스 테스트 기법 • 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법, 테스트 측정 결과는 실행 경로의 기초를 정의하는 데 지침으로 사용된다
- 조건 검사(Condition Testing)
- 프로그램 모듈 내에 있는 논리적 조건을 테스트하는 테스트 케이스 설계 기법
- 루프 검사(Loop Testing)
- 프로그램의 반복(Loop) 구조에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
- 데이터 흐름 검사(Data Flow Testing)
- 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
04. 보안용어
- IDS(침입 탐지 시스템)
- 비정상 트래픽 감지 후 알림 • 컴퓨터 시스템의 비정상적인 사용, 오용, 남용 등을 실시간을 탐지하는 시스템
- IPS(침입 방지 시스템)
- 비정상 트래픽 차단까지 수행 • 비정상적인 트래픽을 능동적으로 차단하고 격리하는 등의 방어 조치를 취하는 보안 솔루션(방화벽 + 침입 탐지 시스템)
- NAT (Network Address Translation)
- IP 패킷에서 외부의 공인 IP주소와 포트 주소에 해당하는 내부 IP주소를 재기록하여 라우터를 통해 네트워크 트래픽을 주고받는 기술은 무엇인가?
- 사설 IP주소를 공인 IP 주소로 변환하여 외부 인터넷과 통신 가능하게 해주는 기술 (키워드: 사설 IP, 공인 IP, 주소 변환, 보안성, IP 절약)
- NAC(Network Access Control)
- 네트워크에 접속하려는 기기의 보안 상태를 검사하고, 기준에 부합하는 기기만 접속을 허용하는 기술(보안 정책, 접속 제어, 사전 검사, 무결성 검사)
- ISMS (Information Security Management System)
- 기업이나 조직이 정보 자산을 체계적으로 보호하기 위해 관리 체계 인증 제도(정보보호 관리체계, 인증제도, 기밀성/무결성/가용성, 위험관리)
- ICMP(Internet Control Message Protocol)
- 네트워크 장애나 오류 메세지를 전달하거나, 목적지 도달 여부를 확인하는 제어 메세지 프로토콜(오류 메세지, 진단 도구, ping, 트레이서트, 제어 메세지)
05. 서버 접근 통제의 유형
2023년 3회
- MAC(Mandatory Access Control, 강제 접근 통제)
- ( (1) )은/는 규칙 기반(Rule-Based) 접근통제 정책으로, 객체에 포함된 정보의 허용 등급과 접근 정보에 대하여 주체가 갖는 접근 허가 권한에 근거하여 객체에 대한 접근을 제한하는 방법이다.
- 중앙 관리자나 시스템에 의해 정해진 정책에 따라 접근 권한이 제어되며, 사용자나 소유자가 권한을 임의로 변경할 수 없는 방식(시스템)
- RBAC (Role-Based Access Control, 역할 기반 접근 통제
- ( (2) )은/는 중앙 관리자가 사용자와 시스템의 상호관계를 통제하며 조직 내 맡은 역할(Role)에 기초하여 자원에 대한 접근을 제한하는 방법이다.
- 사용자에게 직접 권한을 부여하지 않고, 역할(Role)에 권한을 부여하고 사용자는 역할을 통해 자원을 접근하는 방식(중앙 관리자)
- DAC (Discretionary Access Control), 임의 접근 통제
- ( (3) )은/는 신분 기반(Identity-Based) 접근통제 정책으로, 주체나 그룹의 신분에 근거하여 객체에 대한 접근을 제한하는 방법이다.
- 소유자가 자신의 판단에 따라 지원(파일, 디렉터리 등) 에 대한 접근 권한을 부여하거나 철회할 수 있는 방식의 접근 제어(사용자)
06. 오류 제어, 오류 검출
23년 2회 실기 12번 문제 (아래 내용에 대한 유형은 25년 1회 유형에도 있으니 참고)
- 해밍 코드(Hamming Code)
- ( 1 ) Code는 데이터 전송시 1 비트의 에러를 정정할 수 있는, 오류정정부호의 일종으로 미국의 Bell 연구소의 Hamming에 의해 고안되었다. 선형블록부호 및 순회부호에 속에 속한다.
- FEC(Forward Error Coreection, 전진 오류 수정)
- ( 2 ) 은/는 송신측이 전송할 문자나 프레임에 부가적 정보(Redundancy)를 첨가하여 전송하고 수신측이 이 부가적 정보를 이용하여 에러검출 및 에러정정을 하는 방식이다.
- BEC(Backward Error Correction, 후진 오류 수정)
- ( 3 ) 은/는 데이터 전송 과정에서 오류가 발생하면 송신 측에 재전송을 요구하는 방식이다. 오류를 검출하는 방법은 Parity검사와 CRC, 블록 합 검사 등이 있다.
- 패리티 비트(Parity Bit)
- ( 4 ) 은/는 데이터가 저장장치 내의 한 장소에서 다른 장소로 이동되거나, 컴퓨터들간에 전송될 때, 데이터가 유실 또는 손상되었는지 여부를 점검하는 기술과 관련된 용어이다.
- CRC
- ( 5 ) 은/는 네트워크 등을 통하여 데이터를 전송할 때 전송된 데이터에 오류가 있는지를 확인하기 위한 체크값을 결정하는 방식을 말한다.
오류 검출 방식
| CRC (Cyclic Redundancy Check) | • 오류 검출 코드중 하나로, 데이터 전송 시 발생할 수 있는 오류를 검출하기 위해 사용 • 송신 측에서 다항식 나눗셈 방식으로 생성한 검사값을 데이터 뒤에 붙여 보내고, 수신 측에서 같은 방식으로 다시 계산해 오류가 있는지 검사 • 오류 검출, 다항식 나눗셈, 속도 빠름, 프레임 뒤에 붙음, 데이터 링크 계층, 수정은 불가능(검출만 가능) |
| 체크섬(Checksum) | • 데이터의 값들을 모두 더해서 오류를 검출 • TCP/IP 등에서 사용됨 • 간단하지만 CRC 보다 정확도 낮음 |
| BSC(Block Sum Check) | • 블록의 맨 마지막에 수평방향으로 패리티 비트를 부여하여 에러 발생 유무만 판별 • 수평패리티 체크, 세로중복검사 LRC, Longitudinal redundancy check 라고도 함 |
| 해밍 코드(Hamming Code) | • 오류 검출 + 오류 정정 가능 • 특정 위치의 비트를 통해 어디서 오류가 발생헀는지 계산 • CRC달리 정정까지 가능 |
| 패리티 비트(Parity Bit) | • 가장 기본적인 오류 검출 방식 • 1의 개수를 기준으로 짝수 패리티 /홀수 패리티를 사용 • 단일 비트 오류는 검출 가능하지만, 다중 오류는 검출 불가 |
오류 정정 방식
:오류 발생 시, 자동으로 복구/정정하는 기술
| FEC(Forward Error Coreection, 전진 오류 수정) | • 재전송 요구 없이 수신 측에서 스스로 오류 검출 및 수정하는 방식 • 에러 발생할 경우 송신측에 통보하지 않음 • 오류 정정을 위한 제어 비트가 추가되어 효율이 떨어짐 |
| BEC(Backward Error Correction, 후진 오류 수정) | • 오류 발생 시 송신측에 재전송 요청. |
| ARQ(Automatic repeat request, 자동 반복 요청) | • 오류 발생 시 수신측이 송신측에 재전송 요청 |
ARQ 방식의 종류
| Stop-and-Wait ARQ | • 하나씩 전송 후 ACK 받고 다음 전송 |
| Go-Back-N ARQ | • 오류 발생 시 이후 프레임 전체 재전송 |
| Selective Repeat ARQ | • 오류 발생한 프레임만 선택적으로 재전송 |
07. 디자인 패턴
[정보처리기사 실기] 디자인 패턴 정리
📌 거의 매번 출제 되는 디자인 패턴을 완벽하게 숙지해보자!디자인 패턴의 3가지 : 생성, 구조, 행위객체의 생성과 관련된 패턴동일한 주제의 다른 팩토리를 묶음구체적인 클래스에 의존하지
velog.io
07.1.생성(Creational) 패턴
객체 생성 방식을 추상화하여, 객체 생성 로직을 분리하는 패턴
|
패턴
|
설명
|
키워드
|
|
Singleton
|
객체를 하나만 생성
|
전역 인스턴스
|
|
Factory Method
|
상위 클래스에서 객체 생성 인터페이스 제공, 하위 클래스에서 객체 생성
|
상속, 추상 메서드
|
|
Abstract Factory
|
관련 객체를 일관된 방식으로 생성
|
구체적 클래스를 지정하지 않고 팩토리 생성
|
|
Builder
|
복잡한 객체를 단계별로 생성
|
조립식 생성
|
|
Prototype
|
기존 객체를 복사(복제)
|
clone, 원형
|
07.2.구조(Structural) 패턴
클래스나 객체들을 조합하여 더 큰 구조를 만드는 패턴
패턴 설명 키워드
| Adapter | 인터페이스 호환 안될 때 중간에서 연결 | 변환기 역할 |
| Bridge | 구현부에서 추상화 분리 | 다리 역할, 독립 변경 |
| Composite | 부분-전체 계층 구조 | 트리 구조 |
| Decorator | 기존 객체에 기능 추가 | 래핑, 동적 확장 |
| Facade | 복잡한 시스템을 단순한 인터페이스로 제공 | 일관된 인터페이스 |
| Flyweight | 공유 객체로 메모리 절약 | 경량 객체 |
| Proxy | 객체에 접근할 때 대리 객체 사용 | 접근 제어, 캐싱 |
07.3.행위(Behavioral) 패턴
객체 간 의사소통, 책임 분산을 다루는 패턴
| Observer | 한 객체 변경 시 여러 객체에 알림 | 구독-발행 |
| Strategy | 알고리즘을 동적으로 변경 가능 | 인터페이스 분리 |
| Template Method | 알고리즘의 뼈대 정의, 세부는 하위 클래스에서 구현 | 후킹 메서드 |
| Command | 요청을 객체로 캡슐화 | 실행 취소(Undo) |
| State | 객체 상태에 따라 행동 변경 | 상태 객체로 위임 |
| Iterator | 컬렉션 요소를 순차적으로 접근 | 반복자 제공 |
| Mediator | 객체 간 복잡한 관계를 중재자 하나로 처리 | 집중 통제 |
| Chain of Responsibility | 여러 객체가 처리 기회를 가짐 | 책임 연쇄 |
| Memento | 객체 상태 저장 및 복원 | Undo, 스냅샷 |
| Visitor | 기능을 추가할 때 객체 구조 수정 없이 구현 | 구조 + 기능 분리 |
생성 패턴
- Singleton(싱글톤)
- 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하여, 생성된 객체를 어디서든지 참조할 수 있도록 함(전역 인스턴스)
- Protytpe(프로토타입)
- 처음부터 일반적인 원형을 만들어 놓고 그것을 복사한 후 필요한 부분만 수정해서 사용하는 패턴 • 생성할 객체의 원형을 제공하는 인스턴스에서 생성할 객체들의 타입이 결정되도록 설정하고 객체를 생성할 때 갖추어야할 기본형태가 있을 때 사용되는 패턴
- 기존 객체를 복제함으로써 객체를 생성(Clone, 원형)
- Factory Method(팩토리 메소드)
- 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위 클래스에서 인스턴스를 생성하도록 하는 방식
- 상위 클래스에서 인스턴스를 만드는 방법만 결정하고 하위 클래스에서는 그 데이터의 생성을 책임지고 조작하는 함수들을 오버로딩하여 인터페이스와 실제 객체를 생성하는 클래스를 분리할 수 있는 패턴
- 생성할 객체의 클래스를 국한하지 않고 객체를 생성 • 객체 생성 처리를 서브 클래스로 분리해 처리하도록 캡슐화 하는 패턴
- Builder(빌더)
- 복잡한 인스턴스를 조립해서 만드는 구조
- 복합 객체를 생성할 때 객체를 생성하는 방법과 객체를 구현하는 방법을 분리함으로써 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있음
- 생성과 표기를 분리해서 복잡한 객체를 생성
- Abstract Factory(추상 팩토리)
- 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공
- 동일한 주제의 다른 팩토리를 묶음
구조 패턴
- Adapter(어댑터)
- 기존에 생성된 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 하는 인터페이스를 만드는 패턴
- 상속을 이용하는 클래스 패턴과 위임을 이용하는 인스턴스 패턴의 두 가지 형태가 있음
- 인터페이스가 호환 되지 않는 클래스들을 함께 이용할 수 있도록, 타 클래스의 인터페이스를 기존 인터페이스에 덧씌움
- Bridge(브릿지)
- 기능의 클래스 계층과 구현의 클래스 계층을 연결하고, 구현부에서 추상 계층을 분리하여 추상화된 부분과 실제 구현 부분을 독립적으로 확장할 수 있는 디자인 패턴
- 구현 뿐만 아니라, 추상화된 부분까지 변경해야하는 경우 활용
- 추상화와 구현을 분리해 둘을 각각 따로 발전 시킬 수 있음
- Composite(컴포지트)
- 객체들의 관계를 트리 구조를 구성하여 부분-전체 계층을 표현하는 패턴
- 사용자가 단일 객체와 복합 객체 모두 동일하게 다루도록 함
- 0개, 1개 혹은 그 이상의 객체를 묶어 하나의 객체로 이용할 수 있음
- 여러 개의 객체들로 구성된 복합 객체와 단일 객체를 클라이언트에서 구별 없이 다루게 해주는 패턴
- Decorator(데코레이터)
- 기존에 구현되어 있는 클래스에 필요한 기능을 추가해 나가는 설계 패턴
- 기능 확장이 필요할 때 객체 간의 결합을 통해 기능을 동적으로 유연하게 확장 할 수 있게 해주기 때문에 상속의 대안으로 사용됨
- 기존 객체의 메서드에 새로운 행동을 추가하거나 오버라이드 할 수 있음
- Facade(퍼싸드)
- 복잡한 시스템에 대해 단순한 인터페이스를 제공함으로써 사용자의 시스템 간 또는 다른 시스템과의 결합도를 낮추어 시스템 구조에 대한 파악이 쉬움
- 오류에 대해서 단위 별로 확인 할 수 있게 하고 사용자 측면에서 단순한 인터페이스를 제공해 접근성을 높일 수 있음(많은 분량의 코드에 접근할 수 있는 단순한 인터페이스를 제공)
- 통합된 인터페이스 제공
- Flyweight(플라이웨이트)
- 다수의 객체로 생성될 경우 모두가 갖는 본질적인 요소를 클래스화하여 공유함으로써 메모리를 절약하고 클래스의 경량화를 목적으로 하는 디자인 패턴
- 여러 개의 가상 인스턴스를 제공해서 메모리 절감
- Proxy(프록시)
- '실제 객체에 대한 대리 객체'로 실제 객체에 대한 접근 이전에 필요한 행동을 취할수 있게 만들고 이 점을 이용해 미리 할당하지 않아도 상관 없는 것들을 실제로 이용할 대 할당하게 하여 메모리 용량을 아낄 수 있음
- 실제 객체가 드러나지 않게 하여 정보 은닉의 영할을 수행
- 접근 조절, 비용 절감, 복잡도 감소를 위해 접근이 힘든 객체에 대한 대역을 제공함
행위 패턴
- Command(커맨드)
- 하나의 추상 클래스에 메서드를 만들어 각 명령이 들어오면 그에 맞는 서브 클래스가 선택 되어 실행됨
- 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행 할 수 있는 재사용성이 높은 클래스를 설계하는 패턴
- 요구사항을 객체로 캡슐화
- Observer(옵저버)
- 어떤 클래스에 변화가 일어났을 때, 이를 감지하여 다른 클래스에 통보해주는 것
- 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 연락이 가고 자동으로 내용이 갱신되는 패턴
- 일대다의 의존성을 가지고 상호작용하는 객체 사이에서는 가능한 느슨하게 결합하는 디자인 패턴
- Templete Method(템플릿 메소드)
- 상위 클래스에서는 추상적으로 표현하고, 그 구체적인 내용은 하위 클래스에서 결정되는 디자인 패턴
- 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴(상위 작업의 구조를 바꾸지 않으면서 서브 클래스로 작업의 일부분을 수행)
- Mediator(중재자)
- 객체지향 설계에서 객체의 수가 너무 많아져 통신이 복잡해지면 느슨한 결합(객체지향에서 중요한 특성)을 해칠 수 있기 때문에 중간에서 이를 통제하고 지시할 수 있는 역할을 하는 중재자 역할을 하는 패턴(중재자에게 요구하여 통신의 빈도를 줄임)
- 상호작용의 유연한 변경을 지원
- Interpreter(통역사)
- 언어의 다양한 해석, 구체적으로 구문을 나누고 그 분리된 구문의 해석을 맡는 클래스를 각각 작성해 여러 형태의 언어 구문을 해석할 수 있게 만드는 패턴
- 문법 자체를 캡슐화해서 사용
- Iterator
- 컬렉션 구현 방법을 노출 시키지 않으면서 그 집합체 안에 들어있는 모든 항목에 접근할 방법을 제공하는 패턴
- 내부 구조를 노출하지 않고 복합 객체의 원소를 순차적으로 접근 가능하게 하는 행위 패턴
- State(상태)
- 객체 상태를 캡슐화 해서 클래스화함으로써 그것을 참조하게 하는 방식
- 상태에 따라 다르게 처리할 수 있도록 행위 내용을 변경하고, 변경시 원시 코드의 수정을 최소화 할 수 있고 유지보수의 편의성도 가짐
- 객체의 상태에 따라 행위 내용을 변경
- Visitor(방문자)
- 각 클래스의 데이터 구조로부터 처리 기능을 분리하여 별도의 클래스를 만들어 놓고 해당 클래스의 메서드가 각 클래스를 돌아다니며 특정 작업을 수행하도록 만드는 패턴
- 객체의 구조는 변경하지 않으면서 기능만 따로 추가하거나 확장할 때 사용하는 패턴 • 특정 구조를 이루는 복합 객체의 원소 특성에 따라 동작을 수행할 수 있도록 지원
- Strategy(전략)
- 알고리즘 군을 정의하고(추상클래스) 같은 알고리즘을 각각 하나의 클래스로 캡슐화한 후, 필요할 때 서로 교환해서 사용 할 수 있게 하는 패턴
- 행위 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 패턴
- Memento
- 클래스 설계 관점에서 객체의 정보를 저장할 필요가 있을 때 적용하는 디자인 패턴
- Undo 기능을 개발할 때 사용
- 객체를 이전 상태로 복구 시켜야 하는 경우 Undo(작업 취소) 요청 기능
- Chain of Responsibility(책임연쇄)
- 정적으로 어떤 기능에 대한 처리의 연결이 하드코딩 되어 있을 때 기능 처리의 연결 변경이 불가능 한데, 이를 동적으로 연결한 경우에는 다르게 처리할 수 있도록 하는 디자인 패턴
- 한 요청을 2개 이상의 객체에서 처리
08. 결합도, 응집도
[2022 정보처리기사] 결합도(Coupling)과 응집도(Cohesion)
결합도(Coupling)과 응집도(Cohension)
velog.io
08.1.결합도(Coupling)
- 내용 결합도(Content Coupling)
- 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 경합도
- 공통 결합도(Common Coupling)
- 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용하는 경우의 결합도
- 외부 결합도(External Coupling)
- 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 결합도
- 제어 결합도(Control Coupling)
- 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우의 결합도 • 하위 모듈에서 상위 모듈로 제어 신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도 현상이 발생하는 결합도
- 스탬프 결합도(Stamp Coupling)
- 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도
- 자료 결합도(Data Coupling)
- 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우의 결합도
08.2.응집도(Cohension)
- 우연적 응집도(Coincidental Cohension)
- 서로 간에 어떠한 의미 있는 연관 관계도 없는 기능 요소로 구성될 경우의 응집도 • 서로 다른 상위 모듈에 의해 호출되어 처리상의 연관성이 없는 서로 다른 기능을 수행할 경우의 응집도
- 논리적 응집도(Logical Cohension)
- 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도
- 시간적 응집도(Temporal Cohension)
- 연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도
- 절차적 응집도(Procedural Cohension)
- 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
- 교환적 응집도 (Communication Cohesion)
- 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우의 응집도
- 순차적 응집도(Sequential Cohension)
- 모듈 내에서 한 활동으로부터 나온 출력 값을 다른 활동이 사용할 경우의 응집도
- 기능적 응집도(Functional Cohension)
- 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도
09. 보안용어
| 용어 | 핵심 키워드 | 설명 |
| Smurf | ICMP, 브로드캐스트, 반사 공격 | 공격자가 ICMP Echo Request를 브로드캐스트 주소로 보냄. 출발지 IP를 피해자로 위조해 다수 호스트가 동시에 응답 → 대상 서버 마비 |
| Ping of Death | 비정상 큰 패킷, 시스템 다운 | ICMP 패킷 크기를 허용 범위보다 크게 만들어 전송 → 메모리 오버플로우로 시스템 오류 발생 |
| LAND Attack | 출발지=목적지 IP, 루프 유발 | 패킷의 출발지와 목적지 IP 및 포트를 동일하게 설정해 보내서 응답 루프 발생, 시스템 마비 유도 |
| Tear Drop | Fragment Offset 오류 | 조각난 패킷을 재조립할 때 Offset을 비정상적으로 설정하여 시스템 충돌 유도 |
| SYN Flooding | 3-way-handshake 미완성 | TCP 연결 요청(SYN)만 보내고 응답(ACK)을 안 보내 세션 큐 과부하 유도 |
| UDP Flooding | 비연결형 대량 전송 | 임의 포트로 UDP 패킷을 대량 전송 → 포트 접근 불가 상태 유발 |
| Ping Flooding | ICMP 요청 폭주 | 지속적으로 Ping 요청을 보내 대역폭 및 CPU 자원 고갈 유도 |
| Spoofing | IP/MAC 위조 | 신뢰할 수 있는 시스템인 것처럼 속여 접근 권한 획득 시도 |
| Sniffing | 패킷 감청 | 네트워크에 흐르는 패킷을 몰래 캡처해 정보 탈취 |
| Smishing | 문자 피싱 | SMS 메시지를 이용해 악성 URL 유도 또는 개인정보 탈취 |
| Spear Phishing | 표적형 피싱 | 특정인을 노려 맞춤형 피싱 메일로 정보를 탈취 |
| 무차별 대입 공격(Brute Force Attack) | 무차별 대입 | 가능한 모든 비밀번호 조합을 시도해 계정 침입 |
| 크린덴셜 스터핑(Credential Stuffing) | 유출 계정 재사용 | 타 사이트에서 유출된 ID/PW를 자동으로 입력해 로그인 시도 |
| Qshing | QR코드 피싱 | 악성 QR코드로 사용자를 피싱 사이트로 유도 |
| Worm | 네트워크 전파, 자기복제 | 실행파일 없이 독립적으로 감염 전파, 네트워크 통해 급속 확산 |
| Virus | 파일 감염, 실행 의존 | 실행파일에 자신을 붙여 실행될 때 함께 활성화 |
| Trojan Horse | 정상파일 위장, 백도어 | 유용한 프로그램인 척 위장 → 설치 시 내부에서 공격 수행 |
| Zombie PC | C&C 명령 대기 | 공격자에게 감염된 후 원격 명령으로 DDoS 등에 악용됨 |
| Botnet | 좀비 PC 네트워크 | 감염된 PC들을 네트워크로 연결한 대규모 공격 네트워크 |
| WEP | 초기 무선 보안, 약함 | 무선 LAN에서 사용되던 초기 암호화 프로토콜. 취약점 많아 폐기됨 |
| WPA2 | 무선 보안, AES 기반 | WEP의 취약점을 보완, 현재 가장 많이 사용되는 무선 보안 방식 |
| DTLS | TLS + UDP | 신뢰성 없는 UDP에서 TLS 보안 기능 제공 |
| EDR (Endpoint Detection & Response) | 엔드포인트 탐지 대응 | 사용자 PC 등에 설치되어 위협 탐지, 분석, 대응 |
| TMS (Threat Management System) | 실시간 위협 관리 | 보안 장비의 로그를 통합 분석하고, 자동 대응 기능 수행 |
| ISAC (Information Sharing and Analysis Center) | 정보 공유 센터 | 보안 위협 정보 수집 및 공유, 침해 대응 체계 |
| BCP (Business Continuity Plan) | 업무 연속 계획 | 재해·재난 상황에도 핵심 업무 지속을 위한 사전 계획 |
| BitLocker | 디스크 암호화 | Windows 내장 드라이브 암호화 기술, 부팅 시 PIN 등으로 보호 |
| CC 인증 (Common Criteria) | 보안 국제 인증, ISO 15408 | 정보시스템 및 SW 제품에 대한 보안성 평가 국제 표준 |
| POODLE | SSL 취약점 | SSL 3.0 다운그레이드 공격 → 암호문 해독 가능 |
| APT (Advanced Persistent Threat) | 장기 침투, 은밀 활동 | 조직 표적, 장기간 시스템 내부에 침투해 정보 수집 |
| 멀버타이징 (Malvertising) | 광고 기반 악성코드 | 온라인 광고를 통해 악성코드를 유포하는 공격 방식 |
| 데이터 디들링 (Data Diddling) | 입력 조작 | 입력 데이터에 불법 변경을 가해 결과를 조작 |
| 백도어 (Backdoor) | 비인가 접근 경로 | 정상적인 인증을 거치지 않고 시스템에 접근할 수 있도록 만든 숨겨진 통로. 트로이 목마와 함께 사용되는 경우 많음. |
| 루트킷 (Rootkit) | 은폐형 악성코드 | 관리자 권한을 탈취한 후 자신의 존재를 숨기고 시스템 활동을 은폐하며 악성 행위를 지속하는 도구 또는 코드 집합. |
| Zero Day Attack(제로데이 공격) | 알려지지 않은 취약점 공격 | 보안 패치가 발표되기 전에 알려지지 않은 보안 취약점을 이용해 공격하는 방식. |
| 스턱스넷 (Stuxnet) | 산업제어 시스템 공격용 악성코드 | 이란 원자력 발전소 SCADA 시스템을 타깃으로 한 웜 형태의 악성코드. 사이버 무기 개념으로 분류됨. |
| SQL Injection(SQL 인젝션) | 웹 취약점 공격 | 입력 필드에 SQL 구문을 삽입하여 DB를 조작하거나 정보를 탈취하는 공격. 웹 보안 시험에서 자주 등장. |
| Session Hijacking(세션 하이재킹) | 세션 탈취 | 사용자의 세션 ID를 가로채어 인증된 사용자로 가장하여 서비스를 사용하는 공격. |
| Supply Chain Attack(공급망 공격) | SW 공급망 공격 | 소프트웨어의 유통 경로나 개발 과정에 악성코드를 삽입해 최종 사용자 시스템을 감염시키는 방식. 최근 실기 기출 사례 존재. |
| DNS Spoofing | DNS | DNS 서버로 보내는 질문을 가로채서 변조된 결과를 보내주는 것으로 일종의 중간자 공격 |
| 파밍(Pharming) | 사용자의 컴퓨터를 악성코드에 감염시켜 정상 홈페이지에 접속하여도 피싱 사이트로 유도하는 피싱 공격 |
| 툴명 | 핵심 키워드 | 설명 |
| Trin00 | UDP 플러딩 도구 | UDP 기반 대량 트래픽 생성 툴 |
| TFN (Tribe Flood Network) | 다기능, TCP/UDP/ICMP | 다양한 프로토콜로 공격 가능한 DDoS 툴 |
| Stacheldraht | TFN+트로이, 명령 통합 | TFN 기반, 트로이목마 기능 추가, 공격 명령 전파 구조 포함 |
09. 서브넷
서브넷에 대한 기본 이해가 없으면 문제를 풀수가 없음 최근 2회, 1회에서 서브넷 문제가 나왔기 떄문에, 필수로 알아야함
홍달쌤 영상 찾아보면서 알때까지 100번 1000번 반복 진행 필요
10. 테스트 커버리지
https://www.youtube.com/watch?v=xUGGdM0ZFNc
- 구문(문장) 커버리지 Statement Coverage
- 모든 코드를 한번 이상 실행했는지 확인(각 문장을 최소 1번 실행)
- 조건 커버리지 Condition Coverage
- 각 조건식의 True/Flase 값을 모두 발생 시킴
- 결정 커버리지 Desicion Coverage
- 조건 전체 결과(True/Flase)가 모두 발생했는지 확인
- 조건/결정 커버리지 Condition/Decision Coverage
- 조건 + 결정 커버리지 모두 만족 → 조건의 각각과 결정 결과 까지 확인
- 변경 조건/결정 커버리지 Modified Cause/Decision Coverage
- 모든 조건은 최소 한 번은 True/False를 가짐 • 한 조건만 바뀌어 결과가 바뀌는지 확인
- 다중 조건 커버리지Multiple Condition Coverage
- 모든 조건의 조합을 테스트/조건들 간의 모든 경우의 수 검증
- 2023년 1회 실기 19번 문제
- 2025년 1회 실기 15번 문제
- 2024년 1회 실기 14번 문제
| 구문(문장) 커버리지 Statement Coverage |
• 모든 코드를 한번 이상 실행했는지 확인(각 문장을 최소 1번 실행) • 25년 1회 실기 출제 |
| 조건 커버리지 Condition Coverage |
• 각 조건식의 True/Flase 값을 모두 발생 시킴 • 모든 조건식을 참/거짓으로 테스트 • 조합은 신경쓰지 않고, 개별 조건만 검증 • if(A && B): A(True/False), B(True/False) |
| 결정 커버리지 Desicion Coverage |
(=선택, 분기 커비리지) • 조건 전체 결과(True/Flase)가 모두 발생했는지 확인 • 분기점의 전체 흐름을 점검 • if(A && B): 전체 결과가 True/False 되도록 확인 |
| 조건/결정 커버리지 Condition/Decision Coverage |
• 조건 + 결정 커버리지 모두 만족 → 조건의 각각과 결정 결과 까지 확인 • if(A && B): A, B 각각 True/False + 결과도 True/False • 예시 ◦ 테스트1: A=True, B=True (결정 True) ◦ 테스트2: A=True, B=False (결정 False) ◦ 테스트3: A=False., B=True (결정 False) |
| 변경 조건/결정 커버리지 Modified Cause/Decision Coverage |
• 모든 조건은 최소 한 번은 True/False를 가짐 • 한 조건만 바뀌어 결과가 바뀌는지 확인 • 이론적으로 가장 안전한 조합이며 케이스도 줄임 • 예시 ◦ 테스트1: A=True, B=True → 결과: True ◦ 테스트2: A=False, B=True → 결과 False → A 바뀌어 결과 변환 됨 ◦ 테스트3: A=True, B=True → 결과: True ◦ 테스트2: A=True, B=False → 결과 False ****→ B 바뀌어 결과 변환 됨 |
| 다중 조건 커버리지Multiple Condition Coverage | • 모든 조건의 조합을 테스트 • 조건들 간의 모든 경우의 수 검증 • if A && B: TT, TF, FT, FF6 |
11. 페이지 교체 알고리즘
- 24년 3회 실기 4번 문제
| OPT(Optimal) | 앞으로 가장 오랫동안 사용되지 않을 페이지 교체 |
| FIFO(First In First Out) | 가장 먼저 들어온 페이지 교체 |
| LRU(Least Recently Used) | 가장 오랫동안 사용되지 않은 페이지 교체 |
| LFU(Least Frequently Used) | 참조 횟수가 가장 작은 페이지 교체 (참조횟수가 동일한 경우, fifo처럼 가장 먼저 들어온것 제거) |
| MFU(Most Frequently Used) | 참조 횟수가 가장 많은 페이지 교체 |
| NUR(Not Used Recently) | 최근에 사용하지 않은 페이지 교체 |
ex) 다음은 페이지 참조 순서이다. 페이지 프레임이 3개일 때, FIFO 알고리즘을 사용했을 경우 페이지 부재(Page Fault)는 총 몇 번 발생하는가?
페이지 참조 순서: 7, 0, 1, 2, 0, 3, 0, 4, 2, 3
`정답: 9`
ex) 다음은 페이지 참조 순서이다. 페이지 프레임이 3개일 때, LRU 알고리즘을 적용했을 때의 페이지 부재 횟수를 구하시오.
페이지 참조 순서: 1, 2, 3, 2, 4, 1, 5, 2, 1, 2, 3, 4, 5
`정답:10`
ex) 아래는 페이지 참조 순서이다. 페이지 프레임이 3개일 때, LFU 알고리즘을 적용하여 페이지 교체를 수행할 경우 페이지 부재는 몇 번 발생하는가?
페이지 참조 순서: 2, 3, 2, 1, 5, 2, 4, 5, 3, 2
**`정답 6회`**
ex) 다음 페이지 참조 순서와 같이 참조가 이루어진다. 페이지 프레임이 3개일 때, Optimal 교체 알고리즘을 사용한 경우 총 페이지 부재 횟수는?
페이지 참조 순서: 6, 0, 1, 3, 0, 4, 5, 0, 3, 2
`정답: 7회`
ex) 아래 페이지 참조 순서와 같이 페이지가 참조된다. 페이지 프레임이 3개이며, 각 페이지에는 참조 비트가 1비트씩 존재한다. NUR 알고리즘을 사용하여 페이지 교체를 수행할 경우 페이지 부재는 몇 번 발생하는가?
페이지 참조 순서: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
`정답: 10회`
11. 프로세스 스케줄링
- 2024년 2회 실기 12번 문제
- [Q&A] 프로세스 스케줄링 | SRT
- [Q&A] 운영체제 | RR 프로세스 스케줄링
- [Q&A] 운영체제 | RR 스케줄링
11.1 비선점 스케줄링
| 1. FCFS (First-Come, First-Served) |
- 선입선출 방식, 먼저 온 순서대로 처리 |
| 2. SJF (Shortest Job First) |
- 작업 시간이 짧은 프로세스 먼저 처리 |
| 3. HRN (Hightest Response-ratio) |
- 우선 순위를 게산하여 가장 높은 값을 가진 프로세스를 먼저 실행하는 방식. - 우선순위 계산식: (대기시간 + 서비스시간) / 서비스시간 |
| 4. 우선순위 | |
| 5. 기한부 |
11.2 선점 스케줄링
| 1. SRT (Shortest Remaining Time) |
- 남은 시간이 더 짧은 작업이 오면 교체 |
| 2. RR (Round Robin) |
- 정해진 시간(타임 퀀텀)만큼 CPU 사용 후, 다음 프로세스에게 넘김 |
| 3. MLQ | |
| 4. MLFQ | - 에이징 기법 적용 |
11.3. 기아현상
- 에이징
12. 암호화 방식
- 해시(Hash)
- 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것
- SHA
- 1993년 미국 국가안보국이 설계, 미국 국립표준기술연구소에 의해 발표
- MD5
- 1991년 R.Rivest가 MD4를 대체하기 위해 고안한 암호화 해시 함수 • 블록 크기는 512비트, 키 길이는 128비트
- N-NASH
- 1989년 일본의 전신전화주식회사(NTT)에서 발표한 암호화 해시 함수 • 블록 크기는 128비트, 키 길이는 128비트
- SNEFRU
- 1990년 R.C.Merkle가 발표한 해시 함수 • 32비트 프로세서에서 구현을 용이하게 할 목적으로 개발
- Private Key (개인 키)
- 관리해야할 키의 수 많음/ 암복호화 속도 빠름 / 대칭 키
- Public Key (공개 키)
- 비 대칭키 (암복호화 다른 키 사용) → 키 분배 용이, 암복호화 속도 느림
- SEED
- 1999년 한국인터넷진흥원(KISA)에서 개발한 블록 암호화 알고리즘
- 블록의 크기는 128비트, 키 길이에 따라 128, 256으로 분류
- ARIA
- 2004년 국가정보원과 산학연협회가 개발한 블록 암호화 알고리즘
- 1975년 미국 NBS에서 발표한 개인키 암호화 알고리즘
- DES(Data Encryption Standard)
- 블록 크기는 64비트, 키 길이는 56비트, 라운드 16회- DES를 3번 적용한 3DES(Triple DES)
- AES(Advanced Encryption Standard)
- 2001년 미국 표준 기술 연구소에서 발표한 개인키 암호화 알고리즘- DES의 한계를 느낀 NIST에서 공모 후 발표- 블록 크기는 128비트, 키 길이에 따라 AES-128, AES-192, AES-256으로 분류
- RSA
- 1978년 MIT의 Rivest, Shamir, Adleman에 의해 제안된 공개키 암호화 알고리즘 • 큰 숫자를 소인수분해 하기 어렵다는 것에서 착안
- TKIP(Temporal Key Integrity Protocol)
- 무선랜 보안에 사용된 WEP을 보완한 데이터 보안 프로토콜로, 임시키 무결성 프로토콜이라고도 함WEP의 취약성을 보완하기 위해 암호 알고리즘의 입력 키 길이를 128비트로 늘리고 패킷당 키 할당, 키값 재설정 등 키 관리 방식을 개선
13. 패킷교환방식, 경로 설정 프로토콜, 최단경로비용
- [2024년 2회] 11. 아래 그림을 바탕으로 RIP을 구성하여 최단 경로 비용을 계산하여 흐름에 맞게 작성하시오
13.1.패킷교환방식
| 가상회선방식 | • 통신회선을 미리 설정하여 물리적인 회선이 공유되어 경로에 따른 순서적 패킷 전송 • 데이터 전송의 안정성, 신뢰성 보장 |
| 데이터그램방식 | • 특정 경로를 설정하지 않고 트래픽 상황을 감안하여 순서에 관계없이 전송 |
13.2.경로 설정 프로토콜
| IGP | • Interior Gateway Protocol, 내부 게이트웨이 프로토콜 • 하나의 자율시스템 AS, autunomus system 내의 라우팅에 사용 |
| [IGP] RIP | • Routing Information Protocol • 패킷을 목적지까지 전달하기 위해 소규모 동종 네트워크에 사용(거리 벡터 라우팅) |
| [IGP] OSPF | • Open Shortest Path First Protocol • 네트워크 변화가 있을때만 갱신하여 대규모 네트워크에 사용 (다익스트라 알고리즘) |
| EGP | • Exterior Gateway protocol 외부 게이트 웨이 프로토콜 • 여러 자율 시스템 AS 간의 라우팅에 사용 |
| BGP | • Borader Gateway Protocol • 자율시스템 AS간의 라우팅 테이블을 전달하는곳에 사용 |
13.3. 최단 경로 비용
| [IGP] RIP | • 최소 홉 |
| [IGP] OSPF | • 최소 거리 |
14. 마지막
2025년 1회 정보처리기사 실기 문제를 여러번 풀어보는걸 추천 (진짜임 5번 넘게 풀어보세요)
https://chobopark.tistory.com/540
[2025년 1회] 정보처리기사 실기 복원 문제
안녕하세요. 2025년 1회 정보처리기사 실기 기출문제를 정리해보았습니다.해당 복원된 기출문제가 많은 분들에게 도움이 되었으면 좋겠습니다.정보처리기사 개편안인 2020년 시험부터 기출문제
chobopark.tistory.com