IT자격증

2024 정보처리기사 실기 요약

JDonly 2024. 10. 12. 21:50

[1장. 요구사항 확인]

< Section 001. 소프트웨어 생명주기 >

* 폭포수 모형

- 각 단계를 확실히 매듭짓고 다음단계를 진행

- 고전적 생명주기 모형

* 프로토타입 모형

- 실제 개발될 소프트웨어에 대한 견본품을 만들어 최종결과물을 예측

* 나선형모형(점진적 모형) - By.보헴

- 여러번의 소프트웨어 개발과정을 거쳐 점진적으로 완벽한 최종 소프트웨어를 개발하는 모형

- 누락되거나 추가된 요구사항 첨가 가능. 유지보수과정 필요없음.

* 애자일모형

- 고객 요구사항에 대응할 수 있도록 일정한 주기를 반복하며 개발

- 폭포수모형과 대조

 

< Section 003. XP(eXtreme Programming)기법 >

: 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상시키는 방법

* 핵심 5가치

- 의사소통 / 단순성 / 용기 / 존중 / 피드백

 

< Section 005. 요구사항 정의 >

* 기능 요구사항 : 기능이나 수행과 관련된 요구사항

* 비기능 요구사항 : 품질이나 제약사항과 관련된 요구사항

: 시스템 장비 구성, 성능, 인터페이스, 테스트, 보안, 품질 요구사항 / 제약사항 /프로젝트 관리,자원 요구사항

* 사용자 요구사항 : 사용자 관점에서 본 시스템이 제공해야 할 요구사항

 

< Section 006. 요구사항 개발 프로세스 >

: 도출 - 분석 - 명세 - 확인 (출.석.명.확)

 

< Section 009. UML(Unified Modeling Language) 개요 > 

* 구성요소 : 사물, 관계, 다이어그램 

 

< Section 010. UML(Unified Modeling Language) 관계 > 56p (그림)

: 연관, 집합, 포함, 일반화, 의존, 실체화 관계 

 

< Section 011. UML(Unified Modeling Language) 다이어그램 > 

* 정적 모델링 - 구조적 다이어그램 

- 클래스 다이어그램 / 객체 다이어그램(럼바우 객체모델링) / 컴포넌트 다이어그램 / 배치 다이어그램 / 패키지 다이어그램

* 동적 모델링 - 행위 다이어그램

- 유스케이스 다이어그램(기능 모델링에서 사용) / 순차 다이어그램(상호작용하는 시스템이나 객체들이 주고받는 메시지를 표현함) / 상태 다이어그램(럼바우 동적모델링에 활용됨) / 활동 다이어그램 

* 스테레오타입 : UML 기본 기능 외에 추가적인 기능을 표현 (ex. "<<include>>")

 

< Section 020. S/W공학의 발전적 추세 > 

* 소프트웨어 재사용 : 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용

* 소프트웨어 재공학 : 기존 시스템을 이용해 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능 향상

* CASE(Computer Aided Software Engineering)

: 소프트웨어 개발과정에서 사용되는 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것 

 

< Section 022. 비용산정기법 - 상향식 > - 문제 96p

* LOC (원시코드 라인 수, source Line Of Code)

: 원시 코드 라인 수의 비관치 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정

: 예측치 = (낙관치 + (4*기대치) + 비관치) / 6

: 낙관치(가장 적게 측정된 라인 수), 기대치(평균 라인 수), 비관치(가장 많이 측정된 라인 수)

* 개발 단계별 인월 수 : LOC보완(더정확). 노력을 생명 주기의 각 단계별로 산정

 

< Section 023. 수학적 산정 기법 >

* COCOMO 모형 : LOC에 의한 비용 산정 기법 / 노력으로 나타냄 / 보헴이 제안.

- 조직형 : 기관 내부에서 개발된 중소 규모의 소프트웨어 / 5만 라인 이하의 소프트웨어 개발

- 반분리형 : 조직형과 내장형의 중간 / 30만 라인 이하의 소프트웨어 개발

- 내장형 : 초대형 규모 / 30만 라인 이상의 소프트웨어 개발

* Putnam 모형 : 소프트웨어 생명주기의 전 과정 동안에 사용될 노력의 분포를 예상 / 대형 프로젝트 / 개발기간이 늘수록 프로젝트 적용인원의 노력 감소

* 기능점수(FP)모형 : 기능점수를 구한 후 비용 산정 / 알브레히트가 제안

 

< Section 024. 프로젝트 일정 계획 >

* PERT : 프로젝트에 필요한 전체 작업의 상호관계를 표시하는 네트워크 / 개발 경험이 없어 소요 예측이 어려운 프로젝트 일정계획에 사용

* CPM(임계경로) : 작업에 필요한 소요기간을 예측 / 가장 오래 소요되는 경로를 구함

* 간트차트 : 작업의 시작과 종료에 대한 일정을 막대 도표를 이용해 표시함

 

< Section 028. 소프트웨어 개발 프레임워크의 특성 >

- 모듈화 / 재사용성 / 확장성 / 제어의 역흐름

 


[2장. 데이터 입/출력 구현]

< Section 029.  데이터베이스 개요 >

* 스키마 : 데이터베이스의 구조와 제약조건에 관한 전반적인 명세

- 외부스키마(개념) : 사용자나 응용프로그래머가 개인의 입장에서 db의 논리적 구조를 정의한 것

- 개념스키마(논리) : db의 전체적인 논리적 구조 / 하나만 존재

- 내부스키마(물리) : 물리적 저장자치의 입장에서 본 db 구조 / 실제로 저장될 레코드의 형식, 표현방법, 물리적 순서 

 

< Section 030.  데이터베이스 개요 >

- 개념적 설계(정보모델링/개념화) : 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정 

- 논리적 설계(데이터모델링) : 현실세계에서 발생하는 자료를 특정 DBMS가 지원하는 논리적 자료구조로 변환시키는 과정 

- 물리적 설계(데이터구조화) : 논리적 구조로 표현된 데이터를 물리적 구조의 데이터로 변환하는 과정

 

< Section 031.  데이터 모델의 개념 >

* 데이터 모델에 표시할 요소

- 구조 : 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현

- 연산 : 데이터베이스를 조작하는 기본 도구

- 제약조건 : 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약조건

 

< Section 033.  E-R모델 다이어그램 >

- 사각형 : 개체

- 마름모 : 관계

- 타원 : 속성

- 이중 타원 : 다중값 속성

 

< Section 034. 관계형 데이터베이스의 구조 / 관계형 데이터 모델 >

* 튜플 : 각각의 행 / 레코드 / 카디널리티 

* 속성 : db구성하는 가장 작은 논리적 단위 / 디그리 / 차수

* 도메인 : 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자값들의 집합

* 릴레이션 

- 한 릴레이션에는 똑같은 튜플이 포함될 수 없으므로, 릴레이션에 포함된 튜플들은 모두 상이하다.

- 한 릴레이션에 포함된 튜플 사이에는 순서가 없다.

- 튜플들의 삽입 삭제 등으로 인해 릴레이션은 시간에 따라 변한다.

- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않다.

- 속성의 명칭은 유일해야 하지만, 속성을 구성하는 값은 동일한 값이 있을 수 있다.

- 튜플을 유일하게 식별하기 위해 속성들의 부분집합을 키로 설정한다.

- 속성의 값은 논리적으로 더이상 쪼갤 수 없는 원자값만을 저장한다.

 

< Section 035. 관계형 데이터베이스의 제약조건 - key >

* 후보키 : 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합 / 유일성, 최소성

* 기본키 : 후보키 중 특별히 선정된 주 키 / 중복불가 / 유일성 / Null불가

* 대체키 : 후보키가 둘 이상일 때, 기본키를 제외한 나머지 후보키 / 보조키

* 슈퍼키 : 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키 / 유일성O, 최소성X

* 외래키 : 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합

 

< Section 036. 관계형 데이터베이스의 제약조건 - 무결성 >

* 개체 무결성 : 기본키를 구성하는 어떤 속성도 null, 중복값 불가

* 참조 무결성 : 외래키 값은 null이거나 참조릴레이션의 기본키값과 동일해야함. 참조할 수 없는 외래키의 값은 X

* 도메인 무결성 : 주어진 속성 값이 정의된 도메인에 속한 값이어야 함.

* 사용자 정의 무결성 : 속성 값들이 사용자가 정의한 제약조건에 만족되어야 함.

 

< Section 037. 관계대수 및 관계해석 > - 174p 기호 확인

* 관계대수 : 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해 어떻게 유도하는가를 기술하는 절차적 언어

* 순수 관계 연산자

- Select : 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만듦 / 수평연산 / 시그마 기호

- Project : 속성 리스트에 제시된 속성 값만을 추출 / 중복 제거 / 수직연산 / 파이 기호

- Join : 공통속성을 중심으로 두개의 릴레이션을 하나로 합쳐 새로운 릴레이션 생성 / 교차곱 기호

- Division : S가 가진 속성을 제외한 속성만을 구하는 연산 

* 일반 집합 연산자

- 합집합(UNION) : 중복되는 튜플은 제거 

- 교집합(INTERSECTION) 

- 차집합(DIFFERENCE)

- 교집합(CARTISIAN PRODUCT) : 튜플들의 순서쌍을 구하는 연산

 

< Section 038. 이상/함수적 종속 >

* 이상 

- 삽입이상 : 데이터 삽입시 의도와는 상관없이 원하지 않은 값들로 인해 삽입할 수 없는 현상

- 삭제이상 : 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함꼐 삭제되는. 즉 연쇄 삭제 발생 현상

- 갱신이상 : 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불확실성이 생기는 현상

 

< Section 039. 정규화 > - 184p

 

< Section 040. 반정규화 >

: 테이블 통합 / 테이블 분할 / 중복 테이블 추가 / 중복 속성 추가 

: 시스템 성능이 향상되고 관리효율성은 증가하지만, 데이터의 일관성 및 정합성이 저하될 수 있음.

* 테이블 분할

- 수평분할 : 레코드 기준으로 테이블 분할

- 수직분할 : 속성 기준으로 테이블 분할

 

< Section 042. 트랜잭션 분석 / CRUD 분석 >

* 트랜잭션의 특성

- 원자성 : 트랜잭션의 연산은 db에 모두 반영되거나 전혀 반영되지 않거나

- 일관성 : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 db 상태로 변함

- 독립성,격리성,순차성 : 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수 없음

- 영속성, 지속성 : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함.

 

< Section 045. 파티션 >

- 범위 분할 : 지정한 열의 값을 기준으로 분할

- 해시 분할 : 해시 함수를 적용한 결과 값에 따라 데이터를 분할. 특정 데이터가 어디에 있는지 판단 불가

- 조합 분할 : 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할

 

< Section 048. 데이터베이스 보안 >

* 접근통제 기술

- 임의 접근통제 : 데이터에 접근하는 사용자의 신원에 따라 접근 권한 부여 / 데이터 소유자가 권한 지정 및 제어

- 강제 접근통제 : 주체와 객체의 등급을 비교하여 접근 권한 부여 / 시스템이 접근통제 권한 지정 / 사용자별로 등급 부여 가능

- 역할기반 접근통제 : 사용자의 역할에 따라 접근 권한 부여 / 중앙관리자가 접근통제 권한 지정

 

< Section 050. 스토리지 >

* DAS(Direct Attached Storage)

- 서버와 저장장치를 전용 케이블로 직접 연결 ->  속도 빠르고 설치 운영 쉬움 

- 초기 구축 비용 및 유지보수 비용이 저렴

- 다른 서버에서 접근할 수 없고 파일을 공유할 수 없음

- 확장성 및 유연성이 떨어짐

* NAS(Network Attatched Storage) : 서버와 저장장치를 네트워크를 통해 연결하는 방식

* SAN(Storage Area Network) : 서버-저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식 / 광채널(PC)이용해 네트워크 구성

 

< Section 052. 자료구조 >

* 스택 : 리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료구조 / 후입선출(Last In First Out : LIFO)

* 큐 : 리스트의 한쪽에서는 삽입작업이 이루어지고 다른한쪽에서는 삭제 작업이 이루어지는 자료구조 / 선입선출 (FIFO)

* 방향 그래프의 최대 간선 수 : n(n-1)

* 무방향 그래프의 최대 간선 수 : n(n-1)/2

 

< Section 054. 이진트리 > -  235-6p 문풀

* 이진트리 : 차수(Degree)가 2이하인 노드들로 구성된 트리 

* 운행법

- 전위(Preorder)운행 : Root - Left - Right

- 중위(Inorder)운행 : Left - Root - Right

- 후위(Postorder)운행 : Left - Right - Root

 

< Section 055. 정렬 > 244p 문풀

* 삽입정렬 : 이미 순서화된 파일에 새로운 하나의 레코드를 순서에 맞게 삽입시켜 정렬

* 선택정렬 : n개의 레코드 중에서 최소값을 찾아 첫번째 레코드위치에 놓고, 나머지 (n-1)개 중에 다시 최소값을 찾아 두번째..

* 버블정렬 : 인접한 두개의 레코드 키값을 비교하여 그 크기에 따라 레코드 위치를 서로 교환

* 퀵정렬 : 작은 값은 왼쪽, 큰 값은 오른쪽

* 힙정렬 : 전이진 트리를 이용한 정렬합 

 


[3장. 통합 구현]

< Section 060. XML > 

* SOAP : 컴퓨터 네트워크 상에서 HTTP/HTTPS, SMTP 등을 이용하여 XML을 교환하기 위한 통신 규약

* WSDL : 웹서비스 관련된 서식이나 프로토콜 등을 표준적인 방법으로 기술하고 게시하기 위한 언어

 


[4장. 서버 프로그램 구현]

< Section 063. 소프트웨어 아키텍처 > 

* 모듈화 : 모듈크기↓ - 모듈개수↑ - 모듈통합비용↑ / 모듈크기↑ - 모듈개수↓ - 모듈통합비용↓, 모듈하나당 개발비용 

* 추상화 : 불필요한 부분을 생략하고 필요한 부분을 강조하여 모델화하는 것. 포괄적인 개념 설계 후 차례로 구체화시키는 것

* 단계적 분해 : 상위 중요개념으로부터 하위 개념으로 구체화시키는 분할기법

* 소프트웨어 아키텍처 설계 과정

- 설계 목표 설정

- 시스템 타입 결정 : 시스템과 서브시스템 타입결정, 아키텍처 패턴 선택

- 아키택처 패턴 적용 : 시스템의 표준 아키텍처 설계 

- 서브시스템 구체화

- 검토

 

< Section 064. 아키텍처 패턴 > 

* 파이프-필터 패턴 : 데이터 스트림 절차 각 단계를 필터로 캡슐화하여 파이프 통해 전송 / Unix-shell

* 마스터-슬레이브 패턴 : 슬레이브 컴포넌트에서 처리된 결과물을 다시 돌려받는 방식으로 작업 수행

 

< Section 066. 객체지향 분석 및 설계 > 

* 객체지향 분석(OOA) : 사용자의 요구사항과 관련된 객체, 속성, 연산, 관계 등을 정의하여 모델링하는 작업

* 방법론

1) 럼바우 

- 객체 모델링(정보모델링) : 객체들 간의 관계를 규정하여 객체 다이어그램으로 표시

- 동적모델링 : 상태 다이어그램을 이용하여 시간의 흐름에 따른 객체들 간의 동적 행위를 표현하는 모델링

- 기능모델링 : 자료흐름도(DFD)를 이용하여 다수의 프로세스들 간의 자료흐름을 중심으로 처리과정 표현

2) 부치 방법 : 미시적/거시적 개발 프로세스를 모두 사용

3) Jacobson : 유스케이스를 강조하여 사용

4) Coad와 Yourdon : E-R다이어그램을 사용하여 객체 행위 모델링

* 객체지향 설계원칙

- 단일책임원칙 : 객체는 단 하나의 책임만 가져야한다는 원칙

- 개방-폐쇄원칙 : 기존의 코드는 변경하지 않고 기능을 추가할 수 있도록 설계해야 한다는 원칙

- 리스코프 치환원칙 : 자식클래스는 최소한 부모 클래스의 기능은 수행할 수 있어야 한다는 원칙

- 인터페이스 분리원칙 : 자신이 사용하지 않는 인터페이스와 의존관계를 맺거나 영향을 받지 않아야 한다는 원칙

- 의존 역전 원칙 : 의존관계 성립시 추상성이 높은 클래스와 의존관계를 맺어야 한다는 원칙 

 

< Section 067. 모듈 >

: 모듈의 독립성은 결합도와 응집도에 의해 측정된다.

: 결합도↓, 응집도↑ -> 독립성↑, 재사용성↑

 

* 결합도 : 모듈 간에 상호 의존하는 정도

: 내용 > 공통 > 외부 > 제어 > 스탬프 > 자료 (내통부어스자)

: 독립성을 높이려면, 결합도는 약하게 / 응집도는 강하게 / 모듈의 크기는 작게

- 내용결합도 : 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때의 결합도

- 공통결합도 : 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도 / 전역변수 사용 관련

- 외부결합도 : 외부의 다른 모듈에서 참조할 때의 결합도

- 제어결합도 : 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어신호나 제어요소를 전달하는 결합도

- 스탬프결합도 : 모듈간 인터페이스로 배열이나 레코드 등의 자료구조가 전달 될 때의 결합도

- 자료결합도 : 모듈간 인터페이스가 자료요소로만 구성될 때의 결합도

 

* 응집도 : 모듈의 내부요소들이 서로 관련되어 있는 정도

: 기능 > 순차 > 교환 > 절차 > 시간 > 논리 > 우연 (기순교차시논우)

- 기능응집도 : 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도

- 순차응집도 : 모듈내 하나의 활동으로부터 나온 출력데이터를 그다음 활동의 입력데이터로 사용할 경우

- 교환(통신)응집도 : 동일한 입출력을 사용하여 서로 다른 기능을 수행하는 구성요소들이 모였을 경우

- 절차응집도 : 모듈안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도

- 시간응집도 : 특정시간에 처리되는 몇개의 기능들을 모아 하나의 모듈로 작성할 때의 응집도

- 논리응집도 : 유사한 성격을 갖거나 특정 형태로 분류되는 처리요소

- 우연응집도 : 서로 관련 없는 요소들로만 구성된 응집도

 

* 팬인 : 어떤 모듈을 제어하는 모듈의 수 

* 팬아웃 : 어떤 모듈에 의해 제어되는 모듈의 수

 

* N-S차트 : 논리의 기술에 중점을 두고, 도형을 이용해 표현하는 방법 / GOTO나 화살표 사용하지않음 / 연속,선택,반복 3가지 논리구조

 

< Section 071. 디자인패턴 >

* 생성패턴

- 추상팩토리 : 구체저긴 클래스에 의존하지 않음.

- 빌더 : 작게 분리된 인스턴스를 건축하듯이 ㅇ조합

- 팩토리메소드 : 객체생성을 서브클래스에서 처리하도록 분리하여 캡슐화. 상위클래스에서 인터페이스만 정의하고 실제 생성은 서브클래스가 담당

- 프로토타입 : 원본객체를 복제하는 방법으로 객체를 생성

- 싱글톤 : 하나의 객체를 생성하면 생성객체를 어디서든 참조할 수 있지만, 동시에 참조 불가. 클래스내에서 인스턴스가 하나

 

* 구조패턴 : 클래스나 객체들을 조합하여 더 큰 구조로 만드는 패턴

- 어댑터 : 호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변환해주는 패턴

- 브리지 : 구현부에서 추상층을 분리. 기능과 구현을 두개의 별도 클래스로 구현

- 프록시 : = 대리자 / 내부에서는 객체 간 복잡한 관계를 단순하게 정리하고, 외부에서는 객체의 세부적 내용을 숨김

 

* 행위패턴 : 클래스나 객체들이 서로 상호작용하는 방법이나 책임분배방법을 정의하는 패턴

- 커맨드 : 요청을 캡슐화하여 필요정보를 저장하거나 로그에 남김. 각종 명령어들을 추상클래스와 구체클래스로 분리하여 단순화

- 중재자 : 수많은 객체들 간 복잡한 상호작용을 캡슐화하여 객체로 정의

- 옵저버 : 한 객체의 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달 / 일대다 의존성 정의 / 분산된 시스템 간 이벤트 생성 발행하고 이를 수신할 때 이용

- 상태 : 객체의 상태에 따라 동일 동작을 다르게 처리해야 할 때

- 전략 : 동일 계열 알고리즘들을 개별적으로 캡슐화하여 상호교환할 수 있게 정의

- 템플릿 메소드 : 상위클래스에서 골격 정의, 하위클래스에서 세부처리 구체화

- 방문자 : 처리 기능을 분리하여 별도의 클래스로 구성하는 패턴 / 분리된 처리 기능은 각 클래스를 방문하여 수행

 


[5장. 인터페이스 구현]

< Section 079. 미들웨어 솔루션 > 

* 미들웨어 : 운영체제-운영프로그램, 서버-클라이언트 사이에서 서비스 제공하는 소프트웨어 / 표준화된 인터페이스 제공. 일관성 보장

* RPC(원격 프로시저 호출) : 원격프로시저를 마치 로컬프로시저처럼 호출하는 미들웨어

* MOM(메시지 지향 메들웨어) : 메시지기반의 비동기형 메시지를 전달하는 미들웨어 / 이기종 분산시스템 데이터 동기위해 많이 사용됨

* TP-Monitor(트랜잭션 처리 모니터링) : 트랜잭션을 처리 및 감시하는 미들웨어

* ORB(객체 요청 브로커) : 코바(CORBA) 표준 스펙을 구현한 객체 지향 미들웨어

* WAS : 동적 콘텐처 처리 위한 미들웨어

 

< Section 080. 모듈연계를 위한 인터페이스 기능식별 > - 390p 그림

* EAI(Enterprise Application Integration) : 기업내 각종 애플리케이션 및 플랫폼 간의 상호 연동이 가능하게 해주는 솔루션

- Point-to-Point : 1:1연결 / 가장 기본 / 변경 및 재사용 어려움

- Hub&Spoke : 단일 접점 허브시스템 / 허브 장애 발생시 시스템 전체 영향 / 확장 및 유지보수 용이 

- Message Bus : 애플리케이션 사이 미들웨어를 두어 처리 / 확장성 뛰어나며 대용량 처리 가능

- Hybrid : Hub&Spoke 와 Message Bus의 혼합 방식 / 데이터 병목현상 최소화

 

< Section 083. 인터페이스 구현 > 

* JSON : 속성-값 / 개방형 표준포맷 / 용량이 적은 데이터

* AJAX : 클라이언트-서버 간 XML 데이터를 주고받는 비동기 통신 기술

 

< Section 085. 인터페이스 구현 검증 > 

* xUnit : 같은 테스트 코드를 여러번 작성하지 않게 도와주고, 예상결과를 기억할 필요 없게하는 자동화된 해법 제공 

* STAF : 크로스 플랫폼이나 분산 소프트웨어에서 테스트 환경 조성 지원 / 분산 환경에 설치된 데몬이 테스트에 대한 응답을 대신함.

* FitNesse : 웹기반 테스트 프레임워크

* NTAF : FitNesse의 협업기능 + STAF의 재사용 및 확장성 통합한 NHN(Naver) 테스트 자동화 프레임워크

* watir : Ruby를 사용하는 어플리케이션 테스트 프레임워크

 

< Section 086. 사용자 인터페이스 > 

* 구분 

- CLI : 명령과 출력이 텍스트 형태로 이루어지는 인터페이스

- GUI : 아이콘이나 메뉴를 마우스로 선탁해여 작업 수행

- NUI(Natural User Interface) : 사용자의 말이나 행동 등 자연스러운 움직임

 

* 기본원칙 

: 직관성 / 유효성 / 학습성 / 유연성

 

 


[7장. 애플리케이션 테스트관리]

< Section 091. 애플리케이션 테스트 >

* 파레토 법칙 : 애플리케이션의 20%에 해당하는 코드에서 전체 결함의 80%가 발견된다는 원칙

* 살충제 패러독스 : 동일한 테스트 케이스로 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않는 현상

 

< Section 092. 애플리케이션 테스트의 분류 >

* 프로그램 실행 여부에 따른 테스트

- 정적 테스트 : 워크스루(개발자가 모집한 전문가들이), 인스펙션(개발단계에서 산출된 결과물의 품질을 평가), 코드검사

- 동적 텟트 : 블랙박스 테스트, 화이트박스 테스트 

 

< Section 093. 테스트 기법에 따른 애플리케이션 테스트 >

* 화이트박스 테스트 : 원시코드의 논리적인 모든 경로를 테스트

* 종류 

- 기초경로검사 : 논리적 복잡성 측정 / 대표적 화이트박스 검사

- 제어구조검사 : 조건검사(모듈 내 논리적 조건) / 루프검사(반복 구조에 초점) / 데이터 흐름검사(변수정의와 변수 사용위치에 초점)

* 검증기준 

- 문장 검증 기준 : 모든 구문이 한번 이상 수행

- 분기 검증 기준 : 조건식의 결과가 True인 경우와 False인 경우가 한 번 이상 수행되도록 

- 조건 검증 기준 : 조건문에 포함된 개별 조건식의 결과가 True인 경우와 False인 경우가 한번이상 수행되도록 

- 분기/조건 기준 : 분기검증기준과 조건검증기준을 모두 만족 / True,False인 경우에 따라 조건 검증기준의 입력 데이터를 구분

 

* 블랙박스테스트 : 각 기능이 완전히 작동되는 것을 입증

* 종류 

- 동치(동등)분할검사 : 입력조건에 타당한 입력자료와 타당하지 않은 입력자료의 개수를 균등하게 하여 테스트

- 경계값 분석 : 경계값을 테스트케이스로 선정

- 원인-효과 그래프 검사 : 입력데이터간의 관계와 출력에 영향을 미치는 상황을 분석하여 효용성 높은 테스트 케이스 선정

- 비교검사 : 여러 버전의 프로그램에 동일한 테스트 자료 제공하여 동일한 결과가 출력되는지 테스트

 

< Section 094. 개발단계에 따른 애플리케이션 테스트 >

* 단위테스트 : 코딩직후 최소단위인 모듈이나 컴퓨넌트에 초점을 맞춰 테스트

* 인수테스트 : 사용자의 요구사항을 충족하는지에 중점을 두고 테스트

- 알파테스트 : 개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트 / 통제된 환경

- 베타테스트 : 선정된 최종 사용자가 여러명의 사용자 앞에서 행하는 텐스트 / 실업무 환경

 

< Section 095. 통합 테스트 >

* 하향식 통합테스트 : 스텁 // 깊이우선통합법 / 넓이우선통합법

* 상향식 통합테스트 : 클러스터, 드라이버 

* 회귀 테스팅 : 통합테스트로 인해 변경된 모듈이나 컴포넌트에 새로운 오류가 있는지 확인하는 테스트

 

< Section 096. 테스트오라클 >

: 테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참값을 대입하여 비교하는 기법 

 

< Section 099. 애플리케이션 성능분석 >

* 처리량 : 일정시간 내에 애플리케이션이 처리하는 일의 양

* 응답시간 : 요청을 전달한 시간부터 응답이 도착할 때까지 걸린 시간

* 경과시간 : 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간

* 자원 사용률 : 의뢰한 작업을 처리하는 동안의 CPU 사용량, 메모리 사용량, 네트워크 사용량 등 자원 사용량

 

< Section 100. 애플리케이션 성능개선 >

* 클린코드 작성원칙 : 가독성 / 단순성 / 의존성 배제 / 중복성 최소화 / 추상화 

 

 


[9장. 소프트웨어 개발 보안 구축]

< Section 109. Secure SDLC >

* 소프트웨어 개발 보안 요소 

- 기밀성 : 시스템 내 정보와 자원은 인가된 사용자에게만 접근이 허용됨

- 무결성 : 시스템 내의 정보는 오직 인가된 사용자만 수정 가능

- 가용성 : 인가받은 사용자는 시스템 내의 정보와 자원을 언제라도 사용 가능

 

< Section 110. 입력데이터 검증 및 표현 >

* 보안약점

- SQL 삽입 : 웹 응용프로그램에 SQL을 삽입하여 내부 DB 서버의 데이터를 유출 및 변조, 관리자 인증을 우회

  > 동적쿼리에 사용되는 입력 데이터에 예약어 및 특수문자 입력되지 않도록 필터링

- 경로 조작 및 자원 삽입 : 데이터 입출력 경로를 조작하여 서버 자원을 수정/삭제

  > 사용자 입력값을 식별자로 사용하여 순회공격을 막는 필터 설정

- 크로스사이트스크립팅(XSS) : 웹페이지에 악의적 스크립트를 삽입하여 방문자의 정보를 탈취하거나, 비정상적 기능 수행 유발

  > HTML 태그 사용 제한, 스크립트에 삽입되지 않도록 문자를 다른 문자로 치환함.

- 운영체제 명령어 삽입 : 외부 입력값을 통해 시스템 명령어의 실행을 유도 

  > 웹인터페이스를 통해 시스템 명령어 전달되지 않도록 하고, 외부 입력값을 ㅇ검증 없이 내부 명령어로 사용하지 않음.

- 메모리 버퍼 오버플로 : 할당된 메모리의 범위를 넘어선 위치에서 자료를 읽고나 쓰려할 때 발생

  > 적절한 버퍼의 크기 설정

 

< Section 114. 암호 알고리즘 >

* 개인키 암호화 (=대칭 암호기법, 단일키 암호화 기법)

- 동일한 키로 데이터를 암호화하고 복호화함.

- 암복호화 속도는 빠르지만, 관리해야 할 키의 수 많음.

 

* 공개키 암호화 (=비대칭 암호기법)

- 암호화할 때 사용하는 공개키는 사용자에게 공개 / 복호화할 때의 비밀키는 관리자가 관리

- 관리해야 할 키의 수는 적지만, 암복호화 속도가 느림

- ex. RSA, ECC

 

* 양방향 알고리즘 

- AES : DES의 한계를 느낀 NIST에서 공모한 후 발표 

- RSA : by MIT / 큰 숫자를 소인수분해 하기 어렵다는 것에 기반하여 만들어짐

- ECC : RSA 방식의 대안으로 제안됨 / 이산대수 문제를 타원곡선으로 옮겨 기밀성과 효율성을 높임

- IDEA : 스위스의 라이와 미세가 개발한 PES를 개선한 알고리즘

- Skipjack : NSA에서 개발 / IC칩에 내장 / 음성 데이터를 암호화

- TKIP : 무선랜 보안에 사용된 WEP을 보완

 

* 해시 : 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것 

 


< Section 115. 서비스 공격 유형 >

* 서비스 거부 공격(DoS : Denial of Service)

:  대량의 데이터를 한 곳의 서버에 집중적으로 전송함으로써, 서버의 정상적인 기능을 방해 

- 주요 서비스 공격 유형 : Ping of Death / SMURFING / SYN Flooding / TearDrop / LAND Attack / DDoS공격

- Ping of Death : 패킷의 크기를 인터넷 프로토콜 허용 범위 이상으로 전송하여 네트워크를 마비시킴

- SMURFING : IP나 ICMP의 특성을 악용하여 엄청난 데이터를 한 사이트에 집중적으로 보내어 네트워크를 불능상태로 만듦

- SYN Flooding : 공격자가 가상의 클라이언트로 위장하여 3-way-handshake 과정을 의도적으로 중단시킴으로 서버가 대기상태에 놓여 정상적인 서비스를 수행하지 못하게 하는 공격 방법

- LAND Attack : 패킷을 전송할 때 송신 IP주소와 수신 IP주소를 모두 공격 대상의 IP주소로 하여 공격대상에게 전송. 무한한 응답.

- DDoS 공격 : 여러 곳에 분산된 공격 지점에서 한 곳의 서버에 대해 서비스 거부 공격을 수행하는 것

 

* 네트워크 침해 공격 관련 용어

- 세션 하이재킹 : 서버와 클라이언트 사이의 세션 정보를 가로챔. 공격자가 클라이언트인 것처럼 위장하여 서버의 자원,데이터 무단 사용

- ARP 스푸핑 : 자신의 물리적 주소(MAC)를 공격대상의 것으로 변조하여 공격 대상에게 도달해야 하는 데이터 패킷을 가로채거나 방해함.

- 스미싱 : 문자메시지(SMS)를 이용해 사용자의 개인 신용정보를 빼내는 수법

- 사회 공학 : 인간 상호 작용의 깊은 신뢰를 바탕으로 사람들을 속여 보안 절차를 깨는 비기술적 시스템 침입수단

- 다크데이터 : 특정 목적을 가지고 데이터를 수집하였으나, 이후 활용되지 않고 저장만 되어있는 대량의 데이터

- 타이포스쿼팅 : 사이트 주소를 잘못 입력하거나 철자를 빠뜨리는 실수를 이용하기 위해 유사 유명 도메인을 미리 등록. = URL 하이재킹 

- 스니핑 : 네트워크의 중간에서 남의 패킷 정보를 도청하는 해킹 유형. 수동적 공격

 

* 정보 보안 침해 공격 관련 용어

- 워터링홀 : 자주 방문하는 웹사이트를 사전에 감염시켜, 목표 조직의 일원이 웹사이트 방문시 악성코드에 감염시키도록 함

- 웜 : 네트워크를 통해 연속적으로 자신을 복제하여 시스템의 부하를 높임. 결국 시스템 다운.

- 키로거공격 : 키보드 움직임을 탐지해 중요 정보를 빼감.

- 랜섬웨어 : 사용자의 컴퓨터에 잠입해 내부 문서나 파일등을 암호화함

- 백도어 : 개발자의 액세스 편의를 위해 시스템 보안을 제거하여 만들어놓은 비밀통로

- 트로이목마 : 정상 프로그램으로 위장하여 프로그램 내에 숨어있다가, 해당 프로그램이 동작할 떄 활성화되어 부작용 발생시킴

 

< Section 117. 보안 솔루션 >

* 침입탐지시스템 : 컴퓨터 시스템의 비정상적인 사용,오용,남용 등을 실시간으로 탐지하는 시스템

* 침입방지시스템 : 비정상적인 트래픽을 능동적으로 차단하고 격리하는 등의 보안 솔루션

* VPN(Virtual Private Network : 가상 사설 통신망) : 공중 네트워크와 암호화 기술을 이용하여 사용자가 마치 자신의 전용 회선을 사용하는 것처럼 해주는 보안 솔루션 

* SIEM : 다양한 장비에서 발생하는 로그 및 보안 이벤트를 통합하여 관리하는 보안솔루션

* SSH(Secure SHell : 시큐어 셸) : 다른 컴퓨터에 로그인, 원격 명령 실행, 파일복사 등을 수행

* 템퍼프루핑 : 스프트웨어의 위변조가 발생할 경우 소프트웨어를 오작동하게 맞들어 악용을 방지

* OAuth : 사용자 인증에 사용되는 표준인증방법으로 공개API로 구현됨.

 


[ 10. 프로그래밍 언어 활용 ] - 146p부터 문풀


[ 11. 응용 SW 기초 기술 활용 ] 

< Section 133. 운영체제의 종류 >

* Windows : Microsft사가 개발한 운영체제

* UNIX : 벨(Bell)연구소, MIT, ..이 공동 개발한 운영체제 / 대부분 C언어로 작성 / 트리구조의 파일시스템

- 커널 : 하드웨어를 보호하고, 프로그램과 하드웨어 간의 인터페이스 역할을 담당

- 쉘 : 사용자의 명령어를 인식. 시스템과 사용자 간의 인터페이스를 담당

- 유틸리티 프로그램 

* Android : Google사에서 개발한 리눅스 커널 기반의 모바일 운영체제 / 모든 코드가 공개된 개방형 sw

 

< Section 134. 기억장치 관리 >

* 배치 전략 : 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지를 결정

- 최초적합 : 빈 영역 중에서 첫번째 분할 영역에 배치

- 최적적합 : 빈 영역 중에서 단편화를 가장 작게 남기는 분할 영역에 배치

- 최악적합 : 빈 영역 중에서 단편화를 가장 많이 남기는 분할 영역에 배치

 

* 내부단편화 : 분할된 영역이 할당될 프로그램의 크기보다 크기 때문에, 프로그램이 할당된 후 사용되지 않고 남아있는 빈공간

* 외부단편화 : 분할된 영역이 할당될 프로그램의 크기보다 작기 때문에, 프로그램이 할당될 수 없어 사용되지 않고 빈공간으로 남아있는 분할된 전체영역

 

< Section 135. 가상기억장치 구현 기법 >

* 페이징 기법 : 가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후, 나눠진 프로그램을 동일하게 나눠진 주기억장치의 영역에 적재시켜 실행하는 기법

- 외부 단편화는 발생하지 않으나, 내부 단편화는 발생 가능

 

* 세그먼테이션 기법 : 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행.

- 내부 단편화는 발생하지 않으나, 외부 단편화는 발생 가능

 

< Section 136. 페이지 교체 알고리즘 >

* FIFO : 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체하는 기법

* LRU(Least Recently Used) : 최근에 가장 오랫동안 사용하지 않은 페이지를 교체

* LFU(Least Frequently Used) : 사용 빈도가 가장 적은 페이지를 교체

* NUR(Not Used Recently) : 최근에 사용하지 않은 페이지를 교체 / 최근의 사용여부를 확인하기 위해 참조비트와 변형비트 사용

 

< Section 137. 가상기억장치 기타 관리 사항 >

* Locality : 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부페이지만 집중적으로 참조하는 성질이 있다는 이론

- 시간 구역성 : 일정 시간 동안 집중적으로 액세스하는 현상

- 공간 구역성 : 일정 위치의 페이지를 집중적으로 액세스하는 현상 

* 워킹셋 : 프로세스가 일정시간 동안 자주 참조하는 페이지들의 집합

* 스래싱 : 프로세스의 처리시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상

 

< Section 138. 프로세스의 개요 >

* 프로세스 상태 전이 : 프로세스가 시스템 내에 존재하는 동안 프로세스의 상태가 변하는 것

: 제출 - 접수 - 준비 - 실행 - 대기/블록 - 종료

 

< Section 140. 주요 스케줄링 알고리즘 > - 문풀 386p

* SJF(Shortest Job First, 단기 작업 우선) : 실행 시간이 가장 짧은 프로세스에게 먼저 CPU 할당

* HRN(Highest Response-ratio Next) : 대기시간과 서비스(실행) 시간을 이용 

: (대기시간+서비스시간)/서비스시간

* RR(Round Robin) : 시간할당량동안만 실행한 후, 실행이 완료되지 않으면 다음 프로세스에게 CPU를 넘김

* SRT(Shortest Remaining Time) : 현재 실행중인 프로세스의 남은 시간과 준비상태 큐에 새로 도착한 프로세스의 실행 시간을 비교하여 가장 짧은 실행 시간을 요구하는 프로세스에게 CPU를 할당하는 기법

 

< Section 142. 운영체제 기본 명령어 > - 8진수 변환 문풀 397p

* UNIX/LINUX 기본 명령어

- cat : 화면 표시

- chmod : 파일의 보호모드를 설정하여 파일의 사용 허가를 지정

- chown : 파일 소유자와 그룹을 변경

- fsck : 파일 시스템을 검사하고 보수함

- fork : 새로운 프로세스를 생성함

- ls : 현재 디렉터리의 파일목록을 표시

- ps : 현재 실행중인 프로세스를 표시

- pwd : 현재 작업중인 디렉터리 경로를 화면에 표시

- top : 시스템의 프로세스와 메모리 사용 현황을 표시 

 

* chmod의문자열 모드

- 사용자 : u(user), g(group), o(other), a(all)

- 설정기호 : +(권한추가), -(권한삭제), =(권한부여)

- 권한 : r(read), w(write), x(execute)

 

* 10자리

- 1자리 : 디렉터리(d) / 파일(-)

- 2~4자리 : 소유자(Owner)권한(rwx-) : read / write / execute / -(권한없음)

- 5~7자리 : 그룹(Group)권한

- 8~10자리 : 기타사용자 권한6

 

< Section 143. 인터넷 >

* 서브네팅 : 할당된 네트워크 주소를 다시 여러 개의 작은 네트워크로 나누어 사용하는 것

* IPv6

- IPv4의 주소 부족 문제를 해결하기 위해 개발됨. 

- 자료 전송 속도가 빠름

- 인증성, 기밀성, 데이터 무결성의 지원으로 보안 문제 해결 가능

- 실시간 흐름 제어로 향상된 멀티미디어 기능을 지원

- 패킷 크기를 확장할 수 있으므로 패킷 크기에 제한이 없음

- 기본 헤더 뒤에 확장 헤더를 더함으로써 더욱 다양한 저옵의 저장이 가능해져 네트워크 기능 확장이 용이함.

* IPv6의 구성

- 유니캐스트 : 단일 송신자와 단일 수신자 간 통신 (1:1)

- 멀티캐스트 : 단일 송신자와 다중 송신자 간 통신 (1:다)

- 애니캐스트 : 단일 송신자와 가장 가까이 있는 단일 수신자 간의 통신 (1:1)

 

< Section 144. OSI 참조 모델 >

* 물리 계층 : 장치 간 실제 접속과 절단 등 기계적, 기능적, 절차적 특성 / 리피터, 허브

* 데이터 링크 계층 : 인접한 개방시스템들 간 연결 설정과 유지 및 종료 담당 / 랜카드, 브리지, 스위치

* 네트워크 계층 : 네트워크 연결을 설정 유지 해제/ 라우터

* 전송 계층 : 하위3계층과 상위3계층의 인터페이스 담당. 종단시스템 간 연결 설정, 전송, 연결 해제, 주소 설정, 다중화, 오류제어..TCP, UDP

* 세션 계층 : 송/수신 측 간의 관련성을 유지하고 대화 제어 담당. 대화 생성 관리 종료를 위해 토큰 사용. 오류 데이터 회복을 위한 동기점 
* 표현 계층 : 통신에 적당한 형태로 변환, 응용 계층에 맞게 변환 / 코드 변환, 데이터 암호화, 데이터 압축, 정보 포맷 등

* 응용 계층 : 사용자가 OSI 환경에 접근할 수 있도록 서비스를 제공 / 응용서비스 간 정보 교환, 전자사서함, 파일전송, 가상 터미널 등

 

< Section 146. TCP/IP >

* 프로토콜 : 데이터 교환을 원활하게 수행할 수 있도록 표준화시켜 놓은 통신규약 

- 구문 : 전송하고자 하는 데이터의 형식, 부호화, 신호 레벨 등을 규정

- 의미 : 두 기기 간 효율적이고 정확한 정보 전송을 위한 협조 사항과 오류 관리를 위한 제어 정보 규정

- 시간 : 두 기기 간의 통신속도, 메시지의 순서 제어 등을 규정

 

* TCP/IP : 서로 다른 기종의 컴퓨터들이 데이터를 주고받을 수 있도록 하는 표준 프로토콜 

- TCP : OSI 7계층의 전송 계층에 해당 / 가상 회선 방식을 기반으로 하는 연결형 서비스를 제공

- IP : OSI 7계층의 네트워크 계층에 해당 / 데이터그램 방식을 기반으로 하는 비연결형 서비스를 제공

OSI TCP/IP 기능
응용계층, 표현계층, 세션계층 응용계층 응용 프로그램 간의 데이터 송수신 제공
TELNET, FTP, SMTP, SNMP, DNS, HTTP
전송계층 전송계층 호스트들 간의 신뢰성 있는 통신 제공
TCP, UDP, RTCP
네트워크 계층 인터넷 계층 데이터 전송을 위한 주소 지정, 경로 설정 제공
IP, ICMP, IGMP, ARP, RARP
데이터 링크 계층, 물리계층 네트워크 액세스 계층 실제 데이터(프레임)을 송수신하는 역할
Ethernet, IEEE 802, HDLC, X.25, RS-232C, ARQ

 

* 전송 계층의 주요 프로토콜

- TCP : 양방향 연결 / 가상회선연결 / 스트림위주 전달(패킷)

- UDP : 비연결형 서비스 / 단순한 헤더구조로 순서 및 흐름제어가 없어 전송속도 빠름 / 실시간 전송에 유리 / 신뢰성보다는 속도 중요

 

* 인터넷 계층의 주요 프로토콜 

- ICMP(InternetControlMessageProtocol, 인터넷 제어 메시지 프로토콜) : IP와 조합하여 통신중 발생하는 오류처리와 전송경로변경 등을 위한 제어메시지를 관리

- ARP(Address Resolution Protocol, 주소 분석 프로토콜) : 호스트의 IP주소를 호스트와 연결된 네트워크 접속 장치의 물리적 주소(MAC)으로 바꿈

 

< Section 148. 네트워크 구축 >

* 성형(중앙집중형) : 포인트 투 포인트 방식 / 하나의 단말장있는 되어 치가 고장나더라도 다른 단말장치에는 영향을 주지 않지만, 중앙컴퓨터 고장시 전체 고장

* 링형(루프형) : 포인트 투 포인트 방식 / 단말장치의 추가제거 어려움 / 전송 지연 발생 가능 / 데이터는 단방향 또는 양방향 전송 가능

* 버스형 : 한개의 통신 회선에 여러 대의 단말장치가 연결 / 단말자치 추가 제거 용이 / 단말장치 고장나더라도 전체에 영향 없음 / 기밀보장 어려움 / 통신 회산 길이에 제한 

* 계층형(분산형) : 분산처리시스템 구성

* 망형(Mesh) : 모든 지점의 컴퓨터와 단말장치를 서로 연결 / 많은 양의 통신 필요한 경우 유리 / 경로가 가장 길다 

 

* NAT(Network Address Translation, 네트워크 주소 변환) : 한 개의 정식 IP주소에 대량의 가상 사설 IP주소를 할당 및 연결

 

< Section 149. 경로 제어/트래픽 제어 >

* 경로 제어 프로토콜 

- IGP(Interior Gateway Protocol, 내부 게이트웨이 프로토콜)

 : 하나의 자율 시스템 내의 라우팅에 사용되는 프로토콜 / RIP, OSPF

 : 라우팅 정보에 변화가 생길 경우 변화된 정보만 네트워크 내의 모든 라우터에 알림

 : 하나 자율 시스템에서 동작하면서 내부 라우팅 프로토콜의 그룹에 도달함

- EGP(Exterior Gateway Protocol, 외부 게이트웨이 프로토콜) 
 : 자율 시스템 간의 라우팅. 즉 게이트웨이 간의 라우팅에 사용되는 프로토콜

- BGP(Border Gateway Protocol) : 자율시스템 간의 라우팅 프로토콜로, EGP의 단점 보완. 초기 연결시 전체 경로제어표를 교환하고 이후에는 변화된 정보만을 교환

 

< Section 150. SW 관련 신기술 >

* 블록체인 : P2P 네트워크를 이용하여 온라인 금융거래정보를 온라인 네트워크 참여자의 디지털 장비에 분산 저장하는 기술

* 매시업 : 웹에서 제공하는 정보 및 서비스를 이용해 새로운 소프트웨어나 서비스, DB를 만드닌 기술

* 증발품 : 판매계획 또는 배포계획는 발표되었으나 실제로 고객에게 판매되거나 배포되지 않고 있는 소프트웨어

* 서비스지향아키텍처(SOA) : 기업의 소프트웨어 인프라인 정보시스템을 공유와 재사용 가능한 서비스 단위나 컴포넌트로 구축

* 디지털트윈 : 현실속의 사물을 소프트웨어로 가상화한 모델 

 

< Section 154. DB 관련 신기술 >

* 하둡 : 오픈 소스를 기반으로 한 분산 컴퓨팅 플랫폼 / 일반 PC급 컴퓨터들로 가상화된 대형 스토리지 형성하고, 그 안에 데이터셋을 병렬처리하도록 개발한 자바 소프트웨어 프레임워크 

* 맵리듀스 : 대용량 데이터를 분산 처리하기 위한 목적으로 개발된 프로그래밍 모델 / 흩어져 있는 데이터를 연관성있는 데이터 분류로 묶는 Map작업을 수행한 후 중복데이터를 제거하고 원하는 데이터를 추출하는 Reduce 작업을 수행

* 타조 : 하둡기반의 분산 데이터 웨어하우스 프로젝트

* 데이터마이닝 : 대량의 데이터를 분석하여 데이터에 내재된 변수 사이의 상호관계를 규명하여 일정한 패턴을 찾아내는 기법

* OLAP : 다차원으로 이루어진 데이터로부터 통계적인 요약 정보를 분석하여 의사결정에 활용하는 방식

 

< Section 155. 회복/병행제어 >

* 회복 - 즉각갱신기법 : 트랜잭션이 데이터를 갱신하면 트랜잭션이 부분완료되기 전이라도 즉시 실제 데이터베이스에 반영

* 병행제어 : 동시에 실행되는 트랜잭션들일 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간이 상호작용을 제어하는 것

- 로킹 : 트랜잭션들이 어떤 로킹 단위를 액세스하기 전에 Lock을 요청해서 Lock이 허락되어야만 그 로킹 단위를 액세스할 수 있도록 함

- 타임 스탬프 순서 : 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 시간표를 부여하여, 부여된 시간에 따라 트랜잭션 작업을 수행 

* 로킹단위 : 병행제어에서 한꺼번에 로킹할 수 있는 객체의 크기를 의미

 

< Section 156. 교착 상태 >

* 필요충분조건

- 상호 배제 : 한번에 한개의 프로세스만이 공유 자원을 사용할 수 있어야 함.

- 점유와 대기 : 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야함.

- 비선점 : 다른 프로세스에 할당된 자원은 사용이 끝날때까지 강제로 빼앗을 수 없어야 함.

- 환형대기 : 공유자원과 공유자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 함.

 

* 교착상태의 해결방법

- 회피기법 : 교착상태가 발생할 가능성을 배제하지 않고 교착상태가 발생하면 적절히 피해나가는 방법  / 주로 은행원 알고리즘 사용

 

< Section 159. 디지털 저작권 관리(DRM) >

* 디지털 저작권 관리 : 저작권자가 배포한 디지털 콘텐츠가 저작권자가 의도한 용도로만 사용되도록 전 과정에 걸쳐 사용되는 디지털 콘텐츠 관리 및 보호 기술

* 구성요소

- 클리어링 하우스 : 저작권에 대한 사용권한, 라이선스 발급, 암호화된 키 관리, 사용량에 따른 결제 관리 등을 수행하는 곳

- 콘텐츠 제공자 : 콘텐츠를 제공하는 저작권자

- 패키저 : 콘텐츠를 메타 데이터와 함께 배포 가능한 형태로 묶어 암호화하는 프로그램

- 콘텐츠 분배자 : 암호화된 콘텐츠를 유통하는 곳이나 사람

- DRM 컨트롤러 : 배포된 콘텐처의 이용 권한을 통제하는 프로그램

* 기술요소

- 암호화 : 콘텐츠 및 라이선스를 암호화하고 전자서명을 할 수 있는 기술

- 키관리 : 콘텐츠를 암호화한 키에 대한 저장 및 분배기술

- 식별기술 : 콘텐츠에 대한 식별 체계 표현 기술

- 저작권 표현 : 라이선스의 내용 표현 기술

- 정책관리 : 라이선스 발급 및 사용에 대한 저책 표현 및 관리기술

- 크랙방지 : 크랙에 의한 콘텐츠 사용 방지 기술

 

< Section 164. 빌드 자동화 도구 >

* Jenkins : JAVA 기반의 오픈 소스 형태로, 서블릿 컨테이너에서 실행되는 서버 기반 도구 

* Gradle : Groovy를 기반으로 한 오픈 소스 형태의 자동화 도구 / 안드로이드 앱 개발 환경에서 사용