일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- baekjoon
- FPGA
- UNIX
- 정보처리기사
- AMBA BUS
- boj
- 실기
- SQL
- 코딩테스트
- 자격증
- Zynq
- verilog
- 백준
- hdl
- Beakjoon
- HDLBits
- vitis
- 리눅스
- linux
- amba
- chip2chip
- verilog HDL
- 정처기
- Vivado
- C++
- axi
- java
- Backjoon
- Xilinx
- Bus
- Today
- Total
Hueestory
기출 위주 개념 본문
01과목
<애자일 모형>
- 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하며 개발과정을 진행
- 프로세스와 도구보다는 개인의 상호작용
- 방대한 문서보다는 실행되는 SW
- 계약 협상보다는 고객과 협업
- 계획을 따르기 보다는 변화에 반응
<Scrum; 애자일 모형 기법>
- 팀이 중심이 되어 개발의 효율성을 높인다
- 팀원 스스로가 스크럼 팀을 구성해야 하며, 개발 작업에 대한 모든 것을 스스로 해결 할 수 있어야 한다
- 스크럼 마스터 : 스크럼 프로세스를 따르고, 팀이 스크럼을 효과적으로 활용할 수 있도록 보장하는 역할
- 제품 백로그 : 스크럼 팀이 해결해야 하는 목록으로 소프트웨어 요구사항, 아키텍처 정의 등
- 스프린트 : 하나의 완성된 최종 결과물을 만들기 위해 실제 개발을 2~4주간 진행하는 과정
스프린트 백로그에 작성된 Task를 대상으로 작업 시간을 측정 후 담당 개발자에게 할당
- 속도 : 한 번의 스프린트에서 한 팀이 어느 정도의 제품 백로그를 감당할 수 있는지에 대한 추정치
<디자인 패턴>
- 객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴
<객체 지향 분석기법>
- Booch(부치) : 미시적·거시적 개발 프로세스를 모두 사용, 클래스·객체들을 분석 및 식별하고 클래스 속성과 연산을 정의
- Rumbaugh(럼바우) : 모든 소프트웨어 구성 요소를 그래픽 표기법을 이용해 모델링, 객체 모형→동적 모형→기능 모형
- Jacobson : 유스케이스를 강조하여 사용
- Wirfs-Brock : 분석과 설계 간의 구분이 없고 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행
<GoF(Gangs of Four) 디자인 패턴>
- 생성 : 추상팩토리, 빌더, 팩토리메서드, 프로토타입, 싱글톤
- 구조 : 어댑터, 브리지, 컴포지트, 데코레이터, 파사드, 플라이웨이트, 프록시
- 행위 : 책임 연쇄, 커맨드, 인터프리터, 중재자, 메멘토, 옵저버, 상태, 전략, 템플릿메서드, 방문자
<UML>
- 시스템 분석, 설계, 구현 등 시스템 개발 과정에서 시스템 개발자와 고객 또는 개발자 상호간의 의사소통을 위해 표준화된 객체지향 모델링 언어
- 정적 다이어그램 : 클래스, 객체, 패키지, 컴포넌트, 복합구조, 배치
- 동적 다이어그램 : 유스케이스, 상태, 활동, 시퀀스, 통신, 상호작용, 타이밍
<아키텍처 설계 과정>
- 설계 목표 설정→시스템 타입 결정→아키텍처 패턴 적용(스타일 적용 및 커스터마이즈)
→서브시스템 구체화(서브시스템의 기능, 인터페이스 동작 작성)→아키텍처 설계 검토
<유스케이스>
- 사용자와 다른 외부 시스템들이 개발될 시스템을 이용해 수행할 수 있는 기능을 사용자의 관점에서 표현
<액터>
- 유스케이스에서 시스템과 상호작용을 하는 요소
- 주액터 : 시스템을 사용함으로써 이득을 얻는 대상
- 부액터 : 주액터의 목적 달성을 위해 시스템에 서비스를 제공하는 외부 시스템
<유스케이스 구성 요소 간의 관계>
- 연관, 집합, 포함, 일반화, 의존, 실체화
<순차 다이어그램>
- 객체 간의 동적 상호작용을 시간 개념을 중심으로 모델링
- 일반적으로 다이어그램의 수직 방향이 시간의 흐름을 나타낸다
- 회귀 메시지, 제어블록 등으로 구성
<MOM>
- 다소 느리고 안정적인 응답을 필요로 할 때 사용
- 독립적인 애플리케이션을 하나의 통합된 시스템으로 묶는 역할
- 송신측과 수신측의 연결 시 메시지 큐를 활용
- 상이한 애플리케이션 간 통신을 비동기 방식으로 지원
<기능적 vs 비기능적 요구사항>
- 기능적 : 시스템이 실제로 어떻게 동작하는지에 관점을 둔 요구사항
- 비기능적 : 실제 수행에 보조적인 요구사항
<UI 설계 도구>
- 스토리보드 : 디자이너와 개발자가 최종적으로 참고하는 작업 지침서
- 목업 : 디자인, 사용방법 설명, 평가 등을 위해 실제와 유사하게 만든 정적인 모형, 구성요소를 배치할 뿐 구현되지는 않음
- 프로토타입 : 실제 구현된 것처럼 테스트가 가능한 동적인 모형
- 유스케이스 : 사용자 측면에서의 요구사항, 사용자의 요구사항을 들어주기 위해 수행할 내용을 기술
<UI의 종류>
- CLI(Command Line Interface) : 텍스트 형태 인터페이스
- GUI(Graphical User Interface) : 그래픽 환경 인터페이스
- NUI(Natural User Interface) : 사용자의 말이나 행동으로 기기를 조작하는 인터페이스
- VUI(Voice User Interface) : 사용자의 음성으로 기기를 조작하는 인터페이스
- OUI(Organic User Interface) : 모든 사물과 사용자 간의 상호작용을 위한 인터페이스
<익스트림 프로그래밍>
- 애자일 방법론 중 하나
- 소규모 개발 조직이 불확실하고 변경이 많은 요구를 접하였을 때 사용
- 수시로 발생하는 고객의 요구사항에 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화
- 상식적인 원리와 경험을 최대한 끌어올리는 방법
- 구체적인 실천 방법을 정의하고 있으며, 개발 문서 보다는 소스코드에 중점을 둔다
<FEP(Front-End Processor)>
- 입력되는 데이터를 컴퓨터의 프로세스가 처리하기 전에 미리 처리하여 프로세서가 차지하는 시간을 줄여주는 것
<클래스 설계 원칙>
- 단일 책임원칙 : 하나의 객체는 하나의 동작만의 책임을 가진다
- 개방-폐쇄의 원칙 : 클래스는 확장에 대해 열려 있어야 하며 변경에 대해 닫혀 있어야 한다
- 리스코프 교체의 원칙 : 특정 메소드가 상위 타입을 인자로 사용할 때, 그 타입의 하위 타입도 문제 없이 작동해야 한다
- 의존관계 역전의 원칙 : 상위 계층이 하위 계층에 의존하는 관계를 역전하여 상위 계층이 하위 계층의 구현으로부터 독립
02과목
<트리의 운행법>
전위 운행(Pre Order) : Root→Left→Right
중위 운행(In Order) : Left→Root→Right
후위 운행(Post Order) : Left→Right→Root
<배열의 정렬>
- 선택 정렬(Selection Sort) : 배열 내 최소값을 찾은 후 정렬 되지 않은 맨 앞 값과 교환을 하며 정렬하는 알고리즘
- 버블 정렬(Bubble Sort) : 왼쪽부터 두 개씩 비교하여 자리를 바꾸는 정렬 알고리즘
- 삽입 정렬(Insert Sort) : 한 개의 값을 추출한 다음 앞쪽으로 비교해서 본인의 자리에 알맞게 찾아가게 하는 알고리즘
- 퀵 정렬(Quick Sort) : 분할 정복을 기반으로 매우 빠른 수행 속도의 정렬 알고리즘
- 병합 정렬(Quick Sort) : 분할 정복을 기반으로 리스트를 1 이하인 상태까지 절반으로 자른 다음 재귀적으로 합병 정렬을 하는 알고리즘
<JSON>
- 속성-값 쌍으로 이루어진 데이터 오브젝트를 전달하기 위해 사용하는 개방형 표준 포맷
- AJAX에서 많이 사용되고 XML을 대체하는 주요 데이터 포맷이다
- 언어 독립형 데이터 포맷으로 다양한 프로그래밍 언어에서 사용되고 있다
<YAML>
- JSON과 같이 사람이 읽기 쉬운 형태의 데이터 표현 포맷
- XML과 문법적으로 유사하며, 주석을 사용할 수 있고 개행, 공백으로 블록을 인식한다
- 태그를 사용하지 않고 공백 위주로 데이터를 구분하므로 한 줄로 작성할 수 없다
<XML>
- HTML의 단점을 보완하고 SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어
<AJAX>
- 자바스크림트를 사용하여 웹 서버와 클라이언트 간 비동기적으로 XML 데이터를 교환하고 조작하기 위한 웹 기술
<NS Chart>
- 논리의 기술에 중점을 두고 도형을 이용한 표현 방법
- 이해하기 쉽고 코드 변환이 용이하며 연속, 선택, 반복 등의 제어 논리 구조를 표현한다
- 3가지 기본구조만으로 논리를 표현하며 화살표와 GOTO를 사용하지 않는다
<선형 검색 vs 이진 검색>
- 선형 검색 : 검색을 수행하기 전 처음부터 하나씩 순서대로 비교하며 원하는 값을 찾아내는 검색
- 이진 검색 : 검색을 수행하기 전 반드시 데이터의 집합이 정렬되어 있어야 한다
<통합 테스트>
- 시스템을 구성하는 모듈의 인터페이스와 결합을 테스트하는 것
1. 하향식 통합 테스트
- 상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트
- 깊이 우선 통합법, 넓이 우선 통합법 사용
- 테스트 초기부터 사용자에게 시스템 구조를 보여줄 수 있으며, 상위 모듈에는 테스트 케이스를 사용하기 어렵다
2. 상향식 통합 테스트
- 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트
- 가장 하위 단계의 모듈부터 통합 및 테스트가 수행되므로 스텁(Stub) 대신 클러스터(Cluster)가 필요하다
<테스트 케이스>
- 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 테스트 항목에 대한 명세서
- 테스트 목표와 방법을 설정한 후 주로 시스템 설계 단계에서 작성
- 프로그램에 결함이 있어도 입력에 대해 정상적인 결과를 낼 수 있기 때문에 결함을 검사할 수 있는 테스트 케이스가 필요
- 테스트 오라클 : 테스트 케이스 실행이 통과되었는지를 판단하기 위한 기준
<DRM(Digital Rights Management)>
- 디지털 콘텐츠의 지적 재산권 보호, 관리 기능 및 안전한 유통과 배포를 보장하는 솔루션
- 디지털 콘텐츠와 디바이스의 사용을 제한하기 위해 하드웨어 제조업자, 저작권자 등이 사용하는 접근 제어 기술
- 디지털 미디어의 생명 주기 동안 발생하는 사용 권한 관리, 과금, 유통 단계를 관리한다
- 클리어링 하우스 : 사용자에게 콘텐츠 라이센스를 발급하고 권한을 부여해주는 시스템
<화이트박스 테스트 vs 블랙박스 테스트>
1. 화이트 박스 테스트
- 모듈의 원시 코드를 오픈시킨 상태에서 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계
- 이해를 위해 논리 흐름도를 이용할 수 있다
- 테스트 데이터를 이용해 실제 프로그램을 실행함으로써 오류를 찾는 동적 테스트이다
- 테스트 데이터를 선택하기 위하여 검증기준을 정한다
2. 블랙박스 테스트
- 소프트웨어가 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증하는 테스트
- 프로그램의 구조를 고려하지 않기 때문에 테스트 케이스는 프로그램 또는 모듈의 요구나 명세를 기초로 결정한다
- 소프트웨어 인터페이스에 실시하며, 테스트 과정의 후반부에 적용한다
<워크스루 vs 인스펙션>
- 워크스루 : 요구사항 명세서 작성자를 포함하여 사전 검토한 후 짧은 검토 회의를 통해 결함을 발견
- 인스펙션 : 요구사항 명세서 작성자를 제외한 다른 검토 전문가들이 요구사항 명세서를 확인하면서 결함을 발견
<워크스루의 특성>
- 사용사례를 확장하여 명세하거나 설계 다이어그램, 원시코드, 테스트 케이스 등에 적용할 수 있다
- 복잡한 알고리즘, 반복, 실시간 동작, 병행 처리와 같은 기능이나 동작을 이해하는데에 사용한다
- 단순한 테스트 케이스를 이용하여 프로덕트를 수작업으로 수행해 보는 것이다
<인스펙션 과정>
<RCS(Revision Control System)>
- 다수의 사용자가 동시에 파일 수정을 할 수 없도록 파일 잠금 방식으로 버전을 관리하는 소프트웨어 버전 관리 도구
- 다른 방향으로 진행된 개발 결과를 합치거나 변경 내용을 추적할 수 있다
<RPC(Remote Procedure Call)>
- 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 리모트의 함수나 프로시저를 실행 할 수 있게 해준다
<Refactoring>
- 소프트웨어를 보다 쉽게 이해할 수 있고 적은 비용으로 수정할 수 있도록 외부 동작의 변화 없이 내부구조를 변경
<ISO/IEC 25000>
- 소프트웨어 품질 평가를 위한 소프트웨어 품질평가 통합모델 표준이다
- System and Software Quality Requirements and Evaluation으로 줄여서 SQuaRE라고도 한다
- 기존 소프트웨어 품질 평가 모델과 소프트웨어 평가 절차 모델인 ISO/IEC 9126과 ISO/IEC 14598을 통합했다
<Unit Test>
- 코딩 직후 소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트에 초점을 맞춰 진행하는 테스트
- 구현 단계에서 각 모듈의 개발이 완료된 후 개발자가 명세서의 내용대로 정확히 구현되었는지 테스트한다
- 모듈 내부의 구조를 구체적으로 볼 수 있는 구조적 테스트를 주로 시행한다
- 테스트 드라이버 : 필요 데이터를 인자를 통해 넘겨주고 테스트 완료 후 그 결과값을 받는 역할을 하는 가상의 모듈
- 테스트 스텁 : 인자를 통해 받은 값을 모듈에 넘겨주는 역할
<단위 테스트 도구>
- CppUnit : C++ 프로그래밍 언어용 단위 테스트 도구
- JUnit : 자바 프로그래밍 언어용 단위 테스트 도구
- HttpUnit : 웹 브라우저 없이 웹 사이트 테스트를 수행하는 오픈 소스 소프트웨어 테스트 프레임워크
<소프트웨어 재공학 활동>
- Analysis : 기존 소프트웨어를 분석하여 재공학 대상을 선정하는 것
- Migration : 기존 소프트웨어를 다른 운영체제나 하드웨어 환경에서 사용할 수 있도록 변환하는 작업
- Restructuring : 기존 소프트웨어를 향상시키기 위하여 코드를 재구성하는 작업(기능과 외적 동작은 변함 없음)
- Reverse Engineering : 기존 소프트웨어를 분석하여 소스코드를 얻어내는 작업
03과목
<데이터베이스 설계 단계>
- 개념→논리→물리
1. 개념적 설계
- 트랜잭션 모델링, 독립적인 개념 스키마 모델링, 개념 스키마 설계, E-R Diagram
1.1 트랜잭션 모델링
- 트랜잭션을 개념적 시스템 독립적으로 정의
- 입출력 기능, 형태만 정의한다
- 검색, 갱신, 검색+갱신(혼합)
2. 논리적 설계
- 트랜잭션 인터페이스 설계, DBMS에 맞는 논리 스키마 설계, 테이블 설계, 논리적 매핑, 스키마 평가 및 정제
3. 물리적 설계
- 레코드 집중의 분석·설계, 저장 레코드 양식 설계, 저장 구조 및 액세스 경로 설정
3.1 저장 레코드 양식 설계
- 데이터 타입, 데이터 값의 분포, 접근 빈도를 고려
<E-R Diagram>
<데이터베이스 인덱스>
- 문헌의 색인, 사전과 같이 데이터를 쉽고 빠르게 찾을 수 있도록 만든 데이터 구조
- 테이블에 붙여진 색인으로 데이터 검색 시 처리 속도 향상에 도움이 된다
- 대부분의 데이터베이스에서 테이블을 삭제하면 인덱스도 함께 삭제된다
- CREATE : 인덱스 생성
- DROP : 인덱스 삭제
<데이터베이스 병행제어>
- 여러 사용자들의 데이터베이스 공동 사용을 최대화
- 사용자의 응답 시간 최소화
- 데이터베이스 시스템의 활용도 최대화
- 데이터베이스 일관성 유지
<데이터 사전>
- 시스템 자신이 필요로 하는 여러 객체에 대한 정보를 포함하고 있는 시스템 데이터베이스
- 일반 사용자는 생성, 유지 및 수정할 수 없다
- 메타데이터 : 데이터베이스에 대한 데이터
- 데이터 디렉토리 : 데이터 사전에 있는 데이터에 실제로 접근하는 데 필요한 위치 정보
<분산 데이터베이스>
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 여러 개의 컴퓨터 사이트에 분산되어 있다
- 데이터베이스의 설계가 비교적 어렵고, 개발 비용과 처리 비용이 증가한다는 단점이 있다
- 분산 처리기, 분산 데이터베이스, 통신 네트워크, 분산 데이터베이스 등이 있다
<분산 데이터베이스의 구조>
- 전역, 분할, 할당, 지역 스키마
<분산 데이터베이스의 목표>
- 위치 투명성 : 하드웨어와 소프트웨어의 물리적 위치를 사용자가 알 필요는 없다
- 중복 투명성 : 사용자에게 통지할 필요 없이 시스템 안의 파일들과 자원들의 부가적인 복사를 자유롭게 할 수 있다
- 병행 투명성 : 다중 사용자들이 자원들을 자동으로 공유할 수 있다
- 장애 투명성 : 사용자들은 시스템의 어느 위치에서 장애가 발생했는지 알 필요는 없다
<관계해석>
- ∃ : 존재한다(there Exist)
- ∈ : t가 r에 속함( t ∈ r )
- ∀ : 모든 것에 대하여(for All)
- ⊂ : 합집합
<뷰>
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 가상 테이블
- 물리적으로 구현되어 있지 않고 논리적으로만 존재하며 삽입, 갱신, 삭제 연산 시 제약이 따른다
- 기본 테이블을 만드는 것처럼 CREATE VIEW를 사용하여 만들 수 있다
- 다른 뷰를 기반으로 새로운 뷰를 만들 수 있다
- V_1을 이용하여 V_2를 정의하였을 때, V_1을 삭제하면 V_2도 함께 삭제된다
<Degree vs Cardinality>
- Degree(차수, 열) : 속성의 수
- Cardinality(기수, 행) : 튜플의 수
<데이터 모델의 구성 요소>
- 구조(Structure) : 논리적인 개체 타입들 간의 관계, 데이터 구조 및 정적 성질을 표현
- 연산(Operation) : 실제 데이터를 처리하는 작업에 대한 명세, 조작하는 기본 도구
- 제약 조건(Constraint) : DB에 저장될 수 있는 실제 데이터의 논리적인 제약 조건
<무결성 제약 조건>
- 개체 무결성 : 각 릴레이션의 기본키를 구성하는 속성은 NULL 값이나 중복 값을 가질 수 없다
- 참조 무결성 : 외래키 값은 NULL이거나 참조하는 릴레이션의 기본키 값과 동일해야 한다
- 도메인 무결성 : 속성들의 값은 정의된 도메인에 속한 값이어야 한다
- 고유 무결성 : 특정 속성에 대해 고유한 값을 가지도록 조건이 주어진 경우, 각 튜플이 가지는 속성 값은 서로 달라야 한다
- NULL 무결성 : 릴레이션의 특정 속성 값은 NULL이 될 수 없다
- 키 무결성 : 각 릴레이션은 최소한 한 개 이상의 키가 존재해야 한다
<정규화 과정>
- 도부이결다조
- 비정규 릴레이션 : 시작점
- 1NF : 모든 도메인이 원자 값으로만 구성
- 2NF : 기본키가 아닌 속성이 기본키에 대한 완전 함수적 종속을 만족, 부분적 함수 종속을 제거한 정규형
- 3NF : 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수 종속 관계를 만족하지 않는 정규형(A→B, B→C, A→C)
- BCNF : 모든 결정자가 후보키인 정규형, 종속성 보존 X
- 4NF : 다치 종속이 성립하는 경우, R의 모든 속성이 A에 함수적 종속 관계를 만족
- 5NF : 모든 조인 종속이 R의 후보키를 통해서만 성립되는 정규형
<키의 종류>
1. 후보키(Candidate Key)
- 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 유일성 O 최소성 O
2. 기본키(Primary Key)
- 후보키 중에서 선택된 키, 후보키의 성질을 가진다
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있다
- 외래키로 참조될 수 있으며, 검색할 때 반드시 필요한 것은 아니다
- NULL값 X 중복된 값 X
3. 슈퍼키(Super Key)
- 속성들의 집합으로 구성된 키
- 유일성 O 최소성 X
4. 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
<릴레이션의 특성>
- 튜플의 유일성 : 모든 튜플은 서로 다른 값을 갖는다
- 튜플의 무순서성 : 하나의 릴레이션에 속한 튜플에 순서는 없다
- 속성의 원자성 : 속성 값은 원자 값을 가진다
- 속성의 무순서성 : 각 속성은 릴레이션 내에서 유일한 이름을 가지며, 순서는 큰 의미가 없다
<트랜잭션의 특성>
- 원자성(Atomicity) : 모두 반영되도록 완료되거나 전혀 반영되지 않도록 복구 되어야 한다
- 일관성(Consistency) : 시스템의 고정 요소는 트랜잭션 수행 전·후가 같아야 한다
- 격리성(Isolation) : 트랜잭션 실행 시 다른 트랜잭션의 간섭을 받지 않아야 한다
- 영속성(Durability) : 트랜잭션의 완료 결과는 데이터베이스에 영구히 기억된다
<트랜잭션의 상태>
- Partially Committed : 마지막 연산이 실행된 직후, 모든 연산의 처리는 끝났지만 데이터베이스에 반영하지 않은 상태
- Committed : 트랜잭션이 실행을 성공적으로 완료하여 Commit 연산을 수행한 상태
<SQL>
- ASC(Ascending) : 오름차순
- DESC(Descending) : 내림차순
- BETWEEN : ~이상 & ~이하
- UNION : 각 쿼리의 모든 결과에서 중복을 제거한 합집합
- UNION ALL : 각 쿼리의 모든 결과를 포함한 합집합
<SQL의 기능에 따른 분류>
1. DCL(Data Control Language) : 수행 완료여부 + 사용 권한
- COMMIT : 명령어로 수행된 결과를 실제 물리적 디스크로 저장하고, 명령어로 수행이 성공적으로 완료됐음을 선언한다
- ROLLBACK : 명령어로 수행이 실패했음을 알리고, 수행된 결과를 원상복구(철회)시킨다
- GRANT : 데이터베이스 사용자에게 사용 권한을 부여한다
- REVOKE : 데이터베이스 사용자로부터 사용 권한을 회수한다
2. DDL(Data Definition Language) : 테이블
- CREATE : 스키마, 도메인, 테이블, 뷰, 인덱스를 정의
- DROP : 스키마, 도메인, 테이블, 뷰, 인덱스를 삭제
- ALTER : 테이블에 대한 정의를 변경
3. DML(Data Manipulation Language) : 튜플
- SELECT : 테이블에서 조건에 맞는 튜플을 검색
- INSERT : 테이블에 새로운 튜플을 삽입
- DELETE : 테이블에서 조건에 맞는 튜플을 삭제
- UPDATE : 테이블에서 조건에 맞는 튜플의 내용 변경
04과목
<IP, TCP, UDP>
1. IP
- 네트워크(3) 계층 프로토콜
- 비연결형, 비신뢰성 프로토콜
- 주로 주소를 지정하고 경로를 설정한다
- 체크섬 기능으로 헤더 체크섬만 제공하며, 데이터 체크섬은 제공하지 않는다
- 패킷을 분할, 병합하는 기능을 수행하기도 한다
- Best Effort 원칙에 따른 전송 기능을 제공한다
2. TCP
- 전송(4) 계층 프로토콜
- 오류가 발생하면 해당 정보를 재전송할 수 있는 신뢰성 프로토콜
3. UDP
- 전송(4) 계층 프로토콜
- 비연결형, 비신뢰성 프로토콜
- 수신된 데이터의 순서 재조정 기능 및 복구 기능을 지원하지 않는다
- 흐름 제어와 순서 제어가 없어 전송 속도가 빠르다
- 단순한 헤더 구조로 오버헤드가 적다
<IPv4 vs IPv6>
1. IPv4
- 32비트 주소(2^32개)
- 유니캐스트, 멀티캐스트, 브로드캐스트 사용
2. IPv6
- 128비트 주소(2^128개)
- 헤더는 40바이트(320비트)로 고정
- 16비트씩 8부분의 16진수로 표시
- 인증성, 기밀성, 무결성 지원
- 확장기능을 통해 보안기능을 제공
- 등급별, 서비스별로 패킷을 구분할 수 있어 품질보장이 용이
- 유니캐스트, 애니캐스트, 멀티캐스트 사용
<IP 프로토콜 필드>
- Header Length : IP 프로토콜의 헤더 길이를 32비트 워드 단위로 표시한다
- Packet Length : IP 헤더 및 데이터를 포함한 패킷 전체의 길이를 나타내며 최대 크기는 2^16 - 1
- Time To Live : 송신 호스트가 패킷을 전송하기 전 네트워크에서 생존할 수 있는 시간을 지정한 것
- Version Number : IP 프로토콜의 버전 번호
<임계 구역 접근 알고리즘>
1. Dekker
- 프로세스가 두개일 때 상호 배제를 보장
- Flag와 Turn 변수를 사용하여 조정
2. Peterson
- 프로세스가 두개일 때 상호 배제를 보장
- Dekker와 유사하지만 상대방에게 진입 기회를 양보하며, 더 간단하게 구현되었다
3. Lamport
- 프로세스 n개의 상호 배제 문제를 해결한 알고리즘
- 프로세스에게 고유한 번호를 부여하고, 번호를 기준으로 우선순위를 정하여 먼저 임계구역에 진입하도록 구현
4. Semaphore
- 공유된 자원의 데이터 혹은 임계영역 등에 따라 여러 프로세스 또는 스레드가 접근하는 것을 막아준다
<빌드 도구>
- Ant, Maven, Gradle : 빌드 도구
- Kerberos : 컴퓨터 네트워크 인증 암호화 프로토콜
<결합도>
- 모듈 간의 공유되는 정도
- 높을 수록 좋지 않다
- 강 <내용→공통→외부→제어→스탬프→자료> 약 / 내공부 제스자
- 내용 결합도 : 한 모듈이 내부 기능 및 내부 자료를 직접 참조하거나 수정할 때
- 공통 결합도 : 파라미터가 아닌 모듈 밖에 선언된 전역변수를 참조하고 갱신하며 상호작용
- 외부 결합도 : 외부의 다른 모듈에서 참조할 때 결합도
- 제어 결합도 : 제어하기 위한 목적, 권리 전도현상
- 스탬프 결합도 : 모듈 간 자료 구조 전달될 때 변화가 생기면 그걸 조회하는 모듈에 영향
- 자료 결합도 : 자료요소로만 구성, 처리값을 다시 돌려줌
<응집도>
- 모듈 내부의 공유되는 정도
- 높을 수록 좋다
- 약 <우연적→논리적→시간적→절차적→통신적→순차적→기능적> 강 / 우논시절 통순기
- 우연적 응집도 : 서로 관련x
- 논리적 응집도 : 유사 성격이나 특정 형태로 분리되는 처리요소들로 모듈 형성
- 시간적 응집도 : 특정 시간에 처리되는 몇 개 기능을 모아 모듈 구성
- 절차적 응집도 : 모듈안의 구성 요소들이 그 기능을 순차적으로 수행할 경우
- 교환적 응집도 : 동일 입출력 사용 시 서로 다른 기능을 수행하는 구성요소가 모였을 경우
- 순차적 응집도 : 활동을 통해 나온 출력 데이터를 그 다음 활동 입력데이터로 활용하는 경우
- 기능적 응집도 : 모든 기능 요소가 단일 문제와 연관되어 수행될 경우
<내부단편화 알고리즘>
- First Fit : 들어갈 수 있는 첫 번째 공간에 프로그램 적재
- Best Fit : 내부 단편화가 가장 적게 남는 공간에 프로그램 적재
- Worst Fit : 내부 단편화가 가장 많이 남는 공간에 프로그램 적재
<Python>
- 조건문 : if, elif, else (else if X)
- 리스트 : 순서 O, 가변, [1, 2, 3]
- 튜플 : 순서 O, 불변, (1, 2, 3)
- 세트 : 순서 X, 중복X, {1, 2, 3}
- 사전 : 순서 X, 키-밸류, {'a':1, 'b':2, 'c':3}
<IGP vs EGP>
- IGP : 게이트 웨이 내부 라우팅에 사용되는 프로토콜로 RIP, OSPF 등이 있다
- EGP : 게이트 웨이 간 라우팅에 사용되는 프로토콜
<RIP 라우팅 프로토콜>
- Bellman-Ford 알고리즘을 사용하는 거리 벡터 라우팅 프로토콜
- IGP에 해당
- 최적의 경로 산출을 위해 홉만을 고려하고, 홉 카운트를 15홉 이하로 제한한다
<스케줄링 알고리즘>
- FCFS : 준비 상태 큐에 도착한 순서대로 CPU를 할당
- SJF : 실행 시간이 짧은 프로세스에게 먼저 CPU를 할당
- HRN : SJF의 약점을 보완, 우선 순위 = (대기 시간 + 서비스 시간) / 서비스 시간
<UNIX>
- 주로 서버용 컴퓨터에서 사용, Time Sharing System을 위해 설계된 대화식 운영체제
- Multi-User, Multi-Tasking 모두 지원
- C언어로 사용되어 이식성이 높고 장치간 호환성이 높다
- 트리 구조의 파일 시스템을 갖는다
- 하나 이상의 작업에 대해 백그라운드에서 수행이 가능하다
<Shell>
- 사용자 명령을 해석하고 커널로 전달하는 기능을 제공
- 반복적인 명령 프로그램을 만드는 프로그래밍 기능을 제공
- 초기화 파일을 이용해 사용자 환경을 설정
<Kernel>
- 쉘 프로그램 실행을 위해 프로세스와 메모리를 관리
- 프로그램과 하드웨어 간의 인터페이스 역할
- 컴퓨터가 부팅될 떄 주기억장치에 적재된 후 상주
<스레드 운영 방식>
1. 커널 수준 스레드
- 스레드 패키지를 운영체제 커널 자체에서 관리
- 각 응용 프로그램들은 운영체제의 영향을 많이 받으므로 이식성이 낮다
- 한 프로세스가 운영체제를 호출할 때 전체 프로세스가 대기할 필요가 없으므로 시스템 성능을 높일 수 있다
- 동시에 여러 스레드가 커널에 접근할 수 있으므로 여러 스레드가 시스템 호출을 동시에 사용할 수 있다
- 각 스레드를 개별적으로 관리할 수 있으므로 스레드의 독립적인 스케줄링이 가능하다
2. 사용자 수준 스레드
- 스레스 패키지를 사용자 영역에 두고 운영체제 커널은 단일 프로세스만을 관리한다
- 스레드를 운영하지 않는 운영체제에서 실행할 수 있도록 이식성이 높다
- 커널 모드로의 전환 없이 스레드 교환이 가능하므로 오버헤드가 줄어든다
- 스레드 패키지를 런타임 시스템에서 운영하며, 운영체제 입장에서 런타임 시스템을 하나의 프로세스로 인식한다
05과목
<애자일 방법론의 특성>
- 소프트웨어 개발에 참여하는 구성원들 간의 의사소통 중시
- 환경 변화에 대한 즉시 대응
- 프로젝트 상황에 따른 주기적 조정
<프레임워크>
- 개발해야 할 애플리케이션의 일부분이 이미 내장된 클래스 라이브러리로 구현되어 이를 확장 및 이용하는 것
- JAVA 기반의 대표적인 프레임워크로 Spring이 있다
<접근 통제 기술>
1. 강제 접근 통제(MAC; Mandatory Access Control)
- 데이터 소유자가 미리 정해진 자원의 보안 레벨과 사용자에게 허락된 접근 권한 비교
읽기 | 수정 | 등록 | |
높은 자료 | X | X | X |
같은 자료 | O | O | O |
낮은 자료 | O | X | X |
2. 임의 접근 통제(DAC; Discretionary Access Control)
- 시스템이 자원에 대한 접근을 사용자나 그룹의 신원에 따라 제한
3. 역할 기반 접근 통제(RBAC; Role Based Access Control)
- 중앙관리자가 사용자의 역할에 따라 접근 권한을 부여
<소프트웨어 정보보안 3요소>
- 무결성 : 인가된 사용자에 대해서만 자원 수정이 가능하며 전송중인 정보는 수정되지 않는다
- 기밀성 : 인가된 사용자에 대해서만 자원 접근이 가능하다
- 가용성 : 인가된 사용자는 가지고 있는 권한 범위 내에서 언제든 자원 접근이 가능하다
<소프트웨어 개발 프레임워크의 특성>
- 이미 정해진 코드를 호출해 사용하고 자체적인 흐름을 가지고 있다
- 반제품 상태의 제품을 토대로 도메인별로 필요한 서비스 컴포넌트를 사용해 재사용성 확대와 성능을 보장 받게 한다
- 설계 관점에서 개발 방식의 패턴화시키기 위해 만들어진 소프트웨어 디자인 패턴을 반제품 소프트웨어 상태로 집적화
- IoC(Inversion of Control) : 프레임워크의 동작 원리를 그 제어 흐름의 일반적인 프로그램 흐름과 반대로 동작한다는 뜻
<TCP Wrapper>
- 어떤 외부 컴퓨터가 접속되면 접속 인가 여부를 점검해서 인가된 경우에만 접속을 허용하는 접근제어 방식
<산정 기법>
1. COCOMO
- 원시 프로그램 규모(LOC)에 의한 산정 기법
- 프로젝트를 완성하는데에 필요한 Man-Month로 산정 결과를 나타낸다
- 비교적 작은 규모의 프로젝트 기록을 통계 분석하여 얻은 결과를 반영한 모델
- 중소 규모 소프트웨어 프로젝트 비용 추정에 적합
- 개발 유형에 따라 Organic, Semi-Detached, Embedded로 구분
1.1 개발 유형에 따른 분류
- 조직형(Organic) : 5만 라인 이하
- 반분리형(Semi-Detached) : 30만 라인 이하
- 내장형(Embedded) : 30만 라인 이상
<HSM(cloud-based Hardware Security Module)>
- 클라우드 기반 암호화 키 생성, 처리, 저장 등을 하는 보안 기기
- 국내에서는 공인인증제 폐지와 전자서명법 개정을 추진하면서 클라우드 HSM 용어가 자주 등장하였다
- 클라우드에 인증서를 저장하므로 기존 HSM 기기나 휴대폰에 인증서를 저장해 다니지 않아도 된다
- 하드웨어적으로 구현되므로 소프트웨어식 암호 기술에 내재된 보안 취약점을 해결할 수 있다
<악성코드, 공격기법 유형>
1. Adware
- 특정 소프트웨어를 실행할 때 또는 자동으로 활성화되는 광고 프로그램
2. Rogue Ware
- 사용자가 컴퓨터에 바이러스가 있다고 믿게 하고 컴퓨터에 실제로 악성 프로그램을 설치토록 한다
- 또는 공포심을 통해 가짜 악성 프로그램 제거 도구에 대한 비용을 지불하도록 설득한다
3. Reflection Attack
- 송신자가 생성한 메시지를 가로챈 공격자가 그 메시지를 다시 송신 자에게 재전송하여 접근 권한을 얻는 방식
4. Worm
- 다른 컴퓨터의 취약점을 이용하여 스스로 전파하거나 메일로 전파되며 스스로를 증식하는 악성코드
5. Session Hijacking
- 컴퓨터 시스템의 정보나 서비스에 무단으로 접근하이 위해 유효한 컴퓨터 세션을 이용하는 것
6. Piggyback Attack
- 공격자가 다른 사용자의 연결에서 계정을 사용하지 않는 비활성 기간을 이용해 시스템에 접근하는 방식
7. XSS(Cross Site Scripting)
- 웹사이트에 악성 스크립트를 주입해 사용자의 브라우저에 스크립트가 실행되도록 하여 세션을 가로채는 방식
8. Ping of Death
- 허용범위 이상의 ICMP 패킷을 전송하여 대상 시스템의 네트워크를 마비시키는 방식
<인증의 유형>
- 지식 : 본인이 알고 있는 것(패스워드, PIN)
- 소유 : 본인이 가지고 있는 것(토큰, 스마트카드)
- 존재 : 본인을 나타내는 것(홍채, 지문)
- 행위 : 본인이 하는 것(서명, 움직임, 음성)
<대칭 vs 비대칭 암호 알고리즘>
1. 대칭 암호 알고리즘
- 비교적 실행 속도가 빠르기 때문에 다양한 암호의 핵심 함수로 사용된다
- 비밀키 전달이 필요하기 때문에 키를 전달하는 중 키가 탈취될 수 있다는 문제가 있다
2. 비대칭 암호 알고리즘
- 자신만이 보관하는 비밀키를 이용하여 인증, 전자서명 등에 이용된다
- AES, IDEA 등
<BcN(Broadband Convergence Network)>
- 음성, 데이터, 유·무선 등 통신, 방송, 인터넷이 융합된 품질 보장형 광대역 멀티미디어 서비스를 공간에 제한 없이 실시간으로 이용할 수 있는 차세대 네트워크 환경
<Zing>
- 기기를 키오스크에 갖다 대면 원하는 데이터를 바로 가져올 수 있는 기술
- 10cm 이내 근접 거리에서 기가급 속도의 데이터 전송이 가능한 NFC 기술
<이외 IT 기술 용어>
1. SDN(Software Defined Networking)
- 네트워크를 제어부, 데이터 전달부로 분리하여 네트워크 관리자가 보다 효율적으로 제어, 관리할 수 있는 기술
- 네트워크 장비의 펌웨어 업그레이드를 통해 사용자의 직접적인 데이터 전송 경로 관리 가능
- 기존 네트워크에는 영향을 주지 않으면서 특정 서비스의 전송 경로 수정을 통해 인터넷 문제를 처리할 수 있다
2. NFS(Network File System)
- 네트워크상에서 공유되는 파일 시스템
- 다른 원격 호스트의 파일 시스템을 로컬 디스크에 접근하듯 간단하게 접근하여 자신의 디렉토리처럼 사용한다
3. Network Mapper
- 네트워크 보안을 위한 유틸리티
- 물리적 연결과 어떤 서버와 운영체제가 작동 중인지 등을 조사한다
4. AOE(Activity On Edge) Network
- 어떤 프로젝트를 마치기까지 수행되는 작업의 각 단계(상태)를 그래프의 정점으로 표현하고, 작업 하나가 완료되어 다음 단계로 넘어가는 시간을 그래프의 간선으로 나타낸 방향 그래프
'challenge > 정보처리기사 필기(完)' 카테고리의 다른 글
정보처리기사 필기 합격 (0) | 2024.08.08 |
---|---|
마무리 요약 (0) | 2024.07.13 |
정처기 요약 (0) | 2024.07.05 |
정처기 기출 (계속 추가) (0) | 2024.07.03 |