요구사항확인
절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할수 있는 경량개발방법론
= 애자일방법론
매일 정해진 시간, 장소 개발을하는 팀을위한 프로젝트 관리 중심 방법론
= 스크럼
LoC(Line of Code가 30,000라인 이고 개발자가 5명이며 월평균 300라인을 개발한다 프로젝트 개발기간과 계산식은?
계산식 : 월간생산성 30,000/300 = 100 프로젝트개발기간 100/5 = 20
프로젝트개발기간 : 20개월
럼바우 모델링 기법
프로세스들의 자료 흐름을 중심으로 처리과정을 표현하는 모델링으로 자료 흐름도(DFD)를 활용하여 표현
= 기능모델링 (Functional)
시간의 흐름에 따라 객체들 사이의 제어흐름, 동작순서 등의 동적인 행위를 표현하는 모델링으로 상태다이어그램을 활용
= 동적모델링(Dynamic)
시스템에서 요구하는 객체를 찾고 객체 간의 관계를 정의하여 ER다이어그램을 만드는 과정까지의 모델링으로 객체 다이어그램을 활용
= 객체모델링(Object 또는 Information)
객체지향설계원칙
SOLID
SRP 단일책임의 원칙
= 하나의 클래스는 하나의 목적
OCP 개방폐쇄원칙
= 확장에는 열려있고 변경에는 닫혀있어야한다
LSP 리스코프 치완의 원칙
= 서브타입은 어디서나 자신의 기반타입으로 교체할 수 있어야한다.
ISP 인터페이스 분리의 원칙
= 한 클래스는 자신이 사용하지 않는 인터페이스는 구현 하지 말아야한다
객체 설계시 그 기능과 상관없는 부분이 변해도 영향을 받지 않아야한다.
DIP 의존성 역전의 원칙
= 실제 사용관계는 바뀌지 않으면서 추상을 매개로 메시지를 주고받음으로 관계를 느슨하게 만드는 원칙
소프트웨어생명주기(SDLC)
= 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차
소프트웨어생명주기 단계
요구사항분석 - 요구와 조건을 결정하는 단계
설계 - 수행방법을 결정하는 단계
구현 - 프로그래밍언어를 사용하여 프로그램을 작성하는 단계
테스트 - 검사하고 평가
유지보수 - 시스템이 인수되고 설치 된 후 일어나는 모든 활동
폭프나반
폭포수모델 - 각 단계 확실히 마무리 지은후 다음단계로
프로토타이핑모델 - 프로토타입으로 구현 , 고객의 피드백을 반영하여 개발
나선형모델 - 위험최소화, 점진적으로 완벽한 시스템 개발
반복적모델 - 병렬적으로 개발 후 통합하거나 반복적으로 완성시키는 개발
XP 12가지 가치 - 의사소통개선 즉각적 피드백으로 스프트웨어 품질을 높이기 위한 방법론
작성해야하는 프로그램에 대한 테스트를 먼저 수행하고 통과할수 있도록 실제 프로그램의 코드를 작성해야한다는 원리
= TDD(Test Driven Development) 테스트기반개발
개발자 둘이서 짝으로 코딩
= 짝프로그래밍
매일 여러번씩 소프트웨어를 통합하고 빌드해야한다
= CI 지속적인통합
공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자간의 의사소통을 원활하게 한다는 원리
= 메타포어
프로그램의 기능을 바꾸지 않으면서 중복제거, 단순화등 재구성한다는 원리
= 리팩토링
델파이기법
전문가의 경험적지식을 통한 문제 해결 및 미래 예측을 위한 기법
비용산정방식
LoC : 소프트웨어 각기능의 원시코드 라인수의 낙관치 중간치 비관치를 측정해 예측치를 구하고 비용산정
Man Month : 한사람이 1개월 동안 할수 있는 일의 양을 기준으로 프로젝트 비용을 산정
COCOMO : 보헴이 제안한 모형 프로그램 규모에 따라 비용 산정
Putnam 푸트남 : 소프트웨어개발주기의 단계별로 유고할 인력의 분포를 가정하는 방식
FP기능점수 : 요구사항 기능을 증가시키는 인자별로 가중치를 부여하고 요인별로 가중치를 합산하여 총 기능점수를 계산하는 방식
일정관리기법
CPM 주 공정법 : 여러작업들의 순서가 얽혀있는 프로젝트의 일정계산
PERT : 일의 순서를 계획적으로 정리하기 위한 수렴기법으로 비관치중간치낙관치의 3점 추정방식을 통해 일정관리
CCPM 중요연쇄프로젝트기법 : 주 공정 연쇄법으로 자원제약사항을 고려하여 일정을 관리하는 기법
소프트웨어 아키텍처 4+1 뷰
유논프구배
유스케이스뷰 : 유스케이스또는 아키텍처를 도출하고 설계하며 다른 뷰를 검증하는데 사용되는 뷰
논리뷰 : 시스템의 기능적인 요구사항이 어떻게 제공되는지 설명해주는 뷰
프로세스뷰 : 시스템의 비기능적인 속성으로 자원의 효율적 사용, 병행, 실행, 비동기 이벤트 처리 등을 표현한 뷰
구현뷰 : 정적소프트웨어 모듈의 구성을 보여주는 뷰 , 컴포넌트와 의존성을 보여주고 부가적 정보 정의
배포뷰 : 컴포넌트가 물리적인 아키텍처에 어떻게 배치되는가를 매핑해서 보여주는 뷰
소프트웨어 아키텍처 패턴
계층화패턴 : 시스템을 계층으로 구분하는 패턴
클라이언트 - 서버 패턴 : 하나의 서버와 다수의 클라이언트로 구성된 패턴
파이프-필터패턴 : 데이터스트림을 생성하고 처리하는 시스템에서 사용가능한 패턴
브로커패턴 : 분리된 컴포넌트들로 이루어진 분산 시스템에서 사용되고 원격실행을 통해 상호작용가능한 패턴
모델-뷰-컨트롤러 패턴 MVC패턴: 대화형 애플리케이션을 모델뷰컨트롤러 3개의 서브시스템으로 구조화한 패턴
소프트웨어 아키텍처 비용평가모델종류
SAAM : 변경 용이성과 기능성을 집중 평가가 용이하여 경험이 없는 조직에서도 활용
ATAM : 아키텍처 품질 속성을 만족시키는지 판단 및 품직 속성들의 이해 상충관계까지 평가하는 모델
CBAM : ATAM 바탕의 시스템 아키텍처 분석 중심으로 경제적 의사결정에 대한 요구를 충족하는 비용평가모델
ADR : 소프트웨어 아키텍처 구성요소 간 응집도를 평가하는 모델
ARID : 전체 아키텍처가 아닌 특정 부분에 대한 품질 요소에 집중하는 평가모델
요구사항 개발프로세스
도분명확
요구사항 도출
- 인터뷰 - 직접 대화를 통해 정보 수집
- 브레인스토밍 - 말을 꺼내기 쉬운 분위기로 회의
- 델파이 기법 - 전문가의 경험적 지식을 통해 미래 예측
- 롤플레잉 - 각자가 맡은 역을 연기함
- 워크숍 - 단기간 집중적인 노력을 통해 다양하고 전문적인 정보를 획득 공유, 프로젝트 참여하는 모든 핵심인물의 참여 필요
- 설문조사 - 설문지, 여론조사 등 간접적으로 정보를 수집하는 방법
요구사항 분석
요구사항 명세
요구사항 확인 및 검증
- 동료검토 - 2~3명이 진행하는 리뷰 형태
- 워크스루 - 오류를 조기에 검출하는데 목적, 검토자료를 회의전에 배포해서 사전검토후 짧은시간 동안 회의 진행 비공식 검토방법
- 인스펙션 - 소프트웨어 요구 설계 원시 코드등의 저작자 외의 다른 전문가가 오류를 찾아내는 공식적 검토방법
화면설계
사용자와 시스템 사이에서 의사소통 할수 있도록 고안된 물리적 가상의 매개체
UI유형
CGNO
- CLI - 텍스트 입력하여 조작
- GUI - 마우스나 전자펜
- NUI - 신체부위이용
- OUI - 모든사물을 입출력장치로
UI설계원칙
직유학유
- 직관성 - 누구나 쉽게 이해하고, 쉽게 사용할수 있어야한다.
- 유효성 - 정확하고 완벽하게 목표달성될수 있도록 제작
- 학습성 - 초보자도 쉽게 배우고 사용할수 있게
- 유연성 - 요구사항을 최대한 수용 실수방지할수 있게
UI 품질 요구사항
기신사효유이
- 기능성 - 적절성 정밀성 상호운용성 보안성 호환성
- 신뢰성 - 성숙성 고장허용성 회복성
- 사용성 - 이해성 학습성 운용성
- 효율성 - 시간,자원 효율성
- 유지보수성 - 분석성 변경성 안전성 시험성
- 이식성 - 적용성 설치성 대체성
UI 개발 주요기법
3C 분석 : 고객 경쟁하고 있는 자사와 경쟁사를 비교하여 분석하여 어떻게 차별화해서 이길것인가 분석
SWOT분석 : 강점 약점 기회 위협 요인을 규정하고 이를 토대로 경영전략을 수립하는 방법
시나리오 플래닝 : 불확실성이 높은 상황 변화를 사전에 예측하고 다양한 시나리오 설계하는 방법 , 불확실성 제거
사용성테스트
워크숍
UI 화면설계
와스프
와이어프레임 - 서비스의 간략한 흐름을 공유하기 위해 화면단위의 레이아웃 설계하는 작업
스토리보드 - 서비스 구축을 위한 모든정보가 담겨있는 설계산출물
프로토타입 - 정적인 화면을 동적효과를 적용하여 실제 구현된거처럼 시뮬레이션 할수 있는 모형
UML(Unified Modeling Language)
객체 지향 소프트웨어 개발 과정에서 산출물을 명세화 시각화 문서화할 때 사용되는 모델링 기술과 방법론을 통합해서
만든 표준화된 모델링언어
UML 특징
가구명문
가시화 - 오류적고 의사소통용이
구축 - 다양한 프로그래밍 언어로 실행시스템의 예측가능
명세화 - 정확한 모델 제시, 완전한 모델작성가능
문서화 - 시스템에대한 의사소통 문서
UML 구성요소
사관다
사물 - 추상적인 개념으로 주제
관계 - 사물의 의미를 확장하고 명확히 하는 요소
다이어그램 - 사물과 관계를 모아 그림으로 표현
UML 다이어그램
구조적다이어그램 = 정적다이어그램
클객컴배복패
클래스 객체 컴포넌트 배치 복합체구조 패키지
행위적다이어그램 = 동적다이어그램
유시커상활타
유스케이스 시퀀스 커뮤니케이션 상태 활동 타이밍
UML 스테레오 타입의 유형
<<include>> 포함관계
<<extend>> 확장관계 : 하나의 유스케이스가 어떤시점에 다른유스케이스 실행할수도 안할수도 있는 관계
<<interface>> 모든메서드가 추상메서드이며 바로 인스턴스를 만들수 없는 클래스로 추상메서드와 상수만으로 구성된 클래스
<<entity>> 정보 또는 오래 지속되는 연관된 행위를 형상화 하는 클래스로
유스케이스 처리흐름이 수행되는 과정에서 기억장치에 저장되어야할 정보를 표현하는 클래스
<<boundary>>시스템과 외부 액터와의 상호작용담당
<<control>>시스템이 제공하는 기능의 로직 및 제어 담당
UML의 유형
클래스 다이어그램
클래스
속성
연산
접근제어자
- - 클래스내부접근만 허용(private)
- + 클래스 외부접근을 허용(public)
- # 동일패키지/파생클래스에서 접근가능(protected)
- ~ 동일패키지 클래스에서 접근가능(default)
UML의 관계
연의일실포집
연관관계 (Association)
의존관계 (Dependency)
일반화관계 (Generalization)
실체화관계 (Realization)
- 추상클래스 - 객체인스턴스를 생성하지 않고 유사클래스들의 공통된 특징을 정의, 하나이상의 추상메서드를 포함하는 클래스 <<abstract>>
- 인터페이스 - 기능을 모아놓은 클래스로 추상메서드와 상수만을 포함하는 추상클래스 <<interface>>
포함관계 = 복합관계 (Composition)
집합관계 (Aggregation)
유스케이스 다이어그램 구성요소
유스케이스 - 시스템이 제공해야하는 서비스
액터 - 사용자가 시스템에 수행하는 역할
시스템 - 전체 시스템의 영역을 표현
시나리오 - 발생되는 이벤트 흐름
이벤트의 흐름 - 사람, 시스템, 하드웨어, 시간의 흐름에 의해서 시작
시퀀스 다이어그램 구성요소
객체 - 객체는 위쪽에 표시 아래로 생명선 가짐 사각형안에 밑줄 친 이름으로 명시
생명선 - 객체로 부터 뻗어나가는 점선 시간의 흐름에 따라 객체의 생명주기 동안 발생하는 이벤트 명시
실행 - 직사각형은 함수가 실행되는 시간을 의미 길수록 수행시간이 김
메시지 - 객체간의 상호작용은 메시지 교환으로 이루어짐
상태다이어그램 구성요소
상태 - 객체가 존재할수 있는 조건 중의 하나 둥근사각형
시작상태 - 객체의 시작상태 속이채워진 원 ⚫️
종료상태 - 객체의 종료상태 원안에 속이 채원진 원 ⦿
전이 - 객체의 상태가 다른 상태로 변경 화살표로 표현 →
이벤트 - 객체의 전이를 유발하는 자극
전이조건 - 특정 조건만족시 전이 발생하도록 하기 위해 사용 []
그외의 다이어그램
패키지 다이어그램
시스템의 서로 다른 패키지들 사이의 의존관계를 표현하기위한 다이어그램
활동 다이어그램
시스템이 어떤기능을 수행하는지를 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서대로 표현하는다이어그램
커뮤니케이션 다이어그램
컴포넌트 다이어그램
데이터입출력구현
데이터모델
데이터 모델은 현실세계의 정보를 인간과 컴퓨터가 이해할수 있도록 추상화하여 표현한 모델이다.
데이터모델절차
요개논물
- 요구조건분석 - 요구사항간 상충을 해결하고 범위를 파악하여 외부환경과의 상호작용을 분석을 통해 데이터에 대한 요구 분석
- 개념적설계 - 사용자의 요구에 대한 트랙잭션을 모델링하는 단계
- 논리적설계 - 트랙잭션의 인터페이스를 설계하는단계 DBMS 논리적 스키마를 설계하는 단계 정규화 수행
- 물리적설계 - 물리적 설계는 논리 데이터 모델을 특정 DBMS의 특성 및 성능을 고려하여 만드는단계 성능측면에서 반정규화 수행
관계데이터모델
릴레이션 - 행, 열로 구성된 테이블
튜플 - 행
속성 - 열
카디널리티 - 튜플의수
차수(Degree) - 애트리뷰트(Column)의수
스키마 - 데이터베이스의 구조 제약조건등의 정보를 담고있는 기본적 구조
인스턴스 - 정의된 스키마에 따라 생성된 테이블에 실제 저장된 데이터의 집합
관계대수
원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 정형 언어
일반집합연산자
합교차카
합집합 : 두 릴레이션의 합집합
교집합 : R과S에 모두 존재
차집합 : R에 존재하고 S에 미 존재
카티션프로덕트 : R과S에 속한 모든 튜플 연결해 만들어진 릴레이션
순수관계연산자
셀프조디
셀렉트 σ (R) 릴레이션 R에서 조건에 만족하는 튜플 반환
프로젝트 π (R) 릴레이션 R에서 주어진 속성들의 값으로만 구성된 튜플 반환
조인 R ⋈ S 공통속성을 이용해 R과S의 튜플들을 연결해 반환
디비전 R ÷ S 릴레이션 S의 모든 튜플과 관련 있는 R의 튜플반환
관계해석
튜플관계해석과 도메인 관계해석을 하는 비절차적 언어
논리적 모델링 속성
개속관
개체 : 관리할 대상 사각형
속성 : 관리할 정보 타원형
관계 : 개체간의 대응관계 마름모
개체-관계(E-R)모델
현실세계에 존재하는 데이터와 그들간의 관계를 사람이 이해할수 있는 형태로 명확하게 표현하기 위해서 가장널리 사용되는 모델
정규화
관계형데이터모델에서 데이터의 중복성을 제거하고 이상현상을 방지, 데이터의 일관성 정확성을 유지하기 위해 부손실분해하는 과정
이상현상
삽삭갱
삽입이상 - 저장시 해당 정보의 불필요한 세부정보를 입력해야하는경우
삭제이상 - 삭제시 원치 않은 다른정보가 같이 삭제되는 경우
갱신이상 - 중복데이터 중 특정부분만 수정되어 중복된 값이 모순을 일으키는 경우
정규화 단계
원부이결다조
1정규화(1NF) - 원자값
2정규화(2NF) - 부분함수 종속제거
3정규화(3NF) - 이행함수 종속제거
보이스코드정규화(BCNF) - 결정자 후보키가 아닌 함수 종속제거
4정규화(4NF) - 다치 종속 제거 (다중값)
5정규화(5NF) - 조인종속 제거
반정규화
정규화된 엔터티속성관계에 대해 성능향상과 개발 운영의 단순화를 위해 중복 통합 분리 등을 수행하는 데이터 모델링 기법
(=비정규화, 역정규화)
반정규화 기법
테병분중컬중관중
테이블병합 - 1:1관계 1:M관계를 통합해 조인횟수를 줄여 성능향상
테이블분할
- 수평분할 : 테이블 분할에 레코드를 기준으로 활용
- 수직분할 : 하나의 테이블이 가지는 컬럼의 개수가 증가하는 경우 활용
중복테이블추가
- 집계테이블추가
- 진행테이블추가
- 특정부분만을 포함하는 테이블추가
컬럼중복화 - 조인성능향상을 위한 중복허용
중복관계추가 - 데이터 처리하기위한 여러경로를 거쳐 조인이 가능하지만 이때 발생할수 있는 성능저하를 예방하기 위해 추가관계 맺음
데이터무결성
데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실세계의 실제값이 일치하는 성질이다.
데이터무결성 종류
개참속사키
개체무결성 - 한 엔터티에서 같은 기본키를 가질수없거나 기본키의 속성이 null을 허용할수 없는 제약조건 (기본키, 유니크인덱스)
참조무결성 - 외래키가 참조하는 다른개체의 기본키에 해당하는 값이 기본키값이나 null이어야 하는 제약조건(외래키)
속성무결성 - 속성값은 기본값 null여부 도메인 (CHECK, NULL, NOT NULL, 기본값(DEFAULT)
사용자정의 무결성 -사용자의 의미적 요구사항을 준수해야하는 제약조건 (Trigger, 사용자 정의 데이터 타입)
키무결성 - 한 릴레이션에 같은 키값을 가진 튜플들을 허용할수 없는 제약조건 (Unique)
키 특성
유일성 - 식별자에 의해 엔터티타입내에 모든 엔터티들이 유일하게 구분
최소성 - 최소한의 속성으로 식별자 구성
키종류
기본키 - 테이블의 각 튜플들을 고유하게 식별하는 컬럼
대체키 - 후보키중에서 기본키로 선택되지 않은키
후보키 - 테이블에서 각 튜플을 구별하는데 기준이 되는 컬럼, 기본키와 대체키를 합친키
슈퍼키 - 모든튜플에 대해 유일성은 만족하지만 최소성은 만족하지 못하는키
외래키 - 테이블간의 참조무결성을 위한 제약조건, 한릴레이션의 컬럼이 다른릴레이션의 기본키로 이용
파티셔닝
테이블또는 인덱스데이터를 파티션 단위로 나누어 저장하는 기법
파티션의 유형
레해리컴라
레인지파티셔닝 : 연속적인 숫자나 날짜를 기준으로 하는 파티셔닝
해시파티셔닝 : 해시 함수값에 의한 파티셔닝
리스트파티셔닝 : 특정 파티션에 저장될 데이터에 대한 명시적 제어가 가능한 파티셔닝 컬럼의 조건이 많은경우 유용
컴포지트파티셔닝 : 2개이상의 파티셔닝을 결합하는 파티셔닝
라운드로빈 : 회전하면서 새로운 행을 파티션에 할당하는 기법
파티션 장점
성가백합
성능향상
가용성향상
백업가능
경합감소 - 디스크 스트라이핑으로 입출력 성능을 향상
데이터베이스
다수의 인원, 시스템또는 프로그램이 사용할 목적으로 통합하여 관리되는 데이터의 집합
중복제거 무결성확보 일관성유지 유용성보장이 중요하다.
DBMS(Database Management System) 유형
키컬도그
키-값DBMS : 키 기반 Get/Put/Delete 제공 메모리 기반 성능우선 시스템 및 빅데이터 처리가능 Unique한 키에 하나의 값을 가지고 있는 형태
컬럼기반데이터저장 : Key(열,값)안에 조합으로 된 여러개의 필드를 갖는 DBMS
문서저장(Document Store) : 값의 데이터 타입이 문서라는 타입을 사용하는 DBMS
그래프 DBMS : 시맨틱 웹과 온톨로지 분야에서 활용되는 그래프로 데이터를 표현하는 DBMS
- 시맨틱웹 - 인터넷과 같은 분산 환경에서 리소스에 대한 정보와 자원 사이의 관계-의미 정보를 기계가 처리할수 있는 온톨로지 형태로 표현하고 이를 자동화된 기계가 처리하도록 하는 지능형 웹이다.
- 온톨로지 - 실세계에 존재하는 모든 개념과 개념들의 속성 그리고 개념간의 관계정보를 컴퓨터가 이해 할수 있도록 서술해 놓은 개념화 명세서 이다.
빅데이터
수십페타바이트 크기의 비정형 데이터
빅데이터의 특성
데이터의 양 (Volume)
데이터의 다양성(Variety)
데이터의 속도(Velocity)
NoSQL
RDBMS와 다른 DBMS를 지칭하기 위한 용어
데이터 저장에 고정된 테이블 스키마가 필요하지 않고 조인연산을 사용할수 없으며 수평적으로 확장이 가능한 DBMS이다.
NoSQL 특성
Basically Available
Soft-State
Eventually Consistency
데이터마이닝
대규모로 저장된 데이터 안에서 체계적 자동적으로 통계적 규칙이나 패턴을 찾아내는 기술이다.
데이터의 숨겨진 정보를 찾아내 서비스와 제품에 도입하는 과정이다.
데이터마이닝 주요기법
분연연데
분류규칙 : 과거데이터로 부터 특성을 찾아내 분류모형을 만들어 새로운 결과값을 예측
연관규칙 : 데이터안에 존재하는 항목들 간의 종속관계를 찾아내는 기법
연속규칙 : 연관규칙에 시간 관련 정보가 포함된 형태의 기법
데이터 군집화 : 대상레코드들을 유사한 특성을 지닌 몇개의 소그룹으로 분할하는 작업으로 작업의 특성이 분류규칙과 유사
통합구현
연계메커니즘
응용소프트웨어와 연계대상 모듈간의 데이터 연계시 요구사항을 고려한 연계방법과 주기를 설계하기 위한 메커니즘
연계방식
구분 | 연계기술 | 내용 |
직접 연계 |
DB링크 | 데이터베이스에서 제공하는 DB링크 객체를 이용 |
DB연결 | 수신시스템의 WAS에서 송신 시스템 DB로 연결하는DB 커넥션 풀을 생성하고 연계프로그램에서 해당DB커넥션풀명을 이용하여 연결 |
|
API/OpenAPI | 송신시스템의 DB를 읽어서 제공하는 애플리케이션 프로그래밍 인터페이스 프로그램 | |
JDBC | 수신 시스템의 프로그램에서 JDBC드라이버를 이용하여 송신 시스템 DB와 연결 | |
하이퍼링크 | 다른페이지로 이동하게 해주는 속성 | |
간접 연계 |
연계솔루션 EAI |
서로 다른 플랫폼 및 애플리케이션들 간의 정보 전달 연계 통합 해주는 솔루션 |
Web Service ESB |
웹서비스가 설명된 WSDL과 SOAP 프로토콜을 이용한 시스템간 연계 | |
소켓 (Socket) | 소켓생성하여 포트를 할당하고 클라이언트의 요청을 연결하여 통신 |
WSDL : 웹 서비스명 제공위치 메시지포맷 프로토콜 정보등 웹서비스에 대한 상세정보가 기술된 XML형식으로 구현된 언어
SOAP : HTTP,HTTPS,SMTP 등을 사용하여 XML 기반의 메시지를 네트워크 상태에서 교환하는 프로토콜
EAI (Enterprise Application Integration)
EAI는 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간의 정보를 전달 연계 통합이 가능하도록 해주는 솔루션
EAI 구축유형
포허메하
포인트 투 포인트 - 가장기초적 방법 1:1 단순통합방법
허브 앤 스포크 - 단일한 접점의 허브시스템을 통하여 데이터를 전송하는 중앙집중식 방식
메시지 버스 - 애플리케이션 사이 미들웨어(버스)를 두어 연계하는 통합방식
하이브리드 - 그룹내는 허브앤스포크 그룹간에는 메시지버스를 사용하는 통합방식
ESB(Enterprise Service Bus)
미들웨어를 중심으로 각각 프로토콜이 호환할수 있도록 애플리케이션의 통합을 느슨한 결합 방식으로 지원하는 방식
확장성, 유연한 아키텍처 구성이 가능하다.
웹서비스 (Web Service)
네트워크에 분산된 정보를 서비스 형태로 개방하여 표준화된 방식으로 공유하는 기술 , 서비스 지향 아키텍처 개념을 실현하는 기술
웹서비스 관련용어
HTTP : 인터넷에서 요청과 응답에 의해 처리하는 프로토콜로 GET,POST,PUT등의 방식으로 사용한다.
Hypertext 하이퍼텍스트 : 문장이나 단어들이 링크를 통해 서로 연결된 네트워크처럼 구성된 문서
HTML : 운영체제에 상관없이 브라우저에서 실행되는 웹문서를 표현하는 표준화된 마크업 언어
웹서비스유형
SOAP(Simple Object Access Protocal)
HTTP,HTTPS, SMTP등을 사용하여 XML기반의 메시지를 네트워크 상태에서 교환하는 프로토콜
WSDL(Web Service Description Language)
웹서비스명 제공위치 메시지 포맷 프로토콜 정보 등 상세정보가 기술된 XML형식으로 구현된 언어
UDDI(Universal Description Discovery and Integration)
웹서비스에 대한 정보인WSDL을 등록하고 검색하기 위한 저장소로 공개적으로 접근 검색이 가능한 레지스트리이자 표준
인터페이스구현
인터페이스기능구현기술
JSON
속성-값 쌍 또는 "키-값 쌍" 으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을수 있는 텍스트를 사용하는 개방형 표준포맷
AJAX에서 많이 사용되고 XML을 대체하는 주요데이터 포맷
XML
HTML의 단점을 보완한 인터넷언어, SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업언어이다.
AJAX
자바스크립트를 사용하여 웹 서버와 클라이언트간 비동기적으로 XML데이터를 교환하고 조작하기 위한 웹기술이다.
XMLHttpRequest객체를 이용해 전체페이지를 새로로드하지 않고 일부 페이지의 데이터만 로드하는 기법
REST
웹과 같은 분산 하이퍼미디어 환경에서 자원의 존재/상태 정보를 표준화된 HTTP메서드로 주고받는 웹 아키텍처
리소스(자원) 메서드(처리) 메시지 3가지 요소로 구성
인터페이스 보안기능적용
스니핑 : 공격대상에게 직접 공격하지 않고 데이터만 몰래 들여다보는 수동적 공격기법
시큐어코딩가이드적용대상
입보시에코캡아
- 입력데이터검증및표현
- 보안기능
- 시간및상태
- 에러처리
- 코드오류
- 캡슐화
- API오용
데이터베이스 암호화 알고리즘
대비해
대칭키암호화 AREA 128/192/256, SEED
비대칭키암호와 RSA, ECC,ECDSA
해시암호화 SHA-256/384/512, HAS-160
데이터베이스 암호화 기법
애플티하
API방식 - 애플리케이션 레벨에서 암호모듈을 적용하는 애플리케이션 수정방식
Plug-in 방식 - 암,복호화 모듈이 DB서버에 설치된 방식
TDE방식 - DBMS커널이 자체적으로 암복호화 기능을 수행, 내장되어있는 암호화기능
Hybrid방식 - API방식 Plug-in 방식 결합하는 방식
인터페이스 데이터의 암호화전송 보안기술
IPSec - IP계층(3계층)에서 무결성과 인증을 보장하는 인증헤더와 기밀성을 보장하는 암호화를 이용하여 양종단간 구간에 보안서비스를 제공하는 터널링 프로토콜
SSL/TLS - 전송계층(4계층)과 응용계층(7계층) 사이에서 클라이언트와 서버간의 웹데이터 암호화 상호인증및 전송시 데이터 무결성을 보장하는 보안프로토콜
S-HTTP : 웹상에서 네트워크 트래픽을 암호화하는 주요방법 중 하나로서 클라이언트와 서버간 전송되는 모든메시지를 각각암호화 하여 전송
인터페이스 구현 검증도구
엑스피엔셀웨
xUnit - 다양한 언어를 지원하는 단위테스트 프레임 워크
STAF - 다양한 환경을 지원하는 테스트프레임워크, 데몬사용
FitNesse - 웹기반 설계/실행/결과 확인 등을 지원하는 테스트프레임워크
NTAF - FitNesse장점인 협업기능과 STAF장점인 재사용 및 확장성을 통합한 테스트자동화 프레임워크
Selenium - 댜양한 브라우저 지원및 개발언어를 지원하는 웹애플리케이션 테스트 프레임워크
watir - 루비 기반 웹애플리케이션 테스트프레임워크
인터페이스 오류처리방법
화로테
사용자 화면에서 오류를 인지하도록 구현
인터페이스 오류로그생성
인터페이스 관련 테이블에 오류사항 기록
서버프로그램 구현
개발도구의 분류
빌구테형
빌드도구 - 작성한 코드의 빌드 및 배포를 수행하는도구
구현도구 - 개발자의 코드 작성과 디버깅, 수정등과 같은 작업을 지원하는 도구
테스트도구 - 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구
형상관리도구 - 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전관리를 위한도구
WAS(Web Application Server)
사용자 요청 스레드를 처리하고 데이터베이스를 접속하여 SQL쿼리문에 대한 결과값을 반환하는 역할을 수행하는 서버
미들웨어
컴퓨터와 컴퓨터간의 연결을 쉽고 안전하게 할수 있도록 해주고 관리를 도와주는 소프트웨어
자바기반환경에서 JVM을 설치하여 컨테이너(JSP와 서블릿을 실행시키는 소프트웨어)로의 기능을 주로 이용
형상관리
소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경사항을 관리하기 위한 활동
형상관리의 절차
식통감기
식별 - 관리대상을 적의 및 식별하는 활동 ID, 관리번호 부여
통제 - 버전관리를 위한 형상통제위원회 운영 변경요구관리, 제어 형상관리 등 통제 지원
감사 - 소프트웨어 베이스라인의 무결성 평가
기록 - 소프트웨어 형상 및 변경관리에 대한 각종 수행결과 기록
소프트웨어 형상관리 도구
공클분
공유폴더방식 (RSC,SCCS)
매일 개발이 완료된 파일은 약속된 위치의 공유폴더에 복사하는 방식
클라이언트/서버방식 (CVS,SVN)
중앙에 버전관리 시스템을 항시 동작시키는 방식
분산저장소방식 (Git)
로컬 저장소와 원격 저장소를 분리되어 분산 저장하는 방식
소프트 웨어 형상관리 도구별 특징
CVS(Concurrent Versions System)
서버와 클라이언트로 구성되어 있고, 다수의 인원이 동시에 범용적인 운영체제로 접근 가능한 형상관리도구
SVN(Subversion)
하나의 서버에서 소스를 쉽고 유용하게 관리할수 있게 도와주는 도구
RCS(Revision Control System)
CVS와 달리 소스 파일의 수정을 한사람만으로 제한하여 다수의 사람이 파일의 수정을 동시에 할수 없도록 파일 잠금방식으로 형상을 관리하는 도구
Bitkeeper - SVN과 비슷한 중앙통제방식으로 대규모 프로젝트에서 빠른속도를 내도록 개발된 형상관리도구
Git - Git의 속도에 중점을 둔 분산형 버전 관리 시스템 대형프로젝트에서 효과적
Clear Case - 복수서버, 복수 클라이언트 구조 서버가 부족할때 필요한 서버를 하나씩 추가하여 확장 할수 있음.
공통모듈구현
재사용의 종류
재공학 - 기존 소프트웨어를 버리지않고 기능 개선시키거나 새롭게 재활용하는 기법
재개발 - 기존시스템을 참조하여 완전히 새로운 시스템 개발, 새로운기능 추가 기존시스템 기능변경
모듈 - 그자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체
각각의 모듈은 상대적으로 독립성을 가지고 있다
독립성을 높이려면 결합도는 약하게(낮게) 응집도는 강하게(높게) 모듈의 크기는 작게 만들어야한다.
공통모듈구현의 개념
소프트웨어 개발에 있어 기능을 분할하고 추상화하여 성능 향상시키고 모듈간 결합도는 줄이고 응집도는 높인 공통모듈구현을 권장
응집도 - 모듈의 독립성을 나타내는 정도 , 모듈 내부 구성요소간의 연관정도 , 응집도가 높을수록 좋은품질
응집도의 유형
우논시절통순기
우연적 응집도 (Coincidental Cohesion) - 구성요소간 연관관계 없을경우
논리적 응집도 (Logical Cohesion) - 유사한 성격을 갖거나 특정 형태로 분류 처리 요소들이 한모듈에서 처리되는 경우
시간적 응집도 (Temporal Cohesion) - 특정시간에 처리되어야하는 활동들을 한모듈에서 처리할 경우
절차적 응집도 (Procedural Cohesion) - 모듈이 다수의 관련기능을 가질때 구성요소들이 그 기능을 순차적으로 수행할 경우
통신적 응집도 (Communication Cohesion)- 동일한 입력과 출력을 사용하여 다른기능을 수행하는 활동들이 모여 있을경우
순차적 응집도 (Sequential Cohesion) - 모듈내에 한 활동으로부터 나온 출력값을 다른 활동이 사용할경우
기능적 응집도 (Functional Cohesion) - 모듈 내부의 모든기능이 단일한 목적을위해 수행되는 경우
결합도 - 모듈내부가 아닌 외부의 모듈과의 연관도 또는 모듈간의 상호의존성, 결합도가 낮을수록 좋은품질
결합도의 유형
내공외제스자
내용결합도 (Content Coupling) - 다른 모듈내부에 있는 변수나 기능을 다른모듈에서 사용하는 경우
공통결합도 (Common Coupling)- 파라미터가 아닌 모듈밖에 선언되어 있는 전역변수를 참조하고 전역변수를 갱신하는 식으로 상호작용하는 경우
외부결합도 (External Coupling) - 두개의 모듈이 외부에서 도입된 인터페이스를 공유할 경우
제어결합도 (Control Coupling) - 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어신호를 이용하여 통신하는 경우
스탬프결합도 (Stamp Coupling) - 모듈간 인터페이스 배열이나 객체 구조등이 전달되는 경우
자료결합도 (Data Coupling) - 모듈간의 인터페이스 전달되는 파라미터를 통해서만 모듈간의 상호작용이 일어나는 경우 한모듈이 변경
한 모듈의 내용을 변경하더라도 다른 모듈에는 영향을 미치지 않는 상태로 가장바람직한 결합도
화이트박스기법
프로그램의 로직을 이해하고 내부 구조와 동작을 검사하는 소프트웨어 테스트 방식이다.
배치프로그램
사용자와의 상호작용없이 일련의 작업들을 작업단위로 묶어 정기적으로 반복수행하거나 정해진 규칙에 따라 일괄처리하는 방법
배치프로그램 유형
이온정
이벤트 배치 - 사전에 정의해 둔 조건 충족시 자동으로 실행
온디맨드 배치 - 사용자의 명시적 요구가 있을때마다 실행
정기 배치 - 정해진 시점에 정기적으로 실행
배치스케줄러
스프링배치
DI, AOP, 서비스 추상화등 스프링프레임워크의 3대요소를 모두 사용할수 있는 대용량처리를 제공하는 스케줄러 배치애플리케이션
쿼츠스케줄러
스프링프레임워크에 플러그인되어 수행하는 작업과 실행스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈소스기반 스케줄러
Cron 표현식
초분시일월요연
소프트웨어 개발보안구축
기무가
기밀성 - 인가되지않은 개인 혹은 시스템 접근에 따른 정보공개 및 노출을 차단하는 특성
무결성 - 정당한 방법을 따르지 않고선 데이터가 변경될 수 없으며, 데이터의 정확성 및 완전성과 고의/악의로 변경되거나 훼손또는 파괴 되지않음을 보장하는 특성
가용성 - 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속 사용할수 있도록 보장하는 특성
자위취위
자산 - 조직의 데이터 또는 조직의 소유자가 가치를 부여한 대상
위협 - 조직이나 기업의 자신에 악영향을 끼칠수 있는 사건이나 행위
취약점 - 위협이 발생하기 위한 사전조건으로 시스템의 정보 보증을 낮추는데 사용되는 약점
위험 - 위협이 취약점을 이용하여 조직의 자산 손실 피해를 가져올 가능성
시스템을 악의적으로 공격해서 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격
DoS의 종류
- SYN플러딩 - TCP프로토콜의 구조적인 문제를 이용한 공격, 공격자는 ACK를 발송하지 않고 계속 새로운 연결요청을 하게 되어 서버는 자원할당을 해지하지 않고 자원만 소비하여 고갈됨
- UDP플러딩 - 대량의 UDP패킷을 만들어 임의의 포트번호로 전송하여 응답메시지(ICMP)를 생성하게 하여 지속해서 자원을 고갈 시키는 공격
- 스머프/스머핑 - 출발지 주소를 공격대상의 IP로 설정하여 네트워크 전체에 ICMP Echo 패킷을 직접 브로드캐스팅 하여 마비시키는 공격
- 죽음의 핑 - ICMP패킷을 정상적인 크기보다 아주 크게 만들어 전송하면 다수의 IP단편화가 발생하고 수신측에서는 단편화된 패킷을 처리하는 과정에서 많은 부하가 발생하거나 재조합 버퍼의 오버플로우가 발생하여 정상적인 서비스를 하지 못하도록 하는 공격기법
- 랜드어택 - 출발지 IP와 목적지 IP를 같은 패킷주소로 만들어 보냄으로 수신자가 자기자신에게 응답을 보내게 하여 시스템 가용성을 침해하는 공격
- 티어드롭 - IP패킷의 재조합과정에서 잘못된 정보로 인해 수신시스템이 문제가 발생하도록 만드는 공격
- 봉크 - 패킷을 분할하여 보낼때 처음 패킷을 1번으로 보낸후 다음패킷을 보낼때도 모두1번으로 조작하여 전송하는 공격
- 보잉크 - 처음패킷을 1번으로 보낸후 다음 패킷을 100번 등으로 비정상적인 상태로 보내서 부하를 일으키는 공격
여러대의 공격자를 분산배치하여 동시에 동작하게 함으로써 특정 사이트를 공격하는 기법이다.
DDoS 공격 구성요소
HAMAD(하마드)
핸들러 - 마스터 시스템의 역할
에이전트 - 공격대상에 직접 공격
마스터 - 공격자에게서 직접명령을 받는 시스템, 여러대의 에이전트관리역할
공격자 - 공격을주도하는 해커의 컴퓨터
데몬프로그램 - 에이전트시스템의 역할을 수행하는 프로그램
DDoS 공격도구
Trinoo
Tribe Flood Network
Stacheldraht
세션하이재킹
케빈 미트닉이 사용했던 공격방법, TCP세션 관리취약점을 이용한 공격기법
HTTP GET 플러딩 : Cacje Control Attack 공격, 과도한 Get 메시지를 이용하여 웹서버의 과부하를 유발시키는 공격
Slowloris : HTTP GET 메서드를 사용하여 헤더의 최종 끝을 알리는 개행 문자열인 \n을 전송하지 않고 \r만 전송하여 대상 웹 서버와 연결 상태를 장시간 지속시키고 연결자원을 모두 소진 시키는 서비스 거부 공격
RUDY Attack : 요청 헤더의 Content-Length를 비정상적으로 크게 설정하여 메시지 바디 부분을 매우 소량으로 보내 계속 연결상태를 유지시키는 공격
Slow Read Attack : TCP윈도 크기를 낮게 설정하여 서버로 전달하고, 해당 윈도크기를 기준으로 통신하면서 데이터 전송이 완료 될때까지 연결을 유지하게 만들어 서버의 연결자원을 고갈시키는 공격
Hulk DoS : 공격자가 공격대상 웹 사이트 웹 페이지 주소를 지속적으로 변경하면서 다량으로 GET요청을 발생시키는 서비스거부공격
스니핑 - 공격대상에게 직접공격하지 않고 데이터만 몰래 들여다보는 수동적 공격기법
네트워크스캐너,스니퍼 - 네트워크 하드웨어 및 소프트웨어 구성의 취약점파악을 위해 공격자가 취약점을 탐색하는 공격도구
패스워드 크래킹
- 사전크래킹 : 가능성있는 단어를 파일로 만들고 대입
- 무차별크래킹 : 무작위 대입
- 패스워드 하이브리드공격 : 사전,무차별 대입공격 결합
- 레인보우 테이블 공격 : 패스워드별 해시값을 미리 생성해 크래킹 하고자 하는 해시값을 테이블에서 검색해서 역으로 찾는 공격
IP스푸핑 - 침임자가 인증된 컴퓨터 시스템인것처럼 속여서 타깃 시스템의 정보를 빼내기 위해서 본인의 패킷 헤더를 인증된 호스트의 IP주소로 위조하여 타깃에 전송하는 공격
ARP스푸핑 - 공격자가 특정 호스트의 MAC주소를 자신의 MAC주소로 위조한 ARPReply를 만들어 지속적으로 전송하여 스니핑하는 공격
ICMP Redirect 공격 - 3계층에서 스니핑 시스템을 네트워크에 존재하는 또다른 라우터라고 알림으로 패킷의 흐름을 바꾸는 공격기법
트로이목마 - 악성루틴이 숨어있는 프로그램을 겉보기에는 정상적인 프로그램으로 보이지만 실행하면 악성코드를 실행하는 프로그램
버퍼오버플로우 공격 - 메모리에 할당된 버퍼크기를 초과하는 양의 데이터를 입력하여 이로인해 프로세스의 흐름을 변경시켜서 악성코드를 실행시키는 공격
백도어 - 어떤제품이나 컴퓨터시스템 혹은 알고리즘에서 정상적인 인증절차를 우회하는 기법
포맷스트링 - 입력된 값을 검증하지 않고 입출력 함수의 포맷스트링을 그대로 사용하는 경우 발생하는 취약점 공격기법
레이스컨디션 - 둘이상의 프로세스나 스레드가 공유자원을 동시에 접근할때 접근순서에 따라 비정상적 결과 발생
키로거 - 키보드움직임을 탐지해서 저장하고 개인정보를 해킹공격
루트킷 - 시스템 침입후 숨김채 차후에 침입을 위한 백도어,트로이목마등 불법적해킹 프로그램의 모음
스피어피싱 - 특정대상을 선정후 일반적인 이메일로 위장한 메일 지속적 발송 , 링크나 첨부파일 클릭하도록 유도하여 개인정보 탈취
스미싱 - SMS를 이용하여 신뢰할수있는사람이나 기업에서 보낸것처럼 가장해 개인정보요구나 소액결제 유도하는 공격
큐싱 - 큐알코드를 통해 악성앱을 내려받도록 유도 금융정보 등을 빼내는 피싱(제로페이확산에 따라 피해증가)
봇넷 - 악성프로그램에 감염되어 악의적인 의도록 사용될수있는 다수의 컴퓨터를 네트워크로 연결된 형태
ART공격 - 다양한 수단을 통해 지속적으로 지능적인 맞춤형 공격, IT기술을 이용하여 정보수집,취약점분석해 공격
공급망공격 - 개발사의 네트워크에 침투하여 소스코드의 수정등을 통해 악의적 코드 삽입,배포서버에 접근하여 악의적 파일변경등으로 공격
제로데이공격 - 보안취약점이 발견되어 널리 공표되기전 취약점을 악용하여 이루어지는 보안공격기법
웜 - 스스로 복제하여 네트워크등의 연결을 통하여 전파하는 악성 소프트웨어 프로그램
악성봇 - 스스로 실행되지 못하고 해커의 명령에 의해 원격에서 제어 또는 실행이 가능한 프로그램 혹은 코드
사이버킬체인 - 록히드마틴의 공격형방위시스템으로 지속적 공격에 대해 7단계 공격분석 및 대응을 체계화한 ART공격방어분석 모델
랜섬웨어 - 악성코드의 한 종류로 감염된 시스템 파일들을 암호화하여 복호화 할수 없도록 하고 피해자로 하여금 인질처럼 잡고 몸값요구
이블트윈 - 무선 와이파이 피싱기법
사회공학 - 사람들의 심리와 행동양식을 교묘하게 이용하여 정보 얻는 공격
트러스트존 - 프로세서안에 독립적인 보안구역을 두어 정보를 보호하는 ARM사에서 개발한 보안기술
타이포스쿼팅(= URL하이재킹) - 사이트를 접속할때 주소를 잘못입력하는 실수를 이용하여 유사한 유명도메인을 미리 등록하는일
지소생특
지식기반인증 : ID/패스워드
소지기반인증 : 공인인증서,OTP
생체기반인증 : 홍채,정맥,얼굴,지문
특징(=행위)기반인증 : 서명, 발걸음, 몸짓
임의적접근통제(DAC)
주체나 그룹의 신분에 근거하여 접근제한
강제적접근통제(MAC)
객체에 포함된 정보의 허용등급과 접근정보에 대하여 주체가 갖는 접근
허가권한에 근거하여 객체에 대한 접근을 제한하는 방법
역할기반접근(RBAC)
중앙관리자가 사용자와 시스템의 상호관계를 통제하며 조직내 맡은 역할에 기초하여 접근제한
3A(Authentication, Authorization, Accounting) 인증, 권한부여, 계정관리
SSO(Single Sign On) - 커버로스에서 사용되는 기술로 한번의 인증과정으로 여러 컴퓨터상의 자원을 이용할수있는 인증기술
커버로스 : 1980년대 중반 MIT의 아테나 프로젝트의 일환으로 개발되었으며 클라이언트 서버모델에서 동작하고 대칭키 암호기법에 바탕을 둔 티켓 기반의 프로토콜
벨기비무
벨-라파듈라 모델 : 기밀성을 강조하며 강제적정책에 의해 접근통제
비바모델 : 벨-라파듈라모델의 단점 보완 무결성을 보장하는 최초의 모델
대칭키암호와알고리즘
DES - 1975년 IBM에서 개발하고 미국의 연방 표준국에서 발표한 대칭키 기반의 블록 암호화 알고리즘 블록크기 64bit
SEED - 1999년 국내 한국인터넷진흥원이 개발한 블록암호화 알고리즘 128bit비밀키로부터 생성된 16개의 64bit라운드키를 사용하여 총 16회 라운드를 거쳐 128bit의 평문블록을 128bit 암호문 블록으로 암호화 하여 출력하는 방식
AES - 2001년 미국표준기술연구소에서 발표한 암호화 알고리즘 DES의 개인키에 대한 전사적 공격이 가능, 3DES의 성능문제 극복
ARIA - 2004년 국가정보원과 산학연구협회가 개발한 블록 암호화 알고리즘, 대부분의 연산은 XOR과 같은 단순한 단위연산
IDEA - DES를 대체하기 위해 스위스 연방기술 기관에서 개발한 블록 암호화 알고리즘
LSFR - 시프트레지스터의 일종, 레지스터의 입력되는값이 이전상태값들의 선형함수로 계산되는 구조
Skipjack - 미국가안보국에서 개발한 Clipper칩에 내장된 블록 알고리즘
비대칭키암호와알고리즘
디피-헬만 - 최초의 공개키 알고리즘 이산대수의 계산이 어려운문제를 기본원리로 하고 있음
RSA - MIT수학교수가 고안한 큰인수의곱을 소인수분해하는 수학적 알고리즘 이용하는 공개키암호화 알고리즘
ECC - 타원곡선암호는 유한체 위에서 정의된 타원곡선 군에서의 이산대수의 문제에 기초한 공개키알고리즘
ELGamal - 이산대수의 계산이 어려운문제를 기본원리로 RSA와 유사하게 전자서명과 데이터 암.복호화에 함께 사용가능
해시암호와알고리즘
MD5 - 프로그램이나 파일의 무결성 검사에 사용, 각각512비트 짜리 입력메시지 블록에 대해 차례로 동작하여 128비트 해시값 생
SHA-1 - 1994년 NSA에서 미 정부 표준으로 지정되었고 DSA에서 사용
SHA-256/384/512 - AES에 대응하도록 출력길이를 늘인 해시알고리즘
HAS-160 - 국내표준서명알고리즘
HAVAL - 메시지 를 1024bits블록으로 나누고 128,160,192,224,256 비트인 메시지 다이제스트를 출력하는 해시 알고리즘
IPSec
IP계층(3계층)에서 무결성과 인증을 보장하는 인증헤더와 기밀성을 보장하는 암호화(ESP)를 이용한 IP보안 프로토콜
시큐어코딩가이드
입보시에코캡아
입력데이터검증및표현
보안기능
시간 및 상태 - 거의동시에 수행하는 병렬 시스템 또는 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태 부적절한 관리
에러처리 - 에러미처리, 불충분한 처리등으로 에러 메시지에 중요정보가 포함
코드오류 - 개발자가 범할수 있는 코딩오류로 인해 유발
캡슐화 - 기능성이 불충분한 캡슐화로 인해 인가되지않은 사용자에게 데이터 누출
API오용 - 의도된 사용에 반하는 방법으로 API를 사용하거나 보안에 취약한 API사용
입력데이터검증 및 표현 취약점
XSS - 웹페이지를 열람함으로써 웹페이지에 포함된 부적절한 스크립트가 실행되는공격
CSRF - 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격
SQL삽입(Injection) - 악의적인 SQL구문을 삽입, 실행 시켜서 DB접근해 정보 탈취 조작 등의 공격
네트워크 보안솔루션
방화벽(Firewall) - 기업내외부 간 트래픽을 모니터링하여 시스템의 접근을 허용하거나 차단
웹방화벽(WAF;WebApplication Firewall) - 웹 애플리케이션보안에 특화된 보안장비
네트워크접근제어(NAC;Network Access Control) - 단말기가 내부 네트워크에 접속을 시도할때 이를 제어하고 통제하는 기능을제공하는 솔루션
침입탐지시스템(IDS;Intrusion Detection System) - 네트워크에서 발생하는 이벤트를 모니터링하고 비인가 사용자에 의한 자원접근 보안정책위반행위를 실시간으로 탐지
무선침입방지시스템(WIPS;Wireless Intusion Prevention System) - 인가되징낳은 무선 단말기의 접속을 자동으로 탐지하고 차단하고 보안에 취약한 무선공유길를 탐지하는 시스템
통합보안시스템(UTM;Unified Threat Management) - 방화벽, 침입 탐지 시스템(IDS) 침입 방지시스템 등 다양한 보안장비의 기능을 하나의 장비로 통합하여 제공하는 시스템
가상사설망(VPN; Virtual Private Network) - 인터넷과 같은 공중망에 인증 암호화 기술을 활용하여 마치 전용망을 사용하는 효과를 가지는 보안솔루션
SIEM(Security Information and Event Management) - 다양한 보안 장비와 서버 네트워브장비등으로 보안 로그와 이벤트정보를 수집한후 정보간의 연관성을 분석하여 위협상황을 인지하고 대응하는 보안관제 솔루션
ESM(Enterprise Security Management) - 방화벽 침입탐지시스템 등 보안시스템으로부터 발생한 각종이벤트 및 로그를 통합해서 분석 대응하는 전사적 통합 보안관리 시스템
소프트웨어 개발보안 테스트유형
정적분석 - SW를 실행하지 않고 보안약점 분석
동적분석 - SW를 실행환경에서 보안약점 분석
비즈니스연속성계획(BCP; Business Continuity Plan)
각종재해 장애 재난으로부터 위기관리를 기반으로 재해복구 업무복구 등을 통해 비즈니스 연속성을 보장한는 체계
비즈니스 연속성 계획 관련 주요용어
DRS(Disaster Recovery System) - 재해복구계획의 원활한 수행을 지원하기 위하여 평상시에 확보하여 두는 인적 물적 자원 및 이들에 대한 지속적인 관리체계가 통합된 재해 복구센터
- Mirror Site - 주센터와 데이터복수센터 모두 운영상태로 실시간 동시 서비스가 가능한 재해복구센터
- Hot Site - 주센터와 동일한 수준의 자원을 대기상태로 원격자에 보유하면서 동기 비동기 방식의 미러링을 통하여 데이터의 최신상태를 유지하고 있는 재해복구센터
- Warm Site - 중요성이 높은 자원만 부분적으로 재해복구센터에 보유하고 있는 센터
- Cold Site - 데이터만 원격지에 보관하고 재해시 데이터를 근간으로 필요자원을 조달하여 복구 할수 있는 재해복구센터
주요 비즈니스 연속성 계획 관련 주요 용어
BIA(Business Impact Analysis) - 장애나 재해로 인해 운영상의 주요손실을 볼것을 가정하여 시간 흐름에 따른 영향도 및 손실 평가를 조사하는 BCP를 구축하기 위한 비즈니스 영향분석
RTO(Recovery Time Objective) - 업무중단 시점부터 업무가 복구되어 다시 가동될때까지의 시간 재해복구 목표시간의 선정
RPO(Recovery Point Objective) - 업무중단 시점부터 데이터가 복구되어 다시 정상가동될때 데이터의 손실 허용 시점
DRP(Disaster Recovery Plan) - 재난으로 장기간의 걸쳐 시설의 운영이 불가능한 경우를 대비한 재난 복구 계획
DRS(Disaster Recovery System) - 재해복구계획의 원활한 수행을 지원하기 위하여 평상시에 확보하여 두는 인적 물적자원 및 이들에 대한 지속적인 관리체계가 통합된 재해복구시스템
보안공격 관련 중요 용어
부채널공격 - 전력소비 전자기파 등의 물리적 특성을 측정하여 암호키등 내부 정보 획득하는 공격기법
드라이브 바이 다운로드 - 악의적인 해커가 불특정 웹 서버와 웹페이지에 악성스크립트를 설치하고 불특정 사용자가 접속시 동의없이 의도된 서버로 연결하여 감염시키는 공격
워터링홀 - 표적공격을 목적으로 잘방문하는 웹사이트에 악성코드를 배포하는 URL 유인하여 감염시키는 공격기법
비즈니스스캠 - 기업이메일 계정 도용 무역거래 대금 가로채는 범죄
하트블리드 - 하트비트라는 확장모듈에서 클라이언트 요청메시지를 처리할때 데이터 길이에 대한 검증을 수행하지 않는 취약점을 이용해 메모리를 탈취할수 있도록 하는 취약점
크라임웨어 - 중요 금융정보 인증정보를 탈취 유층 유도하여 범죄목적으로 하는 악성코드
토르네트워크 - 네트워크경로를 알수 없도록 암호화 기법을 사용해 데이터를 전송하며 익명으로 인터넷을 사용할수 있는 가상 네트워크
MITM공격(Man in the Middle) - 네트워크 통신을 조작하여 통신 내용을 도청 및 조작하는 공격기법
DNS 스푸핑 공격 - 공격대상에서 전달되는 DNS응답(IP주소)을 조작하거나 DNS 서버의 캐시 정보를 조작하여 의도치 않으 주소로 접속하게 하는 공격기법
포트스캐닝 - 공격자가 침임전 대상 호스트에 어떤 포트가 활성화 되어있는지 확인하는 기법
디렉토리 리스팅 - 인덱싱기능이 활성화 되어 있을경우 공격자가 강제 브라우징을 통해서 서버내의 모든 디렉토리 파일목록을 볼수있는 취약점
리버스 쉘 공격 - 타깃 서버가 클라이언트로 접속해서 클라이언트가 타깃서버의 쉘을 획득해서 공격
익스플로잇 - 소프트웨어나 하드웨어의 버그 또는 취약점을 이용하여 공격자가 의도한 동작이나 명령을 실행하도록 하는 코드
스턱스넷 공격 - 독일지멘스사의 SCADA시스템 공격목표로 제작된 악성코드 원자력 등 주요 산업기반 제어 시스템 침투해 오작동을 일으키는 악성코드 공격
크리덴셜스터핑 - 사용자계정탈취해 다른곳에서 유출된 아이디비밀번호를 다른 웹사이트나 앱에 무작위로 대입 해 정보유출
보안공격 대응관련 중요용어
허니팟 - 비정상적인 접근을 탐지하기 위해 의도적으로 설치해둔 시스템으로 일부러 허술하게 만들어서 해커에게 노출하는 유인시스템
OWASP Top 10 - 보안상 큰영향을 줄수있는 10가지 취약점에 대한 대응방안제공하는 웹보안기술가이드
핑거프린팅 - 멀티미디어컨텐츠에 저작권 정보와 구매자 정보를 삽입해 불법배포자에 대한 위취추적이 가능한 기술
워터마킹 - 디지털 콘텐츠에 저작권자정보를 삽입, 불법복제시 워터마크를 추출해 원소유자 증명하는 기술
이상금융거래탐지시스템(FDS;Fraud Detection System) - 전자금융거래에 사용되는 단말기 정보, 접속정보등을 분석하여 의심거래를 탐지하고 이상거래를 차단하는 시스템
CC(Common Criteria) - 정보기술의 보안기능과 보증에 대한 평가기준(등급),정보보호 시스템의 보안기능 요구사항과 보증 요구사항 평가를 위해 공통으로 제공되는 국제 평가기준
사이버위협정보분석공유시스템(C-TAS) - 인터넷진흥원주관으로 관계기관 자동화된 정보공유를 할수있는 예방대응시스템
정착형인증모듈(PAM) - 리눅스 시스템내에서 사용되는 각종 애플리케이션 인증을 위해 제공되는 인증용 라이브러리
CVE - MITRE사에서 공개적으로 알려진 소프트웨어의 보안취약점을 표준화한 식별자 목록
CWE(Common Weakness Enumeration) - MITRE사가 중심이 되어 소프트웨어에서 공통적으로 발생하는 약점을 목록으로 정의한 데이터 베이스
ISMS(Information Security Management System) - 조직의 주요 정보자산을 보호하기 위하여 정보보호 관리 절차와 과정을 체계적으로 수립하여 지속적으로 관리하기 위한체계
PIMS(Personal Information Management System) - 기업이 개인정보보호 활동을 체계적 지속적으로 수행하기 위해 필요한 보호조치 체계를 구축했는지 여부를 점검평가 인증제도
PIA(Privacy Impact Assessment) - 개인정보를 활용하는 새로운 정보 시스템의 도입이나 개인정보 취급이 수반되는 기존 정보시스템의 중대한 변경 시,동 시스템의 구축 등의 미치는 영향을 사전에 조사 예측 검토하는 체계적인 절차
TKIP(Temporal Key Integrity Protocol) - 임시키 무결성 프로토콜
킬스위치 - 스마트폰도난방지기술
애플리케이션테스트관리
소프트웨어 테스트원리
결완초집살정오
결함존재증명
완벽테스팅은 불가능
초기집중
결함집중
살충제패러독스 - 동일한테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못함
정황의존성 - SW의 성격에 맞게 테스트 실시
오류-부재의 궤변 - 요구사항을 충족시켜주지 못한다면, 결함이 없다고 해도 품질이 높다고 볼수 없음
소프트웨어 테스트 산출물
테스트 계획서
테스트 베이시스 - 설계를 위한 기준이 되는 문서(요구사항명세서등)
테스트 케이스 - 요구사항을 준수하는지 확인 위한 설계된 입력값
테스트 슈트 - 실행환경에 따라 구분해 놓은 테스트 케이스 집합
테스트 시나리오 - 테스트가 필요한 상황을 작성한 문서
테스트 스크립트 - 실행순서 절차를 작성한 문서
테스트 결과서 - 결과정리한 문서
각 응용프로그램의 내부 구조와 동작을 검사하는 소프트웨어 테스트
화이트박스 테스트 유형
구결조조변다기제데루
구문커버리지(Statement) - 모든 명령문을 적어도 한번 수행하는 커버리지
결정(선택,분기)커버리지(Decision,Branch) - 결정 포인트 내의 전체조건식이 적어도 한번은 참과 거짓의 결과를 수행
조건커버리지 - 결정포인트 내의 각 개별 조건식이 적어도 한번은 참과 거짓의 결과 수행
조건/결정커버리지 - 전체 조건식 뿐만 아니라 개별 조건식도 참 한번 거짓 한번 결과가 되도록 수행
변경조건/결정커버리지 - 다른개별 조건식에 영향을 받지 않고 전체 조건식에 독립적으로 영향을 주도록 향상시킨 커버리지
다중조건커버리지 - 모든 가능한 조합을 100%보장
기본경로커버리지 - 수행가능한 모든 경로테스트
제어흐름테스트 - 제어구조를 그래프 형태로 나타내어 내부로직 테스트
데이터흐름테스트 - 제어흐름 그래프에 데이터 사용현황을 추가한 그래프를 통해 테스트
루프테스트 - 프로그램의 반복 구조에 초점을 맞춰 실시하는 테스트
외부사용자의 요구사항 명세를 보면서 수행하는 테스트
동경결상유분페원비오
동등분할테스트 - 유사한 도메인별로 유효값/무효값을 그룹핑하여 대푯값 테스트 케이스를 도출하여 테스트하는 기법
경곗값분석 - 등가분할 후 경곗값 부분에서 오류 발생 확률이 높기 때문에 경곗값을 포함하여 테스트 케이스를 설계하여 테스트 하는 기법
결정테이블테스트 - 요구사항 논리와 발생조건을 테이블 형태로 나열하여, 조건과 행위를 모두 조합하여 테스트 하는기법
상태전이테스트 - 테스트대상 시스템이나 객체의 상태를 구분하고, 이벤트에 의해 어느 한 상태에서 다른상태로 전이되는 경우의수를 수행
유스케이스 - 시스템이 실제 사용되는 유스케이스로 모델링 되어있을때 프로세스 흐름을 기반으로 테스트 케이스를 명세화
분류트리테스트 - SW의 일부 또는 전체를 트리 구조로 분석 및 표현하여 테스트 케이스를 설계하여 테스트 하는 기법
페어와이즈테스트 - 테스트 데이터 값들 간에 최소한 한번씩을 조합하는 방식
원인-결과 그래프테스트 - 그래프를 화용해 데이터간의 관계및 출력에 미치는 영향을 분석하여 효용성이 높은 테스트 케이스를 선정
비교테스트 - 같은 입력값을 넣어서 동일한 결과가 나오는지 테스트
오류추정테스트 - 개발자가 범할수 있는 실수를 추정하고 이에 따른 결함이 검출되도록 테스트 케이스를 설계하여 테스트 하는 기법
테스트목적에 따른분류
회안성구회병
회복테스트 - 시스템의 고의로 실패유도 -> 정상복귀여부 테스트
안전테스트 - 불법적 SW 접근하여 시스템 파괴하지 못하도록 소스코드내 보안적인 결함을 미리 점검
성능테스트 - 응답시간 특정시간 내에 처리하는 업무량 사용자 요구에 시스템이 반응하는 속도등을 측정하는 테스트
구조테스트 - 시스템의 내부 논리 경로, 소스코드의 복잡도를 평가하는 테스트 기법
회귀테스트 - 회귀테스트는 오류를 제거하거나 수정한 시스템에서 오류제거와 수정에 의해 새로이 유입된 오류가 없는지 확인하는 일종의 반복 테스트 기법
병행테스트 - 변경된 시스템과 기존 시스템에 동일한 데이터를 입력 후 결과를 비교하는 테스트 기법
테스트종류에 따른분류
명구경
명세기반테스트(블랙박스) - 요구사항명세서 기반
구조기반테스트(화이트박스) - 소프트웨어 내부 논리흐름에 따라 테스트케이스 작성확인
경험기반테스트(블랙박스) - 유사 소프트웨어 유사기술평가 경험을 토대로 한 직관과 기술 능력 기반 테스트
테스트 커버리지 유형
기라코
기능기반커버리지
라인커버리지
코드커버리지
결정커버리지
(각분기의)결정포인트 내의 전체 조건식이 적어도 한번은 참 거짓의 결과를 수행하는 테스트 커버리지
조건커버리지
(각분기의) 결정포인트 내의 개별조건식이 적어도 한번은 참 거짓의 결과가 되도록 되도록 수행하는 테스트 커버리지
테스트오라클
결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참값을 입력하여 비교하는 기법
테스트 오라클종류
참 오라클 - 모든입력값에 대하여 기대하는 결과를 생성함으로써 발생된 오류를 모두 검출할 수 있는 오라클
샘플링 오라클 - 특정한 몇개의 입력값에 대해서만 기대하는 결과를 제공하는 오라클
휴리스틱 오라클 - 샘플링오라클을 개선한 오라클 특정입력값에 대해 올바른 결과를 제공, 나머지 값에 대해 추정하는 오라클
일관성 검사 오라클 - 변경 수행전과 후 결괏값이 동일한지 확인하는 오라클
테스트 레벨 종류
단통시인
단위테스트 - 사용자 요구사항에 대한 단위모듈, 서브루틴등을 테스트 하는 단계
통합테스트 - 단위테스트를 통과한 모듈 사이의 인터페이스 통합된 컴포넌트 간의 상호작용을 검증하는 테스트
시스템테스트 - 통합된 단위 시스템의 기능이 시스템에 정상적으로 수행되는지를 검증하는 테스트 단계
인수테스트 - 계약상의 요구사항이 만족되었는지 확인하기 위한 테스트 단계
- 알파테스트 - 개발자 환경에서 통제된 상태로 개발자와 함께 수행하는 인수테스트
- 베타테스트 - 실제환경에서 일정수의 사용자에게 대상 소프트웨어를 사용하게 하고 피드백을 받는 인수 테스트
테스트 하네스 구성요소
드스슈케시스목
테스트드라이버
테스트스텁
테스트슈트
테스트케이스
테스트시나리오
테스트스크립트
테스트 목 오브젝트
결함관리 프로세스
계기검수재추최
결함관리계획
결함기록
결함검토
결함수정
결함재확인
결함추적 및 모니터링
최종 결함 분석 및 보고서 작성
결함 심각도별 분류
치명적결함 - 데이터 손실 시스템 충돌
주요결함 - 기능장애
보통결함 - 사소한 기능 오작동
경미한결함 - 표준 위반, UI잘림
단순결함 - 미관상좋지않음
애플리케이션 성능지표
처응경자
처리량 - 주어진시간에 처리할수 있는 트랜잭션의 수
응답시간 - 사용자 입력이 끝난후 응답출력이 개시 될때까지의 시간
경과시간 - 트랜잭션 처리후 그 결과의 출력이 완료될때까지 걸리는 시간
자원사용률 - CPU 사용량, 메모리 사용량, 네트워크사용량
배드코드
외계인코드 - 아주오래되거나 참고문서 또는 개발자가 없이 유지보수 작업이 아주 어려운 코드
스파게티코드 - 스파게티 코드는 컴퓨터 프로그램의 소스코드가 복잡하게 얽힌 모습, 정상작동하지만 코드파악 어려움
알수없는 변수명 - 이름 정의를 알수없는 코드
로직중복 - 동일한 처리 로직이 중복작성된 코드
클린코드
가단의중추
가독성
단순성
의존성최소
중복성제거
추상화
리팩토링
유지보수 생산성 향상을 목적으로 기능을 변경하지 않고 복잡한 소스코드를 수정 보완하여 가용성 및 가독성을 높이는 기법
유지보수향상,유연한 시스템,생산성향상,품질향상
응용SW기초기술활용
쉘 - 쉘은 사용자가 입력시킨 명령어 라인을 읽어 필요한 시스템 기능을 실행시키는 명령어 해석기
커널 - 커널은 운영체제의 핵심이 되는 기능들이 모여있는 컴퓨터 프로그램
유닉스 계열 운영체제 특징
대다사이계
대화식 운영체제기능
다중작업기능제공
다중사용자기능제공
이식정제공
계층적 트리구조 파일 시스템 제공
리눅스 - 데이반 레드헷 Fedora Ubuntu CentOS
맥 - 유닉스를 기반으로 개발한 그래픽사용자 인터페이스 기반 운영체제
안드로이드 - 휴애용장치를 위한 운영체제와 미들웨어
- 리눅스기반
- 자바와 코틀린언어
- 런타임라이브러리
- 안드로이드 소프트웨어 개발키드 (SDK)
메모리 관리 기법의 종류
반배할교
반입기법
배치기법
할당기법
교체기법
메모리배치기법
초적악
최초 적합 - 공간중 첫번째 분할에 할당하는 방식
최적 적합 - 가장 크기 비슷한 공간
최악 적합 - 가용공간중 가장큰 공간
주기억장치 할당 기법의 종류
연단다분페세
연속할당기법
- 단일분할할당기법 : 오버레이 스와핑
- 다중분할할당기법 : 고정분할할당기법,동적분할할당기법
분산할당기법
- 페이징기법 - 일정하게 분할하여 적재
- 세그먼테이션기법 - 가변적인 크기의 블록으로 나누고 메모리 할당
- 페이징/세그먼테이션기법 - 외부 단편화 및 내부 단편화 최소화하여 두기법결한한 기법
지역성의유형
시공순
시간지역성 - 최근 사용되었던 기억 장소들이 집중적으로 액세스 하는 현상
공간지역성 - 프로세스 실행시 일정 위치의 페이지를 집중적으로 액세스 하는 현상
순차지역성 - 데이터가 순차적으로 액세스 하는 현상
프로세스 상태
생준실대완
생성
준비
실행
대기
완료
프로세스 상태전이
디타블웨
디스패치 : 준비상태에 있는 여러 프로세스중 실행될 프로세스 선정해 CPU할당 -> 문맥교환 발생
타이머 런 아웃 = 할당시간초과
블록 = 입출력발생
웨이크업 = 깨움
선점스케쥴링 알고리즘
SMMR
SRT - 짧은 수행시간 프로세스 우선수행
MLQ - 다단계큐 독립된 스케줄링큐
MLFQ(MFQ) - 다단계피드백큐 큐마다 다른 시간할당량, 마지막 단계라운드로빈방식처리
Round Robbin - 시분할 시스템 사용
비선점 스케쥴링 알고리즘
우기HFS
우선순위 - 주요긴급프로세서에 대한 우선처리
기한부 - 시간내 처리보장
HRN - 기아현상 최소화
FCFS(First Come First Service) - 도착한순서대로처리
SJF - 기아현상 발생가능성
반환시간 및 대기시간 계산방법
반종도 대반서
반환시간 = 종료시간 - 도착시간
대기시간 = 반환시간 - 서비스기간
교착상태 발생조건
상점비환
상호배제
점유와대기
비선점
환형대기
교착상태 해결방법
예회발복
예방
회피
발견
복구
클라우드 컴퓨팅 분류
사공하
사설클라우드(Private)
공용클라우드(Public)
하이브리드클라우드(Hybrid)
클라우드 서비스 유형
인플소
인프라형 서비스 (IaaS)
플랫폼형 서비스(PaaS)
소프트웨어형 서비스(SaaS)
원거리 통신망(WAN)연결
전회패
전용회선방식
회선교환방식
패킷교환방식
네트워크장비
1계층장비
- 허브
- 리피터
2계층장비
- 브리지
- L2스위치
- NIC
- 스위칭허브
3계층장비
- 라우터
- 게이트웨이
- L3스위치
- 유무선인터넷공유기
- 망(백본)스위칭허브
4계층장비
- L4스위치
프로토콜
서로다른 시스템이나 기기들 간의 데이터 교환을 원활히 하기 위한 표준화된 통신규약
프로토콜 3요소
구의타
구문 - 데이터 형식, 코딩, 신호레벨등의 규정
의미 - 제어정보 조정과 에러처리를 위한 규정
타이밍 - 전송을 위한 속도 조절과 순서관리 규정
네트워크계층프로토콜
IP : 송수신 간의 패킷 단위로 데이터를 교환하는 네트워크에서 정보를 주고 받는데 사용하는 통신 프로토콜
ARP : IP네트워크상에서 IP주소를 MAC주소(물리주소)로 변환하는 프로토콜
RARP : IP호스트가 자신의 물리 네트워크 주소는 알지만 IP주소를 모르는 경우 서버로 부터 IP주소를 요청하기 위해 사용하는 프로토콜
ICMP : IP의 동작 과정에서의 전송오류가 발생하는 경우에 오류 정보를 전송하는 목적으로 사용하는 프로토콜 , 메시지형식은 8바이트의 헤더와 가변길이의 데이터 영역으로 분리
IGMP : 인터넷 그룹관리 프로토콜은 호스트 컴퓨터와 인접 라우터가 멀티캐스트 그룹 멤버쉽을 구성하는데 사용하는 통신 프로토콜
라우팅프로토콜 : 데이터 전송을 위해 목적지까지 갈수 있는 여러 경로중 최적의 경로를 설정해주는 라우터 간의 상호 통신 프로토콜
서브네팅
IP주소 고갈문제를 해결하기 위해 원본 네트워크를 여러개의 네트워크로 분리하는 과정
IPv4전송방식 - 주소길이 32bit
유멀브
유니캐스트
멀티캐스트
브로드캐스트
IPv6전송방식 - 주소길이 128bit
유멀애
유니캐스트
멀티캐스트
애니캐스트
OSPF(Open Shortest Path First)
규모가 크고 복잡한 TCP/IP 네트워크에서 RIP의 단접을 개선하기 위해 자신을 기준으로 링크상태알고리즘을 적용하여 최단 경로를 찾는 라우팅 프로토콜
TCP특징
신연흐혼
신뢰성보장
연결지향적특징
흐름제어
혼잡제어
패킷교환방식 종류
데이터 그램 방식 : 연결경로를 확립하지 않고 각각의 패킷을 순서에 무관하게 독립적으로 전송
가상회선방식 : 패킷이 전송되기전에 송수신스테이션 간의 논리적인 통신경로를 미리 설정하는 방식
애드 혹 네트워크의 개념
노드들에 의해 자율적으로 구성되는 기반 구조가 없는 네트워크
네트워크 설치구조(토폴로지)종류
버트링성
버스형
트리형
링형
성형
SDN(Software Defined Network) : 네트워크를 제어부 데이터 전달부로 분리하여 네트워크 관리자가 효율적으로 네트워크를 제어 관리할수 있는 기술
NFV(Network Function Virtualization) : 범용 하드웨어에 가상화 기술을 적용하여 네트워크 기능을 가상 기능으로 모듈화 하여 필요한 곳에 제공하는 기술
Wi-SUN(Wireless Smart Utility Network) : 스마트 그리드와 연계하여 전기 수도 가스 등의 공급자와 사용자가 무선 네트워크를 이용하여 효율적으로 관리할수 있도록 활용하는 IEEE802.15.4 표준 기반의 무선동신 기술
NFC : 13.56MHz 주파수를 사용하고 424Kbps의 속도로 데이터를 전송하는 RFID의 확장기술로 10cm이내에서 저전력 비접촉식 무선통신 기술
스몰셀 : 기존의 높은 전송 파워와 넓은 커버리지를 갖는 매크로 셀과 달리 낮은 전송 파워와 좁은 커버리지를 가지는 소형기지국
블루투스 : 2.4GHz ISM 주파수 대역을 이용하여 10cm 이내의 근거리 디바이스 간 통신을 지원하기 위한 무선 접속 규격(IEEE802.15.1)
BLE(Bluetooth Low Energy) : 저전력 기반 기기 간 근거리 무선통신기능을 제공하는 기술 및 규격
Zing : 기기를 키오스크에 갖다대면 원하는 데이터를 바로 가져올수 있는 기술로 10cm 이내 근접 거리에서 기가급 속도로 데이터 전송이 가능한 초고속 근접 무선통신 기술
BcN(Broadband convergence Network) : 통신 방송 인터넷이 융합된 품질 보장형 광대역 멀티미디어 서비스를 끊김없이 이용할수 있는 광대역 통합망
C-V2X(Cellular-Vehicle-to-Everything) : 이동통신기술기반 V2X 통신 기술로 차량이 유무선망을 통해 다른 차량 및 도로 등 인프라가 구축된 사물과 정보를 교환 할수 있는 자율주행자동차를 위한 통신기술
메시네트워크 : 기존 무선랜의 한계극복을 위해 등장, 대규모 디바이스의 네트워크 생성에 최적화되어 차세대 이동통신, 홈 네트워킹 등 특수목적을 위한 새로운 네트워크 기술
UWB(Ultra Wide Band): 매우낮은 전력을 사용하며 초광대역 주파수 대역을 디지털데이터를 전송하는 무선전송기술
WBAN(Wireless Body Area Network) : 체내 혹은 인체 주변 3m 이내에서 일어나는 저비용 저전력 고속통신이 가능한 신체 접촉근거리 무선 네트워크
NDN(Named Data Networking) : 기존 IP주소대신 Data의 이름을 활용하여 정보의 효율적인 검색 및 배포를 목적으로 하는 미래 인터넷 기술
네트워크 슬라이싱(Network Slicing) : 하나의 물리적 코어 네트워크를 독립된 다수 가상 네트워크로 분리한 뒤 고객 맞춤형 서비스를 제공하는 5G 핵심기술
NOMA(Non-Orthogonal Multiple Access) : 동일한 시간 주파수 공간 자원상에 두대 이상의 단말에 대한 데이터를 동시에 전송하여 주파수 효율을 향상시키는 비직교 다중접속기술
MEC(Mobile Edge Computing/Cloud) : 무선 기지국에 분산 클라우딩 컴퓨팅 기술을 적용하여 서비스와 캐싱 콘텐츠를 이용자 단말에 가까이 전개함으로써 모바일 코어 망의 혼잡을 완화하는 기술
IoT 사물인터넷 : 각종 사물에 센서와 통신기능을 내장하여 무선 통신을 통해 각종 사물을 인터넷에서 연결하는 기술
MQTT(Message Queuing Telemetry Transport) : IoT장치, 텔레미트리 장치 등에서 최적화되어 사용할수 있도록 개발된 프로토콜로, 브로커를 사용한 발행구독방식의 경량 메시징을 전송하는 프로토콜
COAP : M2M 노드를 사이에서 이벤트에 대한 송수신을 비동기적으로 전송하는 REST 기반의 프로토콜이자 제약이 있는 장치들을 위한 특수한 인터넷 애플리케이션 프로토콜
Zigbee : 근거리 통신을 지원하는 IEEE 802.15.4 표준중 하나로 2.4GHz 주파수대역을 이용하는 저전력 저속 저비용 근거리 무선통신기술
스마트그리드 : 전기 및 정보통신 기술을 활용하여 전력망을 지능화 고도화함으로써 고품질의 전력 서비스를 제공하고 에너지 이용효율을 극대화 하는 전력망
piconet 피코넷 : 여러 개의 독립된 통신장치가 블루투스 기술이나 UWB 통신 기술을 사용하여 통신망을 형성하는 무선 네트워크 기술
인공지능 : 인간의 지적능력을 인공적으로 구현하여 컴퓨터가 인간의 지능적인 행동과 사고를 모방하도록 하는 소프트웨어
기계학습(머신러닝) : 기계학습은 인공지능의 분야 중하나로 인간의 학습능력과 같은 기능을 컴퓨터에서 실현하고자 하는 기술
가상현실(VR) : 컴퓨터 등을 사용한 인공적인 기술로 만들어낸 실제와 유사하지만 실제가 아닌 어떤 특정환경이나 상황구현하는 기술
증강현실(AR) : 가상현실의 한분야로 실제로 존재하는 환경에 가상의 사물이나 정보를 합성하여 마치 원래의 환경에 존재하는 사물처럼 보이도록 하는 컴퓨터 그래픽 기술
혼합현실(MR) : 실세계의 물리적 환경과 가상환경을 혼합한 경험을 제공하는 하이브리드 현실
블록체인 : 분산데이터베이스의 한 형태로 분산 노드의 운영자에 의한 임의조작이 불가능 하도록 고안되어 지속적으로 성장하는 데이터 기록 리스트인 블록을 연결한 모음
BaaS : 블록체인 개발환경을 클라우드 서비스하는 개념으로 블록체인의 기본 인프라를 추상화하여 블록체인 응용프로그램을 만들수 있는 클라우드 컴퓨터 플랫폼
CPS : 가상물리 시스템으로 인간의 개입없이 대규모 센서 액추에이터를 갖는 물리적인 요소들과 통신 기술 응용 시스템 소프트웨어 기술을 활용하여 실시간으로 물리적 요소들을 제어하는 컴퓨팅 요소가 결합된 복합 시스템
디지털트윈 : 물리적인 사물과 컴퓨터에 동일하게 표현되는 가상 모델로 실제 물리적인 자산 대신 소프트웨어로 가상화함으로써 실제 자산의 특성에 대한 정확한 정보를 얻을수 있고 자산 최적환 돌발사고 최소화 생산성증가 등 설계부터 제조 서비스에 이르는 모든 과정의 효율성을 향상시킬수 있는 모델
SOA 서비스지향아키텍처 : 서비스라고 정의되는 분할된 애플리케이션 조각들을 Loosely-coupled하게 연결해 하나의 완성된 어플리케이션을 구현하기위한 아키텍처
디지털 변혁 : 디지털 기술기반으로 기업의 전략 조직 프로세스 등을 변화시키는 경영전략
마이크로서비스 아키텍처 : 하나의 큰 시스템을 여러개의 작은서비스로 나누어 변경조합이 가능하도록 만든 아키텍처
매시업 : 웹으로 제공하고 있는 정보와 서비스를 융합하여 새로운 소프트웨어나 서비스, 데이터베이스등을 만드는 기술
그레이웨어 : 바이러스나 명백한 악성코드를 포함하지않는 합법적 프로그램이면서도 사용자를 귀찮게 하거나 위험한 상황에 빠뜨릴수있는 프로그램
텐서플로 : 구글의 구글 브레인팀이 제작하여 공개한 기계학습을 위한 오픈소스 소프트웨어 라이브러리
파스타 : 국내 IT 서비스경쟁력 강화를 목표로 개발되었으며 인프라 제어 및 관리 환경, 실행환경, 개발환경 서비스 환경으로 구성된 NIA 주도로 개발된 개방형 클라우드 컴퓨팅 플랫폼
메타버스 : 가상초월과 세계우주의 합성어 3차원 가상세계를 뜻하는 용어
SDDC : 모든 하드웨어가 가상화 되어 가상 자원의 풀을 구성하고 데이터센터 전체를 운영하는 소프트웨어가 필요한 기능 및 규모에 따라 동적으로 자원을 할당 관리하는 역할을 수행하는 데이터 센터
SDS : 서버와 전통적인 스토리지 장치에 장착된 물리적 디스크 드라이브를 가상화 기술을 적용하여 필요한 공간만큼 나눠서 사용할수 있도로 논리적인 스토리지로 통합한 가상화 기술
HACMP : 각 시스템 간에 공유 디스크를 중심으로 클러스터링으로 엮여 다수의 시스템을 동시에 연결하여 조직 기업의 안전성을 높이기 위해 사용되는 고가용성 솔류션
도커 : 컨테이너 응용 프로그램의 배포를 자동화하는 오픈소스 엔진
하이퍼바이저 : 하나의 호스트 컴퓨터상에서 동시에 다수 운영체제를 구동시킬수 있는 HW와 OS사이의 SW 가상화 플랫폼
쿠버네티스 : 리눅스 재단에 의해 관리되는 컨테이너화된 애플리케이션의 자동배포 , 스케일링 등 제공하는 오픈소스 기반의 관리 시스템
서버리스 컴퓨팅 : MSA,BaaS,FaaS 등의 기술을 활용하여 서버가 없는 것과 같이 직접 해당 이벤트에 접근하여 처리하는 컴퓨팅기술
하둡 : 오픈소스를 기반으로 한 분산 컴퓨팅 플랫폼
HDFS(Haddop Distributed File System) : 대용량 파일을 분산된 서버에 저장하고 그 저장된 데이터를 빠르게 처리할 수 있게 하는 하둡파일 시스템
맵 리듀스 : 구글에 대용량 데이터를 분산병렬 컴퓨팅에서 처리하기 위한 목적으로 제작하여 2004년 발표한 소프트웨어
스쿱 : 커넥터를 사용하여 관계형 데이터베이스 시스템에서 HDFS로 데이터를 수집하는 기술
NoSQL : 전통적인 RDBMS와 다른 DBMS를 지칭하기 위한 용어 Join 연산 할수 없음 , 수평확장가능
다크데이터 : 수집된 후 저장은 되어있지만 분석에 활용되지않는 다량의 데이터
데이터마이닝 : 빅데이터 분석기술중 대량의 데이터를 분석하여 데이터 속에 있는 변수 사이의 상호관계를 규명하여 일정한 패턴을 찾아내는 기법
DW 데이터웨어하우스 : 사용자의 의사결정에 도움을 주기위하여, 기간 시스템의 데이터베이스의 축적된 데이터를 공통형식으로 변환해서 관리하는 데이터베이스
DM 데이터마트 : 데이터웨어하우스 환경에서 정의된 접근계층으로 데이터 웨어하우스에사 데이터를 꺼내 사용자에게 제공하는 역할
메타데이터 : 데이터에대한 구조적인 데이터로서 일련의 데이터를 정의하고 설명해주는 데이터이고 구축할 정보자원을 기술하는 데이터
디지털 아카이빙 : 지속적으로 보존할 가치를 가진 디지털 객체를 장기간 관리하여 이후의 이용을 보장할수 있도록 변환 압축 저장 하여 DB화하는 작업
마이데이터 : 정보주체가 기관으로부터 자기정보를 직접 내려받아 이용하거나 제 3자 제공을 허용하는 방식으로 정보주체중심의 데이터 활용체계
스크래파이 : 웹사이트를 크롤링하여 구조화된 데이터를 수집하는 파이썬 기반의 애플리케이션 프레임워크
개발환경인프라 구성방식
온클하
온프레미스(On-Premise) : 외부 인터넷 망이 차단된 상태에서 인터넷망만을 활용하여 개발환경을 구축하는 방식
클라우드방식
하이브리드방식
SQL응용
트랜잭션
인가받지 않은 사용자로부터 데이터를 보장하기 위해 DBMS가 가져야 하는 특성이자 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본단위
트랜잭션의 특성
ACID
원자성(Atomicity) - 연산전체가 모두 정상적으로 실행되거나 모두 취소되어야하는 성질
일관성(Consistency) - 시스템이 가진 고정요소는 트랜잭션 수행전과 수행완료후 상태가 같아야하는성질
격리성=고립성(Isolation) - 동시 실행되는 트랙잭션들이 서로 영향을 미치지 않아야한다는 성질
영속성(Durability) - 성공이 완료된 트랙잭션의 결과는 영속적으로 저장되어야 한다는 성질
롤백(ROLLBACK) : 오류가 발생했을때, 오류 이전의 특정 시점(SAVEPOINT,CHECKPOINT)상태로 되돌려주는 제어어
커밋(COMMIT) : 트랙잭션을 메모리에 영구적으로 저장하는 제어어
체크포인트(CHECKPOINT) : ROLLBACK을 위한 시점을 지정하는 제어어
절차형SQL종류
프로시저 - 일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합
사용자정의 함수 - 일련의 SQL처리를 수행하고 수행결과를 단일 값으로 반환 할수 있는 절차 SQL
트리거 - 데이터베이스 시스템에서 삽입,갱신,삭제 등의 이벤트가 발생할때마다 관련 작업이 자동으로 수행되는 절차형 SQL