일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- UNIX
- 정보처리기사
- 리눅스
- SQL
- Beakjoon
- Xilinx
- Vivado
- boj
- 실기
- verilog
- AMBA BUS
- FPGA
- vitis
- C++
- chip2chip
- 코딩테스트
- baekjoon
- java
- hdl
- 정처기
- linux
- Bus
- HDLBits
- 백준
- verilog HDL
- amba
- Backjoon
- 자격증
- Zynq
- axi
- Today
- Total
Hueestory
정처기 실기 핵심 개념 (코딩 제외) 본문
*시나공 정보처리기사 실기 2024 기본서 / 코딩 챕터인 8장, 10장 제외
<빈출 순위>
11. 응용 SW 기초 기술 활용 → 9. 소프트웨어 개발 보안 구축
→ 2. 데이터 입출력 구현 = 4. 서버프로그램 구현 = 7. 애플리케이션 테스트 구현
1. 요구 사항 확인
럼바우, 요구사항, UML 다이어그램
소프트웨어 생명 주기 모형
- 폭포수 모형 : 이전 단계로 돌아갈 수 없다는 전제하에 각 단계를 확실히 하고 결과를 검토하여 승인 후 다음 단계를 진행
- 나선형 모형 : 여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 완벽한 최종 소프트웨어를 개발
- 애자일 모형 : 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복, 폭포수 모형과 대조, Scrum, XP
Scrum : 팀이 중심이 되어 개발의 효율성을 높이는 기법
- 제품 책임자 : 요구사항이 담긴 백로그를 작성하는 주체, 개발될 제품에 대한 이해도가 높고 의사를 결정할 사람
- 스크럼 마스터 : 팀이 스크럼을 잘 수행할 수 있도록 가이드 역할을 수행
- 개발팀 : 나머지 팀원으로 제품 개발을 수행
- *스프린트 계획 회의 → 스프린트 → 일일 스크럼 회의 → 스프린트 검토 회의 → 스프린트 회고
*스프린트 : 하나의 완성된 최종 결과물을 만들기 위해 실제 개발을 2~4주간 진행하는 과정
XP : 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상
- 리팩토링(Refactoring) : 프로그램을 쉽게 이해하고 수정하여 빠르게 개발하기 위해 기능의 변경 없이 시스템을 재구성
요구사항 : 소프트웨어가 어떤 문제를 해결하기 위해 제공하는 서비스에 대한 설명과 운영되는데 필요한 제약조건
- 기능 요구사항 : 시스템이 무엇을 하는지, 어떤 기능을 하는지 등 기능이나 수행과 관련된 요구사항
- 비기능 요구사항 : 성능, 인터페이스, 테스트, 보안 등 제품의 품질이나 제약사항과 관련된 요구사항
UML : 시스템 개발 과정에서 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어
Rumbaugh(럼바우) 방법
- OMT, 객체 모델링 기법
객동기
- 모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 기법
- 객체 모델링 : 객체 다이어그램, 객체들 간의 관계를 규정하여 표현
- 동적 모델링 : 상태 다이어그램, 제어흐름, 상초작용, 동작 순서 등 동적인 행위를 표현
- 기능 모델링 : 자료 흐름도(DFD), 다수의 프로세스들 간의 자료 흐름을 중심으로 처리 과정을 표현
Booch 방법
- 미시적 개발 프로세스와 거시적 개발 프로세스를 모두 사용
- 클래스와 객체들을 분석 및 식별하고 클래스의 속성과 연산을 정의
Jacobson 방법
- 유스 케이스를 강조하여 사용
Coad와 Yourdon 방법
- E-R 다이어그램을 사용하여 객체의 행위를 모델링
- 객체 식별, 구조 식별, 주제 정의, 속성과 인스턴스 연결 정의, 연산과 메시지 연결 정의 등 주로 관계를 분석
Wirfs-Brock 방법
- 분석과 설계간 구분이 없으며, 고객 명세서를 설계 작업까지 연속적으로 수행하는 기법
UML 관계
- 연관 : 2개 이상의 사물이 서로 관련되어 있는 관계
- 집합 : 하나의 사물이 다른 사물에 포함되어 있는 관계, 포함되는 쪽에서 포함하는 쪽으로 속이 빈 마름모를 연결
- 포함 : 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계
- 일반화 : 하나의 사물이 다른 사물에 비해 더 일반적이거나 구체적인 관계
- 의존 : 서로 연관은 있으나 필요에 의해 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지
- 실체화 : 사물이 할 수 있거나 해야 하는 기능으로, 서로를 그룹화 할 수 있는 관계
UML 다이어그램
- 클래스 다이어그램 : 클래스와 클래스가 가지는 속성, 클래스 사이의 관계를 표현
- 패키지 다이어그램 : 유스케이스나 클래스 등 요소들을 그룹화한 패키지 간의 의존 관계를 표현
CASE : 소프트웨어 개발 과정에서 사용되는 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화
LOC : 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 통해 비용을 산정
- 예측치 = (a+4m+b)/6 (a : 낙관치, b : 비관치, m : 기대치(중간치))
ex) LOC로 예측된 총 라인 수가 30,000 라인, 참여할 프로그래머가 5명, 프로그래머들의 평균 생산성이 월간 300라인
=> 노력(인월) = LOC / 1인당 월평균 생산 코드 라인 수 = 30000/300 = 100(명)
=> 개발 기간 = 노력(인월)/투입 인원 = 100/5 = 20(개월)
COCOMO : LOC에 의한 비용 산정 기법
- 조직형(Organic Mode) : 5만 라인 이하
- 반 분리형(Semi-Detached Mode) : 30만 라인 이하
- 내장형(Embedded Mode) : 30만 라인 이상
Putnam : 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 예상
2. 데이터 입 출력 구현
무결성, 순수 관계 연산자, 반정규화, 접근 통제
데이터베이스 설계 순서 : 요구조건 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현
- 개념적 설계 : 개념 스키마, 트랜잭션 모델링, E-R 모델
- 논리적 설계 : 논리 스키마, 트랜잭션 인터페이스
- 물리적 설계 : 물리적 구조의 데이터로 변환
데이터 모델에 표시할 요소
- 구조 : 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현
- 연산 : 데이터베이스에 젖장된 실젤 데이터를 처리하는 작업에 대한 명세로서 데이터베이스를 조작하는 기본 도구
- 제약 조건 : 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건
릴레이션 구조
기행 열차
- 튜플 : 행, 속성
- 카디널리티(기수) : 튜플의 수
- 속성 : 열, 데이터베이스를 구성하는 가장 작은 논리적 단위
- 디그리(차수) : 속성의 수
key
- 후보키 : 속성들 중 튜플을 유일하게 식별하기 위한 속성들의 부분집합, 유일성과 최소성 만족 ex) 주민번호 O, 이름 X
- 기본키 : 후보키 중 선정된 주 키, NULL값 불가
- 슈퍼키 : 속성들의 집합, 유일성은 만족하지만 최소성은 만족하지 않음 ex) 주민번호+학번 : 주민번호만 있어도 충분
- 대체키 : 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키
- 외래키 : 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합, 기본키에 없는 값은 입력할 수 없음
무결성 : 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성
- 개체 무결성 : 기본 테이블의 기본키를 구성하는 어떤 속성도 NULL값이나 중복값을 가질 수 없다
- 참조 무결성 : 외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 한다
순수 관계 연산자
- Select σ : 튜플 중에서 선택 조건을 만족하는 튜플의 부분 집합을 구하여 새로운 릴레이션을 만드는 연산
- Project π : 속성 리스트(Attribute List)에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산
- Join ▷◁ : 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산
- Division ÷ : 릴레이션 A, B에서 릴레이션 B의 조건에 맞는 것들만 릴레이션 A에서 분리하여 프로젝션을 하는 연산
정규화 : 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용해 테이블을 무손실 분해하는 과정
도부이결다조
- 1NF : 원자값이 아닌 도메인 분해
- 2NF : 부분적 함수 종속 제거
- 3NF : 이형적 함수 종속 제거
- BCNF : 결정자이면서 후보키가 아닌 것 제거
- 4NF : 다치 종속 제거
- 5NF : 조인 종속성 이용
반정규화 : 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위배하는 행위
시스템의 성능이 향상되고 관리 효율성은 증가하지만 데이터의 일관성 및 정합성이 저하될 수 있다
트랜잭션 : 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
- 원자성(Atomicity) : 트랜잭션의 연산은 데이터베이스에 모두 반영되거나 전혀 반영되지 않아야 한다
- 일관성(Consistency) : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다
- 독립성(Isolation) : 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우, 다른 트랜잭션의 연산에 끼어들 수 없다
- 영속성(Durability) : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다
RTO : 비상사태 또는 업무 중단 시점으로부터 복구되어 가동될 때까지의 소요 시간
RPO : 비상사태 또는 업무 중단 시점으로부터 데이터를 복구할 수 있는 기준점
접근 통제
- 임의 접근 통제(DAC) : 데이터 소유자가 접근하는 사용자의 신원에 따라 접근 권한 부여
- 강제 접근 통제(MAC) : 시스템이 접근하는 사용자의 등급에 따라 접근 권한 부여
- 역할 기반 접근 통제(RBAC) : 중앙관리자가 접근하는 사용자의 역할에 따라 접근 권한 부여
3. 통합 구현
XML : 특수한 목적을 갖는 마크업 언어를 만드는데 사용되는 다목적 마크업 언어, SGML의 복잡함 해결을 위해 개발
SOAP : 네트워크 상에서 HTTP/HTTPS, SMTP등을 이용해 XML을 교환하기 위한 프로토콜, RESTful 프로토콜로 대체
WSDL : 웹 서비스와 관련된 서식이나 프로토콜 등을 표준적인 방법으로 기술하고 제시하기 위한 언어
4. 서버 프로그램 구현
결합도, 응집도, 디자인 패턴
객체지향 분석 : 사용자의 요구사항과 관련된 객체, 속성, 연산, 관계 등을 정의하여 모델링하는 작업
럼바우 분석 기법 : 모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 기법
- 객체 모델링 : 객체 다이어그램, 객체 간의 관계를 규정하여 표시
- 동적 모델링 : 상태 다이어그램, 시간의 흐름에 따른 객체들 간의 제어 흐름, 상호 작용, 동작 순서 등 동적 행위를 표현
- 기능 모델링 : 자료 흐름도(DFD), 다수의 프로세스들 간의 자료 흐름을 중심으로 처리 과정을 표현
객체지향 설계 원칙(SOLID)
- 단일 책임 원칙(SRP) : 객체는 단 하나의 책임만 가져야 한다
- 개방-폐쇄 원칙(OCP) : 기존의 코드를 변경하지 않고 기능을 추가할 수 있도록 설계해야 한다
- 리스코프 치환 원칙(LCP) : 자식 클래스는 최소한 부모 클래스의 기능은 수행할 수 있어야 한다
- 인터페이스 분리 원칙(ISP) : 자신이 사용하지 않는 인터페이스와 의존관계를 맺거나 영향을 받지 않아야 한다
- 의존 역전 원칙(DIP) : 의존 관계 성립 시 추상성이 높은 클래스와 의존관계를 맺어야 한다
모듈화 : 성능 향상, 수정 및 재사용, 유지 관리 등이 용이하도록 시스템의 기능들을 모듈 단위로 나누는 것
결합도 : 모듈 간의 상호 의존하는 정도, 약할수록 품질이 높음
내공부제스자
- 내용 결합도 : 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정
- 공통 결합도 : 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때
- 외부 결합도 : 선언한 데이터를 외부의 다른 모듈에서 참조할 때
- 제어 결합도 : 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호나 제어 요소를 전달
- 스탬프 결합도 : 모듈 간 의 인터페이스로 배열이나 레코드 등의 자료구조가 전달될 때
- 자료 결합도 : 모듈 간의 인터페이스가 자료 요소로만 구성될 때
응집도 : 내부 요소들이 서로 관련되어있는 정도, 강할수록 품질이 높음
우논시절통순기
- 우연적 응집도 : 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성
- 논리적 결합도 : 유사한 성격을 갖거나 특정 형태로 분류되는 처리요소들로 구성
- 시간적 결합도 : 특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성
- 절차적 결합도 : 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행하는 경우
- 교환(통신)적 결합도 : 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성요소들이 모였을 경우
- 순차적 결합도 : 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력데이터로 사용하는 경우
- 기능성 결합도 : 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행되는 경우
Fan In : 어떤 모듈을 제어하는 모듈의 수
Fan Out : 어떤 모듈에 의해 제어되는 모듈의 수
IPC : 모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합
테스트 케이스 : 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위한 테스트 항목에 대한 명세서
디자인 패턴
생성 패턴 : 클래스나 객체의 생성과 참조 과정을 정의하는 패턴
- 추상 팩토리(Abstract Factory) : 구체적인 클래스에 의존하지 않고 서로 연관-의존하는 객체들의 그룹을 생성
- 빌더(Builder) : 작게 분리된 인스턴스 조합하여 객체를 생성하는 패턴
- 팩토리 메소드(Factory Method) : 상위 클래스에서 객체를 생성하는 인터페이스를 정의, 하위 클래스에서 오버라이딩
- 프로토타입(Prototype) : 원본 객체를 복제하여 필요한 부분만 수정한 후 사용
- 싱글톤(Singleton) : 생성된 객체를 어디서든 참조할 수 있지만, 한 클래스에 한 객체만 존재하도록 제한
구조 패턴 : 구조가 복합한 시스템을 개발하기 쉽도록 클래스나 객체들을 조합하여 더 큰 구조로 만드는 패턴
- 어댑터(Adapter) : 호환되지 않는 기존 클래스의 인터페이스에 타 클래스의 인터페이스를 덧씌워 사용
- 브리지(Bridge) : 구현부에서 추상층을 분리하여, 서로가 독립적으로 확장할 수 있도록 구성
- 컴포지트(Composite) : 단일 객체와 복합 객체를 동일하게 다루며, 객체 관계를 트리 구조로 구성
- 데코레이터(Decorator) : 객체간의 결합을 통해 동적으로 기능들을 확장할 수 있는 패턴
- 퍼싸드(Facade) : 복잡한 시스템에 대해 피해 결합도를 낮추기 위해 단순한 인터페이스를 제공
- 플라이웨이트(Flyweight) : 다수의 객체로 생성될 경우 모두가 갖는 공통된 요소를 클래스화하여 공유, 메모리 절약
- 프록시(Proxy) : 실제 객체에 대한 대리자 역할을 하며, 실제 객체에 접근하는 대신 필요한 행동을 취하게 함
행위 패턴 : 클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴
- 책임연쇄(Chain of Responsibility) : 요청을 처리할 수 있는 객체가 둘 이상 존재하여 한 객체가 처리하지 못하면 다음 객체로 넘어가는 형태의 패턴
- 커맨드(Command) : 요청에 대한 서브 클래스가 선택 되어 실행되며, 요구사항을 객체로 캡슐화
- 인터프리터(Interpreter) : 언어에 문법 표현을 정의하는 패턴
- 반복자(Iterator) : 내부 구조를 노출하지 않고 그 집합체 안에 들어있는 항목에 대한 순차적 접근 방법을 제공
- 중재자(Mediator) : 수많은 객체들 간의 복잡한 상호작용을 중재자를 두어 캡슐화하여 객체로 정의
- 메멘토(Memento) : 특정 시점에서의 객체 내부 상태를 객체화하고 요청에 따라 객체를 해당 시점의 상태로 돌리는 기능
- 옵저버(Observer) : 한 객체의 상태가 변화하면 하위 객체에게 변화된 상태를 전달
- 상태(State) : 객체 내부 상태를 캡슐화하고, 상태에 따라 행위를 변경
- 전략(Strategy) : 알고리즘군을 정의하고 동일한 계열끼리 개별적으로 캡슐화하여 상호 교환
- 템플릿 메서드(Template Method) : 상위 클래스에서는 추상적으로 정의하고 하위 클래스에서 구체화
- 방문자(Visitor) : 각 클래스들의 데이터 구조에서 처리 기능을 분리, 별도의 클래스가 각 클래스를 방문하며 작업 수행
5. 인터페이스 구현
IPSec
요구사항 검토
- 동료검토 : 요구사항 명세서 작성자가 명세서 내용을 직접 설명하고 동료들이 이를 들으면서 결함을 발견
- 워크스루 : 검토 회의 전에 요구사항 명세서를 미리 배포하여 사전 검토한 후에 짧은 검토 회의를 통해 결함을 발견
- 인스펙션 : 요구사항 명세서 작성자를 제외한 다른 검토 전문가들이 요구사항 명세서를 확인하면서 결함을 발견
미들웨어 : 운영체제와 응용 프로그램, 서버와 클라이언트 사이에서 다양한 서비스를 제공하는 소프트웨어
- DB : 클라이언트에서 원격의 데이터베이스와 연결하는 미들웨어
- RPC : 원격 프로시저를 마치 로컬 프로시저처럼 호출하는 미들웨어
- MOM : 메시지 기반의 비동기형 메시지를 전달하는 미들웨어
- TP-Monitor : 트랜잭션을 처리 및 감시하는 미들웨어
- ORB : 코바 표준 스펙을 구현한 객체 지향 미들웨어
- WAS : 동적인 콘텐츠를 처리하기 위한 미들웨어
EAI : 기업 내 각종 애플리케이션 및 플랫폼 간의 정보 전달, 연계, 통합 등 상호 연동이 가능하게 해주는 솔루션
- Point-to-Point : 애플리케이션을 1:1로 연결, 변경 및 재사용이 어려움
- Hub & Spoke : 중앙 집중형, 확장 및 유지 보수가 용이하지만 허브 장애 발생 시 시스템 전체에 영향
- Message Bus : 애플리케이션 사이에 미들웨어를 두어 처리, 확장성이 뛰어나고 대용량 처리 가능
- Hybrid : 그룹 내 허브, 그룹 간 버스, 데이터 병목 현상을 최소화
JSON : 데이터 객체를 속성-값의 쌍 형태로 표현하는 개방형 표준 포맷 , AJAX와 XML을 대체
AJAX : 자바 스크립트를 사용하여 클라이언트와 서버 간에 XML 데이터를 주고 받는 비동기 통신 기술
전체 페이지를 새로 고치지 않고서도 웹 페이지 일부 영역만을 업데이트 할 수 있다
인터페이스 보안(네트워크)
- IPSec(IP Security) : 네트워크 계층에서 IP 패킷 단위의 데이터 변조 방지 및 은닉 기능을 제공하는 프로토콜
- SSL : TCP/IP 계층과 애플리케이션 계층 사이에서 인증, 암호화, 무결성을 보장하는 프로토콜
- S-HTTP : 클라이언트와 서벅 간에 전송되는 모든 메시지를 암호화하는 프로토콜
인터페이스 구현 검증 도구
- xUnit : 테스트마다 예상 결과를 기억할 필요가 없게 하는 자동화된 해법을 제공하는 단위테스트
6. 화면 설계
UX : 사용자가 시스템이나 서비스를 이용하면서 느끼고 생각하게 되는 총체적인 경험
UI : 사용자와 시스템 간의 상호작용이 원활하게 이루어지도록 도와주는 장치나 소프트웨어
- CLI : 명령과 출력이 텍스트 형태로 이루어지는 인터페이스
- GUI : 아이콘이나 메뉴를 마우스로 선택하여 작업을 수행하는 그래픽 환경의 인터페이스
- NUI : 사용자의 말이나 행동 등 자연스러운 움직임을 통해 기기를 조작하는 인터페이스
7. 애플리케이션 테스트 관리
화이트박스 테스트 검증 기준, 블랙박스 테스트 종류
파레토 법칙 : 애플리케이션의 20%에 해당하는 코드에서 전체 결함의 80%가 발견된다는 법칙
살충제 패러독스 : 동일한 테스트 케이스로 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않는 현상
정적 테스트 : 프로그램을 실행하지 않고 명세서나 소스 코드를 대상으로 분석하는 테스트
동적 테스트 : 프로그램을 실행하여 소프트웨어 개발의 모든 단계에서 테스트를 수행하고 오류를 찾는 테스트
화이트박스 테스트 : 소스코드를 오픈시킨 상태에서 논리적인 모든 경로를 테스트
- 기초 경로 검사 : 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법
- 제어 구조 검사 : 프로그램 모듈 내에 있는 논리적 조건을 테스트하는 설계 기법
화이트박스 테스트 검증 기준
- 문장 검증 기준 : 모든 구문이 한 번 이상 수행
- 분기 검증 기준 : 모든 조건문에 대해 조건식의 결과가 True, False인 경우가 한 번 이상 수행, T/F
- 조건 검증 기준 : 조건문에 포함된 개별 조건식의 결과가 True, False인 경우가 한 번 이상 수행, TF/FT
- 분기/조건 기준 : 모든 조건문과 각 조건문에 포함된 개별 조건식의 결과가 True, False인 경우가 한 번 이상 수행, TT/FF
블랙박스 테스트 : 사용자의 요구사항 명세를 보면서 각 기능이 완전히 작동되는 것을 입증하는 테스트
- 동치 분할 검사 : 정상/비정상 입력 자료의 개수를 같게 하여 테스트 케이스를 정하고, 알맞는 결과가 출력되는지 확인
- 경계값 분석 : 입력조건의 중간값보다 경계값에서 오류발생 확률이 높기 때문에 경계값을 테스트 케이스로 선정
- 원인-효과 그래프 검사 : 입출력 데이터 관계와 영향을 미치는 상황을 분석하여 효용성이 높은 테스트 케이스를 선정
- 오류 예측 : 과거의 경험이나 확인자의 감각으로 테스트
- 비교 검사 : 동일한 테스트 케이스를 여러 버전의 프로그램에 적용하여 동일한 결과가 출력되는지 확인
V-Model : 요구사항 → 분석 → 설계 → 구현 → 단위 테스트 → 통합 테스트 → 시스템 테스트 → 인수 테스트
단위 테스트 : 사용자의 요구사항을 기반으로 코딩 직후 모듈이나 컴포넌트에 초점을 맞춰 테스트
통합 테스트 : 단위 테스트가 완료된 모듈을 결합하여 하나의 시스템으로 완성시키는 과정에서의 테스트
- 하향식 통합 테스트 : 상위 모듈에서 하위 모듈 방향으로 통합, DFS/BFS
1. 주요 제어 모듈은 작성된 프로그램을 사용, 종속 모듈은 *Stub으로 대체한다
2. DFS/BFS등 방식에 따라 하위 모듈인 Stub들이 한 번에 하나씩 실제 모듈로 교체된다
3. 모듈이 통합될 때마다 테스트를 실시한다
4. 새로운 오류가 발생하지 않음을 보증하기 위해 *회귀 테스트를 실시한다
*Stub : 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구, 일시적으로 필요한 조건만을 가지는 실험용 모듈
*회귀 테스팅 : 통합 테스트로 인해 변경된 모듈이나 컴포넌트에 새로운 오류가 있는지 확인하기 위해 테스팅을 반복
- 상향식 통합 테스트 : 하위 모듈에서 상위 모듈 방향으로 통합
1. 하위 모듈들을 *Cluster로 결합한다
2. 상위 모듈에서 데이터의 입출력을 확인하기 위해 더미 모듈인 *Driver를 작성한다
3. 통합된 Cluster 단위로 테스트한다
4. 테스트가 완료되면 Cluster는 프로그램 구조의 상위로 이동하여 결합하고 Driver는 실제 모듈로 대체된다
*Test Driver : 테스트 대상의 하위 모듈을 호출하고, 파라미터를 전달하고, 모듈 테스트 수행 후 결과를 도출하는 도구
시스템 테스트 : 개발된 소프트웨어가 해당 컴퓨터 시스템에서 완벽하게 수행되는가를 점검하는 테스트
인수 테스트 : 개발한 소프트웨어가 사용자의 요구사항을 충족하는지에 중점을 두고 테스트, 알파/베타로 나뉘어짐
- 알파 테스트 : 사용자가 개발자 앞에서 행하는 테스트
- 베타 테스트 : 사용자가 여러 사용자 앞에서 행하는 테스트
테스트 오라클 : 테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참 값을 대입하여 비교하는 기법
- 참 오라클 : 모든 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공, 발생된 모든 오류를 검출할 수 있다
- 샘플링 오라클 : 특정한 몇몇 테스트 케이스의 입력 값들에 대해서만 기대하는 결과를 제공, 전수 테스트가 불가능한 경우
- 추정 오라클 : 특정 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하고, 나머지 입력 값들은 추정으로 처리
- 일관성 검사 오라클 : 애플리케이션 변경이 있을 때 테스트 케이스 수행 전과 후의 결과 값이 동일한지를 확인
애플리케이션 성능 : 최소한의 자원을 사용하여 최대한 많은 기능을 신속하게 처리하는 정도
- 처리량 : 일정 시간 내에 애플리케이션이 처리하는 일의 양
- 응답 시간: 애플리케이션에 요청을 전달한 시간부터 응답이 도착할 때까지 걸린 시간
- 경과 시간 : 애플리케이션에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
- 자원 사용률 : 애플리케이션이 의뢰한 작업을 처리하는 동안의 CPU, 메모리, 네트워크 사용량 등 자원 사용률
소스 품질 분석 도구
- 정적 분석 도구 : 작성한 소스 코드를 실행하지 않고 코딩 표준이나 코딩 스타일, 결함 등을 확인
- 동적 분석 도구 : 작성한 소스 코드를 실행하여 코드에 존재하는 메모리 누수, 스레드 결함 등을 분석
9. 소프트웨어 개발 보안 구축
AES, 공격 관련 용어
소프트웨어 개발 보안 요소
- 기밀성 : 시스템 내 정보와 자원은 인가된 사용자에게만 접근이 허용된다
- 무결성 : 시스템 내 정보는 인가된 사용자만 수정할 수 있다
- 가용성 : 인가된 사용자는 시스템 내 정보와 자원을 언제라도 사용할 수 있다
- 인증 : 시스템 내 정보와 자원을 사용하려는 사용자가 합법적인 사용자인지를 확인하는 행위
- 부인 방지 : 데이터를 송수신한 자가 송수신 사실을 부인할 수 없도록 증거를 제공
암호 알고리즘
개인키 암호화 기법
- 동일한 키로 데이터를 암호화하고 복호화
- 대칭 암호 기법, 단일키 암호화 기법
- 암호화/복호화 속도가 빠르지만 관리해야 할 키의 수가 많다
- LFSR, RC4, DES, AES, ARIA, SEED
공개키 암호화 기법
- 암호화할 때 사용하는 공캐기는 사용자에게 공개, 복호화할 때 사용하는 비밀키는 관리자가 관리
- 비대칭 암호 기법
- 암호화/복호화 속도가 느리지만 관리해야 할 키의 수가 적다
- RSA, ECC
양방향 알고리즘의 종류
- DES : 1975년 미국 NBS에서 발표된 개인키 암호화 알고리즘, 키의 길이는 56비트
- AES : 2001년 NIST에서 발표한 개인키 암호화 알고리즘, DES의 대안, 키의 길이는 128, 192, 256비트
- RSA : 1978년 MIT에 의해 제안된 공캐기 암호화 알고리즘, 큰 숫자를 소인수분해 하기 어렵다는 것에 기반
- ECC : 1985년 RSA의 대안으로 제안, 이산대수 문제를 타원곡선으로 옮겨 기밀성과 효율성을 높인 암호화 알고리즘
- IDEA : 1990년 스위스, PES를 개선, 키의 길이는 128비트
- Skipjack : NSA에서 개발한 암호화 알고리즘, 키의 길이는 80비트
- TKIP : WEP의 취약성을 보완하여 패킷당 키 할당, 키값 재설정 등 관리 방식을 개선, 키의 길이는 128비트
해시 : 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것, 일방향 함수
- MD5 : 1991년 R.Rivest가 MD4를 대체하이 위해 고안한 암호화 해시 함수, 키의 길이는 128비트
- SHA, HAVAL, N-HASH
서비스 거부 공격(DoS) : 대량의 데이터를 한 곳의 서버에 집중적으로 전송하여 표적 서버의 정상적인 기능을 방해
- Ping of Death : 패킷의 크기를 인터넷 프로토콜 허용 범위 이상으로 전송하여 네트쿼크를 마비
- Smurfing : IP, ICMP의 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄
- SYN Flooding : 3 way handshake 과정을 의도적으로 중단시켜 서버가 대기 상태에 놓이게 함
- Tear Drop : Offset 값을 변경시켜 과부하를 발생시킴
- Land Attack : 패킷을 전송할 때 송신 IP와 수신 IP를 모두 공격 대상의 IP로 하여 자신에 대해 무한히 응답하게 함
- DDoS 공격 : 여러 곳에 분산된 공격 지점에서 한 곳의 서버에 대해 서비스 거부 공격을 수행
네트워크 침해 공격 관련 용어
- 세션 하이재킹 : 상호 인증 과정을 거쳐 서버와 접속된 클라이언트 사이의 세션 정보를 가로채는 공격
- ARP 스푸핑 : ARP의 취약점을 이용, 자신의 MAC 주소를 공격 대상의 것으로 변조하여 데이터 패킷을 가로채거나 방해
- 스니핑 : 네트워크 중간에서 남의 패킷 정보를 도청
- 사회 공학 : 인간 상호 작용의 깊은 신뢰를 바탕으로 사람들을 속여 정상 보안 절차를 깨트리는 비기술적 침입 수단
- 다크 데이터 : 특정 목적을 가지고 데이터를 수집하였으나, 이후 활용되지 않고 저장만 되어있는 데이터
- 타이포스쿼팅 : 네티즌들이 사이트에 접속할 때 주소를 잘못 입력하는 실수를 이용하기 위해 유명 도메인을 미리 등록
정보 보안 침해 공격 관련 용어
- 워터링 홀 : 목표 조직이 자주 접속하는 웹 사이트를 사전에 감염
- 웜(Worm) : 네트워크를 통해 연속적으로 자신을 복제하여 시스템의 부하를 높이고 결국 시스템을 다운시킴
- 키로거 공격 : 사용자의 키보드 움직임을 탐지해 개인의 중요한 정보를 빼가는 공격
- Rootkit : 시스템 침입 후 침입 사실을 숨긴 채 차후의 침입을 위한 기능을 제공
- Apt(Advanced Persistent Threat) : 특정 타깃을 목표로 다양한 수단를 통해 지속적, 지능적인 맞춤형 공격을 하는 기법
- 랜섬웨어 : 컴퓨터에 잠입해 내부 문서나 파일 등을 암호화하고 암호 해동 프로그램의 전달을 조건으로 돈을 요구
- 백도어 : 시스템 설계자가 액세스 편의를 위해 보안을 제거하여 만든 비밀 통로
- 트로이 목마 : 정상 프로그램으로 위장하여 프로그램 내에 숨어 있다가 프로그램이 동작할 때 활성화, 복제 능력은 없음
보안 솔루션
- VPN : 공중 네트워크와 암호화 기술을 이용하여 사용자가 마치 자신의 전용 회선을 사용하는 것처럼 해주는 보안 솔루션
- SIEM : 다양한 장비에서 발생하는 로그 및 보안 이벤트를 통합하여 관리하는 보안 솔루션
- SSH : 다른 컴퓨터에 로그인, 원격 명령 실행, 파일 복사 등을 수행할 수 있도록 다양한 기능을 지원하는 프로토콜
- 템퍼 프루핑 : 소프트웨어 위변조가 발생할 경우 소프트웨어를 오작동하게 만들어 악용을 방지하는 기술
- OAuth : 웹사이트나 애플리케이션에 비밀번호를 제공하지 않고 자신에게 접근할 수 있는 권한을 부여하는 인증 방법
11. 응용 SW 기초 기술 활용
페이지 교체 알고리즘, 패킷 교환 방식, NAT, IGP(RIP, OSPF)
운영체제 : 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용하도록 하는 여러 프로그램의 모임
- 처리 능력 : 일정 시간 내에 시스템이 처리하는 일의 양
- 반환 시간 : 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
- 사용 가능도 : 시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도
- 신뢰도 : 시스템이 주어진 문제를 정확하게 해결하는 정도
운영체제의 종류
- UNIX : 1960년대 AT&T 벨 연구소, MIT, GE이 공동 개발한 OS, 개방형 시스템, C언어로 작성되어 이식성이 높음
- 커널 : 하드웨어를 보호하고, 프로그램과 하드웨어 간의 인터페이스 역할을 담당
- 쉘 : 사용자 명령어를 인식하여 프로그램을 호출하고 명령을 수행, 시스템과 사용자 간의 인터페이스 역할을 담당
- LINUX : 1991년 UNIX 기반으로 개발한 OS, 소스코드가 무료로 공개되어 있음, UNIX와 대부분 기능이 동일
- Android : 구글 사에서 개발한 리눅스 커널 기반의 개방형 모바일 운영체제, 모든 코드 공개, 자바와 코틀린으로 작성
기억장치의 관리 전략
반입(Fetch) 전략
- 요구 반입 : 실행중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재하는 방법
- 예상 반입 : 실행중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재하는 방법
배치(Placement) 전략
- 최초 적합(First Fit) : 들어갈 수 있는 크기의 빈 영역 중에서 첫 번째 분할 영역에 배치
- 최적 적합(Best Fit) : 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 작게 남기는 분할 영역에 배치
- 최악 적합(Worst Fit) : 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 많이 남기는 분할 영역에 배치
페이지 교체 알고리즘 : 페이지 부재가 발생하면 어떤 페이지 프레임을 선택하여 교체할 것인지를 결정하는 알고리즘
- OPT : 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체
- FIFO : 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체
- LRU(Least Recently Used) : 최근에 가장 오랫동안 사용하지 않은 페이지를 교체
- LFU(Least Frequently Used) : 사용 빈도가 가장 적은 페이지를 교체
- NUR(Not Used Recently) : 최근에 사용하지 않은 페이지를 교체
- SCR(Second Chance Replacement) : 가장 오랫동안 주기억장치에 있는 페이지 중 자주 사용되는 페이지 교체를 방지
Locality : 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질
- 시간 구역성 : 하나의 페이지를 일정 시간 동안 집중적으로 액세스하는 현상
- 공간 구역성 : 일정 위치의 페이지를 집중적으로 액세스하는 현상
워킹 셋 : 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
스래싱 : 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
프로세스 상태 전이도
프로세스 스케줄링
- FCFS(FIFO) : 먼저 들어온 일부터 처리
- SJF(Shortest Job First) : 실행시간이 짧은 일부터 처리
- HRN(Highest Response-ratio Next) : (대기시간+서비스시간)/서비스시간 결과값이 높은 일부터 처리
- RR(Round Robin) : 각 프로세스를 시간 할당량 동안만 실행한 후 다음 프로세스에게 CPU를 넘김
- SRT(Shortest Remaining Time) : 실행시간이 빠른 일부터 선점형으로 처리
chmod : 파일의 보호 모드를 설정하여 파일의 사용 허가를 지정함
ex) 사용자에게 r/w/x 권한, 그룹에게 r/x 권한, 그 외에는 x 권한을 a.txt에 부여
=> rwx r-x --x → 111 101 001 → 751
=> chmod 751 a.txt
*권한 있음은 1, 권한 없음은(-) 0으로 나타내고 8진수로 변환
IP 주소 : 인터넷에 연결된 모든 컴퓨터 자원을 구분하기 위한 고유한 주소
- IPv4 : 8bit * 4 = 32bit, 네트워크 부분 길이에 따라 A~E클래스로 구성
- IPv6 : 16bit * 8 = 12bit, 인증성, 기밀성, 데이터 무결성의 지원으로 보안 문제를 해결
- 유니캐스트 : 1 대 1 통신
- 멀티캐스트 : 1 대 다 통신
- 애니캐스트 : 1 대 1 통신, 단일 송신자와 가장 가까이 있는 단일 수신자 간의 통신
OSI 참조 모델 : 다른 시스템 간의 원활한 통신을 위해 ISO에서 제안한 프로토콜
1. 물리 계층(Physical)
- 두 장치 간의 실제 접속과 절단, 비트 스트림을 전송
- 관련 장비 : Repeater, Hub
2. 데이터 링크 계층(Data-Link)
- 두 개의 인접한 개방 시스템 간의 신뢰성 있고 효율적인 데이터 전송을 위해 시스템 간 링크 설정과 유지 및 종료를 담당
- 노드간의 오류 제어와 흐름 제어 기능을 수행
- 관련 장비 : Lan-card, Bridge, Switch
3. 네트워크 계층(Network)
- 개방 시스템들 간의 네트워크 연결을 관리
- 데이터의 교환 및 중계 기능
- 경로 제어, 패킷 교환, 트래픽 제어
- IP
- 관련 장비 : Router
4. 전송 계층(Transport)
- 단말기 사이(End-to-End)에 오류 수정과 흐름 제어를 수행하여 신뢰성 있는 데이터를 전달
- TCP, UDP
- 관련 장비 : Gateway
5. 세션 계층(Session)
- 송수신 측 간의 관련성을 유지하고 통신에 대한 제어를 담당
- 연결의 생성, 관리, 종료를 위해 토큰을 사용
6. 표현 계층(Presentation)
- L7로 부터 받은 데이터를 L5에 보내기 전 통신에 적당한 형태로 변환, 역의 기능도 수행
- 서로 다른 데이터 표현 형태를 갖는 시스템 간의 상호 접속을 위한 계층
- 코드 변환, 데이터 암호화, 데이터 압축, 구문 검색
7. 응용 계층(Application)
- 사용자가 OSI 환경에 접근할 수 있도록 서비스
- 응용 프로세스 간의 정보 교환, 전자 사서함, 파일 전송, 가상 터미널 등의 서비스 제공
프로토콜 : 서로 다른 기기들 간의 데이터 교환을 원활하게 수행할 수 있도록 표준화시켜 놓은 통신 규약
- 구문(Syntax) : 전송하고자 하는 데이터의 형식, 부호화 신호 레벨 등을 규정
- 의미(Semantics) : 두 기기 간의 효율적이고 정확한 정보 전송을 위한 협조 사항과 오류 관리를 위한 제어 정보를 규정
- 시간(Timing) : 두 기기 간의 통신 속도, 메시지의 순서 제어 등을 규정
패킷 교환 방식
- 가상 회선 방식 : 논리적 가상 회선을 미리 설정하여 연결을 확립되면 설정된 경로에 따라 동일한 순서로 패킷 교환
- 데이터그램 방식 : 경로를 설정하지 않고 인접 노드들의 트래픽 상황을 감안하여 패킷의 순서에 상관없이 독립적으로 운반, 도착 후 수신측에서 패킷의 순서를 재정리
TCP/IP 참조 모델 : 인터넷에 연결된 서로 다른 기종의 컴퓨터들이 데이터를 주고받을 수 있도록 하는 표준 프로토콜
1. 네트워크 액세스 계층(Network-Access); OSI L1~L2
- Ethernet : CSMA/CD 방식의 LAN
2. 인터넷 계층(Internet); OSI L3
- ICMP : IP와 조합하여 통신중에 발생하는 오류의 처리와 전송 경로 변경 등을 위한 제어 메시지를 관리
- IP : 비연결형, 데이터그램 방식, 신뢰성을 보장하지 않음, 데이터의 주소를 지정하고 경로를 설정
- ARP : 호스트의 IP 주소를 MAC 주소로 변환하는 기능
- RARP : ARP의 반대 과정을 수행
3. 전송 계층(Transport); OSI L4
TCP(전송 계층)
- 가상 회선 방식
- 양방향 연결형 서비스
- 패킷 단위 전달
- 오류 제어, 흐름 제어 기능 제공
- 순서 보장, 느림
- HTTP, E-Mail, File 전송
UDP
- 비연결형 서비스
- 데이터 전송을 보장하지 않음
- 오류 제어, 흐름 제어 기능 제공하지 않음
- 순서 미보장, 빠름
- DNS, Broadcasting
4. 응용 계층(Application); OSI L5~L7
- HTTP : 응용 계층, WWW에서 HTML 문서를 송수신 하기 위한 표준 프로토콜
NAT(Network Address Translation) : 한 개의 정식 IP 주소에 대량의 가상 시설 IP 주소를 할당 및 연결
ATM : L2 프로토콜, 고정 크기(53bit) 단위로 전송하는 비동기식 전송 기술, 고속 네트워크에서 사용
경로 제어 프로토콜
- IGP : 하나의 자율 시스템 내 라우팅에 사용되는 프로토콜, 라우팅 정보에 변화가 생기면 네트워크 내 모든 라우터에 알림
- RIP : 최단 경로 탐색에 벨만포드 알고리즘 사용, 최대 홉 수 15, 소규모 네트워크
- OSPF : 최단 경로 탐색에 다익스트라 알고리즘을 사용, 대규모 네트워크
- EGP : 자율 시스템 간(게이트웨이)의 라우팅
- BGP : EGP의 단점을 보완, 초기에 BGP 라우터들이 연결될 때는 전체 라우팅 테이블을, 이후에는 변화된 정보만 교환
네트워크 관련 신기술
- Ad-hoc : 모바일 호스트만을 이용하여 구성한 네트워크, 단기간 사용되는 경우나 유선망을 구성하기 어려울 때 사용
- 메시 네트워크 : 차세대 이동통신, 홈네트워킹, 공공 안전 등 특수 목적, 대규모 디바이스의 네트워크 생성 시 사용
- IoT : 다양한 사물들을 인터넷으로 서로 연결
- LOD : 누구나 사용할 수 있도록 웹상에 공개된 연계 데이터, 개별 URI로 식별하여 링크 정보를 부여
- SSO : 한 번의 로그인으로 개인이 가입한 모든 사이트를 이용
- 클라우드 컴퓨팅 : 각종 컴퓨터 자원을 중앙 컴퓨터에 두고 인터넷 기능을 갖는 단말기로 언제 어디서나 작업을 수행
- IaaS : 서버, 스토리지 등 하드웨어 자원을 가상화
- PaaS : 런타임, 미들웨어, OS 등 소프트웨어 작성을 위한 플랫폼을 가상화
- SaaS : 사용자가 필요로 하는 소프트웨어를 가상화
소프트웨어 관련 신기술
- 블록체인 : P2P 네트워크를 이용해 온라인 금융 거래 정보를 온라인 네트워크 참여자(Peer)의 디지털 장비에 분산 저장
- 매시업 : 웹에서 제공하는 정보 및 서비스를 이용해 새로운 소프트웨어나 서비스, 데이터베이스 등을 만드는 기술
- SOA : 기업의 소프트웨어 인프라인 정보시스템을 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중심으로 구축
- 디지털 트윈 : 현실속의 사물을 소프트웨어로 가상화한 모델
하드웨어 관련 신기술
- RAID : 여러 개의 하드디스크로 디스크 배열을 구성하고 데이터 블록들을 서로 다른 디스크에 분산 저장
- RAID0 : 스트라이핑 디스크를 병렬 연결하여 디스크 수만큼 용량과 속도가 증가, 하나만 손상되어도 전체 데이터 파손
- RAID1 : 같은 데이터를 다른 디스크에 동일하게 복사
- 앤 스크린 : N개의 서로 다른 단말기에서 동일한 컨텐츠를 자유롭게 이용할 수 있는 서비스
- 트러스트존 기술 : 하나의 프로세서 내에 일반 애플리케이션을 처리하는 일반 구역과 보안이 필요한 애플리케이션을 처리하는 보안 구역으로 분할하여 관리
데이터베이스 관련 신기술
- 하둡(Hadoop) : 오픈 소스를 기반으로 한 분산 컴퓨팅 플랫폼, 일반 PC급 컴퓨터들로 가상화된 대형 스토리지를 형성
대용량 데이터 효율적 저장 및 처리
- 맵리듀스 : 대용량 데이터를 분산(병렬) 처리하기 위한 목적으로 흩어져 있는 데이터 합치고, 중복 데이터 제거 및 추출
- 타조 : 아파치 하둡 기반의 데이터 웨어하우스 프로젝트
- 데이터 마이닝 : 대량의 데이터를 분석하여 데이터에 내재된 변수 사이의 상호 관계를 규명하여 일정한 패턴을 찾아냄
- OLAP : 다차원으로 이루어진 데이터로부터 통계적인 요약 정보를 분석하여 의사결정에 활용
Secure OS : 보안 기능을 갖춘 커널을 이식하여 외부의 침입으로부터 시스템 자원을 보호하는 운영체제
회복 : 트랜잭션 수행 도중 장애가 발생하여 데이터베이스가 손상 되었을 때 손상되기 이전의 정상 상태로 복구하는 작업
- 연기 갱신 기법 : 트랜잭션이 성공적으로 완료될 때까지 DB에 대한 갱신을 연기, Redo
- 즉각 갱신 기법 : 트랜잭션이 데이터를 갱신하면 부분 완료되기 전이라도 즉시 실제 DB에 반영, Redo/Undo
병행 제어 : 여러 트랜잭션을 병행수행할 때 동시에 실행되는 트랜잭션 간의 상호 작용을 제어
- 로킹 : 트랜잭션들이 어떤 *로킹 단위를 액세스하기 전에 Lock을 요청해서 Lock이 허락되어야만 그 로킹 단위를 액세스
- 타임 스탬프 순서 : 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전 시간표를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행
*Locking 단위 : 병행제어에서 한꺼번에 로킹할 수 있는 객체의 크기
- 단위가 크면 : 로크 수가 작아 관리하기 쉽지만 병행성 수준이 낮아진다
- 단위가 작으면 : 로크 수가 많아 관리하기 복잡해 오버헤드가 증가하지만 *병행성 수준이 높아진다
*병행성수준 : 데이터 베이스 공유도
12. 제품 소프트웨어 패키징
Header, 형상 통제
릴리즈 노트 : 소프트웨어 개발 과정에서 정리된 릴리즈 정보를 최종 사용자인 고객과 공유하기 위한 문서
- Header(머릿말) : 릴리즈 노트 이름, 릴리즈 노트 날짜, 릴리즈 노트 버전, 소프트웨어, 릴리즈 버전, 릴리즈 날짜 등
- 개요 : 소프트웨어 및 변경사항 전체에 대한 간략한 내용
모정개 영정추
모듈 식별 → 릴리즈 정보 확인 → 릴리즈 노트 개요 작성 → 영향도 체크 → 정식 릴리즈 노트 작성 → 추가 개선 항목 식별
형상 관리 : 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동
- 형상 식별 : 관리 대상에 이름과 관리 번호를 부여하고, 계층 구조로 구분하여 수정 및 추적이 용이하도록 하는 작업
- 버전 제어 : 소프트웨어 업그레이드나 유지 보수 중 생성된 다른 버전의 형상 항목을 관리하고, 특정 절차와 도구를 결합
- 형상 통제 : 식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준선이 잘 반영될 수 있도록 조정
- 형상 감사 : 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인
- 형상 기록 : 형상의 식별, 통제, 감사 작업의 결과를 기록, 관리하고 보고서를 작성
소프트웨어 버전 등록 관련 주요 기능
- 저장소 : 최신 버전의 파일들과 변경 내역에 대한 정보들이 저장되어 있는 곳
- 가져오기 : 버전 관리가 되고 있지 않은 아무것도 없는 저장소에 처음으로 파일을 복사
- 체크아웃 : 프로그램을 수정하기 위해 저장소에서 소스 파일과 버전 관리를 위한 파일들을 받아옴
- 체크인 : 체크아웃 한 파일의 수정을 완료한 후 저장소의 파일을 새로운 버전으로 갱신
- 커밋 : 체크인을 수행할 때 이전에 갱신된 내용이 있는 경우에는 충돌을 알리고 diff 도구를 이용해 수정한 후 갱신을 완료
- 동기화 : 저장소에 있는 최신 버전으로 자신의 작업 공간을 동기화
빌드 자동화 도구 : 빌드를 포함하여 테스트 및 배포를 자동화하는 도구
- Jenkins : JAVA 기반의 오픈 소스 형태로, 서블릿 컨테이너에서 실행되는 서버 기반 도구
- Gradle : Groovy 기반의 오픈 소스 형태의 자동화 도구, 안드로이드 앱 개발 환경에서 사용
'challenge > 정보처리기사 실기' 카테고리의 다른 글
2. 데이터 입 출력 구현 (0) | 2024.10.18 |
---|---|
9. 소프트웨어 개발 보안 구축 (0) | 2024.10.18 |
11. 응용 SW 기초 기술 활용 (2) | 2024.10.18 |
SQL 이론 (2) | 2024.10.16 |
java 이론 / 기출오답 (0) | 2024.10.02 |