[정보처리기사] 정보처리기사 필기 오답노트 1
정보처리기사 필기 대비 암기를 위한 오답노트 (2022.04.24 CBT)
1과목 - 소프트웨어 설계
순차 다이어그램
- 행위 다이어그램으로 동적이며, 순차적인 표현을 위한 다이어그램
기능적 요구사항 VS 비기능적 요구사항
기능적 요구사항
- 시스템이 실제로 어떻게 동작하는지에 관점을 둔 요구사항
비기능적 요구사항
- 시스템 구축에 대한 성능, 보안, 품질, 안정 등에 대한 성능, 보안, 품질, 안정성 등으로 실제 수행에 보조적인 요구사항
객체지향 개념
다형성
- 여러가지 형태를 가지고 있다는 의미로, 여러 형태를 받아들일 수 있는 특징을 말함
- 현재 코드를 변경하지 않고 새로운 클래스를 쉽게 추가 가능
- 메소드 오버라이딩
- 상속관계에서만 발생하며, 슈퍼 클래스의 메서드를 서브 클래스에서도 동일한 메서드를 재정의하는 것
- 메소드 오버로딩
- 한 클래스 내에서 메서드의 이름은 동일하지만 매개변수의 수나 타입을 다르게 하여 재정의 하는 것
캡슐화
- 속성과 관련된 연산(Operation)을 클래스 안에 묶어서 하나로 취급하는 것
2과목 - 소프트웨어 개발
이진 검색 방법
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
해당 레코드에서 14를 찾는 방법
- 배열의 중간값을 찾음 (8)
- 중간값과 검색값을 비교 (1회)
- 중간값(8) = 검색값(14) → 종료
- 중간값(8) < 검색값(14) → 우측 탐색 ✅
- 중간값(8) > 검색값(14) → 좌측 탐색
- 값을 찾거나 간격이 비었을 때까지 반복
- 중간값과 검색값을 비교 (2회)
- 중간값(12) = 검색값(14) → 종료
- 중간값(12) < 검색값(14) → 우측 탐색 ✅
- 중간값(12) > 검색값(14) → 좌측 탐색
- 중간값과 검색값을 비교 (3회)
- 중간값(14) = 검색값(14) → 종료 ✅
- 중간값(14) < 검색값(14) → 우측 탐색
- 중간값(14) > 검색값(14) → 좌측 탐색
검토
동료검토 (Peer Review)
- 정의
- 동료들 간의 비공식적인 코드나 문서 리뷰 과정
- 특징
- 일반적으로 형식적 절차 없이 진행 (비공식적)
- 주로 2~3명 정도의 동료 개발자가 참여 (소규모 그룹)
- 코드 작성자가 참여하여 자유롭게 의견을 나누는 방식 (주관성)
- 버그를 찾거나 코드 품질을 개선하기 위해 서로 피드백을 주고받음 (목적)
- 핵심 포인트
- 비공식적이며, 동료 간의 자유로운 의견 교환
워크스루 (Walkthrough)
- 정의
- 작성자가 자신의 코드나 문서를 팀 앞에서 설명하고, 팀이 이에 대해 의견을 제시하는 검토 과정
- 특징
- 일정한 절차에 따라 진행되지만, 인스펙션보다는 덜 공식적 (세미 공식적)
- 작성자가 자신의 작업을 직접 설명하며 팀의 피드백을 받음 (작성자 주도)
- 팀원 간의 지식 공유와 교육을 목적으로 하기도 함 (교육적 목적)
- 작성자의 생각을 설명하고, 팀원들이 이를 이해하고 검토하는 과정 (목적)
- 핵심 포인트
- 작성자가 직접 설명하며 팀과 함께 검토하는 과정
인스펙션 (Inspection)
- 정의
- 엄격한 절차에 따라 공식적으로 진행되는 코드나 문서의 검토 과정
- 특징
- 정해진 절차와 역할(ex: 모더레이터, 검토자, 기록자 등)을 따름 (공식적)
- 버그나 결함을 객관적으로 측정하고 기록 (정량적 평가)
- 작성자가 참여하지 않을 수 있으며, 다른 팀원이 주도 (작성자 비참여 가능)
- 결함을 찾아내고, 이를 체계적으로 기록하여 품질을 보장하는 것 (목적)
- 핵심 포인트
- 엄격한 절차와 역할 분담, 공식적인 검토 과정
- 인스펙션 과정
- 계획
- 사전 교육
- 준비
- 인스펙션 회의
- 수정
- 후속조치
소프트웨어 버전 관리 도구
RCS (Revision Control System)
- 소스 파일의 수정을 한 사람만으로 제한
- 다수의 사용자가 동시에 파일 수정을 할 수 없도록 파일 잠금 방식으로 버전을 관리하는 도구
- 다른 방향으로 진행된 개발 결과를 합치거나 변경 내용을 추적할 수 있음
추가적인 보기 설명
- RTS (Reliable Transfer Service)
- 데이터 통신에서 신뢰성이 보장된 전송 서비스를 제공하는 프로토콜
- RPC (Remote Procedure Call)
- 네트워크상에서 원격지의 다른 프로세스나 컴퓨터에서 실행 중인 함수나 프로시저를 호출하는 프로토콜
- RVS (Relative Version System)
- 파일의 상대적인 버전을 관리하는 도구로, 각 파일 버전의 차이를 저장해 파일 복원과 변경 이력을 추적
테스트
화이트박스 테스트 (White Box Test)
- 정의
- 화이트박스 테스트는 모듈의 원시 코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법
- 화이트박스 테스트는 설계된 절차에 초점을 둔 구조적 테스트이며, 테스트 과정의 초기에 적용됨
- 모듈 안의 작동을 직접 관찰함
- 원시 코드(모듈)의 모든 문장을 한 번 이상 실행힘으로써 수행
- 프로그램의 제어 구조에 따라 선택, 반복 등의 분기점 부분들을 수행함으로써 논리적 경로를 제어함
- 화이트박스 테스트의 종류
- 기초 경로 검사 (Base Path Testing)
- 대표적인 화이트박스 테스트 기법
- 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법
- 테스트 측정 결과는 실행 경로의 기초를 정의하는 데 지침으로 사용
- 제어 구조 검사 (Control Structure Testing)
- 조건 검사(Condition Testing): 프로그램 모듈 내에 있는 논리적 조건을 테스트하는 테스트 케이스 설계 기법
- 루프 검사(Loop Testing): 프러그램의 반복(Loop) 구조에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
- 데이터 흐름 검사(Data Flow Testing): 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
블랙박스 테스트 (Black Box Test)
- 정의
- 블랙박스 테스트는 소프트웨어가 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증하는 테스트로, 기능 테스트라고도 함
- 사용자의 요구사항 명세를 보면서 테스트하는 것으로, 주로 구현된 기능을 테스트함
- 소프트웨어 인터페이스에서 실시되는 테스트
- 부정확거나 누락된 기능, 인터페이스 오류, 자료 구조나 외부 데이터베이스 접근에 따른 오류, 행위나 성능 오류, 초기화와 종료 오류 등을 발견하기 위해 사용되며, 테스트 과정의 후반부에 적용됨
- 블랙박스 테스트의 종류
- 동치 분할 검사 (Equivalence Partitioning Testing)
- 입력 자료에 초점을 맞춰 테스트 케이스를 만들고 검사하는 방법으로, 동등 분할 기법이라고도 함
- 경계값 분석 (Boundary Value Analysis)
- 입력 자료에만 치중한 동치 분할 기법을 보완하기 위한 기법
- 입력 조건의 중간값보다 경계값에서 오류가 발생될 확률이 높다는 점을 이용하여 입력 조건의 경계값을 테스트 케이스로 선정하여 검사하는 기법
- 원인-효과 그래프 검사 (Cause-Effect Graphing Testing)
- 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법
- 오류 예측 검사 (Error Guessing)
- 과거의 경험이나 확인자의 감각으로 테스트하는 기법
- 다른 블랙박스 테스트 기법으로는 찾아낼 수 없는 오류를 찾아내는 일력의 보충적 검사 기법으로 데이터 확인 검사라고도 함
- 비교 검사 (Comparison Testing)
- 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법
단위 테스트 (Unit Test)
- 테스트 스텁 (Stub)
- 인자를 통해 받은 값을 가지고 수행한 후, 그 결과를 테스트할 모듈에 넘겨주는 역할
- 테스트 드라이버 (Driver)
- 필요 데이터를 인자를 통해 넘겨주고, 테스트 완료 후 그 결과값을 받는 역할을 하는 가상의 모듈
IDE (Integrated Development Environment)의 기능
- 개발환경 지원 (Coding)
- 자바, 파이썬 등 개발 언어를 통해 애플리케이션 개발 환경을 제공
- 컴파일 (Compile)
- 주어진 언어로 작성된 컴퓨터 프로그램을 다른 언어의 동등한 프로그램으로 변환하는 기능
- 고급언어(사람이 인식하는 언어) → 저급언어(기계어) 변환
- 디버깅 (Debugging)
- 프로그래밍 과정에서 발생하는 오류 및 비정상적인 연산 제거
- 외부 연계 (Deployment 등)
- 외부 형상, 배포관리 기능과 연계되어 자동 배포 등이 가능
- DB 연동
- JDBC, ODBC 등을 통한 데이터베이스 연동
3과목 - 데이터베이스 구축
Key
후보키 (Candidate Key)
- 릴레이션을 구성하는 속성들 중에서 유일하게 식별할 수 있는 속성들의 부분집합을 의미
- 모든 릴레이션은 반드시 하나 이상의 후보키를 가져야함
- ⭐️ 모든 튜플에 대해 유일성과 최소성을 만족시켜야 함
기본키 (Primary Key)
- 후보키 중에서 선택한 주키 (Main Key)
- 특정 튜플을 유일하게 구별할 수 있는 속성
- ⭐️ Null 값을 가질 수 없음 (개체 무결성의 첫번째 조건)
- ⭐️ 기본키로 정의된 속성에는 동일한 값이 중복될 수 없음 (개체 무결성의 두번째 조건)
대체키 (Alternate Key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들을 말함
- 보조키라고도 함
슈퍼키 (Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로써, 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타내지 않음
- ⭐️ 유일성은 만족하지만, 최소성은 만족시키지 못함
외래키 (Foreign Key)
- 관계를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션의 속성
- 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는데 중요한 도구로 사용
- ⭐️ 외래키로 지정되면 참조 테이블의 기본키에 없는 값은 입력 불가 (참조 무결성 조건)
4과목 - 프로그래밍 언어 활용
IP 프로토콜 필드
Version Number (버전 번호)
- IP 프로토콜의 버전 번호
Header Length (헤더 길이)
- IP 프로토콜의 헤더 길이를 23비트 워드 단위로 표시
- 일반 패킷을 전송하는 경우, 헤더의 Options 부분 이하가 빠지므로 IP 헤더의 최소 크기는 5
Packet Length (패킷 길이)
- IP 헤더를 포함하여 패킷의 전체 길이를 나타냄
- 필드의 크기가 16비트이므로 IP 프로토콜에서 지원하는 패킷의 최대 크기는 $2^{16} - 1 = 65,535$바이트
- 실제 환경에서는 IP 패킷을 더 작은 단위로 만들어 사용
Time To Live (생존 시간)
- 패킷 전송 과정에서 패킷이 올바른 목적지를 찾지 못하면 수신 호스트에게 도착하지 않고 네트워크 내부에서 떠도는데, 이러한 현상을 방지하고자 사용
- 송신 호스트가 패킷을 전송하기 전에 네트워크에서 생존할 수 있는 시간을 지정
IP 프로토콜의 주요 특징
- 비연결형 서비스를 제공
- 패킷 분할/병합 기능도 수행
- 데이터 체크섬(Checksum)은 없으며, 헤더 체크섬만 제공
- Best-Effort 원칙에 따라 최선은 다하되, 결과를 보장하지 못함
모듈화 (Modularity)
모듈의 특성
- 한가지 일만 수행 (Unity)
- 긴딘명료 (Smallness)
- 단순성 (Simplicity)
- 독립성 (Independency) 등
모듈화의 장점
- 프로그램의 효율적인 관리 및 성능 향상
- 전체적인 소프트웨어 이해의 용이성 증대 및 복잡성 감소
- 소프트웨어 시험, 통합 시 용이성 제공
- 기능의 분리가 가능, 인터페이스가 단순
- 오류의 범위를 최소화
- 모듈의 재사용 가능으로 개발과 유지보수가 용이
응집도 (강할수록 좋음)
- 모듈이 독립적인 기능으로 정의되어 있는 정도
결합도 (약할수록 좋음)
- 모둘과 모듈 사이의 상호의존 또는 연관 정도
5과목 - 정보시스템 구축관리
암호 알고리즘
대칭 암호 알고리즘
- 특징
- 양방향 암호화 방식 중 널리 사용하는 암호화 방식
- 암호화와 복호화에 같은 암호 키를 사용하는 알고리즘
- 장점
- 구현이 용이
- 데이터를 암호화하기 위한 연산이 빨라 대용량 데이터 암호화에 적합
- 기밀성을 제공
- 단점
- 강한 보안을 위해 키를 주기적으로 교환해주는 것이 좋음
- 키 탈취 및 관리가 어려움
- 무결성 지원이 부분적으로만 가능
- 부인 방지1 기능을 제공하지 못함
- 종류
- SEED
- HIGHT (High security and light weight)
- ARIA
- LEA (Lightweight Encryption Algorithm)
- DES (Data Encryption Standard)
- AES (Advanced Encryption Standard)
- RC4
- A5/1, A5/2, A5/3
비대칭 암호 알고리즘
- 특징
- 복호화할 때의 키를 서로 다른 키로 사용하는 암호화 알고리즘
- 외부에 절대 노출되어서는 안되는 개인키(Private Key)와 공개적으로 개방되어 있는 공개키(Public Key)가 쌍으로 이루어진 형태
- 장점
- 키 분배 및 키 관리가 용이
- 기밀성, 무결성을 지원
- 부인 방지1 기능을 제공
- 암호학적 문제 해결 가능
- 단점
- 상대적으로 키의 길이가 긺
- 연산 속도가 느림
- 종류
- RSA
- 디피-헬만 (Diffie-Hellman)
- 타원곡선암호 (Elliptic Curve Cryptosystem, ECC)
- 전자서명 (digital signature)
접근 통제 방법
강제적 접근제어 (MAC, Mandatory Access Control)
- 정의
- 비밀성을 갖는 객체에 대하여 주체가 갖는 권한에 근거하여 객체에 대한 접근을 제어하는 방법
- 특징
- 강제 접근 통제에서는 주체와 객체의 수에 관계없이 접근 규칙의 수가 최대로 정해지기 때문에 다른 접근 통제 모델에 비하여 접근 규칙의 수가 적고 통제가 용이함
- 강력한 접근 통제 방식으로 군대와 같이 기밀성이 매우 중요한 조직에서 사용
- 종류
- MLP (Multi Level Policy)
- CBP (Component Based Policy)
임의적 접근제어 (DAC, Discretionary Access Control)
- 정의
- 주체나 주체가 속한 그룹의 신원에 근거하여 객체에 대한 접근을 제한하는 방법 (객체의 소유주가 접근 여부를 결정)
- 특징
- 모든 사용자가 정보에 대해 단일화 되어 있지 않으며, 하나의 사용자 정보 단위로 이루어짐
- 주체 지향 보안 구현 방식
- 종류
- IBP (Individual Based Policy)
- GBP (Group Based Policy)
역할기반 접근제어 (RABC, Role Based Access Control)
- 정의
- 중앙 관리자가 주체와 객체의 상호관계를 통제하며 조직내에서 맡은 역할에 기초하여 자원에 대한 접근 허용 여부를 결정하는 방법
- 특징
- 권한을 부여하는 단위가 주체 대신 주체가 수행하는 기능(역할)에 권한에 부여
- 사용자는 보호 대상 정보나 자원에 대한 접근 권한을 얻기위해 해당 접근 권한이 배정된 역할의 구성원이 되어야 함
- RBAC 모델의 원리
- 최소권한원칙 (least privilege principle)
- 역할 계층성을 이용하여 작업에 꼭 필요한 최소한의 허가 사항만을 역할에 배정하는 정책
- 직무 분리 (Separation of Duty)
- 정보의 무결성을 침해하는 사기행위와 부정 수단을 유발 할 수 있는 작업은 상호 감시적인 역할로 자정하여 직무를 분리하여 수행
- 데이터 추상화 (Data Abstration)
- 데이터를 처리하는
read
,write
,execute
등의 연산 대신에 상업적인 처리 명령어create
,Transfer
등의 명령어로 추상화
- 데이터를 처리하는
- 최소권한원칙 (least privilege principle)
속성기반 접근제어 (ABAC, Attribute Based Access Control)
- 정의
- 접근 권한 주체와 접근 권한 대상이 어떠한 환경에 처해 있는가를 동적으로 분석하여 접근 권한을 부여하는 기법
COCOMO 모형
설명
- 원시 프로그램 규모(LOC)에 의한 비용 산정 기법
- 보헴(Boehm)이 제안
- 비교적 작은 규모의 프로젝트들을 통계 분석한 결과를 반영한 모델
- 중소 규모 소프트웨어 프로젝트 비용 추정에 적합
- 비용 산정 결과는 Man-Month로 표현 (몇 명이 몇 줄 코드 몇 개월만에 완성하는지)
개발유형에 따른 분류
- 조직형 (Organic)
- 5만 라인 이하
- 사무 처리용, 업무용, 과학용 소프트웨어 개발에 적합
- 반분리형 (Semi-Detached)
- 30만 라인 이하
- 컴파일러, 인터프리터 개발에 적합
- 내장형 (Embedded)
- 30만 라인 이상
- 미사일 유도 시스템, 실시간 처리 시스템 개발에 적합
PERT
정의
- PERT(Program Evaluation and Review Technique, 프로그램 평가 및 검토 기술)는 프로젝트에 필요한 전체 작업의 상호 관계를 표시하는 네트워크로 각 작업별로 낙관적인 경우, 가능성이 있는 경우, 비관적인 경우로 나누어 각 단계별 종료 시기를 결정하는 방법
특징
- 과거에 경험이 없어서 소요 기간 예측이 어려운 소프트웨어에 사용
- 노드와 간선으로 구성되며 원 노드에는 작업을, 간선(화살표)에는 낙관치, 기대치, 비관치를 표시 (네트워크 도표)
- 결정 경로, 작업에 대한 경계 시간, 작업 간의 상호 관련성 등을 알 수 있음
- 작업 예측치 계산법
- $a$: 낙관치(가장 짧은 라인)
- $b$: 비관치(가장 긴 라인)
- $m$: 기대치(측정된 평균 라인)
- $작업 예측치 = \frac{a + 4m + b}{6}$
GANTT 차트
정의
- 간트 차트는 프로젝트의 각 작업들이 언제 시작하고 언제 종료되는지에 대한 작업 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표로, 시간선(Time-Line) 차트라고도 불림
특징
- 중간 목표 미달성 시, 그 이유와 기간을 예측 가능
- 사용자와의 문제점이나 예산 초과 지출 등도 관리 가능
- 자원의 배치와 인원 계획에 유용
- 다양한 형태로 변경하여 사용
- 작업 경로 표시는 불가능하며, 계획의 변화에 대한 적응성이 약함
- 계획 수립 또는 수정 때 주관적 수치에 기울어지기 쉬움
- 이정표, 작업 일정, 작업 기간, 산출물로 구성
- 수평 막대의 길이는 각 작업(Task)의 기간을 나타냄
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.