1. 소프트웨어 구축
01 소프트웨어 공학
Section 1. 소프트웨어 공학
1. 소프트웨어 공학의 3R
- 역공학 (Reverse Engineering)
- 재공학 (Re-Engineering)
- 재사용 (Reuse)
2. 애자일 방법론 종류
(1) XP : 용기, 단순성, 의사소통, 피드백, 존중
(2) 스크럼
- 스프린트
- 백로그 : 요구사항을 우선순위에 따라 나열한 목록
- 번 다운 차트 : 시간의 진행에 따라 남은 작업 시간을 그래픽적으로 표현한 차트
02 프로젝트 계획 및 분석
Section 1. 프로젝트 계획
1. 개발 비용 산정
(1) 하향식 산정 기법 (Top-Down)
- 전문가 판단 기법
- 델파이 기법
(2) 상향식 산정 기법 (Bottom-Up)
- 원시 코드 라인 수 (LOC) : 낙관 + 중간 + 비관
(3) 수학적 산정 기법
- COCOMO 기법 : LOC에 의한 비용 산정 기법 / 보헴 제안 / 비용 산정 결과는 Man-Month로 나타냄
- Putnam 모형 : Bayleigh-Norden 곡선, SLIM
- 기능점수기법(FP: Function Point) : 견적 내기 / 기능별 점수를 구한 후 비용을 산정
3. 개발 일정 산정
- PERT : 전체 작업의 상호 관계를 표시 / 낙관 + 기대 + 비관
- CPM : 임계경로기법 / 소요 기간 예측 / 노드와 간선으로 구성
- 간트 차트 : 엑셀, 막대 그래프 표현
Section 2. 요구사항 분석
2. 요구공학
(1) 요구사항 개발 프로세스
1) 도출
2) 분석
DFD, DD, Mini-Spec, ERD, STD
UML
3) 명세
- 정형 명세 : 수학, 논리학
- 비정형 명세 : 자연어, 그림 중심
- 기능 요구사항, 비기능 요구사항
4) 확인
- 검증 Verification
- 확인 Validation
자료 흐름도 (DFD)
> 자료의 흐름을 도형(화살표, 원, 사각형) 중심으로 기술
> 데이터가 각 프로세스를 따라 흐르면서 변환되는 모습을 나타내고 시스템 분석과 설계에서 매우 유용하게 사용
자료 흐름도 구성요소
- 프로세스 (Process) : (O) 으로 표시, 자료의 처리과정을 나타냄
- 자료흐름 (Data Flow) : (→) 화살표로 표시, 자료의 흐름이나 연관관계를 나타냄
- 자료 저장소 (Data Stroe) : 직선(이중선)으로 표시, 시스템에서 자료 저장소를 나타냄
- 단말 (Terminator) : 사각형으로 표시, 시스템과 교신하는 외부 개체
자료 사전 (DD)
> 자료 흐름도에 있는 자료를 더 자세히 정의
- = : 자료의 정의 : ~로 구성되어 있다.
- + : 자료의 연결
- () : 자료의 생략
- [] : 자료의 선택
- {} : 자료의 반복
정형/비정형 명세 기법
정형 명세 기법 | 비정형 명세 기법 |
수학적 원리 기반, 모델 기반 | 상태/기능/객체 중심 |
요구사항을 정확하고 간결하게 표현 할 수 있음 표기법이 어려움 |
자연어의 사용 결과가 작정자에 따라 다를 수 있음 내용이 이해하기 쉽고 의사소통 용이 |
(2) 요구사항 분석 도구
HIPO
> 하향식 소프트웨어 개발을 위한 문서화 도구
> 시스템 실행 과정인 입력,처리,출력의 기능을 표현한 것
HIPO Chat
- 가시적 도표 : 전반적
- 총체적 도표 : 입력, 출력이 뭐가 있는지
- 세부적 도표 : 상세히
3. 요구사항 분석 모델링
2) 객체 지향 분석 방법론
- 럼바우 방법
- 부치(Booch) : 미시적, 거시적 개발 프로세스
- Jacobson : 유스케이스를 중심으로 한 분석 방법
- Coad와 Yourdon : E-R 다이어그램 사용
- Wirfs-Brock 방법: 분석과 설계의 구분 없음
럼바우
> 모든 소프트웨어 구성요소를 그래픽 표기법을 이용하여 모델링
- 객체 모델링 (Object M): 객체 다이어그램, 정보 모델링 / 시스템의 정적구조 표현 (E-R 다이어그램)
- 동적 모델링 (Dynamic M) : 상태 다이어그램 / 객체들 간의 제어 흐름 / 동적인행위 (STD 상태변화도)
- 기능 모델링 (Functional M) : DFD를 이용하여 표현, 데이터 갑의 변화 과정을 표현
03 소프트웨어 설계
Section 2. 소프트웨어 아키텍처
1. 소프트웨어 아키텍처
(2) 소프트웨어 아키텍처 4+1 뷰
- 유스케이스뷰 : 다른 뷰를 검증하데 사용 / 사용자 입장에서 바라봄
- 논리뷰 : 시스템의 기능적 요구사항 / 클래스 다이어그램으로 표시
- 프로세스뷰 : 비기능적 요구사항 / 실행 시의 시스템을 표현
- 구현뷰 : 개발자 관점 / 모듈 구성 / 컴포넌트뷰라고 함
- 배포뷰 : 시스템의 물리적 배치
2. 소프트웨어 아키택처 패턴
1) 계층화 패턴 : 계층화하기 위한 패턴, 상위계층에 서비스 제공
2) 클라이언트-서버 패턴 : 서버와 다수의 클라이언트 컴포넌트로 구성
3) 마스터-슬레이브 패턴 : 슬레이브 결과값을 마스터에 전달
4) 파이프-필터 패턴 : 필터롤 캡슐화하여 파이프(옆으로) 전달
5) 브로커 패턴 : 요청에 맞는 / 분리된 컴포넌트들로 이루어진 분산 시스템에서 사용
6) 피어 투 피어 패턴 : 내가 클라이언트, 내가 서버
7) 이벤트 버스 패턴 : 구독, 알림 / 알림 서비스
8) MVC 패턴: 한 개에 모델에 대해 여러 개의 뷰를 필요로 한다.
Section 3. UML
- 클래스 : UML에 표현되는 사물의 하나로, 객체가 갖는 속성과 동작을 표현, 직사각형으로 표현
- 인터페이스 : 클래스와 같은 UML에 표현되는 사물의 하나로, 클래스나 컴포넌트의 동작을 모아놓은 것, 외부적으로 가시화되는 행동을 표현한다. 단독으로 사용되는 경우는 없으면 인터페이스 구현을 위한 클래스 또는 컴포넌트와 함께 사용된다
UML 구성요소
1. 사물
2. 관계
- 연관관계 (Association) : 서로 관련된 관계 / 사람이 집을 사용한다. (오랫동안 사용) / 일반적 화살표
- 의존관계 (Dependency) : 짧은 시간만 사용하는 관계 / 연관관계와 같이 서로 연관은 있음 / 필요할 때만 사용 / 점선 화살표 (학생 쩜쩜쩜 색연필)
- 집합관계 (Aggregation) : 포함/ 전체와 부분 객체는 독립적 , 하나의 사물이 다른 사물에 포함되어 있는 관계/속이 빈 마름모 (불고기 ◇ 간장,다시다,미원)
- 포함관계(합성관계) (Composition) : 부분 객체는 의존적 , 포함하는 사물의 변화가 포함되는 사물에게 영향을 미친다. / 속이 찬 마름모 / 포함하는 객체 없이 포함된 객체는 존재 불가능 (책상 ◆ 책상다리 상판 나사)
- 일반화 관계 (Generalization) : 상속관계 / 하나의 사물이 다른 사물에 비해 더 일반적 / 상위로 속이 빈 화살표 △
- 실체화 관계 (Realization) : 사물이 할 수 있거나 해야 하는 기능, 속이 빈 점선 화살표 / 실제로 구현하는 것 / 추상 메서드를 오버라이딩 △점점
2-1 유스케이스 관계
(1) 포함(Include)관계 <<Include>>
(2) 포함(Include)관계 <<extend>>
3. 다이어그램
(1) 구조 다이어그램
1) 클래스 다이어그램
> 시스템의 구조를 나타냄
> 클래스와 클래스 사이의 관계를 나타내는 정적인 모델
> 전체적 구조, 틀
> 클래스의 속성, 함수, 변수타입들로 구성된 다이어그램
2) 객체(Object) 다이어그램
> 특정 시점에서 객체와 객체 간의 관계를 나타내는데 사용
> 구조를 가지고 객체 생성
> 인스턴스를 객체와 객체 사이의 관계로 표현
3) 컴포넌트 다이어그램
> 컴포넌트끼리의 구조 관계를 표현한 다이어그램
4) 배치 다이어그램 Deployment
> 시스템을 구성하는 하드웨어 요소와 네트워크 요소, 그리고 그들 간의 관계
> 배치, 시각화
> 물리적 구조를 나타냄 : 서버 클라이언트 라우터 네트워크 노드 등
5) 복합체 구조 다이어그램 Composite Structure
> 클래스의 내부 구조를 나타내는 데 사용
> 구체적인 수준에서 시스템의 실행 구조
> 복합 구조를 갖는 경우 그 내부 구조를 표현
6) 패키지 다이어그램
> 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계
----
(2) 행위 다이어그램
1) 유스케이스
> 사용자 관점에서 바라본 시스템을 표현
> 시스템의 기능과 사용자 간의 상호 작용
> 사용자의 요구를 분석
2) 시퀀스 (순차)
> 시간 순서에 따라
3) 커뮤니케이션
> 주고받는 메시지
> 시스템간 통신
4) 상태
> 객체에서 발생한 활동/상태 변화를 나타냄
5) 활동
> 여러 활동들이 순차, 병행 방식 등을 표현
> 처리의 흐름을 순서에 따라
> 워크플로우, 플로우, 흐름, 활동 순서
6) 타이밍
> 객체 상태 변화와 시간 제약을 명시적으로
> 시스템간 신호변화를 시간 순서에 따라 나타냄
7) 상호작용 (Interaction)
> 시스템간 상호작용
04 화면 설계
Section 1. UI 설계
1. UI 유형
- CLI (Command Line Interface) : 키보드 입력, 명령어 입력
- GUI (Graphical User Interface) : 마우스 클릭
- NUI (Natural User Interface) : 사람의 신체를 통한 입력, 음성, 터치, 행동
- OUI (Organic User Interface) : 장치 필요없음, 손바닥이 전화기가 됨
2. UI 설계 원칙
- 직관성 : 누구나 쉽게 이해하고 사용할 수 있어야 한다.
- 유효성 : 사용자의 목적을 정확하게 달성해야 한다.
- 학습성 : 누구나 쉽게 배우고 익힐 수 있어야 한다.
- 유연성 : 사용자의 요구사항을 수용
05 서버 프로그램 구현
Section 1. 개발 환경 구축
5. 형상관리 도구
(1) 형상 관리 절차
1) 형상 식별 : 관리해야 할 항목을 구분하고, 번호나 태그 부여
2) 형상 통제 : 변경요청을 검토하고 형상 통제 위원회의 승인을 거쳐 현재의 기준선에 반영
3) 형상 감사 : 변경에 대한 검토
4) 형상 기록 : 변경 사항 기록
7. 빌드 도구
- Ant : Java 기반의 빌드 도구, XML 기반의 빌드 스크립트
- Maven
- Jenkins : Java 기반의 오픈소스 지속적 통합 서비스 도구
- Gradle : Groovy 기반의 오픈 소스 빌드 자동화 도구 (안드로이드 개발)
Section 3. 모듈 구현
1. 결합도
> 모듈과 모듈 간의 관련성/의존성
1) 내용 결합도 (Content)
> 다른 모듈 기능 및 내부 자료 직접 참조/이용
2) 공통 결합도
> 모듈 밖에 선언된 전역변수 사용
3) 외부 결합도
> 다른 모듈 변수 사용
4) 제어 결합도 (Control)
> 제어 요소 전달
> if(a>1) a값
5) 스탬프 결합도
> 배열, 포인터 전달 / 두 모듈이 동일한 자료구조를 조회
6) 자료 결합도 (좋음)
> 값만 전달
> f(x, y) => f(3,5)
2. 응집도
> 모듈 내부 요소 간의 연관 정도
1) 우연적 (Coincidental)
> 연관관계없음
2) 논리적
> 유사한 성격 / 비슷한 기능들 모아놓음
3) 시간적 (Temporal)
> 같은 시간 기능을 모아 수행
4) 절차적 (Procedural)
> 순차적 수행
5) 통신적 (교환적)
> 동일한 입력, 동일한 출력을 사용하여 서로 다른 기능을 수행
6) 순차적
> 출력값을 다음 입력값으로 사용
7) 기능적 (좋음)
> 단일한 목적 수행
> 하나의 기능에 밀접하게 관련되어 있거나 연관
06 인터페이스 구현
Section 3. 인터페이스 기능 구현
1. 내외부 모듈 연계 방식
(1) EAI (Enterprise Application Integration)
> 기업 내의 다른 플랫폼 및 애플리케이션들을 연결, 통합
> 포인투포인트, 허브 앤 스포크, 메시지 버스, 하이브리드
(2) ESB (Enterprise Service Bus)
> 웹 서비스 중심의 표준화된 데이터 버스를 이용하여 애플리케이션을 유연하게 통합
> EAI와 유사하지만 애플리케이션보다는 서비스 중심의 통합을 지향
2. 인터페이스 구현
(0) SOA (Service Oriented Architecture)
> 네트워크에서 공통의 통신 언어를 사용하는 서비스 인터페이스를 활용해 소프트웨어 구성 요소를 다시 사용할 수 있게 만드는 소프트웨어
(1) SOAP (Simple Object Access Protocol)
> HTTP 통한 XML 기반 메시지 교환 프로토콜
(2) SOAP 구성
1) WSDL (Web Services Description Language)
> 웹 서비스 기술언어
> 설명을 모아 놓은 설명서
2) UDDI
> WSDL을 모아놓음
> 비즈니스 업체 목록 등록을 위한 XML규격
3. REST
1) 개념 : HTTP URI를 통한 자원 명시와 HTTP Method를 통한 CRUD Operation 적용
2) REST 구성요소
- 자원 : URI를 통해 식별
- 행위 : GET, POST, PUT, DELETE
- 표현 : 데이터표현
3) RESTful
> REST의 원리를 따르는 시스템
4. 인터페이스 연계기술
- API : 직접연계기술 / 응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
- 소켓 : 간접연계기술 / 네트워크를 경유하는 프로세스 간 통신의 접속점으로 클라이언트와 서버 프로그램 사이에 데이터를 송수신할 수 있는 기술
Section 4. 인터페이스 구현 검증
1. 인터페이스 검증
(1) 인터페이스 구현 검증 도구
- xUnit : 다양한 언어 지원
- STAF : 서비스 호출 및 컴포넌트 재사용
- FitNesse : 웹 기반 테스트 프레임워크
- NTAF ; FitNesse의 장점과 STAF의 장점을 통합 (naver)
- Selenium : 웹 애플리케이션 테스트 프레임워크
- watir : Ruby를 사용하는 애플리케이션 테스트 프레임워크
(2) 인터페이스 구현 감시 도구
- 스카우터 : 애플리케이션 및 OS 자원에 대한 모니터링 기능 제공하는 오픈소스 APM 소프트웨어 / 단일 뷰를 통한 실시간 모니터링
- 제니퍼 : 트랜잭션의 양, 처리시간, 응답시간, 자원 활용률 등을 모니터링
07 객체지향 구현
Section 1. 객체지향 설계
1. 객체지향
(1) 객체지향 구성요소
- 클래스 : 속성과 연산을 정의해서 만든 틀
- 객체 : 클래스의 인스턴스
- 속성 : 객체들이 가지고 있는 고유한 데이터
- 메서드 : 작업을 수행하기 위한 명령문의 집합, 객체가 메시지를 받아 실행해야 할 객체의 구체적 연산
- 메시지 : 객체에게 어떤 행위를 하도록 지시
- 인스턴스 : 클래스를 통해 만든 실제의 실형 객체로 클래스에 속한 각각의 객체
(2) 객체지향 언어의 특징
- 캡슐화 : 속성과 메서드를 하나로 묶은 것, 함수들을 한 묶음으로 처리
- 정보은닉 : 내부 데이터에 직접 접근할 수 없도록 제한
- 상속(Inheritance)
- 다형성(Polymorphism) : 하나의 메시지에 대해 여러 가지 방법으로 응답 (오버로딩, 오버라이딩), 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
- 추상화(Abstraction) : 실체의 핵심적인 개념만을 추출
(3) 객체지향 설계 원칙 (SOLID)
- 단일 책임 원칙 (SRP) : 한 클래스는 하나의 책임만을 가져야 한다.
- 개방 폐쇄 원칙 (OCP) : 확장에 열려 있고, 수정에 닫혀 있어야 한다.
- 리스코프 치환 원칙 (LSP) : 자식 클래스는 언제나 자신의 부모 클래스를 대체
- 인터페이스 분리 원칙 (ISP) : 사용하지 않는 인터페이스는 구현하지 말아야 한다.
- 의존성 역전 원칙 (DIP) : 변화가 거의 없는 것에 의존 / 추상성이 높은 클래스와 관계를 맺어야 한다.
2. 디자인 패턴
(1) 생성패턴
- 빌더 : 복잡한 인스턴스를 조립해 만드는 구조, 건축가가 블록을 조립하는 모습, 복잡한 객체의 생성 과정을 여러 단계로 나누어 처리
- 프로토타입 : 기존 객체를 복사한 후 필요한 부분만 수정, 복제품 만들기
- 팩토리 메서드 : 상위 클래스에서 인터페이스 정의, 하위 클래스에서 인스턴스 생성, 실제 객체의 생성은 서브클래스가 결정하도록 위임
- 추상 팩토리 : 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스 제공, 서로 다른 부품을 조립만 하는 조립 공장, 구체적인 클래스를 명시하지 않고도 객체들을 생성할 수 있다.
- 싱글톤 : 전역 변수 사용하지 않고 객체 오직 하나만 생성, 그 객체는 어디서든 참조가능, 하나뿐인
(2) 구조패턴
- 브릿지 : 기능 계층과 구현 계층을 연결, 추상화와 구현을 분리하여 두 계층이 독립적으로 변화할 수 있게 한다.
- 데코레이터 : 기존에 구현되어 있는 클래스에 필요한 기능 추가해 나감, 기능추가
- 퍼싸드 : 복잡한 시스템을 단순화, 간편하게 사용가능 외부(Facade) 리모컨 / Wrapper객체 필요
- 플라이웨이트 : 메모리 절약, 클래스의 경량화, 부담을 가볍게(Flyweight)하다,
- 프록시 : 실제 객체에 대한 대리 객체, 대리해서 처리해 줌, 중개자, 복잡한 시스템을 개발하기 쉽도록 클래스나 객체들을 조합
- 컴포지트 : 객체들의 관계를 트리 구조로 여러 객체로 구성, 폴더와 파일을 합성(Composite) / 복합 객체와 단일 객체 구분 없이
- 어댑터 : 중간에서 맞춰주는 역할, 변압기/ 호환성 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변환
(3) 행위패턴
- 미디에이터 (Mediator) : 객체들 간 복잡한 상호작용을 캡슐화해 객체로 정의하는 패턴, 중간에 통제, 중앙집중식
- 인터프리터(Interpreter) : 언어의 다양한 해석, 번역가, 문법을 해석
- 이터레이터 (Iterator) 반복자 : 자료 구조와 같이 접근이 잦은 객체에 동일한 인터페이스를 사용하도록 하는 패턴, 같은 명령 반복, 컬렉션의 요소들을 순차적으로 접근하고 처리할 수 있도록 한다.
- 템플릿 메서드 (Template Method) : 핵심 골격은 유지하면서, 일부 단계는 하위 클래스에서 구체적으로 구현한다.
- 옵저버 (Observer) : 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에 연락, 상태를 전달
- 스테이트 : 객체의 내부 상태에 따라 다르게 처리할 수 있도록 행위 내용 변경
- 비지터 : 클래스의 메서드가 각 클래스를 돌아다니며 특정 작업 수행, 여기저기 방문, 객체 구조를 변경하지 않고 객체에 새로운 연산을 추가
- 커맨드 : 명령이 들어오면 그에 맞는 서브 클래스 선택되어 실행, 각종 명령어 모음, 요청을 객체로 캡슐화하여 요청자와 처리자를 분리한다.
- 스트레티지 (전략)(Strategy) : 알고리즘 군 정의, 행위를 클래스로 캡슐화해 동적으로 행위 자유롭게 변환
- 메멘토(Memento) : Undo(작업취소) 기능 개발, 그때로 돌아가는 것
- 체인 오브 Chain of Responsibility : 정적으로 어떤 기능에 대한 처리의 연결이 하드 코딩 되어 있을 때, 이를 동적으로 연결되어 있는 경우에 따라 다르게 처리될 수 있도록 연결한 디자인
요청을 처리하는 객체들을 체인 형태로 연결하여 요청을 순서대로 전달한다.
08 애플리케이션 테스트 관리
Section 1. 애플리케이션 테스트케이스 설계
1. 테스트 오라클
- 참 오라클 : 모든 입력 값에 대해 결과를 생성하는 오라클
- 샘플링 : 제한된 입력 값들에 대해서만 결과 제공
- 휴리스틱 : 근사적인 결과를 제공
- 일관성 검사 : 변경 전후로 테스트 결과의 일관성을 검증
2. 소프트웨어 테스트 기법
(1) 프로그램 실행 여부
1) 정적 테스트
> 소스 코드를 분석하여 문제점을 찾는 테스트 방식 / 코드를 실행시키지 않고 소스코드 결함 찾아냄
- 동료검토 : 2~3명의 개발자 참여
- 워크스루 : 개발자 검토 회의 / 검토 자료를 회의 전에 배포해서 사전 검토한 후 짧은 시간 동안 회의를 진행
- 인스펙션 : 검토 전문가들 / 공식적 회의
2) 동적 테스트
> 소프트웨어를 실행하며 문제점을 찾는 테스트 방식
(2) 테스트 기법
1) 화이트 박스 테스트 종류
- 기초 경로 검사 (Basic Path Test) :
- 제어 구조 검사
2) 화이트 박스 테스트 검증 기준
- 문장 커버리지 (Statement)
- 결정(분기) 커버리지 (Decision/Branch) : 결정 포인트 내의 모든 분기문 수행 / if문 전체
- 조건 커버리지 (Condition) : 개별 조건식에 대해 실행
- 분기/조건 커버리지
3) 블랙박스 테스트 기법
- 동등/동치 분할 (Equivalence Partitioning Test) : 타당한 입력 자료와 타당하지 않은 입력 자료의 개수를 균등하게 하여 테스트
- 경계값 분석 (Boundary Value Analysis) : 경계값 테스트
- 원인-효과 그래프 검사 (Cause-Effect Graphing) : 입력 데이터 간의 관계와 출력에 영향을 미치는 상황분석 / 입력과 출력의 상관관계
- 오류 예측 검사 (Error Guessing) : 과거의 경험이나 테스터의 감각으로 테스트
- 비교 검사 (Comparison Test) : 여러 버전의 프로그램에 동일한 자료를 제공
- 상태전이 검사 (State Transistion) : 이벤트에 의해 어느 한 상태에서 다른 상태로 전이 되는 경우의 수를 수행
(3) 테스트에 대한 시각
1) 검증 Verification
: 스포트웨어 개발 과정을 테스트
2) 확인 Validation
: 완성된 소프트웨어의 결과를 테스트
(4) 테스트 목적
- 회복 (Recovery) : 고의로 실패를 유도
- 안전 (Security) : 보안적인 결함을 점검
- 강도 (Stress) : 과부하테스트 / 임계점 이상의 부하를 가한다.
- 성능 (Performance) : 응답시간, 처리량, 반응속도 테스트
- 구조
- 회귀 (Regression) : 변경 코드에 새로운 결함이 없음을 확인하는 테스트
- 병행 (Parallel) : 변경된 시스템과 기존 시스템에 동일한 데이터를 입력 후 비교
- 부하 : 부하를 가한다.
- 스트레스 : 부하 이상
- 스파이크 : 순간적으로 사용자 수 증가
- 내구성 : 긴 시간 부하를 가한다.
3. 통합 테스트
- 상향식 통합 테스트
- 하향식 통합 테스트
- 빅뱅테스트
4. DRM
> 디지털 콘텐츠의 불법 사용을 제한하고, 승인된 사용자에게만 콘텐츠 사용을 허용
(2) DRM 구성
- 클리어링 하우스 : CGV 본사 / 키 관리 및 라이선스 발급관리
- 콘텐츠 제공자 : 영화 제작사 / 저작권자
- 콘텐츠 분배자 : CGV 구로점 / 암호화된 콘텐츠 제공
- DRM 컨트롤러 : 콘텐츠의 이용권한을 통제
(3) 저작권 보호 기술
- 위변조 방지 (Tamper-Proofing) : 콘텐츠에 무단 조작 시 감시하고 오류 동작을 유발
- 워터마킹 (Watermarking) : 콘텐츠에 저작권 정보 은닉
- 핑거프린팅 : 불법 유통 방지 / 중간에 누구인지 알 수 있음
===========================================
데이터베이스 구축
01 데이터베이스 구축
Section 1. 데이터베이스 개념
1. 데이터베이스 개념
(1) 데이터베이스의 정의 (공장통운)
- 공유 데이터 (Shared) : 여러 사용자가 공동으로 사용하는 데이터
- 저장 데이터 (Stored) : 저장 매체에 저장된 데이터
- 통합 데이터 (Integrated) : 중복이 최소화된 데이터
- 운영 데이터 (Operational) : 조직의 목적을 위한 필수 데이터
(2) 스키마
1) 외부 스키마
> 사용자 관점의 스키마, 사용자 뷰
> 데이터를 테이블 형태로 화면에 보여줌
> 데이터 베이스의 논리적 구조를 정의
~~~~~ 논리적 독립성 : 개념이 변해도 외부에 영향 X
2) 개념 스키마
> 회사 관점의 스키마, 전체뷰
> 전체적인 구조와 제약조건
~~~~~ 물리적 독립성 : 내부 변해도 개념에 영향 X
3) 내부 스키마
> 설계자 관점의 스키마
> 물리적 저장장치의 입장에서 본 데이터베이스 구조
> 내부 레코드의 물리적 순서
Section 2. 데이터베이스 설계
1. 데이터베이스 설계 단계
(1) 요구 조건 분석
(2) 개념적 설계
> 개념스키마, 트랜잭션 모델링, E-R 모델
> 뷰 통합 방법 및 속성 합성을 고려
> 머릿속에 있는 걸 표현
> 정보 모델
(3) 논리적 설계
> 목표 DBMS 맞는 논리 스키마 설계
> 정규화, 트랜잭션 인터페이스 설계
> 컴퓨터가 이해하고 처리할 수 있도록 변환하는 과정
(4) 물리적 설계
> 구조 및 성능에 대한 설계
> 실제 저장 장치에 어떻게 저장할지 설계
2. E-R 다이어그램 기호
개체 : 사각형
관계 : 마름모
속성 : 타원
Section 3. 데이터 모델링
1. 데이터모델 구성 3요소
- 구조 : 데이터 구조 및 개체 간 관계
- 연산 : 데이터 처리 방법
- 제약조건 : 데이터의 논리적 제약조건
Section 4. 논리 데이터베이스 설계
1. 정규화
(1) 이상현상
- 삽입 이상 : 불필요한 데이터가 함께 삽입되는 현상
- 삭제 이상 : 연쇄 삭제 현상으로 인해 정보 손실
- 갱신 이상 : 일부 튜플만 갱신되어 정보에 모순이 생기는 현상
(2) 함수적 종속
- 완전 함수적 종속 (Full F D)
- 부분 함수적 종속 (Partial F)
- 이행적 함수 종속 (Transitive F)
(3) 정규화 과정
- 도메인이 원자값
- 부분적 함수 종속 제거
- 이행적 함수 종속 제거
- 결정자이면서 후보키가 아닌 것 제거
- 다치 종속 제거
- 조인 종속성 이용
Section 5. 물리 데이터베이스 설계
4. 데이터베이스 백업
(1) 백업 방식
- 전체 백업
- 증분 백업 : 변경된 데이터만
- 차등 백업 : 모든 변경 데이터 백업
(2) 복구 시간
- 복구 시간 목표 (RTO) : 서비스를 사용할 수 없는 상태로 허용되는 기간
- 복구 시점 목표 (RPO) : 마지막 백업 이후 허용되는 최대 데이터 손실 시간
- BCP(Busniess Continuity Plan) 비즈니스 연속성 계획 : 재해, 장애, 재난으로부터 위기관리 기반으로 재해복구, 업무복구 및 재개, 비상계획 등을 통해 비즈니스 연속성을 보장하는 체계
- BIA (Busniess Impact Analysis) : 재해, 장애로 인해 운영상의 주요 손실을 볼 것을 가정하여 시간 흐름에 따른 영향도 및 손실평가를 조사하는 BCP를 구축하기 위한 비즈니스 영향 분석
(3) 재해 복구 기간
> 재해복구 센터에 주센터와 동일한 수준의 자원을 보유하는 대신 중요성이 높은 자원만 부분적으로 재해 복구센터에 보유하고 있는 방식으로 재해 발생 시 복구까지의 소요 시간으로 나눔
- mirror site : 즉시
- hot site : 수시간
- warm site : 수일 ~ 수주
- cold site : 수주 ~ 수개월
5. 데이터베이스 암호화
- API 방식 : 애플리케이션에서 수행
- Plug-in 방식 : DB 서버에 제품 설치 후 수행
- TDE 방식 : DBMS 내부의 기본 모듈로 수행
Section 8. 키와 무결성 제약 조건
3. 데이터베이스 무결성
1) 개체 무결성 : NULL 불가, 중복 불가
2) 참조 무결성 : 외래키는 NULL 이거나 참조 릴레이션의 기본키와 일치해야 함
3) 도메인 무결성 : 속성 값은 정의된 도메인에 속해야 한다.
Section 10. 분산 데이터베이스
1. 트랜잭션
> 하나의 논리적 기능을 수행하는 작업 단위
2. 트랜잭션의 성질 (ACID)
- 원자성 (Atomicity) : 모두 반영되거나 아니면 전혀 반영되지 않아야 한다.
- 일관성 (Consistency) : 트랜잭션의 완료 후에 데이터베이스가 일관된 상태를 유지
- 독립성, 격리성 (Isolation) : 동시에 실행되는 여러 트랜잭션들은 서로 간섭할 수 없다.
- 영속성, 지속성 (Durabililty) : 결과는 시스템이 고장이 발생해도 영구적으로 반영되어야 함
03 병행제어와 데이터 전환
Section 1. 병행제어와 회복
1. 병행제어
(1) 개념
> 여러 트랜잭션이 동시에 실행되면서도 데이터베이스의 일관성을 유지하는 기법
> 많은사람들이 공유도를 최대화하면서 DB의 일관성 유지하는게 목적
(2) 문제점 (갱현모연)
- 갱신 분실 (Lost Update) : 일부 갱신 결과가 손실되는 현상
- 현황 파악 오류(비완료 의존성) (Uncommitted Dependency) : 실패한 트랜잭션의 결과를 다른 트랜잭션이 참조
- 모순성 (Inconsistency) : 병행 수행 중 원치 않는 자료를 사용함으로써 발생 (여러개 데이터 가져올때 오류 / 갱신분실과 비슷)
- 연쇄 복귀 (Cascading Rollback) : 하나의 트랜잭션이 실패해 롤백되면, 다른 트랜잭션도 함께 롤백
(3) 병행제어 기법
1) 로킹(Locking) : 트랜잭션 사용시 잠근다
2) 2단계 로킹 규약
3) 타임스탬프 : 시간을 할당
4) 낙관적 병행제어
5) 다중 버전 병행제어
로킹
로킹단위가 크다 로크수는 적다 병행성 낮다=여러사람들이 이용할수 있는능력 오버헤드 감소 = 일처리 로킹단위가 작다 로크수 많다 병행성 높다 오버헤드 증가 = 아저씨 바쁨 |
2. 회복
(1) 개념
> 장애로 인해 손상된 데이터베이스를 이전의 정상 상태로 복구하는 작업
(2) 회복 기법
1) 로그 기반 회복 기법
- 지연 갱신 회복 기법 (Deferred Update) : 일이 끝나고 DB에 반영 / Redo(재실행)만 실행
- 즉시 갱신 회복 기법 (Immediate Update ) : Redo와 Undo(취소) 모두 사용가능 / 즉시 반영해서 Undo도 필요
2) 검사점 회복 기법 (Checkpoint Recovery)
================================
운영체제
01 운영체제
리눅스 :리누스 토발즈
유닉스 : 대부분 C 언어 / 트리구조 / 벨연구소 / 트리구조
Section 2. 메모리 관리
1. 기억장치 관리 전략
(1) 반입 전략
- 요구반입
- 예상반입
(2) 배치 전략
- 최초, 최적, 최악
(3) 교체 전략
- FIFO, OPT, LRU, LFU, NUR, SCR
Section 3. 가상기억장치
1. 가상 기억장치
(1) 블록 분할 방법
1) 페이징 기법 (고정적)
> 가상 기억장치를 모두 같은 크기의 블록으로 편성하여 운용
> 내부 단편화 발생
2) 세그먼테이션기법 (유동적)
> 가상 메모리를 크기가 다른 논리적 단위인 세그먼트로 분할하고 메모리를 할당하는 기법
> 외부 단편화 발생
2. 가상기억장치 기타 관리 사항
(1) 페이지 부재
(2) 지역성
- 시간 구역성
- 공간 구역성
(3) 워킹 셋
> 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
(4) 스래싱
> 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
3. 페이지 교체 알고리즘
(1) FIFO
(2) OPT
(3) LRU
(4) LFU
(5) NUR
(6) SCR
Section 4. 프로세스
1. 프로세스
(1) 스레드
> 프로세스 내에서 실행되는 흐름의 단위
(2) 프로세스 상태 전이
(3) PCB 프로세스 제어 블록
> 운영체제가 프로세스의 정보를 저장하는 공간
(4) 문맥 교환
> 하나의 프로세스가 CPU 사용을 마치고 다른 프로세스가 CPU를 사용하도록 전환하는 과정
2. 스케줄링
(1) 선점형
- RR : 시간 단위를 정하여
- SRT : 실행 시간이 가장 짧은 프로세스에 CPU 할당
- 다단계 큐 (MLQ) : 그룹에 따라 다른 준비 상태 큐를 사용하는 기법
- 다단계 피드백 큐 (MLFQ) : 가장 높은 우선순위의 준비 큐에 등록
(2) 비선점형
- FCFS
- SJF
- HRN : 우선순위 = (대기시간 + 실행시간) / 실행시간
- 우선순위
- 기한부
(3) 기아현상 : 우선순위가 낮은 프로세스가 무한정 기다리는 현상
> RR, SRT, SJF
(4) 에이징 기법 : 기아현상을 해결
> HRN ~~
Section 5. 병행 프로세스와 교착상태
3. 교착상태 (Dead Lock)
(1) 개념
> 상호배제에 의해 나타나는 문제점, 여러 프로세스가 자원을 점유한 상태에서 서로 다른 프로세스의 자원을 요구하며 무한정 기다림
(2) 교착상태 발생 조건 (상점비환)
- 상호배제 (Mutual Exclusion) : 한 번에 한 개의 프로세스만이 공유 장원을 사용
- 점유와 대기 (Hold & Wait) : 자원을 점유하면서 다른 프로세스의 자원을 요구
- 비선점 (Non-preemption) : 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없다.
- 환형대기 (Circular Wait) : 순차적으로 다음 프로세스가 요구하는 자원을 가지고 있는 상태
(3) 해결방법
- 예방 기법
- 회피 기법 - 은행가 알고리즘
- 발견 기법
- 회복 기법
Section 8. 스토리지
1. 스토리지
- DAS (Direct) : PC에 직접 연결
- NAS (Network) : LAN을 통해
- SAN (Storage) : 파이버 채널 스위치를 통해
================================
네트워크
01 네트워크
Section 2. LAN
1. LAN 구성요소
- NIC (Network Interface Card) : LAN카드 / 외부 네트워크와 접속하여 가장 빠른 속도로 데이터를 주고받을 수 있게 컴퓨터 내에 설치 되는 장치로 네트워크 어댑터라고 한다.
- 리피터 : 증폭기
- 허브 : 케이블 집중 장치
- 브리지 : 서로 다른 LAN 연결
- 라우터 : 서로 다른 네트워크 연결
- 게이트웨이 : 서로 다른 통신망 간 메시지 전달 / 출입구 역할
Section 3. 데이터 교환 방식
1. 데이터 교환 방식
패킷교환 방식
(1) 개념 : 메시지를 일정한 길이의 패킷으로 잘라서 전송하는 방식
- 가상회선방식 : 연결형 / 패킷을 전송하기 전에 논리적인 연결을 먼저 수행하여 패킷을 주고받는다.
- 데이터그램방식 : 비연결형 / 각 전송 패킷을 미리 정해진 경로 없이 독립적으로 처리하여 교환하는 방식이다
다중화기
> 하나의 통신 회선을 여러 가입자가 동시에 사용할 수 있게 하는 기능
> 여러개의 터미널 신호를 하나의 통신 회선을 통해 전송할 수 있게 하는 장치
다중화기 종류
1) 주파수 분할 다중화기(FDM) : 중간에 보호 구역 / 물리적 통신 채널을 여러 주파수 채널로 나누어 사용 / 라디오TV
2) 시분할 다중화기(TDM) : 일정 시간 분할 하여 차례로 배분
- 동기식(synchronous TDM) : 꺼져있어도
- 비동기식(Asynchrounous) (좋다) :지능형 , 통계적 시분할
3) 코드 분할 다중화 (CDM) : 나만의 어떤걸 만드는것
4) 파장 분할 다중화 (WDM)
5) 공간 분할 다중화 (SDM)
Section 4. 인터넷
4. IP 기타기술
(1) NAT (Network Address Translation)
> 내부 사설 IP 주소와 외부 공인 IP 주소 간의 변환 / 네트워크 주소 변환
(2) DHCP
> 네트워크 장치에 자동으로 IP 주소를 할당하는 프로토콜
Section 6. OSI 7
1. 계층별 특징
(1) 물리 계층
- 데이터를 전기적 신호로 변환하여 통신 케이블을 통해 전송
- 장비 : 랜카드, 리피터, 허브
- PDU : 비트
(2) 데이터 링크 계층
- 인접한 신뢰성
- 물리적으로 연결된 두 개의 인접한 개방 시스템들간에 신뢰성 있고 효율적인 정보 전송을 할 수 있도록 연결 설정, 데이터전송, 오류 제어
- 장비 : 스위치, 브리지
- PDU : 프레임
- HDLC, PPP
(3) 네트워크 계층
- 비연결성, 비신뢰성, 빨리빨리
- 데이터를 목적지까지 라우팅함
- 개방 시스템들 간의 네트워크 연결을 관리
- 경로제어, 패킷교환, 트래픽 제어
- 장비 : 라우터, L3 스위치
- PDU : 패킷
(4) 전송계층
- 양 종단간 신뢰성 있는 데이터 전송
- 흐름제어, 오류제어
- PDU : 세그먼트
- 프로토콜 : TCP / UDP
(5) 세션 계층
- 응용프로세스 간 통신
(6) 표현 계층
- 암호화, 압축, 인코딩
(7) 응용계층
- 사용자 인터페이스. 실제 프로그램
- 프로토콜 : HTTP, FTP, SMTP, POP3, IMAP, Telnet
- SMTP : 이메일 전송
- POP3 : 이메일 가져옴
- IMAP : 이메일 가져옴
Section 7. TCP / IP
1. 계층별 특징
(1) 네트워크 엑세스 계층
- 프로토콜 : Ethernet, X.25, RS-232C
(2) 인터넷 계층
- 프로토콜 : IP, ICMP, IGMP, ARP, RARP
- ICMP : IP 패킷 전송 중 에러 메시지 제공, ip 패킷을 처리할 때 발생되는 문제를 알려줌
- IGMP : 멀티캐스트 그룹 구성원 관리
(3) 전송 계층
- 프로토콜 : TCP, UDP
(4) 응용계층
프로토콜 | 설명 | |
TCP 프로토콜 | HTTP | 하이퍼 텍스트 문서 송수신 |
FTP | 파일 전송 | |
SMTP | 이메일 전송 | |
UDP 프로토콜 | DNS (53) | 도메인 이름을 IP주소로 변환 |
SNMP | 네트워크 장비연결 | |
DHCP (67) | 주소 자동 할당 |
21 22 23 25
FTP SSH TELNET SMTP
80 179
HTTP TCP
110 143 161
POP3 IMAP SNMP
프로토콜 : (기술적 은어)
- FTP(21) : 파일 전송
- TELNET (23) : 원격
- SMTP(25) : 이메일 전송
- HTTP(80) : 하이퍼 텍스트 문서 송수신
- TCP(179) : 연결형 서비스 제공, 신뢰성
- POP3(110) : 이메일 가져옴
- IMAP(143) : 이메일 가져옴
- SNMP(161) : 네트워크 장비연결
- ICMP : IP 패킷 전송 중 에러 메시지 제공
- IGMP : 멀티캐스트 그룹 구성원 관리
Section 8. 라우팅
RIP : 최대홉수 제한 / 거리벡터 라우팅 프로토콜 / 벨만포드
OSPF : 다익스트라 / 최단 경로 / 링크상태 변화시에만 업데이트
EGP 는 BGP
================================
정보보안
01 정보보안
Section 1. SW개발 보안 설계
1. 정보보안
(1) AAA
- 인증 (Authentication) : 사용자의 신원 확인
- 권한부여 (Authorization) : 권한과 서비스를 허용
- 계정관리 (Accounting) : 사용자의 자원 사용 정보를 수집
2. 정보보안 3요소
- 기밀성 : 인가된 사용자만 접근가능
- 무결성 : 인가된 사용자만 정보변경가능
- 가용성(Availability) : 인가된 사용자는 언제든 사용할 수 있다.
- 부인방지(Non-repudiation) : 정보 전송을 부인할 수 없도록 하는것
Section 2. SW개발 보안 구현
1. 암호 알고리즘
(1) 대칭키 암호
1) 블록암호 알고리즘
- DES : 64비트 블록, 16라운드 / 3-DES
- AES : 128비트 블록 128/192/256 비트 키, 10/12/14라운드 / 미국 표준기술 연구소 NIST 개발
- SKIPJACK : 64비트 블록, 80비트 / NSA에서 개발 / 클리퍼칩 내장
- IDEA : 64비트 블록 / 스위스 / DES 대체
- SEED : 128비트 블록 / 한국 KISA 개발
- ARIA : 128비트 블록 / 한국 개발 , 산학연구협회가 개발
2) 스트림암호 알고리즘
- LFSR : 선형함수로 계산
- RC4 : 인터넷 보안 프로토콜에서 널리 사용
- A5
(3) 비대칭키 암호
1) 소인수 분해 기반
- RSA : 가장 대표적인 공개키 암호 알고리즘 / MIT 교수 3명
- Rabin
2) 이산대수 기반
- 디피-헬만 : 최초의 비대칭키&공개키 / 많은 키 분배 방식에 기본이 됨
- DSA : 미국의 전자서명 표준
- ELGamal : 같은 평문으로 부터 다른 암호문 생성 가능
3) 타원 곡선
- ECC : 타원 곡선상의 이산대수 문제를 이용
(4) 단방향 암호화
1) 해시 함수 종류
- MD5 : 빠른 계산 속도, 취약점 발견, MD4 개선한 암호화 알고리즘
- SHA : NIST에 의해 개발
- HAS-160 : 한국 개발 / 디지털 서명에 사용
2) 암호학적 해시 함수의 결점
- 무차별 대입 공격
- Rainbow Table 공격 : 미리 계산된 해시 값들의 테이블을 이용하여 해시 역추적
Section 4. 시스템 보안 구현
1. 보안 관제
(1) 통합로그 분석 장비
- ESM(Enterprise Security Management)
- > 방화벽, 침입 탐지 시스템(IDS), 통합보안시스템(UTM), 가상사설망 등의 여러 보안 시스템으로부터 발생한 각종 이벤트 및 로그를 통합해서 관리, 분석, 대응하는 전사적 통합 보안 관리 시스템.
- 다양한 보안 장비에서 발생하는 로그 및 이벤트를 통합 관리
- SIEM (Security Information & Event Management)
- > 방화벽, IDS, IPS, 웹 방화벽, VPN 등에서 발생한 로그 및 보안 이벤트를 통합하여 관리함으로써 비용 및 자원을 절약할 수있는 특징
- > 다양한 장비에서 발생하는 로그 및 보안 이벤트를 통합하여 관리하는 보안 솔루션
- 빅데이터 수준의 데이터
2. 보안 프로토콜
(1) SSH (Secure Shell Protocol) 파일질라
> 원격 호스트에 접속하기 위한 보안 프로토콜
> 22번 포트
(2) SSL (Secure Socket Layer)
> 전송계층과 응용계층 사이에서 클라이언트와 서버 간의 웹 데이터 암호화,
> 웹 브라우저와 웹 서버 간 안전한 데이터 전송을 위한 프로토콜
> SSL이 적용된 웹 페이지는 URL 이 https로 시작하며, 443번 포트
(3) TLS (Transport Layer Security)
> 전송 계층 보안을 위해 개발된 프로토콜
(4) IPSec
> IP 계층(네트워크 계층)을 안전하게 보호하기 위한 기법
> IP 패킷 단위의 데이터 변조 방지 및 암호화 기능을 제공하는 통신규약을
>프로토콜
- AH (Authentication Header) : 인증 + 무결성 / 메시지 checksum을 활용
- ESP (Encapsulating Security Payload) : 인증 + 무결성 + 기밀성 / 양 종단 간 구간에 보안 서비스 제공
(5) S-HTTP
> 웹 상에서 네트워크 트래픽을 암호화하기 위한 방법
(6) 고가용성 (HA, High Availability)
> 서버, 네트워크 등의 정보 시스템이 오랜 기간 지속적으로 정상 운영될 수 있는 능력
3. 접근통제
- MAC (Mandatory) 강제 : 주체와 객체의 등급을 비교하여 접근 권한을 부여
- DAC (Discretionary) 임의 접근통제 : 사용자 신원에 따라 접근 권한 부여
- RBAC (Role Based) 역할기반 : 사용자의 역할에 따라 접근 권한 부여
1. 살충제 패러독스
> 동일한 테스트 케이스로 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않는 현상
2. 파레토 법칙
> 20%모듈에서 80% 결함 발생
3. 오류-부재의 궤변
> 결함이 없다해도 사용자의 요구사항을 만족하지 못하면 품질이 높다 할 수 없다,
4, 브룩스의 법칙
> 지연된 프로젝트에 인력 추가는 오히려 개발 속도를 느리게함
5. 보헴의 법칙
> 초기 단계에서 결함 발견 및 수정은 비용 절감
📌 MQTT (Message Queuing Telemetry Transport)
> 불안정한 네트워크에서 사용되는 경량 메시징 프로토콜
> 사물 인터넷에서 사용됨
>TCP 기반
>게시/구독 패턴
> 이벤트 기반 응용프로그램
📌 COAP (Constranined Application Protocol)
> 제한된 장치를 위한 경량 프로토콜
> IoT, M2M 통신에서 사용됨 (작은 규모에 적합)
> UDP 기반
📌 도커
> 컨테이너 기반의 가상화 플랫폼으로, 응용 프로그램을 패키징하고 배포하는데 사용
📌 쿠버네티스
> 컨테이너 오케스트레이션 플랫폼
> 여러대의 호스트에서 컨테이너화된 응용 프로그램을 관리하고 배포하는데 사용
>
'정보처리기사' 카테고리의 다른 글
프로그래밍언어 (0) | 2024.04.23 |
---|---|
신기술 (0) | 2024.04.23 |
정보처리기사 실기 [5. 인터페이스 구현] (0) | 2024.01.29 |
정보처리기사 실기 [09. 소프트웨어 보안 구축] (0) | 2024.01.22 |
정보처리기사 실기 [2. 화면 설계] (0) | 2024.01.22 |