<요구사항 확인>
소프트웨어 생명주기(SDLC; Software Development Life Cycle)
: 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차이다.
(*요구설테유)
요구사항 분석(기능,비기능) - 설계 – 구현 – 테스트(단통시인) - 유지보수
소프트웨어 생명주기 모델 종류(*폭프나반)
- 폭포수 모델
- 프로토타이핑 모델
- 나선형 모델(Spiral Model)
- 반복적 모델(Iteration Model)
폭포수 모델
: 각 단계를 확실히 마무리 지은 후 다음 단계로 넘어가는 모델, 선형순차적, 고전적
프로토타이핑 모델
: 고객이 요구한 주요 기능을 프로토타입으로 구현, 고객의 피드백을 반영
나선형 모델
: 개발시 위험을 최소화하기 위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델
(*계획 및 정의 – 위험분석 – 개발 – 고객평가)
반복적 모델
: 구축대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여 점증 완성
소프트웨어 개발 방법론(Software Development Methodology)
: 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법이다.
소프트웨어 개발 방법론 종류
- 구조적 방법론
: 기능에 따라 나누어 개발, 통합하는 분할과 정복 접근방식(하향식, 나씨-슈나이더만 차트)
- 정보공학 방법론
: 정보시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론
- 객체지향 방법론(Object-Oriented Development)
: 객체라는 기본 단위, 사람이 이해하는 방식으로 시스템에 적용하는 방법론
- 컴포넌트 기반 방법론(CBD)
: 컴포넌트를 조립해서 하나의 새로운 응용프로그램을 작성하는 방법론(확장성, 재사용)
- 애자일 방법론
: 절차보다는 사람이 중심, 변화에 유연,신속하게 적응 신속 적응적 경량 개발 방법론
- 제품 계열 방법론
: 공통된 기능을 정의하여 개발, 임베디드 소프트웨어를 작성하는데 유용한 방법론
애자일(Agile)
: 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할수 있는 신속 적응적 경량 개발 방법론.
XP(eXtreme Programming)
: 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론
5가지 가치(*피의용존단)
- 피드백
- 의사소통
- 용기
- 존중
- 단순성
12가지 실천항목
- 짝 프로그래밍
- 공동 코드 소유
- 지속적인 통합(CI)
- 계획 세우기
- 작은 릴리즈
- 메타포어
- 간단한 디자인
- 테스트 기반 개발(TDD)
- 리팩토링
- 40시간 작업
- 고개 상주
- 코드 표준
스크럼(SCRUM)
: 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 중심 방법론
- 백로그
- 스프린트
- 스크럼 미팅
- 스크럼 마스터
- 스프린트 회고
- 번 다운 차트
린(LEAN)
: 도요타의 린 시스템 품질기법을 적용해서 낭비요소를 제거하여 품질을 향상
객체 지향 분석 방법론(Object Oriented): 실세계의 개체를 속성과 메서드가 결합한 형태의 객체로 표현하는 기법
구성요소
객체 지향 기법(*캡상다추정관)
- 캡슐화(Encapsulation)
: 서로 연관된 데이터와 함수를 함께 묶어 경계를 만듬, 결합도가 낮아지고 재사용 용이
- 상속성(Inheritance)
: 상위 클래스의 속성과 메서드를 하위 클래스에서 재정의 없이 물려받아 사용
- 다형성(Polymorphism)
: 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답(오버로딩, 오버라이딩)
- 추상화(Abstraction)
: 공통 성질을 추출하여 추상 클래스를 설정하는 기법
- 정보 은닉(Information Hiding)
: 코드 내부 데이터와 메서드를 숨기고 공개 인터페이스를 통해서만 접근 가능
- 관계성(Relationship)
: 두 개 이상의 엔터티 형에서 데이터를 참조하는 관계를 나타내는 기법
(연관화/집단화/분류화/일반화/특수화)
객체 지향 설계원칙(SOLID)
- SRP(단일 책임의 원칙): 하나의 클래스는 하나의 목적을 위해서 생성, 하나의 책임을 수행
- OCP(개방 폐쇄 원칙): 구성요소는 확장에는 열려있고, 변경에는 닫혀있어야 한다.
- LSP(리스코프 치환 원칙): 서브타입은 어디서나 자신의 기반 타입으로 교체할수 있어야함
- ISP(인터페이스 분리의 원칙): 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙
- DIP(의존성 역전의 원칙): 클래스를 참조해서 사용하는 경우, 추상 클래스나 인터페이스참조
객체 지향 분석(OOA; Object Oriented Analysis)
: 사용자의 요구사항을 분석하여 요구된 문제와 관련된 모든 클래스, 속성과 연산, 관계
- OOSE(야콥슨): 유스케이스에 의한 접근 방법, 기능적 요구사항 중심
- OMT(럼바우) *객동기
객체 모델링(정보 모델링): 요구하는 객체를 찾고 객체들 간의 관계를 정의(ER다이어그램)
동적 모델링: 시간의 흐름에 따라 객체들 사이의 동적인 행위를 표현(상태 다이어그램)
기능 모델링: 프로세스들의 자료 흐름을 중심으로 처리과정 표현(DFD)
- OOD(부치): 설계 문서화를 강조하여 다이어그램 중심으로 개발하는 방법론
프로젝트 관리: 주어진 기간 내에 최소의 비용으로 사용자를 만족시키는 시스템을 개발하기 위한 전반적인 활동
프로젝트 관리 대상
- 계획 관리
- 품질 관리
- 범위 관리
프로젝트 관리 3대 요소(3P)
- People
- Problem
- Process
비용산정 모형
- 하향식 산정방법
: 경험이 많은 전문가에게 비용산정을 의뢰하거나 여러 전문가와 조정자를 통해 산정
ex) 전문가 판단, 델파이 기법
- 상향식 산정방법
: 세부적인 요구사항과 기능에 따라 필요한 비용을 계산하는 방식
ex) LoC, Man Month, COCOMO 모형, 푸트남 모형, FP
비용산정 모형 종류
- LOC(Lines of Code)
: 원시 코드 라인 수의 낙관치, 중간치(기대치), 비관치
- Man Month 모형
: 한 사람이 1개월 동안 할수 있는 일의 양을 기준으로 비용을 산정
- COCOMO 모형
: 보헴이 제안한 모형, 프로그램 규모에 따라 비용을 산정하는 방식
▶ 조직형(Organic Mode): 5만 라인 이하의 소프트웨어를 개발하는 유형
▶ 반분리형(Semi-Detachde Mode): 30만 라인 이하의 소프트웨어를 개발하는 유형
▶ 임베디드형(Embedded Mode): 30만 라인 이상의 소프트웨어를 개발하는 유형
- 푸트남(Putnam) 모형
: 소프트웨어 개발주기의 단계별로 요구할 인력의 분포를 가정하는 방식, 생명주기 예측 모형
일정관리 모델: 프로젝트가 일정 기한 내에 적절하게 완료될 수 있도록 관리하는 모델
- 주 공정법(CPM);임계 경로
- PERT
- CCPM
위험 관리
회피/전가/완화/수용
현행 시스템 파악 절차
1단계: 구성/기능/인터페이스 파악
2단계: 아키텍처 및 소프트웨어 구성 파악
3단계: 하드웨어 및 네트워크 구성 파악
소프트웨어 아키텍처
: 여러 가지 소프트웨어 구성요소와 그 구성요소가 가진 특성 중에서 외부에 드러나는 특성, 그리고 구성요소 간의 관계를 표현하는 시스템의 구조나 구조체이다
소프트웨어 아키텍처 프레임워크
: 소프트웨어 집약적인 시스템에서 아키텍처가 표현해야 하는 내용 및 이들간의 관계를 제공하는 기술 표준
소프트웨어 아키텍처 4+1뷰(*유논프구배)
- 유스케이스 뷰: 사용자, 설계자, 개발자, 테스트 관점
- 논리 뷰: 기능적인 요구사항이 어떻게 제공되는지 설명해주는 뷰
- 프로세스 뷰: 비기능적인 속성으로 자원의 효율적인 사용 등등 표현
- 구현 뷰: 정적인 소프트웨어 모듈의 구성을 보여주는 뷰
- 배포 뷰: 컴포넌트가 물리적인 아키텍처에 어떻게 배치되는가를 매핑해서 보여주는 뷰
소프트웨어 아키텍처 패턴: 소프트웨어를 설계할때 참조할 수 있는 해결방식
- 계층화 패턴
: 시스템을 계층으로 구분하여 구성하는 패턴, 각 하위 모듈은 추상화를 제공하고 각 계층은 다음 상위 계층에 서비스를 제공, 서로 마주보는 두 계층 사이에서 상호작용
- 클라이언트-서버 패턴
: 하나의 서버와 다수의 클라이언트로 구성되노 패턴
- 파이프-필터 패턴
: 데이터 스트림을 생성하고 처리하는 시스템에서 사용 가능한 패턴, 서브 시스템이 입력데이터를 받아 처리하고 결과를 다음 서브 시스템으로 넘겨주는 과정 반복
- 브로커 패턴
: 분리된 컴포넌트들로 이루어진 분산 시스템에서 사용, 컴포넌트 간의 통신을 조정하는 역할
- 모델-뷰-컨트롤러 패턴(MVC)
: 각 부분이 컴포넌트로 분리되어 있어 서로 영향을 받지 않고 개발 작업 수행 가능
▶ 모델(Model): 핵심 기능과 데이터 보관
▶ 뷰(View): 사용자에게 정보 표시
▶ 컨트롤러(Controller): 사용자로부터 요청을 입력받아 처리
소프트웨어 비용 평가 모델(*SACAA)
- SAAM: 변경 용이성과 기능성에 집중
- ATAM: 아키텍처 품질속성을 만족시키는지 판단
- CBAM: ATAM의 바탕으로 경제적 의사결정에 대한 요구를 충족하는 비용 평가 모델
- ADR: 응집도를 평가하는 모델
- ARID: 아키텍처가 아닌 특정 부분에 대한 품질요소에 집중하는 비용 평가 모델
디자인 패턴(Design Pattern)
: 소프트웨어 공학의 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계방법을 정리
디자인 패턴 구성요소(*패문솔사결샘)
- 패턴의 이름
- 문제 및 배경
- 솔루션
- 사례
- 결과
- 샘플코드
디자인패턴 유형(*생구행)
- 생성패턴
- 구조패턴
- 행위패턴
디자인패턴의 종류
- 생성패턴(BFSAP)
▶ Builder
▶ Factory method
▶ Singleton
▶ Abstract Factory
▶ Prototype
-구조패턴(ABCD2FP)
▶ Adapter
▶ Bridge
▶ Composite
▶ Decorator
▶ Flywieght
▶ Facade
▶ Proxy
- 행위 패턴(행 미인이 템옵 스테 비커 스트 매체)
▶ Mediator
▶ Interpreter
▶ Iterator
▶ Template method
▶ Observer
▶ State
▶ Visitor
▶ Command
▶ Strategy
▶ Memento
▶ Chain of resposibility
요구사항 개요(*도분명확)
- 요구사항 도출
- 요구사항 분석
- 요구사항 명세
- 요구사항 확인
요구사항의 분류
- 기능적 요구사항: 시스템이 제공하는 기능, 서비스에 대한 요구사항(사용자UI)
- 비기능적 요구사항: 시스템이 수행하는 기능 이외의 사항(백엔드)
요구사항 도출 단계
- 인터뷰
- 브레인스토밍
- 델파이 기법
- 롤 플레잉
- 워크숍
- 설문 조사
요구사항 분석 단계
- DFD(데이터 흐름도)
- DD(자료 사전)
- UML
요구사항 명세 단계
- 비정형 명세 기법: 자연어를 기반으로 서술하는 기법
- 정형 명세 기법: 수학적인 원리와 표기법으로 서술하는 기법
요구사항 확인 및 검증 단계
- 동료 검토: 2~3명이 진행하는 리뷰
- 워크 스루: 오류를 조기 검출, 회의 전 배포 사전 검토 짧은 시간 회의
- 인스펙션: 다른 전문가 또는 팀이 검사해 오류 찾는 공식적인 검토 방법
<화면 설계>
UI(User Interface)
: 사용자 인터페이스, 넓은 의미에서 사용자와 시스템 사이에서 의사소통을 할수 있도록 고안된 물리적, 가상의 매개체
UI의 유형(*CGNO)
- CLI: 명령어를 텍스트로 입력하여 조작하는 사용자 인터페이스
- GUI: 그래픽 환경을 기반으로 한 마우스나 전자펜을 이용하는 사용자 인터페이스
- NUI: 키보드나 마우스 없이 신체 부위를 이용하는 사용자 인터페이스
- OUI: 현실에 존재하는 모든 사물이 입출력장치로 변화할 수 있는 사용자 인터페이스
UI 설계 원칙(*직유학유)
- 직관성: 누구나 쉽게 이해하고 쉽게 사용할 수 있어야 함
- 유효성: 정확하고 완벽하게 사용자의 목표가 달성될 수 있도록 제작
- 학습성: 초보와 숙련자 모두가 쉽게 배우고 사용할 수 있게 제작
- 유연성: 사용자의 요구사항을 최대한 수용, 실수를 방지할수 있도록 제작
UI 품질 요구사항(*기신사효유이)
- 기능성
- 신뢰성
- 사용성
- 효율성
- 유지보수성
- 이식성
소프트웨어 개발 단계별 UI 지침
- 목표 정의
▶ 3C 분석: Customer,Company,Competitor
▶ SWOT 분석: 강점, 약점, 기회, 위협 요인을 구정하고 이를 토대로 경영 전략을 수립
▶ 시나리오 플래닝
▶ 워크숍
- 프로젝트 계획
▶ 프로파일
▶ 리서치
- 요구사항 정의
▶ 페르소나
▶ 브레인스토밍
▶ 요구사항 매트릭스
▶ 정황 시나리오
- 설계 및 구현: UI시나리오 문서
- 테스트: 사용성 테스트
UI 화면 설계(*와스프)
- 와이어 프레임: 이해 관계자들과의 화면구성을 협의하거나 간략한 흐름 공유
- 스토리보드: 서비스 구축을 위한 모든 정보가 담겨 있는 설계 산출물
- 프로토타입: 동적 효과를 적용하여 실제 구현된 것 처럼 시뮬레이션 할 수 있는 모형
(*목업(Mockup): 제품이나 서비스의 디자인을 시각적으로 보여주기 위한 모형이다.)
UML: 객체 지향 소프트웨어 개발 과정에서 산출물을 명세화, 시각화, 문서화 할 때 사용되는 모델링 기술과 방법론을 통합해서 만든 표준화된 범용 모델링 언어이다.
UML의 특징(*가구명문)
- 가시화: 오류가 적고 의사소통이 용이
- 구축: 다양한 프로그래밍 언어로 실행 시스템의 예측 가능
- 명세화: 정확한 모델 제시, 완전한 모델 작성 가능
- 문서화: 시스템에 대한 평가 및 의사소통의 문서
UML의 구성요소(*사관다)
- 사물: 추상적인 개념으로, 주제를 나타내는 요소
- 관계: 사물의 의미를 확장하고 명확히 하는 요소
- 다이어그램: 사물과 관계를 모아 그림으로 표현한 형태
UML 다이어그램
UML 스테레오 타입 = ‘<< >>’ (길러멧)
UML의 유형
1. 클래스 다이어그램
: 객체 지향 모델링 시 클래스의 속성 및 연산과 클래스 간 정적인 관계를 표현한 다이어그램
- 클래스 다이어그램 구성요소
: 클래스 이름, 속성, 연산, 접근 제어자, 관계 들로 이루어져 있다.
- 클래스 다이어그램 관계
: 연관관계, 의존관계, 일반화 관계, 실체화 관계, 포함 관계, 집합 관계
- 유스케이스 다이어그램
: 시스템이 제공하고 있는 기능 및 그와 관련된 외부 요소를 사용자의 관점에서 표현하는 다이어그램
- 유스케이스 다이어그램 구성요소
: 유스케이스, 액터, 시스템, 시나리오, 이벤트의 흐름
- 유스케이스 다이어그램 관계
: 포함관계, 확장관계, 일반화 관계
3.시퀀스 다이어그램
: 객체 간 상호 작용을 메시지 흐름으로 표현한 다이어그램
- 시퀀스 다이어그램 구성요소
: 객체, 생명선, 실행, 메시지
- 패키지 다이어그램
: 시스템의 서로 다른 패키지들 사이의 의존관계를 표현하기 위한 다이어그램
- 패키지 다이어그램 구성요소
: 패키지, 의존관계
- 활동 다이어그램
: 시스템이 어떤 기능을 수행하는지를 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서대로 표현하는 다이어그램
- 활동 다이어그램 구성요소
: 시작점, 전이, 액션, 종료점, 조건노드, 병합노드, 포크노드, 조인노드, 구획면
- 상태 다이어그램
: 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변하는지 표현하는 다이어그램
- 상태 다디어그램 구성요소
: 상태, 시작상태, 종료상태, 전이, 이벤트, 전이조건
- 커뮤니케이션 다이어그램
: 시퀀스 다이어그램과 같이 동작에 참여하는 객체들이 주고받는 메시지를 표현하고, 메시지 뿐만 아니라 객체 간의 연관까지 표현하는 다이어그램
- 커뮤니케이션 다이어그램 구성요소
: 액터, 객체, 링크, 메시지
- 컴포넌트 다이어그램
: 시스템을 구성하는 물리적인 컴포넌트와 그들 사이의 의존관계를 나타내는 다이어그램
- 컴포넌트 다이어그램 구성요소
: 컴포넌트, 인터페이스, 의존관계
<데이터 입출력 구현>
데이터 모델
: 현실 세계의 정보를 인간과 컴퓨터가 이해할 수 있도록 추상화하여 표현한 모델
- 구조: DB에 논리적으로 표현될 대상
- 연산: 실제 데이터를 처리하는 작업
- 제약조건: 실제 데이터의 논리적인 제약조건
데이터 모델 절차(*요개논물)
- 요구조건 분석
- 개념적 설계(개념적 데이터 모델)
: 사용자의 요구에 대한 트랜잭션을 모델하는 단계, 개체-관계 다이어그램(ERD)
- 논리적 설계(논리적 데이터 모델)
: 트랜잭션의 인터페이스를 설계하는 단계, 사람이 이해하기 쉽게 표현, 논리적 스키마
- 물리적 설계(물리적 데이터 모델)
: 논리적 데이터모델을 사용하고자 물리 데이터 모델로 벼노한하는 모델, 반 정규화를 수행
- 논리 데이터 모델: 사람이 이해하기 쉽게 표현하는 프로세스
- 관계 데이터 모델: 2차원 테이블 형태로 구성, 기본키, 외래키
- 계층 데이터 모델: 논리적 구조가 트리 형태로 구성, 상하관계 존재
- 네트워크 데이터 모델: 논리적 구조가 그래프 형태로 구성된 모델, 다대다 관계
관계 데이터 모델
-
구성요소
▶ 릴레이션: 행과 열로 구성된 테이블
▶ 튜플: 행
▶ 속성: 열
▶ 카디널리티: 튜플(행)의 수
▶ 차수: 애트리뷰트(열)의 수
▶ 스키마: 구조, 제약조건의 정보를 담고 있는 기본적인 구조
▶ 인스턴스: 정의된 스키마에 따라 테이블에 실제 저장된 데이터의 집합
-
관계 대수(절자적 언어)
▶ 일반 집합 연산자
합집합()/교집합()/차집합(-)/카티션 프로덕트(x)
▶ 순수 관계 연산자
셀렉트(σ)/프로젝트(∏)/조인(⋈)/디비전(÷)
-
관계 해석(비절차적 언어)
논리 데이터 모델링 속성(*개속관)
이상현상(Anomaly) (*삽삭갱)
: 데이터의 중복성으로 인해 릴레이션을 조작할 때 발생하는 비합리적 현상
- 삽입 이상: 불필요한 세부정보를 입력해야하는 경우
- 삭제 이상: 원치 않는 다른 정보가 같이 삭제되는 경우
- 갱신 이상: 특정 부분만 수정되어 중복된 값이 모순을 일으키는 경우
함수 종속(FD): 릴레이션에서 속성의 의미와 속성 간 상호 관계로부터 발생하는 제약조건
- 부분 함수 종속(Partial)
- 완전 함수 종속(Full)
- 이행 함수 종속(Transitive)
정규화(Normalization) (*원부이결다조)
: 데이터의 중복성을 제거하여 이상현상을 방지하고, 데이터의 일관성과 정확성을 유지하기 위해 무손실 분해하는 과정
- 1정규형(1NF): 원자값으로 구성
- 2정규형(2NF): 부분 함수 종속 제거
- 3정규형(3NF): 이행함수 종속 제거
- 보이스-코드 정규형(BCNF): 결정자 후보 키가 아닌 함수 종속 제거
- 4정규형(4NF): 다치(다중) 값 종속 제거
- 5정규형(5NF): 조인 종속 제거
반 정규화(De-Normalization)
: 정규화된 엔터티, 속성, 관계에 대해 성능 향상과 개발운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 기법(비정규화, 역정규화)
- 물리 데이터 모델
데이터 베이스 무결성
: 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 성질
데이터베이스 무결성 종류(*개참속사키)
- 개체 무결성: 같은 기본키 가질수 없음, 속성이 널 일수 없음
- 참조 무결성: 참조할때 다른 개체의 기본키에 해당하는 값이 기본키나 널이어야함
- 속성 무결성: 속성의 값은 지정된 규칙을 준수해야함
- 사용자 정의 무결성: 의미적 요구사항을 준수해야하는 제약 조건
- 키 무결성: 한 릴레이션에 같은 키 값을 가진 튜플들을 허용할수 없음
키(Key) 특성
- 유일성(Uniqueness): 식별자에 의해 엔터티 내에 모든 튜플들을 유일하게 구분하는 특성
- 최소성(Minimality): 최소한의 속성으로 식별자를 구성하는 특성
키 종류
- 기본 키
- 대체 키
- 후보 키
- 슈퍼 키(유일성은 만족하지만 최소성은 만족하지 못하는 키)
- 외래 키
인덱스: 검색 연산의 최적화를 위해 데이터베이스 내 열에 대한 정보를 구성한 데이터 구조
파티셔닝(Partitioning): 테이블 또는 인덱스 데이터를 파티션 단위로 나누어 저장하는 기법
(*레해리컴라)
- 레인지 파티셔닝: 연속적인 숫자나 날짜를 기준으로 하는 기법
- 해시 파티셔닝: 해시 함수 값에 의한 기법
- 리스트 파티셔닝: 데이터에 대한 명시적 제어가 가능한 기법
- 컴포지트 파티셔닝: 위의 3개 중 2개 이상의 파티셔닝 결합
- 라운로빈(RR)
데이터베이스(Database): 다수의 인원, 시스템 또는 프로그램이 사용할 목적으로 통합하여 관리되는 데이터의 집합
- 통합된 데이터
- 저장된 데이터
- 운영 데이터
- 공용 데이터
데이터베이스 특성
- 실시간 접근성
- 계속적인 변화
- 동시공용
- 내용참조
DBMS(Database Management System): 데이터 관리의 복잡성을 해결하고 동시에 다양한 기능들을 지원하는 소프트웨어
데이터 웨어하우스(DW;Data Warehouse): 사용자의 의사결정에 도움을 주기 위하여, 기간 시스템의 데이터베이스에 축적된 데이터를 공통 형식으로 변환해서 관리하는 데이터베이스
데이터 마트(DM;Data Mart): 전사적으로 구축된 데이터 속의 특정 주제,부서 중심으로 구축된 소규모 단위 주제의 데이터 웨어하우스
빅데이터의 특성(3V)
Volume/Variety/Velocity
하둡(Hadoop)
: 오픈 소스를 기반으로 한 분산 컴퓨팅 플랫폼, 자바 소프트웨어 프레임워크
- ETL
- 플럼
- 스쿱
- 스크래파이
- HDFS: 하둡 분산 파일 시스템
- 맵 리듀스: 구글에서 대용량으로 데이터 처리를 분산 병렬 컴퓨팅에서 처리하기 위한 목적으로 제작하여 2004년에 발표한 소프트웨어 프레임워크
NoSQL(Not Only SQL): 전통적인 RDBMS와 다른 DBMS를 지칭하기 위한 용어로 데이터 저장에 고정된 테이블 스키마가 필요하지 않고 조인 연산을 사용할 수 없으며 수평적으로 확장이 가능한 DBMS
특성(BASE)
- Basically Available
- Soft-state
- Eventually Consistency
유형(*키걸도그)
- Key-value Store: 유니크 키에 하나의 벨류를 가지고 있는 형태
- Column Family Data Store:키 안에 (컬럼,벨류)조합으로 여러개 필드 갖는 디비
- Document Store:벨류의 데이터 타입이 Document라는 타입을 사용 하는 디비
- Graph Store: 시멘틱 웹과 온톨로지 분야에서 활용되는 그래프를 데이터로 표현
데이터 마이닝(Data Mining): 대규모로 저장된 데이터 안에서 체계적이고 자동적으로 통게적 규칙이나 패턴을 찾아내는 기술
주요 기법(*분연연데)
- 분류 규칙
- 연관 규칙
- 연속 규칙
- 데이터 군집화
관련 용어
- 텍스트 마이닝
- 웹 마이닝
- 다크 데이터
- 메타 데이터
- 디지털 아카이빙
- 마이 데이터
<통합 구현>
연계 메커니즘: 응용 소프트웨어와 연계 대상 모듈 간의 데이터 연계 시 요구사항을 고려한 연계방법과 주기를 설계하기 위한 메커니즘
주요 연계 기술
- 간접 연계 방식
▶ EAI: 기업에서 운영되는 플랫폼 간의 정보 전달, 통합을 가능하게 해주는 솔루션
▶ ESB: 기업에서 운영되는 하나의 시스템으로 관리 운영할수 있도록 서비스 중심의 통합
▶ 웹 서비스: WSDL과 SOAP프로토콜을 이용한 시스템 간 연계
▶ 소켓: 소켓을 생성하여 포트를 할당하고 통신하는 기술
- 직접 연계 방식
▶ DB 링크: DB링크 객체를 이용하는 기술
▶ DB 연결: DB커넥션 풀을 생성하고 연결하는 기술
▶ API/Open API
▶ JDBC: JDBC드라이버를 이용하여 송신 시스템 DB와 연결하는 기술
▶ 하이퍼링크: 현재 페이지에서 다른 부분으로 가거나 전혀 다른 페이지로 이동
EAI(Enterprise Application Integration): 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간의 정보를 전달, 연계, 통합이 가능하도록 해주는 솔루션(*포허메하)
- 포인트 투 포인트(Poin-to-Point): 1:1 단순 통합방법
- 허브 앤 스포크(Hub&Spoke): 허스 시스템을 통하여 데이터를 전송하는 중앙 집중식 방식
- 메시지 버스(Messeage Bus): 미들웨어(버스)를 두어 연계하는 미들웨어 통합 방식
- 하이브리드(Hybrid): 그룹 내는 허브앤스포크방식 그룹 간에는 메시지 버스 방식을 사용
ESB(Enterprise Service Bus)
: 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션들 간을 하나의 시스템으로 관리 운영할수 있도록 서비스 중심의 통합을 지향하는 아키텍처
애플리케이션의 통합을 느슨한 결합 방식으로 지원하는 방식이다.
웹 서비스(Web Service)
: 네트워크에 분산된 정보를 서비스 형태로 개방하여 표준화된 방식
- SOAP(Simple Object Access Protocol): HTTP, HTTPS, SMTP등을 사용하여 XML기반의 메시지를 네트워크 상태에서 교환하는 프로토콜, 보통의 경우 RPC 사용
- WSDL(Web Service Description Language): 웹 서비스명, 제공 위치, 메시지 포맷, 프로토콜 정보 등 웹 서비스에 대한 상세 정보가 기술된 XML 형식의 언어이다.
- UDDI(Universal Description, Discovery and Integration): WSDL을 등록하고 검색하기 위한 저장소로 공개적으로 접근, 검색이 가능한 레지스트리이자 표준이다.
웹 서비스 관련 용어
- HTTP: HTML문서를 송수신하기 위한 규칙들을 정의, GET,POST,PUT 등의 방식을 사용
- 하이퍼텍스트: 링크를 통해 서로 연결된 네트워크처럼 구성된 문서
- HTML: 인터넷 웹 문서를 표현하는 표준화된 마크업 언어
IPC방식(Inter-Process communication)
: 운영체제에서 프로세스 간 서로 데이터를 주고받기 위한 통신기술
LOD(Linked open Data)
: 웹상에 존재하는 데이터를 개별 URI로 식별하고, 각 URI에 링크 정보를 부여함으로써 상호 연결된 웹을 지향하는 아키텍처
<인터페이스 구현>
JSON(Javascript Object Notation)
: 속성- 값 쌍 또는 키-값 쌍으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷
- AJAX에서 많이 사용되고 XML을 대체하는 주요 데이터 포맷
XML(Extensible Markup Language)
: HTML의 단점을 보완한 인터넷 언어, SGML의 복잡한 담점을 개선한 마크업 언어
AJAX(Asynchronous Javascript And XML)
: 자바스크립트를 사용하여 웹 서버와 클라이언트간 비동기적으로 XML데이터를 교환하고 조작하기 위한 웹 기술
브라우저가 가지고 있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 로드하지 않고 필요한 일부 페이지의 데이터만을 로드하는 기법
주요 기술
- XMLHttpRequest
- JavaScript
- XML
- DOM: XML문서를 트리 구조의 형태로 접근할 수 있게 해주는 API
- XSLT: XML문서를 다른 XML문서로 변환하는데 사용하는 XML기반 언어
- HTML
- CSS
REST(Representational State Transfer)
: 분산 하이퍼미디어 환경에서 자원의 존재/상태 정보를 표준화된 HTTP메서드로 주고받는 웹 아키텍처(리소스/메서드/메시지)
- 행위에 대한 메서드(CRUD)
▶ POST(Create)
▶ GET(Read)
▶ PUT(Update)
▶ DELETE(Delete)