1. 생성 패턴
추상 팩토리 : 구체적인 클래스에 의존하지 않고 인터페이스를 통해 서로 연관되거나 의존적인 객체들을 그룹으로 생성해 추상적으로 표현
팩토리 메서드 : 객체 생성 처리를 서브 클래스로 분리, 서브 클래스 측에서 처리
빌더 패턴 : 생성자를 통해 클래스의 인스턴스를 생성하지 않고, 빌더라는 내부 클래스를 통해 간접적으로 생성하게 하는 패턴
프로토타입 패턴 : 원본을 만들어놓고 원본 객체를 복사해서 사용하는 패턴
싱글톤 : 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 해서 생성된 객체를 어디에서든지 참조할 수 있도록 만든 패턴
2. 구조 패턴
어댑터 : 호환성이 없는 클래스들을 다른 클래스가 이용할 수 있도록 변환
브리지 : 구현부에서 추상층을 분리해 서로가 독립적으로 확장
컴포지트 : 복합 객체와 단일 객체를 구분없이
데코레이터 : 객체 간의 결합을 통해 기능을 확장
퍼싸드 : 복잡한 기능의 서브클래스의 상위에 인터페이스를 생성해 간편하게 기능을 사용
플라이웨이트 : 인스턴스를 공유해 메모리를 절약
프록시 : 접근이 어려운 객체들 사이에서 인터페이스 역할
3. 행위 패턴
책임 연쇄 : 요청을 처리하는 객체가 둘 이상 존재해 한 객체가 처리하지 못하면 다음 객체로 넘어간다
커맨드 : 요청을 객체의 형태로 캡슐화해서 이용, 취소할 수 있도록 정보를 저장
인터프리터 : 언어에 문법 표현을 정의
반복자 : 접근이 잦은 객체에 동일한 인터페이스를 사용
중재자 : 객체 간의 복잡한 상호작용을 캡슐화하여 객체로 정의
메멘토 : 특정 시점에서 객체 내부 상태를 개체화함으로 요청에 따라 특정 시점으로 객체의 상태를 되돌릴 수 있다.
옵저버 : 한 객체의 상태가 변화하면 객체에 상속된 다른 객체들에게 변화된 상태를 준다.
상태 : 객체의 상태에 따라 동작을 다르게 처리
전략 : 동일 계열의 알고리즘을 개별적으로 캡슐화해 상호 교환할 수 있게 함
템플릿 메소드 : 상위 클래스에서 골격을 정의하고, 하위 클래스에서 세부처리를 구체화 함
방문자 : 데이터 구조에서 처리 기능을 분리해 별도의 클래스를 구성
4. 구조적 다이어그램
클래스 다이어 그램 : 클래스와 클래스 사이에 가지는 클래스 사이의 관계
객체 다이어그램 : 클래스의 속한 사물들, 인스턴스를 특정 시점의 객체와 객체 사이의 관계
배치 다이어그램 : 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현
복합체 구조 다이어그램 : 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현
패키지 다이어그램 : 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계를 표현
5. 행위 다이어그램
[동적 모델링]
시퀀스 다이어그램
커뮤니케이션 다이어그램
상태 다이어그램
[기능 모델링]
유스케이스 다이어그램
활동 다이어그램
6. UI 설계원칙
직관성 : 누구나 쉽게 이해하고 사용할 수 있어야 함
유효성 : 사용자의 목적을 정확하고 완벽하게 달성해야 함
학습성 : 누구나 쉽게 배우고 익힐 수 있어야 함
유연성 : 사용자의 요구사항을 최대한 수용하고 실수를 최소화 해야 함
6-1. UI 설계 지침 : 사용자 중심, 일관성, 단순성, 결과 예측 가능, 가시성, 표준화, 적븐성, 명확성, 오류 발생 해결[사일단결 가표접명오]
6-2. UI 설계 구성요소 : UI 설계서 표지, 개정 이력, UI 요구사항 정의서, 시스템 구조, 사이트맵, 프로세스 정의, 화면 설계
6-3. UI 개발 주요 기법
3C분석 : 고객, 경쟁사, 자사 분석
SWOT : 강점, 약점, 기회, 위협분석
시나리오 플래닝 : 불확실성이 높은 상황 변화를 예측하고 다양한 시나리오 설계
사용성 테스트 : 사용자가 직접 제품을 사용하면서 미리 작성된 시나리오에 맞춰 과제를 수행한 후 답하는 테스트
워크샵 : 소규모 과제, 회의(세미나)
7. 페이지 교체 알고리즘
OPT(OPTimal replacement) : 가장 오랫동안 사용하지 않을 페이지
FIFO(First In First Out) : 가장 먼저 들어와서 가장 오래 있었던 페이지 교체
LRU(Least Recently Used) : 최근에 가장 오랫동안 사용하지 않은 페이지
LFU(Least Frequently Used) : 사용 빈도가 가장 적은 페이지
NUR(Not Used Recently) : 최근에 가장 오랫동안 사용하지 않은 페이지 + 참조비트, 변형비트
SCR(Second Chance Replacement) : 가장 먼저 들어와서 가장 오래 있었던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 알고리즘(FIFO 단점 보완)
7. 모듈
공통 모듈 : 기능을 분할하고 추상화하여 성능 향상 및 유지보수를 효과적으로 하기 위한 공통 컴포넌트 구현 기법
모듈 : 하나의 소프트웨어 또는 하드웨워 단위, 소프트웨어 설계에서 기능 단위로 분해해 추상화되어 재사용 및 공유가 가능한 단위
모듈화 : 모듈을 통해 소프트웨어의 성능을 향상 시키고 디버깅, 수정, 통합을 용이하게 하는 설계 기법
8. 공통 모듈 명세 기법
정확성 : 시스템 구현 시 해당기능이 필요하다는 것을 알 수 있도록 정확히 작성
명확성 : 해당 기능을 이해할 때 중의적으로 해석되지 않도록 명확히 작성
완전성 : 시스템 구현을 위해 필요한 모든 것을 기술
일관성 : 공통 기능들 간 상호 충돌이 발생하지 않도록 작성
추적성 : 기능에 대한 요구사항의 출처, 관련 시스템 등의 관계를 파악할 수 있도록 작성
9. 비선점 스케줄링
[선점]
SRT(Shortest Remaining Time First) : 가장 짧은 시간이 소요되는 프로세스를 먼저 수행하고, 남은 처리 시간이 더 짧다고 판단되는 프로세스가 준비 큐에 생기면 언제라도 프로세스가 점유되는 스케줄링 알고리즘
라운드 로빈 : CPU 할당 시간 설정 후 프로세스가 할당된 시간 내에 처리하지 못할 경우 큐리스트의 가장 맨 뒤로 이동하고 다음 프로세스를 CPU에 할당하는 기법
[비선점]
FCFS(First Come First Service, 선입 선출) : 준비 상태 큐에 도착한 순서에 따라 차례로 CPU를 할당하는 기법
SJF(Shortest Job First, 단기 작업 우선) : 실행 시간이 가장 짧은 프로세스에게 먼저 CPU를 할당하는 기법
HRN(Hightest Responsse-ratio Next) : SJF 기법 보완하기 위한 것으로, 대기시간과 서비스 실행 시간을 이용하는 기법. 우선순위 계산식 : (대기 시간 + 서비스 시간) / 서비스 시간
기한부(Deadline) : 프로세스에게 일정한 시간을 주어 그 시간 안에 프로세스를 완료하도록 하는 기법
우선순위 : 준비상태 큐에서 기다리는 각 프로세스마다 우선순위를 부여해 그중 가장 높은 프로세스에게 먼저 CPU를 할당하는 기법
[그외]
에이징 기법 : 시스템에서 특정 프로세스의 우선순위가 낮아 무한정 기다리게 되는 경우, 한 번 양보하거나 기다린 시간에 비례해 일정 시간이 지나면 우선순위를 한단계씩 높여 가까운 시간 안에 자원을 할당받도록 하는 기법.
mutex : 임계영역을 가진 스레드들의 실행 시간이 서로 겹치지 않게 각각 단독으로 실행되게 하는 기술
문맥교환 : 하나의 프로세스에 다른 프로세스로 CPU가 할당되는 과정에서 발생되는 것
새 프로세스에 CPU를 할당하기 위해 현재 CPU가 할당된 프로세스의 상태 정보를 저장하고, 새 프로세스에 상태 정보를 설정한 후 CPU를 할당해 실행되도록 하는 작업
10. 데이터베이스 설계 순서
요구 조건 분석 > 개념적 설계 > 논리적 설계 > 물리적 설계 > 구현
개념적 설계 : 현실 세계를 추상적 개념으로 표현, 개념 스키마 모델링, 트랜잭션 모델링
논리적 설계 : 개념 스키마를 평가 및 정제, 트랜잭션 인터페이스 설계
물리적 설계 : 데이터베이스 파일의 저장 구조 및 액세스 경로 결정, 저장 레코드의 형식, 순서, 접근 경로
11. 데이터 베이스 설계시 고려사항[무일회 보효데]
무결성 : 삽입, 삭제, 갱신 등의 연산 후에도 데이터 베이스에 저장된 데이터가 정해진 제약 조건을 항상 만족해야 함
일관성 : DB에 저장된 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 일관되야함.
회복 : 시스템에 장애가 발생했을 때 장애발생 직전의 상태로 복구가능해야함
보안 : 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함
효율성 : 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 등이 가능해야 함.
데이터베이스 확장 : 데이터베이스 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야 함.
12. 블랙박스 테스트 기법[동경결상 유분페]
동등 분할 테스트 : 입력 데이터의 영역을 유사한 도메인별로 유효 값/ 무효 값을 그룹핑하여 대푯값 테스트 케이스를 도출하여 테스트하는 기법
경계 값 분석 테스트 : 동기분할 후 경계 값 부분에서 오류 발생 확률이 높기에 경계 값을 포함하여 테스트 케이스를 설계하여 테스트하는 기법
결정 테이블 테스트 : 요구사항의 논리와 발생조건을 테이블 형태로 나열하여, 조건과 행위를 모두 조합하여 테스트하는 기법
상태전이 테스트 : 테스트 대상/시스템이나 객체의 상태를 구분하고, 이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우의 수를 수행하는 테스트 기법
유스케이스 테스트 : 시스템이 실제 사용되는 유스케이스로 모델링 되어 있을 때 프로세스 흐름을 기반으로 테스트 케이스를 명세화하여 수행하는 테스트 기법
분류트리 테스트 : SW의 일부 또는 전체를 트리 구조로 분석 및 표현하여 테스트케이스를 설계하여 테스트하는 기법
페어와이즈 테스트 : Test Data 값들 간에 최소한 한 번 씩을 조합하는 방식이며, 이는 커버해야 할 기능적 범위를 모든 조합에 비해 상대적으로 적은 양의 테스트 세트를 구성하기 위한 테스트 기법
13. 코드 커버리지
구문 커버리지(Statement Coverage)
- 테스트 스위트에 의해 실행된 구문이 몇 퍼센트인지 측정하는 것
- 다른 커버리지에 비해 가장 약함
결정 커버리지(Decision Coverage, Branch Coverage)
- 테스트 스위트에 의해 실행된 결정 포인트 내의 전체 조건식이 최소한 참(True)이 한번, 그리고 거짓(False)이 한번의 값을 갖는지 측정하여 퍼센트로 표현하는 것
- 개별 조건식의 개수와 상관없이 테스트 케이스의 최소 개수는 2 개
- 조건, 조건/결정 커버리지에 비해 약함
조건 커버리지(Condition Coverage)
- 전체 조건식의 결과와 관계없이 각 개별 조건식이 참 한번, 거짓 한번을 모두 갖도록 개별 조건식을 조합하는 것
- 결정 커버리지 보다 강력한 형태의 커버리지
조건/결정 커버리지(Condition/Decision Coverage)
- 전체 조건식의 결과가 참 한번, 거짓 한번을 갖도록 각 개별 조건식을 조합하는데, 이때 각 개별 조건식도 참 한번, 거짓 한번을 모두 갖도록 개별 조건식을 조합하는 것으로 결정 커버리지와 조건 커버리지를 포함하는 커버리지
변경조건/결정 커버리지(Modify Condition/Decision Coverage)
- Mc/DC는 각 개별 조건식이 다른 개별 조건식에 무관하게 전체 조건식의 결과에 독립적으로 영향을 주도록 함으로써 조건/결정 커버리지를 향상시킨 것
- 결정 커버리지, 조건/결정 커버리지 보다 강력
다중조건 커버리지(Multiple Condition Coverage)
- 결정 포인트 내에 있는 모든 개별 조건식의 모든 가능한 논리적 조합을 고려한 가장 강력한 논리적 수준의 100% 커버리지를 보장
14. 트랜잭션의 특성
Atomicity(원자성) : 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료(Commit)되든지, 아니면 전혀 반영 되지 않도록 복구(Rollback)되어야 한다
Consistency(일관성) : 트랜잭션은 언제나 일관성 있는 결과를 가져와야 한다. 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 트랜잭션 수행 완료의 상태가 같아야 한다.
Isolation(독립성) : 둘 이상의 트랜잭션이 동시에 병행 실행 되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없다. 수행중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없다.
Durability(영속성) : 성공적으로 완료된 트랜잭션 결과는 시스템에 고장나더라도 영구적으로 반영되어야 한다.
15. 프로그램 실행 여부에 따른 애플리케이션 테스트
정적 테스트 : 프로그램을 실행하지 않고 명세서나 소스 코드 대상으로 분석하는 테스트
동적 테스트 : 프로그램을 실행해 오류를 찾는 테스트로, 소프트웨어 개발 모든 단계에서 테스트를 수행할 수 있음
16. 화이트박스 테스트의 제어 구조 검사
조건 검사 : 프로그램 모듈 내에 있는 논리적 조건을 테스트하는 테스트 케이스 설계 기법
루프 검사 : 프로그램의 반복 구조에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
데이터 흐름 검사 : 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
17. 테스트 오라클
참 오라클 : 모든 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하는 오라클로, 발생된 모든 오류를 검출 할 수 있음
샘플링 오라클 : 특정한 몇몇 테스트 케이스의 입력 값들에 대해서만 기대하는 결과를 제공하는 오라클
추정 오라클 : 샘플링 오라클을 개선한 오라클로, 특정 테스트 케이스의 입력값에 대해 기대하는 결과를 제공하고, 나머지 입력 값들에 대해서는 추정으로 처리하는 오라클
일관성 검사 오라클 : 애플리케이션의 변경이 있을 때, 테스트 케이스의 수행 전과 후의 결과 값이 동일한지를 확인하는 오라클
18. LOC 기법
- 노력(인월) = 개발 기간 x 투입 인원
= LOC / 1인당 월평균 생산 코드 라인수
- 개발 비용 = 노력(인월) X 단위 비용(1인당 월 평균 인건비)
- 개발 기간 = 노력(인월) / 투입 인원
- 생산성 = LOC / 노력(인월)
19. 테스트 자동화 도구
xUnit : Java(Junit), C++(Cppunit), .Net(Nunit) 등 다양한 언어를 지원하는 단위 테스트 프레임워크
STAF : 서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크로 각 테스트 대상 분산 환경에 데몬을 사용해 테스트 대상 프로그램을 통해 테스트를 수행하고 통합해 자동화 하는 검증 도구
FitNess : 웹 기반 테스트케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임워크
NATF : FitNess의 장점인 협업 기능 + STAF의 장점인 재사용 및 확장성을 통합한 NHN(Naver)의 테스트 자동화 프레임워크
Selenium : 다양한 브라우저 및 개발언어를 지원하는 웹 애플리케이션 테스트 프레임워크
Watir : Ruby를 사용하는 애플리케이션 테스트 프레임워크
19-1. 인터페이스 구현 감시 도구
애플리케이션 성능 관리를 위해 접속자, 자원 현황, 트랜잭션 수행 내역, 장애 진단 등 다양한 모니터링 기능을 제공하는 도구인 APM(Application Perfomance Management)을 사용해 데이터베이스와 웹 애플리케이션의 트랜잭션, 변수 값, 호출 함수, 로그 및 시스템 부하등 종합적인 정보를 조회하고 분석.
성능 관리 도구 : 스카우터(Scouter), 제니퍼(Jennifer) 등
리소스 방식 : Nagios, Zabbix, Cacti 등
엔드 투 엔드 방식 : VisaulVM, 제니퍼, 스카우터 등
19-2. 배치 프로그램 : 사용자와 상호작용 없이 일련의 작업을 작업 단위로 묶어 정기적으로 반복 수행하는 일괄 처리 방법
스프링 배치 : Spring Source사와 Accenture사가 2007년 공동 개발한 오픈 소스 프레임 워크. 로그 관리, 추적, 트랜잭션 관리, 작업처리 통계, 재시작 기능 제공
쿼츠 스케줄러 : 스프링 프레임워크로 개발되는 오픈 소스 라이브러리로 수행할 작업과 수행시간을 관리하는 요소들을 분리해 일괄처리 작업에 유연성을 제공
20. 테스트 하네스 구성요소
* 테스트 하네스 : 애플리케이션의 컴포넌트 및 모듈을 테스트하는 환경의 일부분으로 테스트를 지원하기 위해 생성된 코드와 데이터를 의미하며, 테스트가 실행될 환경을 시뮬레이션하며 컴포넌트 및 모듈이 정상적으로 테스트 되도록 하는 도구. 코드 개발자가 작성하는 요소임.
테스트 드라이버 : 테스트 대상의 하위 모듈을 호출하고, 파라미터를 전달하고, 모듈 테스트 후 결과를 도출하는 도구
테스트 스텁 : 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로, 일시적으로 필요한 조건 만을 가지고 있는 테스트용 모듈
테스트 슈트 : 테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합
테스트 케이스 : 사용자의 요구사항을 정확하게 준수했는지 확인하기 위한 입력 값, 실행 조건, 기대 결과 등으로 만들어진 테스트 항목의 명세서
테스트 스크립트 : 자동화된 테스트 실행 절차에 대한 명세서
목 오브젝트 : 사전에 사용자의 행위를 조건부로 입력해두면, 그 상황에 맞는 예정된 행위를 수행하는 객체
21. 결함관리 측정지표
결함 분포 : 모듈 또는 컴포넌트의 특정 속성에 해당하는 결함 수 측정
결함 추세 : 테스트 진행 시간에 따른 결함 수의 추이 분석
결함 에이징 : 특정 결함 상태로 지속되는 시간 측정
22. 운영체제 성능평가 기준
처리능력 : 일정 시간 내에 시스템이 처리하는 일의 양
반환시간 : 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
사용가능도 : 시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도
신뢰도 : 시스템이 주어진 문제를 정확하게 해결하는 정도
23. DBMS 필수 기능
정의 기능 : 모든 응용 프로그램들이 요구하는 데이터 구조를 지원하기 위해 데이터베이스에 저장될 데이터의 형과 구조에 대한 정의, 이용방식, 제약 조건 등을 명시하는 기능
조작 기능 : 데이터 검색, 갱신, 삽입, 삭제 등을 체계적으로 처리하기 위해 사용자와 데이터베이스 사이의 인터페이스 수단을 제공하는 기능
제어 기능 : 데이터베이스를 접근하는 갱신, 삽입, 삭제 작업이 정확하게 수행되어 데이터의 무결성이 유지되도록 제어하는 기능
24. 고급 데이터베이스
데이터 웨어하우스 : 급장하는 대량의 데이터를 효과적으로 분석해 정보화하고 이를 여러 계층의 사용자들이 효율적으로 사용할 수 있도록 한 데이터베이스
데이터 마트 : 전사적으로 구축된 데이터 웨어하우스로부터 특정 주제나 부서 중심으로 구축된 소규모 단일 주제의 데이터 웨어하우스
데이터 마이닝 : 데이터 웨어하우스에 저장된 데이터 집합에서 사용자의 요구에 따라 유용하고 가능성 있는 정보를 발견하기 위한 기법
OLAP(Online Analytical Processing) : 다차원으로 이루어진 데이터로부터 통계적인 요약정보를 분석해 의사 결정에 활용하는 방식
OLTP(Online Transaction Processing) : 온라인 업무 처리 형태의 하나로 네트워크 상의 여러 이용자가 실시간으로 데이터베이스의 데이터를 갱신하거나 검색하는 등의 단위 작업을 처리하는 방식
25. 무결성
개체 무결성 : 기본 테이블의 기본키를 구성하는 어떤 속성도 Null 값이나 중복값을 가질 수 없다는 규정
도메인 무결성 : 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정.
참조 무결성 : 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 함. 즉 릴레이션은 참조할 수 없는 외래키를 가질 수 없다는 규정
사용자 정의 무결성 : 속성 값들이 사용자가 정의한 제약조건에 만족해야 한다는 규정
NULL 무결성 : 릴레이션의 특정 속성 값이 NULL이 될 수 없도록 하는 규정
고유 무결성 : 릴레이션의 특정 속성에 대해 각 튜플이 갖는 속성 값들이 서로 달라야 한다는 규정
키 무결성 : 하나의 릴레이션에는 적어도 하나의 키가 존재해야 한다는 규정
관계 무결성 : 릴레이션에 어느 한 튜플의 삽입 가능 여부 또는 한 릴레이션과 다른 릴레이션의 튜플들 사이의 관계에 대한 적절성 여부를 지정한 규정
26. OSI 참조 모델
물리 계층 : 전송에 필요한 두 장치간의 실제 접속과 절단 등 기계적, 전기적, 기능적, 절차적 특성에 대한 규칙을 정의함. RS-232C, Bit
데이터 링크 계층 : 두 개의 인접한 개방 시스템들 간에 신뢰성 있고 효율적인 정보 전송을 할 수 있도록 함. 흐름제어, 프레임 동기화, 오류 제어, 순서 제어. 이더넷, Frame
네트워크 계층 : 경로 설정(Routing), 트래픽 제어, 패킷 정보 전송. IP/ICMP, 패킷
전송 계층 : 종단 시스템(End-to-End) 간의 전송 연결 설정, 데이터 전송, 연결 해제, 주소 설정, 다중화(데이터의 분활과 재조립), 오류 제어, 흐름 제어. TCP/UDP, 세그먼트
세션 계층 : 송수신 측 간의 관련성을 유지, 대화 제어, 대화(회화) 구성 및 동기 제어, 데이터 교환 관리 기능. SSH/TLS
표현 계층 : 코드 변환, 데이터 암호화, 데이터 압축, 구문 검색, 정보 형식 변환, 문맥 관리 기능. JPEG/MPEG
응용 계층 : 사용자가 OSI 환경에 접근할 수 있도록 응용 프로세스 간의 정보 교환, 전자 사서함, 파일 전송, 가상 터미널 등의 서비스를 제공. HTTP/FTP
27. 네트워크 관련 장비
허브 : 한 사무실이나 가까운 거리의 컴퓨터들을 연결하는 장치로, 각 회선을 통합적으로 관리하며, 신호 증폭 기능을 하는 리피터 역할도 포함함
리피터 : 물리계층의 장비로, 전송되는 신호가 왜곡 되거나 약해질 경우 원래의 신호 형태로 재생함
브리지 : 데이터 링크 계층의 장비로 LAN과 LAN을 연결하거나 LAN 안에서 컴퓨터 그룹을 연결함
라우터 : 네트워크 계층의 장비로 LAN과 LAN의 연결 및 경로 선택, 서로 다른 LAN이나 LAN과 WAN을 연결함
게이트웨이 : 전 계층의 프로토콜 구조가 전혀 다른 네트워크의 연결을 수행함
스위치 : 브리지와 같이 LAN과 LAN을 연결하여 훨씬 더 큰 LAN을 만드는 장치
28. 프로토콜의 기본 요소
구문 : 전송하고자 하는 데이터의 형식, 부호화, 신호레벨 등을 규정함
의미 : 두 기기 간의 효율적이고 정확한 정보 전송을 위한 협조 사항과 유로 관리를 위한 제어 정보를 규정함
시간 : 두 기기 간의 통신 속도, 메시지의 순서 제어 등을 규정함
29. 프로토콜 기능
- 단편화와 재결합
단편화 : 송신 측에서 데이터 전송에 알맞게 일정 크기의 작은 블록으로 데이터를 자르는 작업
재결합 : 단편화된 블록을 원래 형태로 복원하는 작업
PDU(Protocol Data Unit) : 단편화를 통해 세분화된 데이터 블록
- 캡슐화
단편화된 데이터에 송수신지 주소, 오류 검출 코드, 프로토콜 기능을 구현하기 위해 정보를 부가 하는 것
예) 데이터 링크 제어 프로토콜의 HDLC 프레임이 대표적
데이터를 오류없이 정확하게 전송하기 위해 캡슐화를 수행
- 흐름 제어
수신 측의 처리 능력에 따라 송신 측에서 송신하는 데이터의 전송량이나 전송 속도를 조절하는 기능
방식 : 정지-대기, 슬라이딩 윈도우 방식
- 오류 제어 : 전송중에 발생하는 오류를 검출하고 정정해 데이터 제어 정보의 파손에 대비하는 기능
- 동기화 : 송수신 측이 같은 상태를 유지하도록 타이밍(Timing)을 맞추는 기능
- 순서 제어
전송되는 데이터 블록(PDU)에 전송 순서를 부여
연결 위주의 데이터 전송 방식에만 사용
- 주소 지정 : 데이터가 목적지까지 정확하게 전송되도록 목적지 이름, 주소, 경로를 부여하는 기능
- 다중화 : 한 개의 통신 회선을 여러 가입자들이 동시에 사용하도록 하는 기능
- 경로 제어 : 송수신 측 간의 송신 경로 중에서 최적의 패킷 교환 경로를 설정하는 기능
30. 인터넷 계층의 주요 프로토콜
IP : 전송할 데이터에 주소를 지정하고 경로를 설정. 비연결형인 데이터 그램 방식을 사용, 신뢰성 보장되지 않음
ICMP : IP와 조합해 통신중에 발생하는 오류의 처리와 전송 경로 변경 등을 위한 제어 메시지를 관리하는 역할
IGMP : 멀티 캐스트를 지원하는 호스트나 라우터 사이에서 멀티캐스트 그룹 유지를 위해 사용
ARP : 호스트의 IP 주소를 물리적 주소(MAC Address)로 변환
RARP : ARP와 반대로 물리적 주소를 IP 주소로 변환
31. 라우팅 프로토콜
RIP : 현재 가장 널리 사용되는 라우팅 프로토콜로, 소규모 동종의 네트워크 내에서 효율적인 방법이며, 최대 홉수를 15로 제한함
IGRP : RIP의 단점을 보완하기 위해 만들어 개발된 것으로, 네트워크 상태를 고려하여 라우팅하며, 중규모 네트워크에 적합함
OSPF : 대규모 네트워크에서 많이 사용되는 라우팅 프로토콜로, 라우팅 정보에 변화가 생길 경우 변화된 정보만 네트워크 내의 모든 라우터에 알리며, RIP에 비해 홉수에 제한이 없음
BGP : 자율 시스템(AS) 간의 라우팅 프로토콜로, EGP의 단점을 보완하기 위해 개발되었음
32. 네트워크 액세스 계층의 주요 프로토콜
Ethernet(IEEE 802.3) : CSMA/CD 방식의 LAN
IEEE 802 : LAN을 위한 표준 프로토콜
HDLC : 비트 위주의 데이터 링크 제어 프로토콜
X.25 : 패킷 교환망을 통한 DTE와 DCE 간의 인터페이스를 제공하는 프로토콜
RS-232C : 공중 전화 교환망(PSTN)을 통한 DTE와 DCE 간의 인터페이스를 제공하는 프로토콜
33. 형상 관리 기능
형상 식별 : 관리 대상의 이름과 관리 번호를 부여하고, 계층(Tree)로 구분해 수정 및 추적이 용이하도록 함
버전 제어 : 소프트웨어 업그레이드나 유지보수 과정에서 생성된 버전의 형상 항목을 관리하고, 이를 위해 특정 절차와 도구를 결합
형상 통제 : 식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준선이 잘 반영될 수 있도록 조정
형상 감사 : 기준선의 무결성을 평가하기 위해 확인, 검증 과정을 통해 공식적으로 승인
형상 기록 : 위의 절차에 따른 내용을 기록하고 보고서를 작성
34. 디지털 저작권 관리 용어
콘텐츠 제공자 : 콘텐츠를 제공하는 저작권자
패키저 : 콘텐츠를 메타 데이터(데이터에 대한 속성정보)와 함께 배포 가능한 형태로 묶어 암호화 하는 프로그램
콘텐츠 분배자 : 암호화된 콘텐츠를 유통하는 곳이나 사람
콘텐츠 소비자 : 콘텐츠를 구매해서 사용하는 주체
DRM 컨트롤러 : 배포된 콘텐츠의 이용 권한을 통제하는 프로그램
보안 컨테이너 : 콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안 장치
35. 디지털 저작권 관리의 기술 요소
암호화 : 콘텐츠 및 라이선스를 암호화하고 전자서명할 수 있는 기술
키관리 : 암호화한 키에 대한 저장 및 분배 기술
암호화 파일 생성 : 암호화된 콘텐츠로 생성
식별 기술 : 콘텐츠에 대한 식별 체계 표현 기술
저작권 표현 : 라이선스의 내용 표현 기술
정책 관리 : 라이선스 발급 및 사용에 대한 정책 표현 및 관리 기술
크랙 방지 : 크랙에 의한 콘텐츠 사용 방지 기술
인증 : 라이선스 발급 및 사용자 기준이 되는 기술
36. 애플리케이션 소스 코드 품질 동적 분석 도구
Avalanche : Valgrind 프레임 워크 및 STP 기반으로 구현됨
Valgrind : 프로그램 내에 존재하는 메모리 및 스레드 결함 등을 분석
37. 연계 테스트 : 구축된 연계시스템과 연계 시스템의 구성요소가 정상적으로 동작하는지 확인하는 활동
연계 테스트 케이스 작성 : 연계 시스템 간의 데이터 및 프로세스의 흐름을 분석해 필요한 테스트 항목을 도출하는 과정
연계 테스트 환경 구축 : 테스트의 일정, 방법, 절차, 소요 시간 등을 송수신 기관과의 협의를 통해 결정하는 것
연계 테스트 수행 : 연계 응용 프로그램을 실행해 연계 테스트 케이스의 시험 항목 및 처리 절차 등을 실제로 진행하는 것
연계 테스트 수행 결과 검증 : 예상 결과와 동일한지를 확인 하는 것
38. 암호 알고리즘
Stream 암호화 방식 : 평문과 동일한 길이의 스트림을 생성하여 비트 단위로 암호화 ex) LFSR, RC4
Block 암호화 방식 : 한 번에 하나의 데이터 블록을 암호화 ex) DES, SEED, AES, ARIA
Hash 단방향 암호화 방식 : 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변한하는 것 : SHA, MD5, N-NASH, SNEFRU
39. 암호화 종류
SEED : 한국인터넷진흥원(KISA)에서 개발한 블록 암호화 알고리즘. 블록 크기 128비트이며, 키 길이에 따라 128, 256으로 분류
ARIA : 국가 정보원과 산학연협회가 개발한 블록 암호화 알고리즘. 학계, 연구기관, 정부의 영문 앞글자로 구성되었으며 블록 크기는 128비트, 키 길이에 따라 128, 192, 256으로 분류
DES : 미국 NBS에서 발표한 개인키 암호화 알고리즘. 블록크기는 64비트이며 키길이는 56비트.
AES : 미국 표준 기술 연구소(NIST)에서 발표한 개인키 암호화 알고리즘. 블록크기는 128비트이며, 키 길이에 따라 128, 192, 256으로 분류
RSA : MIT의 라이베스트, 샤미르, 애들먼에 의해 제안된 공개키 암호화 알고리즘. 큰 숫자를 소인수 분해하기 어렵다는 것에 기반해 만들어짐.
40. 요구사항 검토 상세 항목
동료 검토 : 작성자가 명세서 내용을 직접 설명하고 동료들이 이를 들으면서 결함을 발견하는 형태의 검토 방법
워크 스루 : 검토 회의 전에 사전 검토를 한 후에 짧은 검토 회의를 통해 결함을 발견하는 검토 방법
인스펙션 : 작성자를 제외한 다른 검토 전문가들이 검토하는 방법
41. SQL 응용
프로시저 구성 : DECLARE/ BEGIN/ END/ CONTROL/ SQL/ EXCEPTION/ TRANSACTION [디비엔컨SET]
사용자 정의함수 구성 : DECLARE / BEGIN / END / CONTROL / SQL / EXCEPTION/ RETURN [디비엔컨SER]
트리거 구성 : DECLARE / EVENT / BEGIN /END / CONTROL / SQL / EXCEPTION [디이비엔컨SE]
42. 그룹 함수 : 소 그룹 간의 중간 합계, 소계를 계산하여 산출하는 함수
ROLLUP : 소계, 중간 집계 값 산출
CUBE : 다차원 집계 생성
GROUPING SET : 컬럼에 대한 개별 집계
43. 윈도우 함수 : 데이터베이스를 사용한 온라인 분석 처리 용도로 사용하기 위해 SQL에 추가한 함수. OVER 명령어.
ex) SELECT WINDOW_FUNCTION (ARGUMENTS) OVER ( [PARTITION BY 칼럼]] [ORDER BY 절] [WINDOWING 절] ) FROM 테이블 명;
44. cocomo 소프트웨어 개발 모형
조직형 : 5만 라인(50KDSI)이하의 소프트웨어를 개발하는 유형. 사무 처리용, 업무용, 과학용 응용 소프트웨어 개발에 적합
반분리형 : 조직형과 내장형의 중간형으로 30만(300KDSI) 라인 이하의 소프트웨어를 개발하는 유형. 컴파일러, 인터프리터와 같은 유틸리티 개발에 적합
내장형 : 30만(300KDSI) 라인 이상의 소프트웨어를 개발하는 유형. 신호기 제어 시스템, 미사일 유도 시스템, 실시간 처리 시스템 등의 시스템 프로그램 개발에 적합
45. 수학적 산정 기법
COCOMO : 보헴이 제안한 것으로 LOC(원시 코드 라인 수)에 의한 비용 산정 기법
Putnam : 소프트웨어 생명주기의 전 과정 동안에 사용될 노력의 분포를 가정해주는 모형. 생명 주기 예측 모형이며, Rayleigh-Norden 곡선의 노력 분포도를 기초로 함
기능 점수 : 알브레히트(Albrecht)가 제안한 것으로, 소프트웨어의 기능을 증대시키는 요인 별로 가중치를 부여하고, 요인별 가중치를 합산해 총 기능 점수를 산출해 기능 점수를 구한다.
[비용 산정 자동화 추정 도구]
SLIM : Rayleigh-Norden 곡선과 Putnam 예측 모델을 기초로 한 자동화 추정 도구
ESTIMACS : 다양한 프로젝트와 개인별 요소를 수용하도록 FP 모형을 기초로해 개발된 자동화 추정 도구
46. 서비스 거부 공격 유형
Ping of Death : Ping 명령을 전송할 때 패킷의 크기를 인터넷 프로토콜 허용 범위(65,536 바이트) 이상으로 전송해 공격 대상의 네트워크를 마비 시킴
Smurfing(스머핑) : IP나 ICMP의 특성을 악용해 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로 네트워크 상태를 불능으로 만듬
SYN Flooding : TCP는 신뢰성 있는 전송을 위해 3-way-handshake를 거친 후에 데이터를 전송하는데, SYN Flooding은 공격자가 가상의 클라이언트로 위장해 3-way-handshake 과정을 의도적으로 중단시킴으로 공격 대상지인 서버가 대기 상태에 놓여 정상적인 서비스를 수행하지 못하게 만듬
TearDrop : 데이터의 송수신 과정에서 패킷의 크기가 커 여러 개로 분할되어 전송될 때, 분할 순서를 알 수 있도록 Fragment Offset 값을 함께 전송하는데, TearDrop은 이 Offset값을 변경시켜 수신 측에서 패킷을 재조합할 때 오류로 인한 과부하를 초래함
Land Attack : 패킷을 전송할 때 송신 IP 주소와 수신 IP 주소를 모두 공격 대상의 IP 주소로 하여 공격대상에게 전송하는 것. 공격 대상은 송신 측이 자신이기 때문에 자신에게 무한히 응답하게 된다.
DDos : 여러 곳에 분산된 공격 지점에서 한 곳의 서버에 대해 분산 서비스 공격을 수행하는 것으로, 네트워크에서 취약점이 있는 호스트들을 탐색한 후 이들 호스트에 분산 서비스 공격용 툴을 설치해 에이전트로 만든 후 DDoS 공격에 이용함
47. 네트워크 침해 공격 관련 용어
스미싱 : 각종 행사 안내 등 문자 메시지를 이용해 사용자의 개인 신용 정보를 빼내는 수법
스피어 피싱 : 특정 대상을 선정한 후 그 대상에게 일반적인 이메일로 위장한 메일을 지속적으로 발송해 발송 메일의 본문 링크나 첨부된 파일을 클릭하도록 유도해 개인정보 탈취
APT(지능형 지속 위협) : 다양한 IT 기술과 방식들을 이용해 조직적으로 특정 기업이나 조직 네트워크에 침투해 활동 거점을 마련한 뒤 때를 기다리면서 보안을 무력화하고 정보를 수집한 다음 외부로 빼돌리는 공격
무작위 대입 공격(Brute Force Attack) 암호화된 문서의 암호키를 찾아내기 위해 적용가능한 모든 값을 대입해 공격하는 방식
SQL 삽입 공격 : 전문 스캐너 프로그램 혹 봇넷 등을 이용해 웹사이트를 무차별적으로 공격하는 과정에서 취약한 사이트가 발견되면 데이터베이스 등의 데이터를 조작하는 공격 방식
크로스사이트 스크립팅(XSS) : 웹페이지에 악의적인 스크립트를 삽입해 방문자들의 정보를 탈취하거나 비정상적인 기능 수행을 유발하는 공격
48. 정보 보안 침해 공격 관련 요소
좀비 PC : 악성 코드에 감염되 다른 프로그램이나 컴퓨터를 조종하도록 만들어진 컴퓨터. C&C(Command & Control) 서버의 제어를 받아 DDoS공격에 이용됨
C&C 서버 : 해커가 원격지에서 감염된 좀비 PC에 명령을 내리고 악성코드를 제어하기 위한 용도로 사용하는 서버
봇넷 : 악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 형태
웜 : 네트워크를 연속적으로 자신을 복제해 시스템의 부하를 높임으로 결국 시스템을 다운 시키는 바이러스의 일종.
제로 데이 공격 : 보안 취약점이 발견되었을 때 발견된 취약점의 존재 자체가 널리 공표되기도 전에 해당 취약점을 통해 이루어지는 보안 공격으로 공격의 신속성을 의미
키로거 공격 : 컴퓨터 사용자의 키보드 움직임을 탐지해 ID, 패스워드 같은 개인정보를 빼가는 해킹 공격
백도어 : 시스템 설계자가 서비스 기술자나 유지보수 프로그램 작성자의 액세스 편의를 위해 시스템 보안을 제거해 만들어 놓은 비밀 통로
- 백도어 탐지 방법 : 무결성 검사, 로그 분석, SetUID 파일 검사
트로이 목마 : 정상적인 기능을 하는 프로그램으로 위장해 프로그램 내에 숨어 있다가 해당프로그램이 동작할때 활성화 되어 부작용을 일으키는 것. 자기 복제 능력은 없음.
49. XP(eXtreme Programming) 기법
핵심 가치 : 의사소통(Communication), 단순성(Simplicity), 용기(Courage), 존중(Respect), 피드백(Feedback)
Pair Programming(짝 프로그래밍) : 다른 사람과 함께 프로그래밍을 수행함으로 개발에 대한 책임을 공동으로 나눠 갖는 환경 조성
Test-Driven Development(테스트 주도 개발) : 테스트 케이스를 먼저 작성해 자신이 무엇을 해야할지 정확히 파악. 테스트가 지속적으로 진행될 수 있도록 자동화된 테스팅 도구 사용
Whole Team(전체 팀) : 개발에 참여하는 모든 구성원은 각자의 역할에 따른 책임을 가져야함
Continuous Integration(계속적인 통합) : 모듈 단위로 나눠서 개발된 코드는 작업이 마무리 될 때마다 지속적으로 통합됨
Design Improvement(디자인 개선 또는 리팩토링) : 프로그램 기능의 변경 없이 단순화, 유연성 강화 등을 통해 시스템 재구성
Small Releases(소규모 릴리즈) : 릴리즈 기간을 짧게 반복해 고객의 요구 변화에 신속히 대응
50. XP 개발 프로세스
사용자 스토리 : 요구사항 간단한 시나리오로 표현. 기능 단위 구성.
릴리즈 계획 수립 : 부분적으로 기능이 완료된 제품 제공
스파이크 : 요구사항 신뢰도를 높이고, 기술 문제의 위험 감소를 위해 별도로 만드는 프로그램
이터레이션 : 하나의 릴리즈를 더 세분화한 단위
승인 검사(인수 테스트) : 계획된 릴리즈 단위가 부분 완료가 구현되면 고객이 직접 수행해서 테스트함.
소규모 릴리즈
51. 스크럼 개발 프로세스
제품 백로그 : 제품 개발에 필요한 요구사항을 우선순위에 따라 나열한 로그 리스트. 지속적으로 업데이트되며, 사용자 스토리 기반의 릴리즈 계획 수립
스프린트 계획 회의 : 수행할 작업에 대한 단기적 일정. 태스크(Task) 작업 단위로 분할. 개발자별로 수행할 작업 목록인 스프린트 백로그 작성
스프린트 : 실제 개발 작업 과정. 개발자가 원하는 태스크를 담당할 수 있도록 함. 할 일(Todo), 진행 중(In Progress), 완료(Done)의 상태로 태스크 관리
일일 스크럼 회의 : 15분 정도의 짧은 시간으로 진행상황을 점검하고 남은 작업 시간을 소멸 차트에 표시한다.
스프린트 검토 회의 : 제품 책임자(PO)는 개선할 사항에 대한 피드백을 정리 후 다음 스프린트에 반영할 수 있도록 제품 백로그를 업데이트함
스프린트 회고
52. 소프트웨어 생명 주기
폭포수 모형 : 가장 오래되고 가장 폭넓게 사용된 전통적 모형으로 고전적 생명 주기 모형이라고 함. 두 개 이상의 과정 병행 수행 할 수 없음.
- 순서 : 타당성 검토 -> 계획 -> 요구분석 -> 설계 -> 구현 -> 시험 -> 유지보수.
프로토타입 모형 : 사용자와 시스템 사이의 인터페이스에 초점. 시스템 모형의 골격 코드. 폭포수 모형의 단점 보안.
- 순서 : 요구 수집 -> 설계 -> 구축 -> 평가 -> 조정 -> 구현 -> 요구수집
나선형 모형 : 보헴(Boehm) 제안. 여러 번의 개발 과정과 검토 과정을 거치는 점진적 모형. 별도의 유지보수 과정 필요 없음
애자일 모형 : 고객과의 소통에 초점을 맞춘 방법론. 스프린트 또는 이터레이션 개발 주기 반복. 고객이 요구사항에 우선순위를 부여함.
- 종류 : 스크럼, XP, 칸반, Lean, 크리스탈, ASD, FDD, DSDM, DAD
53. 스크럼
제품 책임자(PO) : 이해관계자들의 의견을 종합해 제품에 대한 요구사항 작성. PO는 요구 사항이 담긴 백로그를 작성하고 백로그 우선 순위를 지정
스크럼 마스터(SM) : 일일 스크럼 회의 주관하여 진행 사항을 점검하고, 개발 과정에서 발생된 장애 요소를 공론화해서 처리
개발팀(DT) : 개발자, 디자이너, 테스터 등
54. 요구사항 개발 프로세스
도출 : 시스템, 사용자, 개발자가 의견을 교환하여 요구사항을 식별하고 이해하는 과정. 소프트웨어 개발 생명주기(SDLC) 반복
- 요구사항 도출 방법 : 인터뷰, 설문, 브레인스토밍, 워크샵, 프로토타이핑, 유스케이스(사용사례)
분석 : 요구사항 중 명확하지 않거나 모호한 부분을 걸러내는 과정. 타당성을 조사. 비용과 일정에 대한 제약 설정
- 요구사항 분석 기법 : 요구사항 분류, 개념 모델링, 요구사항 할당, 요구사항 협상, 정형 분석
명세 : 요구사항을 체계적으로 분석 한 후 승인될 수 있도록 문서화.
확인 : 개발 자원을 요구사항에 할당하기 전에 명세서가 정확하고 완전하게 작성되었는지를 검토. 요구사항 관리 도구를 이용하여 요구사항 정의 문서를 형상 관리 해야 함.
- 요구사항 확인 기법 : 요구사항 검토, 프로토타이핑, 모델 검증(정적 분석), 인수 테스트
55. 소프트웨어 패키징 작업 순서
기능 식별 : 코드의 기능 확인
모듈화 : 기능 단위로 코드 분류
빌드 진행 : 모듈 별로 실행 파일
사용자 환경 분석 : 사용 환경(웹/모바일/PC 등), 운영체제(인도우/유닉스/안드로이드 등), CPU, RAM
패키징 및 적용 시험 : 빌드한 파일을 배포용 파일 형식으로 패키징하고 테스팅
패키지 변경 개선 : 적용 시험 후 확인된 불편 사항 반영
배포 : 오류 발생 시 개발자에게 전달 및 수정 요청
56. 릴리즈 노트 작성 순서
모듈 식별 -> 릴리즈 정보 확인 -> 릴리즈 노트 개요 작성 -> 영향도 체크 -> 정식 릴리즈 노트 작성 -> 추가 개선 항목 식별
57. 스케줄링 목적
공정성 : 모든 프로세스에 공정하게 할당
처리율 증가(Throughput) : 단위 시간당 프로세스 처리 비율 증가
CPU 이용률 증가 : CPU의 낭비시간 감소, CPU의 사용 시간 비율 증가
우선순위 제도 : 우선순위가 높은 프로세스 우선 수행
오버헤드 최소화 : 오버헤드 최소화
응답시간 최소화 : 반응 시간 최소화
반환 시간 최소화(Turn Around Time) : 프로세스 제출 시간으로부터 실행이 완료되기 까지의 걸리는 시간 최소화
대기 시간 최소화 : 준비상태 큐에 대기하는 시간 최소화
균형 있는 자원의 사용 : 메모리, 입출력장치의 자원을 균형있게 사용
무한 연기 회피 : 자원을 사용하기 위한 무한정 연기 상태 회피
58. 스케줄링 과정
장기 스케쥴링 : 어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업. 작업 스케줄링, 상위 스케줄링이라고 함. 작업 스케줄러에 의해 수행됨
중기 스케쥴링 : 어떤 프로세스들이 CPU를 할당받을 것인지 결정하는 작업. CPU를 할당받으려는 프로세스가 많을 경우 프로세스 일시 보류 후 활성화함으로 부하를 조절함.
단기 스케줄링 : 프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업. 프로세서 스케줄링, 하위 스케줄링 이라고 함. 프로세스 스케줄러에 의해 문맥 교환이 수행됨
59. 스케줄링 기법
비선점(Non-Preemptive) 스케줄링 : 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법(순서대로). 프로세스가 CPU를 할당받으면 해당 프로세스가 완료될 때까지 CPU 사용. 모든 프로세스에 대한 요구를 공정하게 처리. 프로세스 응답 시간의 예측이 용이. 일괄처리 방식에 적합.
선점(Preemptive) 스케줄링 : 하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법. 우선순위가 높은 프로세스 먼저 처리. 빠른 응답시간을 요구하는 대화식 시분할 시스템에 용이. 많은 오버헤드를 초래. 선점이 가능하도록 인터럽트용 타이머 클럭이 필요.
60. Locality(지역성)
데닝(Denning) 교수에 의해 개념 증명. 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질. 스래싱을 방지하기 위한 워킹셋의 기반이 됨. 프로세스가 집중적으로 사용하는 페이지를 알아내는 방법.
- 시간 구역성 : 프로세스가 실행되면서 하나의 페이지를 일정 시간 동안 집중적으로 액세스하는 현상. 한번 참조한 페이지는 가까운 시간 내에 계속 참조할 가능성이 높다
- 시간 구역성이 이뤄지는 기억 장소 : Loop(반복,순환), 스택(Stack), 부 프로그램(Sub Routine), Counting(1씩 증감), 집계에 사용되는 변수
- 공간 구역성 : 프로세스 실행시 일정 위치의 페이지를 집중적으로 액세스 하는 현상. 어느 페이지를 참조하면 그 근처의 페이지를 계속 참조할 가능성이 높음.
- 공간 구역성이 이뤄지는 기억 장소 : 배열 순회(Array Traversal), 순차적 코드의 실행, 프로그래머들이 관련된 변수(데이터를 저장할 기억 장소)들을 서로 근처에 할당되는 기억장소, 같은 영역에 있는 변수
61. 워킹 셋(Working Set)
프로세스가 일정시간 동안 자주 참조하는 페이지들의 집합. 자주 참조되는 워킹 셋을 주기억장치에 상주시킴으로서 페이지 부재 및 페이지 교체 현상을 줄이고 프로세스의 기억 장치 사용이 안정됨. 시간이 지남에 따라 자주 참조하는 페이지들이 집합이 변화하기 때문에 워킹셋은 시간에 따라 변함.
62. 페이지 부재
페이지 부재 : CPU가 액세스한 가상 페이지가 주기억장치에 없는 경우. 페이지 부재가 발생하면 해당 페이지를 보조기억장치(디스크)에서 주기억장치로 가져와야함.
페이지 부재 빈도(PFF) : 페이지 부재 횟수를 의미.
페이지 부재 빈도 방식 : 페이지 부재율에 따라 주기억장치에 있는 페이지 프레임 수를 늘리거나 줄여 페이지 부재율을 적정 수준으로 유지하는 방식.
63. 프리페이징(Prepaging)
처음의 과도한 페이지 부재를 방지하기 위해 필요할 것 같은 모든 페이지를 한꺼번에 페이지 프레임에 적재하는 기법
64. 스래싱(Thrashing)
프로세스의 처리 시간 보다 페이지 교체에 소요되는 시간이 더 많아지는 현상. 다중 프로그래밍 시스템이나 가상 기억장치를 사용하는 시스템에서 하나의 프로세스 수행 과정 중 자주 페이지 부재가 발생함으로 나타나는 현상으로, 전체 시스템의 성능이 저하됨. 다중 프로그래밍 정도가 상승하면 CPU의 이용률은 어느 특정 시점까지 높아지며, 정도가 더욱 커지면 스래싱이 발생해 CPU의 이용률이 급격히 감소하게 된다.
스래싱 현상 방지 방법 : 다중 프로그래밍 정도를 적정 수준으로 유지, 페이지 부재 빈도를 조절하여 사용, 워킹 셋 유지, 부족한 자원을 증설, 일부 프로세스 중단.
65. 프로세스 상태 전이
제출(Submit, 생성) : 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태
접수(Hold, 생성) : 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태. 생성 과정 안에 (제출->접수)이 포함.
준비(Ready) : 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태. 프로세스는 준비상태 큐에서 실행을 준비.
접수(Hold) : 상태에서 준비상태로의 전이는 Job 스케줄러에 의해 수행된다.
실행(Run) : 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태. 프로세스 수행이 완료되기 전에 프로세스에게 주어진 프로세서 할당 시간(Timer Runout)이 종료 되면 프로세스는 준비 상태로 전이됨. 실행중인 프로세스에 입출력 처리가 필요하면 실행중인 프로세스는 대기 상태로 전이됨.
대기(Wait), 보류, 블록(BlocK) : 프로세스에 입출력처리가 필요하면 현재 실행 중인 프로세스가 중단되고, 입출력처리가 완료될 때까지 대기하고 있는 상태
종료 : 프로세스의 실행이 끝나고 프로세스 할당이 해제된 상태
*요약 : 사용자가 작업을 요청하면 프로세스가 스풀 공간에서 생성되고, 프로세서를 할당받기 위해 준비하며 프로세서가 할당되면 실행됩니다. 이때 할당시간이 종료되면 다시 준비로 가거나 입출력 처리가 필요하면 대기로 가서 입출력이 완료되면 Wake Up에 의해 다시 준비로 갑니다.
66. 프로세스 상태 전이 관련 용어
Dispatch : 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행상태로 전이되는 과정
Wake Up : 입출력작업이 완료되어 프로세스가 대기 상태에서 준비 상태로 전이되는 과정
Spooling : 입출력 장치의 공유 및 상대적으로 느린 입출력장치의 처리속도를 보완하고 다중프로그래밍 시스템의 성능을 향상시키기 위해 입출력할 데이터를 직접 입출력장치에 보내지 않고 나중에 한꺼번에 입출력하기 위해 디스크에 저장하는 과정.
67. 가상기억장치 기법
페이징(Paging) 기법 : 가상 기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후, 나눠진 프로그램(페이지)을 동일하게 나눠진 주기억장치의 영역(페이지 프레임)에 적재시켜 실행. 외부 단편화 발생x, 내부 단편화 발생o. 주소 변환을 위해 페이지 맵 테이블이 필요함. 페이지 맵 테이블 사용으로 비용이 증가, 처리속도가 감소.
세그먼테이션(Segmentation) 기법 : 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행시키는 기법. 배열이나 함수 등과 같은 논리적 크기로 나눈 단위를 세그먼트라고 부르며, 각 세그먼트는 고유한 이름과 크기를 가짐. 기억장치의 사용 관점을 보존하는 기억장치 관리 기법이다. 주소 변환을 위해 세그먼트 맵 테이블이 필요함. 세그먼트가 주 기억장치에 적재될 때 다른 세그먼트에게 할당된 영역을 침범할 수 없도록 기억장치 보호키가 필요함. 내부 단편화x, 외부 단편화o
68. 한국형 웹 콘텐츠 접근성 지침(KWCAG)
장애인이 비장애인과 동등하게 접근할 수 있는 웹 콘텐츠의 제작 방법
69. UI 표준 및 지침
UI 표준 : 전체시스템에 포함된 모든 UI에 공통적으로 적용될 내용, 화면 구성이나 화면 이동이 포함됨
UI 지침 : UI 요구사항. 구현시 제약사항 등 UI 개발 과정에서 꼭 지켜야할 공통의 조건
웹 표준 : 웹 사이트 작성 시 이용하는 HTML, JavaScript 등에 대한 규정, 웹 페이지가 다른 기종이나 플랫폼에서도 구현되도록 제작하는 기법
웹 접근성 : 누구나, 어떠한 환경에서도 웹 사이트에서 제공하는 모든 정보를 접근하여 이용할 수 있도록 보장하는 것
웹 호환성(Cross browsing) : 하드웨어나 소프트웨어 등이 다른 환경에서도 모든 이용자에게 동등한 서비스를 제공하는 것
70. UI 설계 도구
와이어프레임 : 기획 단계에 초기에 제작하는 것. 페이지에 대한 개략적인 레이아웃이나 UI 요소등에 뼈대를 설계. 각 페이지의 영역 구분, 콘텐츠, 텍스트 배치 등을 화면 단위로 설계.
- 종류 : 손 그림, 파워포인트, 키노트, 스케치, 일러스트, 포토샵 등
목업 : 디자인, 사용방법 설명, 평가 등을 위해 와이어 프레임보다 좀 더 실제 화면과 유사하게 제작한 정적인 형태의 모형. 시각적으로만 구성 요소를 배치
- 종류 : 파워 목업, 발사믹 목업
스토리보드 : 와이어프레임에 콘텐츠에 대한 설명, 페이지 간 이동 흐름(인터랙션)을 추가한 문서. 디자이너와 개발자가 최종적으로 참고하는 구체적인 작업 지침서로, 정책, 프로세스 콘텐츠 구성, 와이어 프레임, 기능 정의 등 서비스 구축을 위한 모든 정보가 들어 있음. 상단이나 우측에는 제목, 작성자를 입력. 좌측에는 UI 화면, 우측에는 디스크립션(설명)을 기입
- 종류 : 파워포인트, 키노트 스케치, Axure
프로토타입 : 와이어프레임이나 스토리보드 등에 인터랙션을 적용함으로 실제 구현된것처럼 테스트가 가능한 동적인 형태의 모형.
- 종류 : HTML/css, Axure, Flinto, 네이버 프로토나우, 카카오 오븐 등
유스케이스 : 사용자 측면에서의 요구사항으로, 목표를 달성하기 위해 수행할 내용을 기술. 사용자의 요구사항을 빠르게 파악함으로 프로젝트 초기에 시스템의 기능적인 요구를 결정하고 그 결과를 문서화함. 자연어로 작성된 사용자의 요구사항을 구조적으로 표현한 것 -> 다이어그램으로 묘사.
71. UI 요구사항 작성 순서
요구사항 요소 확인 -> 정황 시나리오 작성 -> 요구사항 작성
72. 요구사항 요소 확인
데이터 요구 : 사용자가 요구하는 모델과 객체들의 주요 특성을 기반으로 하여 데이터 객체들을 정리(이메일의 메시지 속성 -> 제목, 발신인, 답변 등)
기능 요구 : 사용자의 목적 달성을 위해 무엇을 실행해야 하는지를 동사형으로 설명. 기능 요구 리스트는 최대한 철저하게 정리(읽거나 삭제, 다른 메시지와 함께 보관)
제품/서비스의 품질 : 데이터 및 기능 요구 외에 제품의 품질, 서비스, 여기에 감성적인 품질 등을 고려하여 작성.(얼마나 빠르게 처리할 수 있는지의 여부 등 정량화가 가능한 요구사항)
제약 사항 : 제품 완료 데드라인, 전체 개발 및 제작에 필요한 비용, 시스템 준수에 필요한 규제가 포함.(제약사항의 변경 가능 여부 확인)
73. 정황 시나리오 작성
사용자의 요구사항을 도출하기 위해 작성하는 것. 사용자가 목표를 달성하기 위해 수행하는 방법을 순차적으로 묘사. 요구사항 정의에 사용되는 초기 시나리오. 개발하는 서비스의 모습을 상상하는 첫번째 단계로, 사용자 관점에서 시나리오 작성
주로 사용하는 기능 위주로 작성.
74. 소프트웨어 품질 요구사항
기능성 : 소프트웨어가 사용자의 요구사항을 정확하게 만족하는 기능을 제공하는 여부 (정합성, 정확성, 상호운용성, 보안성, 호환성)
신뢰성 : 소프트웨어가 요구된 기능을 정확하고 일관되게 오류 없이 수행할 수 있는 정도(성숙성, 고장허용성, 회복성)
사용성 : 사용자와 컴퓨터 사이에 발생하는 어떠한 행위에 대하여 사용자가 정확하게 이해하고 사용하며, 향후 다시 사용하고 싶은 정도(이해성, 학습성, 운용성, 친밀성)
효율성 : 사용자가 요구하는 기능을 할당된 시간 동안 한정된 자원으로 얼마나 빨리 처리할 수 있는 정도(시간효율성, 자원효율성)
유지보수성 : 환경의 변화 또는 새로운 요구사항이 발생했을 때 소프트 웨어를 개선하거나 확장할 수 있는 정도(분석성, 변경성, 안정성, 시험성)
이식성 : 소프트웨어가 다른 환경에서도 얼마나 쉽게 적용(적응)할 수 있는 정도(적용성, 설치성, 대체성, 공존성)
75. UI 시나리오 문서의 요건
완전성 : 기능보다는 사용자의 태스크에 초점을 맞춰 최대한 상세하게 기술
일관성 : 목표, 시스템 및 사용자의 요구사항, UI 스타일 등이 모두 일관성을 유지
이해성 : 누구나 쉽게 이해할 수 있도록 설명
가독성 : 문서 인덱스에 관한 규칙이나 목차를 제공, 하이라이팅, 하이퍼링크 사용해 가독성을 증가
수정용이성 : 시나리오의 수정이나 개선이 쉬워야 함.
추적용이성 : 변경 사항은 언제, 어떤 부분이, 왜 발생했는지 추적가능해야함.
76. EAI(Enterprise Application Integration)
EAI는 기업 내 각종 애플리케이션 및 플롯폼 간의 정보 전달, 연계 통합 등 상호 연동이 가능하게 해주는 솔루션이다. EAI는 비즈니스 간 통합 및 연계성을 증대시켜 효율성 및 각 시스템 간의 확정성을 높여준다.
Point-to-Point : 가장 기본적인 애플리케이션 통합 방식으로, 1대1로 연결한다. 변경 및 재사용이 어렵다는 단점.
Hub & Spoke : 단일 접점인 허브 시스템을 통해 데이터를 전송하는 중앙 집중형 방식. 확장, 유지 보수가 유리하다. 허브 장애 발생시 시스템 전체에 영향이 있다는 단점.
Message Bus : 애플리케이션 사이에 미들웨어를 두어 처리하는 방식이다. 확장성이 뛰어나며 대용량 처리가 가능하다.
Hybrid : Hub & Spoke와 Message Bus의 혼합 방식이다. 데이터 병목 현상을 최소화 할 수 있다.
77. ESB(Enterprise Service Bus)
ESB는 애플리케이션 간 연계, 데이터 변환, 웹 서비스 지원 등 표준 기반의 인터페이스를 제공하는 솔루션이다. ESB는 애플리케이션 통합 측면에서 EAI와 유사하지만 애플리케이션 보다는 서비스 중심의 통합을 지향한다. ESB는 특정 서비스에 국한 되지 않고 범용적으로 사용하기 위해 애플리케이션과의 결합도(Coupling)를 약하게 유지한다. 관리 및 보안 유지가 쉽고, 높은 수준의 품질 지원이 가능하다.
79. 목적에 따른 테스트
회복 테스트 : 시스템에 여러가지 결함을 주어 실패하도록 한 후 올바르게 복구 되는지 테스트
안전 테스트 : 시스템에 설치된 시스템 보호 도구가 불법적인 침입으로 부터 시스템을 보호할 수 있는지 테스트
강도 테스트 : 과도한 정보량이나 빈도 등을 부과하여 과부하 시에도 소프트웨어가 정상적으로 실행되는지를 확인하는 테스트
성능 테스트 : 소프트웨어 실시간 성능이나 전체적인 효율성을 진단하는 테스트로 소프트웨어의 응답시간, 처리량 등을 테스트한다.
구조 테스트 : 소프트웨어 내부의 논리적인 경로, 소스 코드의 복잡도 등을 평가하는 테스트다.
회귀 테스트 : 소프트웨어 변경 또는 수정된 코드에 새로운 결함이 없음을 확인하는 테스트다.
병행 테스트 : 동일한 데이터를 입력하여 수정 전과 수정 후의 결과를 비교하는 테스트다.
80. 인덱스
데이터 레코드를 빠르게 접근하기 위해 키 값, 포인터 쌍으로 구성되는 데이터 구조. 인덱스는 데이터가 저장된 물리적 구조와 밀접한 관계. 레코드가 저장된 물리적 구조에 접근하는 방법 제공. 인덱스를 통해 파일 레코드에 대한 액세스를 빠르게 수행. 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스의 개수를 최소로 하는 것이 효율적. 인덱스가 없으면 TABLE SCAN(특정한 값을 찾기위해 모든 데이터 페이지를 확인)이 발생.
트리 기반 인덱스 : 인덱스를 저장하는 블록들이 트리 구조를 이루는 것으로, 상용 DBMS에서는 트리 구조 기반의 B+트리 인덱스를 주로 활용
비트맵 인덱스 : 인덱스 컬럼의 데이터를 Bit 값인 0또는 1로 변환해 인덱스 키로 사용하는 방법. 비트맵 인덱스의 목적은 키 값을 포함하는 로우의 주소를 제공하는 것. 분포도가 좋은 컬럼에 적합하며 성능 향상 효과를 기대할 수 있음.
함수 기반 인덱스 : 컬럼의 값 대신 컬럼에 특정 함수나 수식을 적용해 산출된 값을 사용하는 것으로, B+ 트리 인덱스나 비트맵 인덱스를 생성해 사용. 데이터를 입력하거나 수정할 때 함수를 적용해야 하므로 부하가 발생할 수 있음.
비트맵 조인 인덱스 : 다수의 조인된 객체로 구성된 인덱스로, 단일 객체로 구성된 일반적인 인덱스와 액세스 방법이 다름.
도메인 인덱스 : 개발자가 필요한 인덱스를 직접 만들어 사용하는 것. 확장형 인덱스(Extensible Index)라고도 함.
81. 뷰(View)
사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 이름을 가지는 가상 테이블. 뷰는 데이터 보정 작업, 처리 과정 시험 등 임시적인 작업을 위한 용도로 활용된다. 뷰는 가상 테이블이기 때문에 물리적 구현이 없고, 데이터의 논리적 독립성을 제공한다.
82. 클러스터 설계
데이터 저장 시 데이터 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법. 클러스터링된 테이블은 데이터 조회 속도 향상시키지만 데이터 입력, 수정, 삭제에 대한 성능은 저하시킨다. 클러스터는 데이터의 분포도가 넓을수록 유리
83. 파티션 설계
대용량 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것. 대용량 DB의 경우 중요한 몇 개의 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워진다. 테이블이나 인덱스를 파티셔닝 하면 파티션키나 인덱스키에 따라 물리적으로 별도의 공간에 데이터가 저장된다. 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션 별로 수행된다.
[인덱스 파티션]
Local Paritioned Index : 테이블 파티션과 인덱스 파티션이 1:1 대응 되도록 파티셔닝
Global Partitioned Index : 테이블 파티션과 인덱스 파티션이 독립적으로 구성되도록 파티셔닝
Prefixed Partitioned Index : 인덱스 파티션 키와 인덱스 첫 번째 컬럼이 같음
Non-Prefixed Partitioned Index : 인덱스 파티션 키와 인덱스 첫 번째 컬럼이 다르다.
84. 분산 데이터베이스
논리적으로는 하나의 시스템에 속하지만 물리적(여러 지역으로)으로는 네트워크를 통해 연결된 여러 개의 컴퓨터 사이트에 분산되어 있는 데이터베이스
위치 투명성 : 액세스 하려는 데이터베이스의 실제 위치를 알 필요 없이 단지 데이터베이스의 논리적 명칭만으로 액세스 할 수 있음
중복 투명성 : 동일 데이터가 여러 곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용하고, 시스템은 자동으로 여러 자료에 대한 작업을 수행한다.
병행 투명성 : 분산 데이터베이스와 관련된 다수의 트랜잭션들이 동시에 실현되더라도 그 트랜잭션의 결과는 영향을 받지 않는다.
장애 투명성 : 트랜잭션, DBMS, 네트워크, 컴퓨터 장애에도 불구하고 트랜잭션을 정확하게 처리한다.
85. NoSQL(Not Only SQL)
전통적인 RDBMS와 다른 DBMS를 지칭하기 위한 용어로, 데이터 저장에 고정된 테이블 스키마가 필요하지 않고 조인 연산을 사용할 수 없으며, 수평적으로 확장이 가능한 DBMS으로, Basically Availale, Soft-state, Eventually Consistency의 특성이 있음
86. CWE (Common Weakness Enumeration)
소프트웨어 취약점 및 취약점에 대한 범주 시스템으로, 소프트웨어의 결함을 이해하고 이러한 결함을 식별·수정 및 방지하는데 사용할 수 있는 자동화된 도구를 작성하는 시스템
87. CLASP (Comprehensive, Lightweight Application Security Process)
개념 관점, 역할기반 관점, 활동평가 관점, 활동구현 관점, 취약성 관점 등의 활동중심, 역할 기반의 프로세스로 구성된 집합체로서 이미 운영중인 시스템에 적용하기 적당한 소프트웨어 개발 보안 방법론
88. SPICE((Software Process Improvement and Capability dEtermination)
소프트웨어 개발 표준 중 소프트웨어의 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준으로, 공식 명칭은 ISO/IEC 15504
89. 요구 사항 분석의 도구와 기법
사용자 인터뷰, 핵심 사용자 그룹 면담(FGI: Focus Group Interview): 사용자 면담 또는 시스템 관리자 및 서비스 활용자와 같은 핵심 그룹 면담 연계 데이터 정의, 연계 데이터의 활용 목적, 필요성 등을 식별하기 위함으로 사용자 인터뷰 전 연계 대상 시스템의 응용 애플리케이션 기능, 서비스의 확인이 필요함
체크리스트(Checklist) : 연계 데이터와 연계 시스템 아키텍처 정의를 위해 시스템 운영 환경, 성능, 보안, 데이터 발생 등 다각도의 관점에서 고려 사항 점검 및 확인
설문지 및 설문 조사 : 서비스 활용 목적에 따라 연계가 필요한 데이터를 식별하고, 연계 주기 등을 분석하기 위해 설문 조사 항목을 통해 자료를 수집. 객관식 문항으로 예상 답변을 일정 범위 이내로 한정할 수도 있음
델파이 기법 : 통합 구현 및 연계 전문가, 시스템 아키텍처, 업무 전문가 등 각 분야 전문가로부터 연계 데이터 및 사용자 요구 사항 식별
연계 솔루션 비교 분석: EAI, ESB, Open API 등 다양한 연계 방식과 연계 솔루션 별 연계 시의 성능, 보안, 데이터 처리, 모니터링 등의 장단점을 비교함
90. CCB(Configuration Control Board; 형상통제 위원회)
형상 항목에 대한 형상 베이스라인이 승인된 후, 발생되는 형상 항목의 변경에 대하여 평가, 조정, 승인/보류/기각을 결정하는 심의 조직
91. 시큐어 코딩 가이드
입력데이터 검증 및 표현 : 프로그램 입력값에 대한 검증 누락 혹은 부적절한 검증, 데이터의 잘못된 형식지정으로 발생할 수 있는 보안 약점(SQL 삽입, 크로스사이트 스크립팅 등)
보안 기능 : 보안 기능(인증, 접근제어, 기밀성, 암호화, 권한관리등)을 적절하지 않게 구현 시 발생할 수 있는 보안약점(부적절한인가, 중요정보 평문저장 등)
시간 및 상태 : 동시 또는 거의 동시 수행을 지원하는 병렬 시스템, 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태를 부적절하게 관리하여 발생할 수 있는 보안 약점(경쟁조건, 제어문을 사용하지 않는 재귀함수 등)
에러처리 : 에러 처리하지 않거나, 불충분하게 처리하여 에러정보에 중요정보가 포함될때 발생할 수 있는 보안약점(취약한 패스워드 요구조건, 오류메시지를 통한 정보노출 등)
코드 오류 : 타입변환 오류, 자원(메모리 등)의 부적절한 반환 등과 같이 개발자가 범할 수 있는 코딩오류로 인해 유발되는 보안약점(널 포인터 역참조, 부적절한 자원해제 등)
캡슐화 : 중요한 데이터 또는 기능성을 불충분하게 캡슐화하였을 때 인가되지 않는 사용자에게 데이터 누출이 가능해지는 보안약점(제거되지 않고 남은 디버거코드, 시스템 데이터 정보노출 등)
API 오용 : 의도된 사용에 반하는 방법으로 API를 사용하거나 보안에 취약한 API를 사용하여 발생할 수 있는 보안 약점(DNS Lookup에 의존한 보안결정, 널 매개변수 미조사 등)
92. UI 설계 구성요소
UI 설계서 표지 : UI 설계서에 포함될 프로젝트 명 또는 시스템 명을 포함시킨다.
UI 설계서 개정 이력 : UI 설계서 처음 작성 시에는 첫 번째 항목으로 ‘초안 작성’을 포함시키고 그에 해당 되는 초기 버전(version)을 1.0으로 설정한다. 변경 또는 보완이 충분히 이루어져 완성 이 되었다고 판단할 경우 버전을 x.0 으로 바꾸어 설정한다.
UI 요구사항 정의 : UI 요구사항들을 재확인하고 정리한다.
시스템 구조 : UI 프로토타입을 재확인한다. UI 요구사항들과 UI 프로토타입에 기초해 UI 시스템 구조를 설계한다.
사이트 맵(Site Map) : UI 시스템 구조의 내용을 사이트 맵의 형태로 작성한다. 사이트 맵 상세 내용(Site Map Detail)을 표 형태로 작성한다.
프로세스(Process) 정의 : 사용자 관점에서 요구되는 프로세스들을 진행되는 순서에 맞추어 정리한다.
화면 설계 : UI 프로토타입과 UI 프로세서 정의를 참고해 각 페이지 별로 필요한 화면을 설계한다. 각 화면 별로 구분되도록 각 화면 별 고유 ID를 부여하고 별도의 표지 페이지를 작성한다. 각 화면 별로 필요한 화면 내용을 설계한다.
93. 클라우드 컴퓨팅 유형
Iaas(인프라형) : 서버, 스토리지 같은 시스템 자원을 클라우드로 제공하는 서비스로, 컴퓨팅 자원에 운영체제나 애플리케이션 등의 소프트웨어 탑재 및 실행을 하는 서비스
Paas(플랫폼형) : 인프라 생성, 관리 등 복잡한 절차 없이 애플리케이션 개발, 실행, 관리 할 수 있도록 플랫폼을 제공하는 서비스로 OS, 애플리케이션과 애플리케이션 호스팅 환경 구성의 제어권을 가진다.
Saas(소프트웨어형) : 소프트웨어 및 관련 데이터는 중앙에 호스팅 되고 사용자는 웹 브라이주 등의 클라이언트를 통해 접속해 소프트웨어를 서비스 형태로 이용하는 서비스로 주문형 소프트웨어라고도 불린다.
94. 버전 관리 도구
버전 관리 도구는 형상 관리 지침을 활용해 제품 소프트웨어의 신규 개발, 변경, 개선과 관련된 수정사항을 관리하는 도구다. 또한 소프트웨어 개발과 관련해 코드와 라이브러리 관련 문서 등 시간의 변화에 따른 변경을 관리하는 전체활동을 의미한다.
95. XrML
리스트(LISP) 기반의 DRM 언어인 디지털 저작권 언어(DPRL)을 개발한 제네록스사와 마이크로스 소프트사가 이를 개정해 발표한 언어로 모든 자원과 관련된 권리 및 조건들을 보안적으로 규정하고 관리하는 일반적인 방법을 제시하는 디지털 콘텐츠와 웹 서비스의 권리 조건을 표현한 XML 마크업 언어이다.
96. 단위 테스트(Unit Test)
코딩 직후 소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트에 초점을 맞춰 테스트 하는 것. 인터페이스, 외부적 입출력, 자료 구조, 독립적 기초 경로, 오류 처리 경로, 경계 조건 등을 검사. 사용자의 요구사항을 기반으로 한 기능성 테스트를 최우선으로 수행. 구조 기반 테스트와 명세 기반 테스트로 나뉘고, 주로 구조 기반 테스트를 수행
97. 정규화
관계형 데이터베이스의 설계에서 중복을 최소화 할 수 있도록 데이터를 구조화 하여 각 릴레이션에서 이상현상이 생기지 않도록 하는 데이터 모델링 기법
99. 로킹 기법
하나의 트랜잭션이 데이터를 액세스 하는 동안 다른 트랜잭션이 그 데이터 항목을 액세스할 수 없도록 제어하는 기법
100. 병행 제어
동시에 여러 개의 트랜잭션을 수행할 때, 데이터베이스의 일관성 유지를 위해 트랜잭션 간의 상호작용을 제어하는 기법
101. 테일러링(Tailoring)
프로젝트의 특성과 필요에 따라 소프트웨어 개발 프로세스, 기법, 산출물 등을 비즈니스 적으로 또는 기술적인 요구에 맞도록 최적화 하는 과정 및 방법론
102. 트리거
특정 테이블에 삽입, 수정, 삭제 등의 데이터 변경 이벤트가 발생할 때 DBMS에서 자동적으로 실행되도록 구현된 프로그램이다.
103. VPN
인터넷과 같은 공중망에서 터널링, 암호화 기법등을 사용해 전용회선으로 연결된 사설망과 같은 서비스를 제공하는 가상의 네트워크다.
104. 시스템 카탈로그
데이터베이스에 저장되어 있는 모든 데이터 개체들의 관한 정보나 명세에 대한 정보가 수록되어 있는, DBMS가 생성하고 유지하는 데이터베이스 내의 테이블들의 집합체
105. 각종 재해 관련
① BCP(Business Continuity Planning)
- BCP는 각종 재해, 장애, 재난으로부터 위기관리를 기반으로 재해복구, 업무복구 및 재개, 비상계획 등을 통해 비즈니스 연속성을 보장하는 체계이다.
② RTO(Recovery Time Objective)
- RTO는 업무중단 시점부터 업무가 복구되어 다시 가동 될 때까지의 시간이다.
- 재해 시 복구 목표 시간의 선정
③ RPO(Recovery Point Objective)
- RPO는 업무중단 시점부터 데이터가 복구되어 다시 정상가동 될 때 데이터의 손실 허용 시점이다.
- 재해 시 복구 목표 지점의 선정
④ BIA(Business Impact Analysis)
- BIA는 장애나 재해로 인해 운영상의 주요 손실을 입을 것을 가정하여 시간흐름에 따른 영향도 및 손실평가를 조사하는 BCP를 구축하기 위한 비즈니스 영향 분석이다.
⑤ DRS(Disaster Recovery System)
- DRS는 재해복구계획의 원활한 수행을 지원하기 위하여 평상시에 확보하여 두는 인적,물적 자원 및 이들에 대한 지속적인 관리체계가 통합된 재해 복구 센터이다.
106. 데이터 관련
데이터 흐름도 (Data Flow Diagram; DFD) : 데이터 흐름도는 데이터가 각 프로세스를 따라 흐르면서 변환되는 모습을 나타낸 그림으로, 시스템 분석과 설계에서 매우 유용하게 사용되는 다이어그램이다.
자료 사전((Data Dictionary; DD) : 자료 사전은 자료 요소, 자료 요소들의 집합, 자료의 흐름, 자료 저장소의 의미와 그들 간의 관계, 관계 값, 범위, 단위들을 구체적으로 명시하는 사전이다.
HIPO(Hierarchy Input Process Output) : HIPO는 시스템의 분석 및 설계나 문서화할 때 사용되며 하향식 소프트웨어 개발을 위한 문서화 도구이다.
관계 대수 : 관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는 가를 기술하고, 관계로 표현된 데이터를 취급하는 대수적인 연산 체계이자 절차적 정형언어이다.
107. 맵리듀스(MapReduce)
구글에서 대용량 데이터 처리를 분산 병렬 컴퓨팅에서 처리하기 위한 목적으로 제작한 소프트웨어 프레임워크
108. 객체지향 분석 방법론
Rumbaugh(럼바우) 방법 : 가장 일반적으로 사용되는 방법으로 분석 활동을 객체모델, 동적모델, 기능 모델로 나누어 수행하는 방법
Booch(부치) 방법 : 미시적(Micro) 개발 프로세스와 거시적(Macro) 개발 프로세스를 모두 사용하는 분석방법
Jacobson 방법 : Use Case를 강조하여 사용하는 분석방법
Coad와 Yourdon 방법 : E-R다이어그램을 사용하여 개체의 활동들을 데이터 모델링하는데 초점을 둔 기법
Wirfs-Brock 방법 : 분석과 설계간의 구분이 없고 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행하는 기법
109. CRUD Matrix
프로세스와 데이터 사이에 관계 의존성을 Create, Read, Update, Delete로 표현한 매트릭스
111. 관계대수의 연산자
합집합 U : 이항 연산으로 관계성이 있는 두 개의 릴레이션을 합집합하여 하나의 릴레이션을 만들어 내는 연산
교집합 ∩ : 이항 연산으로 관계성이 있는 두개의 릴레이션에서 중복되어 있는 내용을 선택하여 새로운 릴레이션을 만들어 내는 연산
차집합 - : 이항 연산으로 관계성이 있는 두개의 릴레이션이 있을 때 그 중 하나의 릴레이션에서 또 다른 릴레이션의 내용과 겹치는 내용을 제거해서 새로운 릴레이션을 생성하는 연산
카티션 프로덕트 X : 이항 연산으로 두 릴레이션의 현재 투플로 구성 가능한 모든 조합 만드는 연산
Select б : 릴레이션의 주어진 조건을 만족하는 튜플을 선택하는 연산
Project π : 단항 연산으로 릴레이션에서 참조하고자 하는 어트리뷰트를 선택하여 분리해 내는 연산
Join >< : 두 릴레이션 간의 에트리뷰트 값이 동일한 튜플을 연결하는 연산
Division ÷ : 두 개의 릴레이션 A와 B가 있을 때 B의 릴레이션의 모든 조건을 만족하는 경우의 튜플들을 릴레이션 A에서 분리해 내어 프로젝션하는 연산
112. 브룩스의 법칙
소프트웨어 개발 일정이 지연된다고 해서 새로운 개발 인력을 진행 중인 프로젝트에 투입할 경우 작업 적응 기간과 부작용으로 인해 일정이 더욱 지연된다는 법칙
113. DHCP(Dynamic Host Configuration Protocol)
네트워크상에서 동적으로 IP 주소 및 기타 구성정보 등을 부여/관리하는 프로토콜로서, PC의 수가 많거나 PC 자체 변동사항이 많은 경우 IP 설정이 자동으로 되기 때문에 효율적으로 사용 가능하고, IP를 자동으로 할당해주기 때문에 IP 충돌을 막는데 사용하는 프로토콜
'2020 정보처리기사 실기 > 기출예상문제' 카테고리의 다른 글
2020 정보처리기사 4회,5회 실기 가답안 (0) | 2020.12.01 |
---|---|
[2020 정보처리기사 실기 기출] 예상문제15 (0) | 2020.10.08 |
[2020 정보처리기사 실기 기출] 예상문제14 (0) | 2020.10.08 |
[2020 정보처리기사 실기 기출] 예상문제13 (0) | 2020.10.08 |
[2020 정보처리기사 실기 기출] 예상문제12 (0) | 2020.10.08 |