[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를 기반으로 한 오픈 소스 형태의 자동화 도구 / 안드로이드 앱 개발 환경에서 사용
'IT자격증' 카테고리의 다른 글
2023-1 정처기 실기 newbt 기출문제 (3) | 2024.10.17 |
---|---|
2022-1 정처기 실기 newbt 기출문제 (1) | 2024.10.17 |
[2024 정처기 실기] 10. 프로그래밍 언어 활용 - (1) 데이터 입/출력(146p) (0) | 2024.07.09 |