반응형
핵심 키워드 정리
시험장에 들어가기 전, 빠르게 훑어볼 내용을 정리해본다.
01. 요구사항 확인
소프트웨어 생명주기 모델(SDLC; Software Development Life Cycle)
- 소프트웨어 생명주기 : 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차
- 시스템이 개발될 때부터 운용과 유지보수를 거쳐 생애를 마칠 때까지 어떠한 순서를 밟는지에 대한 작업 프로세스를 모델화한 것
- 프로세스
- 요구사항 분석 -> 설계 - > 구현 -> 테스트 -> 유지보수
- 모델 종류 : 폭프나반
- 폭포수 모델(Waterfall Model)
- 소프트웨어 개발 시 각 단계를 확실히 마무리 지은 후에 다음 단계로 넘어가는 모델 (고전적 생명주기 모형)
- 절차 : 타당성 검토 -> 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수
- 프로토타이핑 모델(Prototyping Model)
- 고객이 요구한 주요 기능을 프로토타입으로 구현하여, 고객의 피드백을 반영하여 소프트웨어를 만들어가는 모델
- 나선형 모델(Spiral Model)
- 시스템 개발 시 위험을 최소화하기 위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델
- 절차 : 계위개고
- 계획 및 정의 -> 위험 분석 -> 개발 -> 고객 평가
- 반복적 모델(Iteration Model)
- 구축대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여 점증 완성시키는 SDLC 모델
- 폭포수 모델(Waterfall Model)
소프트웨어 개발 방법론(Software Development Methodology)
- 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법
- 종류
- 구조적 방법론(Structured Development) : 전체 시스템을 기능에 따라 나누어 개발하고, 이를 통합하는 분할과 정복 접근 방식의 방법론
- 정보공학 방법론(Information Engineering Development) : 정보 시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론
- 객체 지향 방법론(Object-Oriented Development) : '객체'라는 기본 단위로 시스템을 분석 및 설계하는 방법론
- 컴포넌트 기반 방법론(CBD; Component Based Development) : 소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론
- 애자일 방법론(Agile Development) : 이 되어 변화에 유연하고 신속하게 적용하며서 효율적으로 개발할 수 있는 신속 적응적 경량 개발 방법론
- 절차보다는 사람이 중심
- 제품 계열 방법론(Product Line Development) : 특정 제품에 적용하고 싶은 공통되 기능을 정의하여 개발하는 방법론
애자일(Agile) 방법론
- 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발 방법론
- 종류
- XP(eXtreme Programming)
- 의사소통 개선과 으로 소프트웨어 품질을 높이기 위한 방법론
- 즉각적 피드백
- 5가지 가치
- 용기(Courage)
- 단순성(Simplicity)
- 의사소통(Communication)
- 피드백(Feedback)
- 존중(Respect)
- 12가지 원리
- 짝 프로그래밍(Pair Programming)
- 공동 코드 소유(Collective Ownership)
- 지속적인 통합(CI; Continuous Integration)
- 계획 세우기(Planning Process)
- 작은 릴리즈(Small Release)
- 메타포어(Metaphor)
- 간단한 디자인(Simple Design)
- 테스트 기반 개발(TDD; Test Driven Develop)
- 리팩토링(Refactoring)
- 40시간 작업(40-Hour Work)
- 고객 상주(On Site Customer)
- 코드 표준(Coding Standard)
- 스크럼(SCRUM)
- 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론
- 주요 개념
- 백로그(Backlog) : 제품과 프로젝트에 대한 요구사항
- 스프린트(Sprint) : 2~4주의 짧은 개발 기간의 반복적 수행으로 개발품질 향상
- 스크럼 미팅(Scrum Meeting) : 매일 15분 정도 미팅으로 To-Do List 계획 수립 (=데일리 미팅(Daily Meeting)
- 스크럼 마스터(Scrum Master) : 프로젝트 리더, 스크럼 수행 시 문제를 인지 및 해결하는 사람
- 스프린트 회고(Sprint Retrospective) : 스프린트 주기를 되돌아보며 정해놓은 규칙 준수 여부, 개선점 등을 확인 및 기록
- 번 다운 차트(Burn Down Chart) : 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트
- 린(LEAN)
- 도요타의 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질을 향상시킨 방법론
- JIT(Just In Time), 칸반(Kanban) 보드 사용
- 7가지 원칙
- 낭비 제거
- 품질 내재화
- 지식 창출
- 늦은 확정
- 빠른 인도
- 사람 존중
- 전체 최적화
- XP(eXtreme Programming)
객체 지향 분석(OOA; Object Oriented Analysis)
- 사용자의 요구사항을 분석하여 요구된 문제와 관련된 모든 클래스(객체), 속성과 연산, 관계를 정의하여 모델링하는 기법
- 객체 지향 분석 방법론 종류
- OOSE(Object Oriented Software Engineering)
- 야콥슨(Jacobson)
- 유스케이스에 의한 접근 방법으로 유스케이스를 모든 모델의 근간으로 활용하는 방법론
- OMT(Objet Modeling Technology)
- 럼바우(Rumbaugh)
- 그래픽 표기법을 이용하여 소프트웨어 구성요소를 모델링하는 방법론
- 분석 절차 : 객동기
- 객체 모델링(Object Modeling)
- 정보 모델링(Information Modeling)
- 시스템에서 요구하는 객체를 찾고 객체들 간의 관계를 정의하여 ER 다이어그램을 만드는 과정까지의 모델링
- 객체 다이어그램 활용
- 동적 모델링(Dynamic Modeling)
- 시간의 흐름에 따라 객체들 사이의 제어 흐름, 동작 순서 등의 동적인 행위를 표현
- 상태 다이어그램 활용
- 기능 모델링(Functional Modeling)
- 프로세스의 자료 흐름을 중심으로 처리 과정 표현
- 자료 흐름도(DFD) 활용
- 객체 모델링(Object Modeling)
- OOD(Object Oriented Design)
- 부치(Booch)
- 설계 문서화를 강조하여 다이어그램 중심으로 개발하는 방법론
- OOSE(Object Oriented Software Engineering)
비용 산정 모형
- 소프트웨어 규모 파악을 통한 투입자원, 소요시간을 파악하여 실행 가능한 계획을 수립하기 위해 비용을 산정하는 방식
- 분류
- 하향식 산정 방법
- 전문가 판단
- 델파이 기법
- 상향식 산정 방법
- 코드 라인 수(LoC; Lines of Code)
- 소프트웨어 각 기능의 원시 코드 라인 수의 낙관치, 중간치, 비관치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 방식
- Man Month
- 한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 프로젝트 비용을 산정하는 방식
- COCOMO 모형(COnstructuve COst MOdel)
- 보헴(Bohem)이 제안한 모형으로, 프로그램 규모에 따라 비용을 산정하는 방식
- 비용산정 결과는 프로젝트를 완성하는 데 필요한 노력(Man-Month)으로 산정한다.
- 소프트웨어 개발 모형
- 조직형(Organic Mode)
- 5만(50KDSI) 라인 이하
- 기관 내부에서 개발된 중소규모의 소프트웨어
- 일괄 자료 처리 / 과학 기술 계산용 / 비지니스 자료 처리 개발
- 반 분리형(Semi-Detached Mode)
- 30만(300KDSI) 라인 이하
- 단순형과 임베디드형의 중간형
- 트랜잭션 처리 시스템 / 데이터베이스 관리 시스템 / 컴파일러 / 인터프리터
- 임베디드형(Embedded Mode)
- 30만(300KDSI) 라인 이상
- 초대형 규모의 트랜잭션 처리 시스템 / 운영체제 / 실시간 처리 시스템 등의 시스템 프로그램 개발
- 조직형(Organic Mode)
- 푸트남(Putnam) 모형
- 소프트웨어 개발주기의 단계별로 요구할 인력의 분포를 가정하는 방식
- 생명주기 예측 모형이라고 한다.
- Rayleigh-Norden 곡선의 노력 분포도를 기초로 한다.
- 기능점수(FP; Function Point) 모형
- 요구 기능을 증가시키는 인자별로 가중치를 부여하고, 요인별 가중치를 합산하여 총 기능의 점수를 계산하여 비용을 산정하는 방식
- 코드 라인 수(LoC; Lines of Code)
- 하향식 산정 방법
일정 관리 모델
- 프로젝트가 일정 기한 내에 적절하게 완료될 수 있도록 관리하는 모델
- 종류
- 주 공정법(CPM; Critical Path Method)
- 여러 작업의 수행 순서가 얽혀 있는 프로젝트의 일정을 계산하는 방법
- 프로젝트의 시작에서 종료까지 를 계산한다.
- 가장 긴 시간이 걸리는 경로
- PERT(Program Evaluation and Review Technique)
- 일의 순서를 계획적으로 정리하기 위한 수렴 기법으로, 을 통해 일정을 관리하는 기법
- 비관치/중간치/낙관치의 3점 추점방식
- 중요 연쇄 프로젝트 관리(CCPM; Critical Chain Project Management)
- 주 공정 연쇄법으로 자원 제약 사항을 고려하여 일정을 작성하는 기법
- 주 공정법(CPM; Critical Path Method)
소프트웨어 아키텍처 4+1뷰
- 고객의 요구사항을 정리해 놓은 시나리오를 4개의 관점에서 바라보는 소프트웨어적인 접근 방식
- 체크 방법으로 를 사용한다.
- 유스케이스(Usecase) : 시스템이 액터에게 제공해야 하는 기능으로서 시스템 요구사항이자, 사용자 입장에서 바라본 시스템의 기능
- 유스케이스
- 1(유스케이스 뷰) + 4(논리 뷰, 프로세스 뷰, 구현 뷰, 배포 뷰)
- 구성 요소 : 유논프구배
- 유스케이스 뷰(Usecase View)
- 유스케이스 또는 아키텍처를 도출하고 설계하며 다른 뷰를 검증하는데 사용되는 뷰
- 사용자/설계자/개발자/테스트 관점
- 논리 뷰(Logical View)
- 시스템의 기능적인 요구사항이 어떻게 제공되는지 설명해주는 뷰
- 설계자/개발자 관점
- 프로세스 뷰(Process View)
- 시스템의 비기능적인 속성으로서 자원의 효율적인 사용, 병행 실행, 비동기, 이벤트 처리 등을 표현한 뷰
- 개발자/시스템 통합자 관점
- 구현 뷰(Implementation View)
- 개발 환경 안에서 정적인 소프트웨어 모듈의 구성을 보여주는 뷰
- 컴포넌트 구조와 의존성을 보여주고 컴포넌트에 관한 부가적인 정보 정의
- 배포 뷰(Deployment View)
- 컴포넌트가 물리적인 아키텍처에 어떻게 배치되는가를 매핑해서 보여주는 뷰
- 유스케이스 뷰(Usecase View)
소프트웨어 아키텍처 패턴(Software Architecture Pattern)
- 소프트웨어를 설계할 때 참조할 수 있는 전형적인 해결 방식
- 유형
- 계층화 패턴(Layer Pattern) : 시스템을 계층으로 구분하여 구성하는 패턴
- 클라이언트-서버 패턴(Client-Server Pattern) : 하나의 서버와 다수의 클라이언트로 구성된 패턴
- 파이프-필터 패턴(Pipe-Filter Pattern) : 데이터 스트림을 생성하고 처리하는 시스템에서 사용 가능한 패턴
- 브로커 패턴(Broker Pattern) : 분리된 컴포넌트들로 이루어진 분산 시스템에서 사용되고, 이 컴포넌트들은 원격 서비스 실행을 통해 상호 작용이 가능한 패턴
- 모델-뷰-컨트롤러 패턴(MVC; Model View Controller Pattern) : 대화형 애플리케이션을 모델, 뷰, 컨트롤러의 3개의 서브 시스템으로 구조화하는 패턴
소프트웨어 아키텍처 비용 평가 모델
- 아키텍처 접근법이 품질 속성에 미치는 영향을 판단하고 아키텍처의 적합성을 평가하는 모델
- 종류 : SACAA(사카)
- SAAM(Software Architecture Analysis Method) : 변경 용이성과 기능성에 집중, 평가가 용이하며 한 비용 평가 모델
- 경험이 없는 조직에서도 활용 가능
- ATAM(Architecture Trade-off Analysis Method) : 아키텍처 품질 속성을 만족시키는지 까지 평가하는 모델
- 판단 및 품질 속성들의 이해 상충관계
- CBAM(Cost Benefit Analysis Method) : ATAM 바탕의 시스템 아키텍처 분석 중심으로 하는 모델비용 평가
- 경제적 의사결정에 대한 요구를 충족
- ADR(Active Design Review) : 소프트웨어 아키텍처 구성요소 간 를 평가하는 모델
- 응집도
- ARID(Active Reviews for Intermediate Designs) : 전체 아키텍처가 아닌 에 집중하는 비용 평가 모델
- 특정 부분에 대한 품질요소
디자인 패턴(Design Pattern)
- 소프트웨어 공학의 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴
디자인 패턴 구성 요소 : 패문솔 사결샘
- 패턴의 이름
- 문제 및 배경
- 솔루션
- 사례
- 결과
- 샘플 코드
디자인 패턴 유형
- 목적에 따른 구분 : 생구행
- 생성 : 객체 인스턴스 생성에 관여, 클래스 정의와 객체 생성 방식을 구조화, 캡슐화를 수행하는 패턴
- 구조 : 더 큰 구조 형성 목적으로 클래스나 객체의 조합을 다루는 패턴
- 행위 : 클래스나 객체들이 상호 작용하는 방법과 역할 분담을 다루는 패턴
- 범위에 따른 구분
- 클래스 : 클래스 간 관련성(상속 관계)을 다루는 패턴, 컴파일 타임에 정적으로 결정
- 객체 : 객체 간 관련성을 다루는 패턴, 런타임에 동적으로 결정
디자인 패턴 종류
- 생성 패턴 : 생빌 프로 팩앱싱
- Builder : 복잡한 인스턴스를 조립하여 만드는 구조
- Prototype : 처음부터 일반적인 원형을 만들어 놓고, 그것을 복사한 후 필요한 부분만 수정하여 사용하는 패턴
- Factory Method : 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위 클래스에서 인스턴스를 생성하도록 하는 방식
- Abstract Factory : 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴
- Singleton : 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 디자인 패턴, 한 클래스에 한 객체만 존재하도록 제한
- 구조 패턴 : 구 브데 퍼플 프록 컴 어
- Bridge : 기능의 클래스 계층과 구현의 클래스 계층을 연결하고, 구현부에서 추상 계층을 분리하여 추상화된 부분과 실제 구현 부분을 독립적으로 확장할 수 있는 패턴
- Decorator : 기존에 구현되어 있는 클래스에 설계 패턴
- 필요한 기능을 추가해 나가는
- Facade : 복잡한 시스템에 대하여 으로써, 사용자와 시스템 간 또는 여타 시스템과의 시스템 구조에 대한 파악을 쉽게하는 패턴결합도를 낮추어
- 단순한 인터페이스를 제공함
- Flyweight : 다수의 객체로 생성될 경우 모두가 갖는 본질적인 요소를 클래스 화하여 공유함으로써 메모리를 절약하고, ''를 목적으로 하는 패턴, 여러 개의 ''를 제공하여 메모리 절감가상 인스턴스
- 클래스의 경량화
- Proxy : ''로 실제 객체에 대한 접근 이전에 필요한 행동을 취할 수 있게 만들며, 이 점을 이용해서 미리 할당하지 않아도 상관없는 것들을 실제 이용할 때 할당하게 하여 메모리 용량을 아낄 수 있으며, 실제 객체를 드러나지 않게하여 의 역할도 수행하는 패턴정보 은닉
- 실제 객체에 대한 대리 객체
- Composite : 객체들의 관계를 로 구성하여 을 표현하는 패턴으로, 사용자가 와 모두 동일하게 다루도록 하는 패턴부분-전체 계층복합 객체
- 단일 객체
- 트리 구조
- Adapter : 기존에 생성된 클래스를 재사용할 수 있도록 를 만드는 패턴
- 중간에서 맞춰주는 역할을 하는 인터페이스
- 행위 패턴 : 행 미인이 템옵 스테 비커 스트 메체
- Mediator : 중간에 지시할 수 있는 역할을 하는 를 두고, 중재자에게 모든 것을 요구하여 통신의 빈도수를 줄여 객체 지향의 목표를 달성하게 해주는 패턴
- 중재자
- Interpreter : 언어의 다양한 , 구체적으로 구문을 나누고 그 분리된 구문의 을 맡는 클래스를 각각 작성하여 여러 형태의 언어 구문을 할 수 있게 만드는 패턴해석
- 해석
- 해석
- Iterator : 컬렉션의 구현 방법을 노출시키지 않으면서도 그 집합체 할 방법을 제공하는 디자인 패턴
- 안에 들어있는 모든 항목에 접근
- Template Method : 어떤 작업을 처리하는 일부분을 해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴으로 에는 추상 메서드를 통해 기능의 골격을 제공하고, 의 메서드에는 세부 처리를 구체화하는 방식으로 사용하여 코드 양을 줄이고 유지보수를 용이하게 만드는 특징을 갖는 패턴상위 클래스(추상 클래스)
- 하위 클래스(구체 클래스)
- 서브 클래스로 캡슐화
- Observer : 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에 연락이 가고, 자동으로 내용이 갱신되는 방법으로, 을 가지며 상호 작용하는 객체 사이에서는 가능하면 하는 패턴느슨하게 결합
- 일대 다의 의존성
- State : 하여 클래스화함으로써 그것을 참조하게 하는 방식으로 에 따라 다르게 처리할 수 있도록 행위 내용을 변경하여, 변경 시 원시 코드의 수정을 취소할 수 있고, 유지보수의 편의성도 갖는 패턴상태
- 객체 상태를 캡슐화
- Visitor : 각 클래스 데이터 구조로부터 놓고 하도록 만드는 패턴으로, 객체의 구조는 변경하지 않으면서 기능만 따로 추가하거나 확장할 때 사용하는 패턴해당 클래스의 메서드가 각 클래스를 돌아다니며 특정 작업을 수행
- 처리 기능을 분리하여 별도의 클래스를 만들어
- Command : 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴으로 하나의 추상 클래스에 메서드를 만들어 되는 특징을 갖는 패턴
- 각 명령이 들어오면 그에 맞는 서브 클래스가 선택되어 실행
- Strategy : 하고(추상 클래스), 같은 을 각각 하나의 클래스로 캡슐화한 다음, 필요할 때 서로 교환해서 사용할 수 있게 하는 패턴알고리즘
- 알고리즘 군을 정의
- Memento : 클래스 설계 관점에서 객체의 정보를 저장할 필요가 있을 때 적용하는 패턴으로, Undo 기능을 개발할 때 사요앟는 디자인 패턴
- Chain of Responsibility : 정적으로 어떤 기능에 대한 처리의 연결이 하드코딩 되어 있을 때 기능 처리의 연결 변경이 불가능한데, 이를 한 패턴
- 동적으로 연결되어 있는 경우에 따라 다르게 처리될 수 있도록 연결
분석 산출물의 종류 : 현기인 아소하네
- 정보 시스템 구성 현황
- 정보 시스템 기능 구성도
- 인터페이스 현황
- 현행 시스템 아키텍처 구성도
- 소프트웨어 구성도
- 하드웨어 구성도
- 네트워크 구성도
운영체제(OS; Operating System)
- 컴퓨터 시스템이 제공하는 모든 하드웨어, 소프트웨어를 사용할 수 있도록 해주고, 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스를 담당하는 프로그램
- 사용자가 컴퓨터를 좀 더 쉽게 사용하기 위해 지원하는 소프트웨어
운영체제 현행 시스템 분석 시 고려 사항
- 품질 측면
- 신뢰도 : 장기간 시스템 운영 시 운영체제의 장애 발생 가능성
- 성능 : 대규모 및 대량 파일 작업(배치 작업) 처리
- 지원 측면
- 기술 지원
- 주변 기기
- 구축 비용
OSI 7계층 ; 물데네 전세표응
- 물리 계층(Physical Layer)
- 0과 1의 비트 정보를 회선에 보내기 위한 전기적 신호 변환
- 프로토콜 : RS-232C
- 전송 단위 :
- 비트(Bit)
- 데이터 링크 계층(Data Link Layer)
- 인접 시스템 간 데이터 전송, 전송 오류 제어
- 동기화, 흐름 제어 등의 전송 기능 제공
- 오류 검출 / 재전송 등의 기능 제공
- 프로토콜 : 이더넷
- 전송 단위 :
- 프레임(Frame)
- 네트워크 계층(Network Layer)
- 단말 간 데이터 전송을 위한 최적화된 경로 제공
- 프로토콜 : IP, ICMP
- 전송 단위 :
- 패킷(Packet)
- 전송 계층(Transport Layer)
- 신뢰성 있는 통신 보장
- 데이터 분할과 재조립, 흐름 제어, 오류 제어, 혼잡제어 등을 담당
- 프로토콜 : TCP, UDP
- 전송 단위 :
- 세그먼트(Segment)
- 세션 계층(Session Layer)
- 연결 접속 및 동기 제어
- 프로토콜 : SSH, TLS
- 전송 단위 :
- 데이터(Data)
- 표현 계층(Presentation Layer)
- 데이터 형식 설정과 부호 교환, 암/복호화
- 프로토콜 : JPEG, MPEG
- 전송 단위 :
- 데이터(Data)
- 응용 계층(Application Layer)
- 사용자와 네트워크 간 응용서비스 연결, 데이터 생성
- 프로토콜 : HTTP, FTP
- 전송 단위 :
- 데이터(Data)
DBMS 현행 시스템 분석 시 고려 사항 : 가성호기구
- 성능 측면
- 가용성
- 성능
- 상호 호환성
- 지원 측면
- 기술 지원
- 구축 비용
미들웨어(Middleware)
- 분산 컴퓨팅 환경에서 응용 프로그램과 프로그램이 운영되는 환경 간에 원만한 통신이 이루어질 수 있도록 제어해주는 소프트웨어
- 운영체제와 사이에 위치하고 있다.
- 소프트웨어 애플리케이션
- 대표적인 미들웨어로 WAS가 있다.
웹 애플리케이션 서버(WAS; Web Application Server)
- 서버 계층에서 애플리케이션이 동작할 수 있는 환경을 제공하고 안정적인 트랜잭션 처리와 관리, 다른 이기종 시스템과의 애플리케이션 연동을 지원하는 서버
- 미들웨어 현행 시스템 분석 시 고려 사항
- 성능 측면
- 가용성
- 성능
- 지원 측면
- 기술 지원
- 구축 비용
- 성능 측면
요구 공학(Requirements Engineering)
- 사용자의 요구가 반영된 시스템을 개발하기 위하여 사용자 요구사항에 대한 도출, 분석, 명세, 확인 및 검증하는 구조화된 활동
- 요구 공학의 분류
- 기능적 요구사항 : 시스템이 제공하는 기능, 서비스에 대한 요구사항
- 비기능적 요구사항 : 시스템이 수행하는 기능 이외의 사항, 시스템 구축에 대한 제약사항에 관한 요구사항
요구사항 개발 단계 구성 : 도분명확
- 요구사항 도출(Eliciation)
- 요구사항 분석(Analysis)
- 요구사항 명세(Specification)
- 요구사항 확인 및 검증(Validation)
요구사항 개발 단계 상세
- 요구사항 관계 주요 기법
- 인터뷰(Interview) : 이해관계자와 직접 대화를 통해 정보를 구하는 공식적, 비공식적 정보 수집 방법
- 브레인스토밍(Brainstorming) : 말을 꺼내기 쉬운 분위기로 만들어, 회의 참석자들이 내놓은 아이디어들을 비판 없이 수용할 수 있도록 하는 회의
- 델파이 기법(Delphi Method) : 을 통한 문제 해결 및 을 위한 방법미래 예측
- 전문가의 경험적 지식
- 롤 플레잉(Role Playing) : 현실에 일어나는 장면을 설정하고, 여러 사람이 각자가 맡은 역을 연기함으로써 요구사항을 분석하고 수집하는 방법
- 워크숍(Workshop) : 단기간의 집중적인 노력을 통해 다양하고 전문적인 정보를 획득하고 공유하는 방법
- 설문 조사(Survey) : 설문지 또는 여론 조사 등을 이용해 간접적으로 정보를 수집하는 방법
- 도출
- 요구사항 분석 단계 절차
- 요구사항 분류
- 개념 모델링 생성 및 분석
- 요구사항 할당
- 요구사항 협상
- 정형 분석
- 형식적으로 정의된 의미를 지닌 언어로 요구사항을 표현하는 활동
- 구문(Syntax)와 의미(Semantics)를 갖는 정형화된 언어를 사용하여 수학적 기호로 표현
- 요구사항 분석의 마지막 단계에서 이루어짐.
- 요구사항 분석 단계 기법
- 자료 흐름 지향 분석
- 객체 지향 분석
- 요구사항 분석 기술
- 청취 기술
- 인터뷰와 질문 기술
- 분석 기술
- 중재 기술
- 관찰 기술
- 작성 기술
- 조직 기술
- 모델 작성 기술
- 요구사항 단계 주요 기법
- 비정형 명세 기법 : 사용자의 요구를 표현할 때 를 기반으로 서술하는 방법
- 자연어
- 정형 명세 기법 : 사용자의 요구를 표현할 때 으로 서술하는 방법
- 수학적인 원리와 표기법
- 명세
- 요구사항 명세 원리 및 검증 항목 : 명완검 일수 추개
- 명확성
- 완전성
- 검증 가능성
- 일관성
- 수정 용이성
- 추적 가능성
- 개발 후 이용성
- 요구사항 단계의 주요 기법
- 요구사항 검토
- 정형 기술 검토 활용 : 동워인
- 동료 검토(Peer Review) : 하는 리뷰의 형태로 요구사항 명세서 작성자가 요구사항 명세서를 설명하고 하는 형태로 진행이해관계자들이 설명을 들으면서 결함을 발견
- 2~3명이 진행
- 워크 스루(Walk Through) : 오류를 조기에 검출하는 데 목적이 있으며, 한 후 짧은 시간 동안 회의를 진행하는 형태로 리뷰를 통해 오류를 검출하고 문서화
- 검토 자료를 회의 전에 배포해서 사전검토
- 인스펙션(Inspection) : 소프트웨어 요구, 설계, 원시 코드 등의 하여 오류를 찾아내는 공식적 검토 방법
- 저작자 외의 다른 전문가 또는 팀이 검사
- 프로토타이핑 활용
- 모델 검증
- 테스트 케이스 및 테스트를 통한 확인
- CASE 도구 활용 검증
- 베이스라인(Baseline)을 통한 검증
- 요구사항 추적표(RTM; Requirement Traceability Matrix)를 통한 검증
- 확인 및 검증
- 상세 정형 기술 검토 기법 : 관기 인워감
- 관리 리뷰(Management Review) : 프로젝트 진행 상황에 대한 전반적인 검토를 바탕으로 범위 일정, 인력 등에 대한 통제 및 의사결정을 지원하는 리뷰
- 기술 리뷰(Technical Review) : 정의된 계획 및 명세서를 준수하고 있는지에 대한 검토를 수행하는 리뷰
- 인스펙션(Inspection) : 소프트웨어 요구, 설계, 원시 코드 등의 하여 오류를 찾아내는 공식적 검토 방법 (=동료 검토(Peer Review))
- 저작자 외의 다른 전문가 또는 팀이 검사
- 워크 스루(Walk Through) : 한 후 짧은 시간 동안 회의를 진행하는 형태로, 비형식적인 검토 기법
- 검토 자료를 회의 전에 배포해서 사전검토
- 감사(Audit) : 소프트웨어 제품 및 프로세스가 규제, 표준, 가이드라인, 계획, 절차를 준수하고 있는지를 하는 방법으로, 등이 수행소프트웨어 제품의 제공자, 소비자, 제3기관
- 독립적으로 평가
02. 데이터 입출력 구현
데이터 모델 표시 요소
- 연산(Operation) : 데이터베이스에 저장된 에 대한 명세
- 실제 데이터를 처리하는 작업
- 구조(Structure) : 데이터베이스에 의 개체 타입과 개체 타입 간의 관계
- 논리적으로 표현될 대상으로서
- 제약 조건(Constraint) : 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건
데이터 모델 절차 : 요개논물
- 요구 사항 분석
- 개념적 설계 : 사용자의 트랜잭션을 모델링 하는 관계
- 논리적 설계 : 트랜잭션의 인터페이스를 설계하는 단계
- 물리적 설계 : 논리 데이터 모델을 특정 DBMS의 특성 및 성능을 고려하여 물리적인 스키마를 만드는 단계
논리 데이터 모델링 속성 : 개속관
- 개체(Entity) : 관리할 대상이 되는 실체
- 속성(Attribute) : 관리할 정보의 구체적 항목
- 관계(Relationship) : 개체 간의 대응 관계
개체-관계(E-R) 모델
- 현실 세계에 존재하는 데이터와 그들 간의 관계를 사람이 이해할 수 있는 형태로 명확하게 표현하기 위해서 가장 널리 사용되고 있는 모델
정규화(Normalization)
- 관계형 데이터 모델에서 데이터의 을 제거하여 을 방지하고, 데이터의 과 을 유지하기 위해 하는 과정이상 현상정확성
- 무손실 분해
- 일관성
- 중복성
- 정규화 단계 : 원부이결다조
- 1정규형(1NF) : 원자값으로 구성
- 2정규형(2NF) : 부분 함수 종속 제거 (완전 함수적 종속 관계)
- 3정규형(3NF) : 이행 함수 종속 제거
- 보이스-코드 정규형(BCNF) : 결정자 후보 키가 아닌 함수 종속 제거
- 4정규형(4NF) : 다치(다중 값) 종속 제거
- 5정규형(5NF) : 조인 종속 제거
이상 현상(Anomaly)
- 데이터의 으로 인해 릴레이션을 조작할 때 발생하는 비합리적인 현상
- 중복성
- 종류 : 삽삭갱
- 삽입 이상(Insertion Anomaly) : 정보 저장 시 해당 정보의 불필요한 세부정보를 입력해야 하는 경우
- 삭제 이상(Deletion Anomaly) : 정보 삭제 시 원치 않는 다른 정보가 같이 삭제되는 경우
- 갱신 이상(Update Anomaly) : 중복 데이터 중에서 특정 부분만 수정되어 중복된 값이 모순을 일으키는 경우
반 정규화(De-Normalization)
- 정규화된 엔티티, 속성, 관계에 대해 과 를 위해 등을 수행하는 데이터 모델링 기법개발 운영의 단순화
- 중복, 통합, 분리
- 성능 향상
- 반 정규화 기법
- 테이블 병합
- 테이블 분할
- 수평 분할
- 수직 분할
- 중복 테이블 추가
- 집계 테이블 추가
- 진행 테이블 추가
- 특정 부분만을 포함하는 테이블 추가
- 컬럼 중복화
- 중복 관계 추가
인덱스(Index)
- 검색 연산의 최적화를 위해 데이터베이스 내 열에 대한 정보를 구성한 데이터 구조
인덱스 종류 : 순해비함 단결클
- 순서 인덱스(Ordered Index) : 데이터가 정렬된 순서로 생성되는 인덱스
- 해시 인덱스(Hash Index) : 해시 함수에 의해 직접 데이터에 키 값으로 접근하는 인덱스
- 비트맵 인덱스(Bitmap Index) : 각 컬럼에 적은 개수 값이 저장된 경우 선택하는 인덱스
- 함수기반 인덱스(Functional Index) : 수식이나 함수를 적용하여 만든 인덱스
- 단일 인덱스(Singled Index) : 하나의 컬럼으로만 구성한 인덱스
- 결합 인덱스(Concatenated Index) : 두 개 이상의 컬럼으로 구성한 인덱스
- 클러스터드 인덱스(Clustered Index) : 기본 키(PK) 기준으로 레코드를 묶어서 저장하는 인덱스
인덱스 스캔 방식
- 인덱스 범위 스캔(Index Range Scan)
- 인덱스 전체 스캔(Index Full Scan)
- 인덱스 단일 스캔(Index Unique Scan)
- 인덱스 생략 스캔(Index Skip Scan)
파티션(Partition)
- 파티션의 종류 : 레해리컴라
- 레인지 파티셔닝(Range Partitioning) : 연속적인 숫자나 날짜를 기준으로 하는 파티셔닝 기법
- 해시 파티셔닝(Hash Partitioning) : 파티션 키의 해시 값에 의한 파티셔닝 기법
- 리스트 파티셔닝(List Partitioning) : 특정 파티션에 저장 될 데이터에 대한 명시적 제어가 가능한 파티셔닝 기법
- 컴포지트 파티셔닝(Composite Partitioning) : 레인지 파티셔닝, 해시 파티셔닝, 리스트 파티셔닝 중 2개 이상의 파티셔닝을 결합하는 파티셔닝 기법
- 라운드로빈 파티셔닝(Round-Robin Partitioning) : 라운드로빈 분할로 회전하면서 새로운 행이 파티션에 할당되는 방식
- 파티션의 장점 : 성가백합
- 성능 향상
- 가용성 향상
- 백업 가능
- 경합 감소
데이터베이스(Database)
- 다수의 인원, 시스템 또는 프로그램이 사용할 목적으로 통합하여 관리되는 데이터 집합
- 데이터베이스의 정의 : 통저운공
- 통합된 데이터(Integrated Data) : 자료의 중복을 배제한 데이터의 모임
- 저장된 데이터(Stored Data) : 저장 매체에 저장된 데이터
- 운영 데이터(Operational Data) : 조직의 업무를 수행하는 데 필요한 데이터
- 공용 데이터(Stored Data) : 여러 애플리케이션, 시스템들이 공동으로 사용하는 데이터
- 데이터베이스 특성
- 실시간 접근성(Real-Time Accessibility)
- 계속적인 변화(Continuous Evolution)
- 동시 공용(Concurrent Sharing)
- 내용 참조(Content Reference)
- 데이터베이스 종류
- 파일 시스템(File System)
- 파일에 이름을 부여하고 저장이나 검색을 위하여 논리저으로 그것들을 어디에 위치시켜야 하는지 드을 정의한 뒤 관리하는 데이터베이스 전 단계의 관리 방식
- 종류
- ISAM(Indexed Sequential Access Method) : 자료 내용은 주 저장부, 자료의 색인은 자료가 기록된 위치와 함께 색인부에 기록되는 시스템
- VSAM(Virtual Storage Access Method) : 대형 운영체제에서 사용되는 파일 관리 시스템
- 관계형 데이터베이스 관리 시스템(RDBMS; Relational DataBase Management System)
- 관계형 모델을 기반으로 하는 가장 보편화된 데이터베이스 관리 시스템
- 계층형 데이터베이스 관리 시스템(HDBMS; Hierarchical DataBase Management System)
- 데이터를 상하 종속적인 관계로 계층화하여 관리하는 데이터베이스
- 네트워크 데이터베이스 관리 시스템(NDBMS; Network DataBase Management System)
- 데이터의 구조를 네트워크상의 망상 형태로 표현한 데이터 모델
- 파일 시스템(File System)
DBMS(DataBase Management System)
- 데이터 관리의 복잡성을 해결하는 동시에 데이터 추가, 변경, 검색, 삭제 및 백업, 복구, 보안 등의 기능을 지원하는 소프트웨어
- 유형 : 키컬도그
- 키-값(Key-Value) DBMS
- 컬럼 기반 데이터 저장(Column Family Data Store) DBMS
- 문서 저장(Document Store) DBMS
- 그래프(Graph) DBMS
- 특징
- 데이터 무결성
- 데이터 일관성
- 데이터 회복성
- 데이터 보안성
- 데이터 효율성
빅 데이터(Big Data)
- 시스템, 서비스, 조직(회사) 등에서 주어진 비용, 시간 내에 처리 가능한 데이터 범위를 넘어서는 수십 페타바이트(PB) 크기의 비정형 데이터
- 빅 데이터 특성
- 데이터의 양(Volume) (3V)
- 데이터의 다양성(Variety) (3V)
- 데이터의 속도(Velocity) (3V)
- 데이터의 진실성(Veracity) (5V)
- 데이터의 가치(Value) (5V)
- 데이터의 정확성(Validity) (7V)
- 데이터의 휘발성(Volatility) (7V)
NoSQL
- 전통적인 RDBMS와 다른 DBMS를 저장하기 위한 용어로, 데이터 저장에 고정된 테이블 스키마가 필요하지 않고 조인(Join) 연산을 사용할 수 없으며 수평적으로 확장 가능한 DBMS
- 특성
- Basically Available
- Soft-State
- Eventually Consistency
- 유형
- Key-Value Store
- Column Family Data Store
- Document Store
데이터 마이닝(Data Mining)
- 대규모로 저장된 데이터 안에서 체계적이고 자동적으로 통계적 규칙이나 패턴을 찾아내는 기술
- 주요 기법 ; 분연 연데
- 분류 규칙(Classification) : 과거 데이터로부터 특성을 찾아내어 분류모형을 만들어 이를 토대로 새로운 레코드의 결과값을 예측하는 기법
- 연관 규칙(Association) : 데이터 안에 존재하는 항목들 간의 종속 관계를 찾아내는 기법
- 연속 규칙(Sequence) : 연관 규칙에 시간 관련 정보가 포함된 형태의 기법
- 데이터 군집화(Clustering) : 대상 레코드들을 유사한 특성을 지닌 몇 개의 소그룹으로 분할하는 작업
관계 대수
- 관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 정형 언어
일반 집합 연산자 : 합교차카
- 합집합(Union) ∪
- 교집합(Intersection) ∩
- 차집합(Difference) -
- 카티션 프로덕트(Cartesian Product) ×
순수 관계 연산자 : 셀프조디
- Select σ
- Project π
- Join ▷◁
- Division ÷
03. 통합 구현
XML(eXtensible Markup Language)
- 특수한 목적을 갖는 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어
- 웹브라우저 간 HTML 문법이 호환되지 않는 문제와 SGML의 복잡함을 해결하기 위하여 개발되었다.
- SGML(Stand Generalized Markup Language) : 텍스트, 이미지, 오디오 및 비디오 등을 포함하는 멀티미디어 전자문서들을 다른 기종의 시스템들과 정보의 손실 없이 효율적으로 전송, 저장 및 자동 처리하기 위한 언어
- 사용자가 직접 문서의 태그(Tag)를 정의할 수 있으며, 다른 사용자가 정의한 태그를 사용할 수 있다.
- 트리 구조로 구성되어 있어 상위 태그는 여러 개의 하위 태그를 가질 수 있다.
SOAP(Simple Object Access Protocol)
- 컴퓨터
- 네트워크 상에서 HTTP/HTTPS, SMTP 등을 이용하여 XML을 교환하기 위한 통신 규약
- 웹 서비스에서 사용되는 메시지의 형식과 처리 방법을 지정한다.
- 기본적으로 HTTP 기반에서 동작하기 때문에 프록시와 방화벽의 영향 없이 통신할 수 있다.
- 최근에는 무거운 구조의 SOAP 대신, RESTful 프로토콜을 이용하기도 한다.
- RESTful 프로토콜 : HTTP와 REST(Representational State Transfer)의 원칙을 사용하여 구현되는 웹 서비스로, HTTP로 자원을 관리하는데 사용되는 웹 서비스 API의 집합
WSDL(Web Services Description Language)
- 웹 서비스와 관련된 서식이나 프로토콜 등을 표준적인 방법으로 기술하고 게시하기 위한 언어
- XML로 작성되며, UDDI의 기초가 된다.
- UDDI(Universal Description, Discovery and Integration) : 인터넷에서 전 세계의 비즈니스 업체 목록에 자신의 정보를 등록하기 위한 확장성 생성 언어(XML) 기반의 규격
- SOAP, XML 스키마와 결합하여 인터넷에서 웹 서비스를 제공하기 위해 사용된다.
- 클라이언트는 WSDL 파일을 읽어 서버에서 어떠한 조작이 가능한지를 파악할 수 있다.
04. 서버 프로그램 구현
개발 도구의 분류 : 빌구테형
- 빌드 도구 : 작성한 코드의 빌드 및 배포를 수행하는 도구
- 구현 도구 : 개발자의 코드 작성과 디버깅, 수정 등과 같은 작업을 지원하는 도구
- 테스트 도구 : 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구
- 형상 관리 도구 : 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위한 도구
형상 관리(Configuration Management)
- 소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동
- 형상 관리 절차 : 식통감기
- 형상 식별
- 형상 통제
- 형상 감사
- 형상 기록
- 소프트웨어 형상 관리 도구 유형
- 공유 폴더 방식 (RCS, SCCS) : 매일 개발이 완료된 파일은 약속된 위치의 공유 폴더에 복사하는 방식
- 클라이언트/서버 방식 (CVS, SVN) : 중앙에 버전 관리 시스템을 항시 동작시키는 방식
- 분산 저장소 방식 (Git 등) : 로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 방식
- 소프트웨어 형상 관리 도구별 특징
- CVS(Concurrent Versions System) : 서버와 클라이언트로 구성되어 있고, 다수의 인원이 동시에 범용적인 운영체제로 접근 가능한 형상 관리 도구
- SVN(Subversion) : 하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있게 도와주는 도구
- RCS(Revision Control System) : CVS와 달리 소스 파일의 수정을 한 사람만으로 제한하여 다수의 사람이 파일의 수정을 동시에 할 수 없도록 파일 잠금 방식으로 형상을 관리하는 도구
- Bitkeeper : SVN과 비슷한 중앙 통제 방식으로 대규모 프로젝트에서 빠른 속도를 내도록 개발된 형상 관리 도구
- Git : Git의 속도에 중점을 둔 분산형 버전 관리 시스템이며, 대형 프로젝트에 효과적이고 유용
- Clear Case : 복수 서버, 복수 클라이언트 구조이며 서버가 부족할 때 필요한 서버를 하나씩 추가하여 확장성을 기할 수 있음.
모듈(Module)
- 그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체
모듈화(Modularity)
- 소프트웨어의 성능을 향상시키거나 복잡한 시스템의 수정, 재사용, 유지 관리 등이 용이하도록 기능 단위의 모듈로 분해하는 설계 및 구현 기법
- 기법
- 루틴(Routine) : 소프트웨어에서 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령들의 모임
- 메인 루틴(Main Routine) : 프로그램의 주요한 부분이며, 전체의 개략적인 동작 절차를 표시하도록 만들어진 루틴
- 서브 루틴(Subroutine) : 메인 루틴에 의해 필요할 때마다 호출되는 루틴
응집도(Cohesion)
- 모듈의 독립성을 나타내는 정도로, 도
- 모듈 내부 구성요소 간 연관 정
응집도의 유형 : 우논시절 통순기
- 우연적 응집도(Coincidental Cohesion) : 모듈 내부의 각 구성요소가 연관이 없을 경우의 응집도
- 논리적 응집도(Logical Cohesion) : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도
- 시간적 응집도(Temporal Cohesion) : 연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도
- 절차적 응집도(Procedural Cohesion) : 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
- 통신적 응집도(Communication Cohesion) : 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우의 응집도
- 순차적 응집도(Sequential Cohesion) : 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우의 응집도
- 기능적 응집도(Functional Cohesion) : 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도
밑으로 내려갈수록 응집도가 높아짐. (좋은 품질)
결합도(Coupling)
- 모듈 내부가 아닌 또는모듈 간의 상호의존성
- 외부의 모듈과의 연관도
- 트웨어 구조에서 모듈 간의 관련성을 측정하는 척도
결합도의 유형 : 내공 외제 스자
- 내용 결합도(Content Coupling) : 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
- 공통 결합도(Common Coupling) : 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호 작용하는 경우의 결합도
- 외부 결합도(External Coupling) : 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜 또는 디바이스 인터페이스를 공유할 경우의 결합도
- 제어 결합도(Control Coupling) : 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우의 결합도
- 스탬프 결합도(Stamp Coupling) : 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도
- 자료 결합도(Data Coupling) : 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어난 경우의 결합도
밑으로 내려갈수록 결합도가 낮아짐. (좋은 품질)
팬인(Fan-In) / 팬아웃(Fan-Out)
- 팬인(Fan-In) : 어떤 모듈을 제어(호출)하는 모듈의 수
- 펜아웃(Fan-Out) : 어떤 모듈에 의해 제어(호출)되는 모듈의 수
공통 모듈 테스트
- 화이트박스 테스트 : 응용 프로그램 을 검사하는 소프트웨어 테스트 방식
- 내부 구조와 동작
- 메서드 기반 테스트 : 공통 모듈의 외부에 공개된 메서드 기반의 테스트
- 화면 기반 테스트 : 사용자용 화면이 있는 경우, 각각의 화면 단위로 단위 모듈을 개발 후에 화면에 직접 데이터를 입력하여 테스트를 수행
- 테스트 드라이버(Driver) / 테스트 스텁(Stub) 활용 테스트 : 기능을 테스트할 수 있는 화면 또는 하위 모듈이 구현되지 않은 경우 테스트 드라이버, 테스트 스텁을 통해 테스트 수행
배치 프로그램(Batch Program)
- 사용자와의 상호 작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 방식
배치 프로그램의 유형 : 이온정
- 이벤트 배치 : 시 자동으로 실행
- 사전에 정의해 둔 조건 충족
- 온디맨드 배치 : 마다 실행
- 사용자의 명시적 요구가 있을 때
- 정기 배치 : 에 으로 실행정기적
- 정해진 시점(주로 야간)
배치 스케줄러(Batch Scheduler)
- 일괄 처리(Batch Processing)를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구
- 종류
- 스프링 배치(Spring Batch) : 스프링 프레임워크의 DI, AOP, 서비스 추상화 등 스프링 프레임워크의 3대 요소를 모두 사용할 수 있는 대용량 처리를 제공하는 스케줄러 배치 애플리케이션
- 쿼츠 스케줄러(Quartz Scheduler) : 스프링 프레임워크에 플러그인되어 수행하는 작업(Job)과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈 소스 기반 스케줄러
Cron 표현식 : 초분시일 월요연
- 초 / 분 / 시 / 일 / 월 / 요 / 연
- 월은 1~12로 표기
- 요일은 0: 일요일, 6: 토요일
05. 인터페이스 구현
인터페이스 명세서
- 데이터의 송수신 시스템 간의 데이터 저장과 속성 등의 상세 내역을 포함한다.
인터페이스 명세서 주요 항목 : 인최 크시데
- 인터페이스 ID
- 최대 처리 횟수
- 데이터 크기(평균/최대)
- 시스템 정보
- 데이터 정보
상세 기능별 인터페이스 명세서 주요 항목 : 아명오개 전후파반
- 인터페이스 ID
- 인터페이스명
- 오퍼레이션명
- 오퍼레이션 개요
- 사전 조건
- 사후 조건
- 파라미터
- 반환 값
EAI(Enterprise Application Intergation)
- 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간의 정보를 전달, 연계, 통합이 가능하도록 해주는 솔루션
- EAI 구축 유형 : 포허 메하
- 포인트 투 포인트(Point-to-Point) : 가장 기초적인 애플리케이션 통합 방법으로 방법
- 1:1 단순 통합
- 허브 앤 스포크(Hub & Spoke) : 단일한 접점의 을 통하여 데이터를 전송하는 방식중앙 집중식
- 허브 시스템
- 메시지 버스(Message Bus) : 애플리케이션 사이 를 두어 연계하는 방식미들웨어 통합
- 미들웨어(버스)
- 하이브리드(Hybrid) : 그룹 내부는 방식을 사용하고, 그룹 간에는 방식을 사용하는 통합 방식메시지 버스
- 허브 앤 스포크
ESB(Enterprise Service Bus)
- 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션들 간을 할 수 있도록 을 지향하는 아키텍처서비스 중심의 통합
- 하나의 시스템으로 관리 운영
- 버스를 중심으로 각각 프로토콜이 호환할 수 있도록 애플리케이션의 통합을으로 지원한다.
- 느슨한 결합 방식
JSON(JavaScript Object Notation)
- 속성-값 쌍(Attribute-Value Pair) 또는 "키-값 쌍"으로 이루어진 데이터 오브제트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷
- AJAX(Asynchronous JavaScript and XML)에서 많이 사용되고 XML(eXtensible Markup Language)을 대체하는 주요 데이터 포멧
XML(eXtensible Markup Language)
- HTML의 단점을 보완한 인터넷 언어로, SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어
- 송수신 시스템 간 데이터 연계의 편의성을 위해서 전송되는 데이터 구조를 동일한 형태로 정의한다
- 사용자가 직접 문서의 태그를 정의할 수 있다.
AJAX(Asynchronous Javascript And XML)
- 자바스크립트를 사용하여 웹 서버와 클라이언트 간 으로 XML 데이터를 교환하고 조작하기 위한 웹 기술
- 비동기적
- 브라우저가 가지고 있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 로드하지 않고 하는 기법
- 필요한 일부 페이지의 데이터만을 로드
- AJAX의 주요 기술
- XMLHttpRequest
- 웹 브라우저와 웹 서버 간에 메서드가 데이터를 전송하는 객체 폼의 API
- 비동기 통신을 담당하는 자바스크립트 객체
- JavaScript
- XML(eXtensible Markup Language)
- DOM(Document Object Model)
- XSLT(eXtensible Stylesheet Language Transformatons)
- XML 문서를 다른 XML 문서로 변환하는 데 사용하는 XML 언어
- W3C에서 제정한 표준으로 XML 변환 언어를 사용하여 XML 문서로 바꿔주며, 탐색하기 위해 XPath를 사용
- HTML(HyperText Markup Language)
- CSS(Cascading Style Sheets)
- XMLHttpRequest
REST(Representational State Transfer)
- 웹과 같은 에서 자원의 존재/상태 정보를 표준화된 HTTP 메서드로 주고받는 웹 아키텍처
- 분산 하이퍼미디어 환경
- 웹의 창시자(HTTP) 중 한 사람인 Roy Fielding의 2000년 논문에 의해서 소개되었다.
- 크게 3가지 요소로 구성된다.
- 리소스(자원), 메서드(처리), 메시지
시큐어 코딩 가이드 적용 대상 : 입보시 에코캡아
- 입력 데이터 검증 및 표현
- 보안 기능
- 시간 및 상태
- 에러 처리
- 코드 오류
- 캡슐화
- API 오용
데이터베이스 암호화 알고리즘 유형 : 대비해
- 대칭 키 암호화 알고리즘
- 암복호화에 같은 암호 키를 쓰는 알고리즘
- 예) ARIA 128/192/256, SEED
- 비대칭 키 암호화 알고리즘
- 공개키는 누구나 알 수 있지만, 그에 대응하는 비밀키는 키의 소유자만이 알 수 있도록, 공개키와 비밀키를 사용하는 알고리즘
- 예) RSA, ECC, ECDSA
- 해시 암호화 알고리즘
- 해시값으로 원래 입력값을 찾아낼 수 없는 일방향성의 특성을 가진 알고리즘
- 예) SHA-256/384/512, HAS-160
데이터베이스 암호화 기법 : 애플티하
- API 방식 : 애플리케이션 레벨에서 암호 모듈(API)을 적용하는 애플리케이션 수정 방식
- Plug-In 방식 : 암복호화 모듈이 DB 서버에 설치된 방식
- TDE 방식 : DB 서버의 DBMS 커널이 자체적으로 암복호화 기능을 수행하는 방식
- Hybrid 방식 : API 방식과 Plug-In 방식을 결합하는 방식
IPSec(IP Security)
- IP 계층(3계층)에서 무결성과 인증을 보장하는 와 기밀성을 보장하는 를 이용하여 하는 프로토콜암호화(ESP)터널링
- 양 종단 간(End Point) 구간에 보안 서비스를 제공
- 인증 헤더(AH)
- 동작 모드 : 전송(Transport) 모드, 터널(Tunnel) 모드
- 주요 프로토콜 : AH, ESP, IKE(키 교환)
- IPSec 정책 : SPD, SAD
SSL/TLS
- 전송 계층(4계층)과 응용 계층(7계층) 사이에서 의 웹 데이터 암호화(기밀성), 상호 인증 및 전송 시 하는 보안 프로토콜데이터 무결성을 보장
- 클라이언트와 서버 간
- 인증 모드 : 익명 모드, 서버 인증 모드, 클라이언트-서버 인증 모드
- 다양한 암호 기술 적용
- Https://~ 표시 형식과 443 포트 사용
S-HTTP(Secure HyperText Transfer Protocol)
- 웹 상에서 하는 주요 방법 중 하나로서 하여 전송클라이언트와 서버 간에 전송되는 모든 메시지를 각각 암호화
- 네트워크 트래픽을 암호화
- S-HTTP 서버 접속 시 shttp:// URL 사용
인터페이스 구현 검증 도구 : 엑스피 엔셀웨
- xUnit : 하는 단위 테스트 프레임워크
- Java(Junit), C++(Cppunit) .NET(Nunit) 등 다양한 언어를 지원
- STAF : 등 다양한 환경을 지원하는 테스트 프레임워크
- 서비스 호출 및 컴포넌트 재사용
- FitNesse : 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임워크
- 웹 기반 테스트 케이스
- NTAF : 의 장점인 협업기능과 의 장점인 재사용 및 확장성을 통합한 의 테스트 자동화 프레임워크STAF
- NHN(Naver)
- FitNesse
- Selenium : 다양한 브라우저 및 개발 언어를 지원하는 애플리케이션 테스트 프레임워크
- 웹
- watir : 하는 애플리케이션 테스트 프레임워크
- Ruby를 사용
06. 화면 설계
사용자 인터페이스(UI; User Interface)
- 사용자와 시스템 사이에서 의사소통할 수 있도록 고안된 물리적, 가상의 매개체 (넓은 의미)
- 정보 기기나 소프트웨어의 화면 등에서 사람이 접하게 되는 화면 (좁은 의미)
UI 유형 : CG NO
- CLI(Command Line Interface) : 명령어를 텍스트로 입력하여 조작하는 사용자 인터페이스
- GUI(Graphical User Interface) : 그래픽 환경을 기반으로 한 마우스나 전자펜을 이용하는 사용자 인터페이스
- NUI(Natural User Interface) : 키보드나 마우스 없이 하는 사용자 인터페이스
- 신체 부위를 이용
- OUI(Organic User Interface) : 할 수 있는 인터페이스
- 현실에 존재하는 모든 사물이 입출력장치로 변화
UI 설계 원칙 : 직유학유
- 직관성(Intuitiveness) : 누구나 쉽게 이해하고, 쉽게 사용할 수 있어야 함.
- 유효성(Efficiency) : 정확하고 완벽하게 사용자의 목표가 달성될 수 있도록 제작
- 학습성(Learnability) : 초보와 숙련자 모두가 쉽게 배우고 사용할 수 있게 제작
- 유연성(Flexibility) : 사용자의 요구사항을 최대한 수용하고 실수를 방지할 수 있도록 제작
UI 설계 지침 : 사일단결 가표접명오
- 사용자 중심 : 사용자가 이해하기 쉽고 편하게 사용할 수 있는 환경을 제공하며, 실사용자에 대한 이해가 바탕이 되어야 함.
- 일관성 : 버튼이나 조작 방법을 사용자가 기억하기 쉽고 빠르게 습득할 수 있도록 설계해야 함.
- 단순성 : 조작 방법은 가장 간단하게 작동되도록 하여 인지적 부담 최소화
- 결과 예측 가능 : 작동시킬 기능만 보고도 결과 예측이 가능해야 함.
- 가시성 : 주요 기능을 메인 화면에 노출하여 쉬운 조작이 가능해야 함.
- 표준화 : 디자인을 표준화하여 기능구조의 선행 학습 이후 쉽게 사용 가능해야 함.
- 접근성 : 사용자의 직무, 연령, 성별 등이 고려된 다양한 계층을 수용해야 함.
- 명확성 : 사용자가 개념적으로 쉽게 인지해야 함.
- 오류 발생 해결 : 사용자가 오류에 대한 상황을 정확하게 인지할 수 있어야 함.
UI 요구사항
- 사용자가 정보시스템을 구축하여 얻고자 하는 최종 목적의 기준
- 구분
- 기능적 요구사항 : 시스템이 제공하는 기능, 서비스에 대한 요구사항
- 비기능적 요구사항 : 사용성, 효율성, 신뢰성, 유지보수성, 재사용성 등 품질에 관한 요구사항
UI 품질 요구사항 : 기신사효유이
- 기능성(Functionality)
- 실제 수행 결과와 품질 요구사항과의 차이를 분석하고, 실제 사용 시 정확하지 않은 결과가 발생할 확률과 관련한여 시스템의 동작을 관찰하기 위한 품질 기준
- 상세 품질 요구사항
- 적절성(Suitability)
- 정밀성(Accuracy)
- 상호 운용성(Interoperability)
- 보안성(Security)
- 호환성(Compliance)
- 신뢰성(Reliability)
- 시스템이 일정한 시간 또는 작동되는 시간 동안 의도하는 기능을 수행함을 보증하는 품질 기준
- 상세 품질 요구사항
- 성숙성(Maturity)
- 고장 허용성(Fault Tolerance)
- 회복성(Recoverability)
- 사용성(Usability)
- 사용자와 컴퓨터 사이에 발생하는 어떠한 행위를 정확하고 쉽게 인지할 수 있는 품질 기준
- 상세 품질 요구사항
- 이해성(Understandability)
- 학습성(Learnability)
- 운용성(Operability)
- 효율성(Efficiency)
- 할당된 시간에 한정된 자원으로 얼마나 빨리 처리할 수 있는가에 대한 품질 기준
- 상세 품질 요구사항
- 시간 효율성(Time Behaviour)
- 자원 효율성(Resource Behaviour)
- 유지보수성(Maintainability)
- 요구사항을 개선하고 확장하는 데 있어 얼마나 용이한가에 대한 품질 기준
- 상세 품질 요구사항
- 분석성(Analyzability)
- 변경성(Changeability)
- 안정성(Stability)
- 시험성(Testability)
- 이식성(Portability)
- 다른 플랫폼(운영체제)에서도 많은 추가 작업 없이 얼마나 쉽게 적용이 가능한가에 대한 품질 기준
- 상세 품질 요구사항
- 적용성(Adaptability)
- 설치성(Installability)
- 대체성(Replaceability)
UI 표준
- 디자인 철학과 원칙 기반하에 전체 시스템에 공통으로 적용되는 화면 간 이동, 화면 구성 등에 관한 규약
- UI 표준 구성 : 액정 스패조
- 전체적인 UX 원칙
- 정책 및 철학
- UI 스타일 가이드
- UI 패턴 모델 정의
- UI 표준 수립을 위한 조직 구성
UI 개발을 위한 주요 기법
- 3C 분석 : , 경쟁하고 있는 의 를 비교하고 분석하여 자사를 어떻게 차별화해서 경쟁에서 이길 것인가를 분석하는 기법자사(Company)
- 경쟁사(Competitor)
- 고객(Customer)
- SWOT 분석 : 기업의 내부 환경과 외부 환경을 분석하여 요인을 규정하고 이를 토대로 경영 전략을 수립하는 방법
- Strength(강점), Weakness(약점), Opportunity(기회), Threat(위협)
- 시나리오 플래닝(Scenario Planning) : 불확실성이 높은 상호아 변화를 사전에 예측하고 다양한 시나리오를 설계하는 방법
- 사용성 테스트(Usability Test) : 사용자가 직접 제품을 사용하면서 미리 작성된 시나리오에 맞추어 과제를 수행한 후 질문에 답하도록 하는 테스트
- 워크숍(Workshop) : 소집단 정도의 인원으로 특정 문제나 과제에 대한 새로운 지식, 기술, 아이디어, 방법들을 서로 교환하고 검토하는 연구회 및 세미나
UI 화면 설계 구분 : 와스프
- 와이어프레임(Wireframe) : 이해 관계자들과의 화면구성을 협의하거나 서비스의 간략한 흐름을 공유하기 위해 하는 작업
- 화면 단위의 레이아웃을 설계
- 스토리보드(Storyboard) : 정책, 프로세스, 콘텐츠 구성, 와이어프레임(UI, UX), 기능 정의, 데이터베이스 연동 등 서비스 구축을 위한
- 모든 정보가 담겨 있는 설계 산출물
- 프로토타입(Prototype) : 정적인 화면으로 설계된 와이어프레임 또는 스토리보드에 하여 실제 구현된 것처럼 시뮬레이션 할 수 있는 모형
- 유형
- 아날로그 프로토타입 : 종이와 펜을 활용하여 화면의 구조를 스케치하는 프로토타입
- 디지털 프로토타입 : 디지털 편집기, HTML 등의 프로토타이핑 도구를 사용해 화면의 구조를 만드는 프로토타입
- 유형
- 동적 효과를 적용
UML(Unified Modeling Language)
- 객체 지향 소프트웨어 개발 과정에서 산출물을 명세화, 시각화, 문서화할 때 사용되는 모델링 기술과 방법론을 통합해서 만든 표준화된 범용 모델링 언어
UML의 특징 : 가구명문
- 가시화 언어 : 개념 모델 작성 시 오류가 적고 의사소통이 용이
- 구축 언어 : 다양한 프로그래밍 언어로 실행 시스템의 예측 가능
- 명세화 언어 : 정확한 모델 제시, 완전한 모델 작성 가능
- 문서화 언어 : 시스템에 대한 평가 및 의사소통의 문서
UML의 구성요소 : 사관다
- 사물(Things) : 추상적인 개념으로 주제를 나타내는 요소
- 관계(Relationships) : 사물의 의미를 확장하고 명확히 하는 요소
- 다이어그램(Diagram) : 사물과 관계를 모아 그림으로 표현한 형태
UML 다이어그램
- 구조적 다이어그램(Structural Diagram) / 정적 다이어그램(Static Diagram) : 클객 컴배 복패
- 클래스(Class) : 객체 지향 모델링 시 를 표현
- 클래스의 속성 및 연산과 클래스 간 정적인 관계
- 객체(Object) : 클래스에 속한 사물(객체)들, 즉 를 특정 시점의 객체와 객체 사이의 관계로 표현
- 인스턴스(Instance)
- 컴포넌트(Component) : 시스템을 구성하는 와 그들 사이의 의존 관계를 표현
- 물리적인 컴포넌트
- 배치(Deployment) : 을 표현하고, 결과물, 프로세스, 컴포넌트 등 를 표현물리적 요소들의 위치
- 컴포넌트 사이의 종속성
- 복합체 구조(Composite Structure) : 클래스나 컴포넌트가 를 갖는 경우 그 를 표현내부 구조
- 복합 구조
- 패키지(Package) : 유스케이스나 클래스 등의 모델 요소들을 그룹화한 를 표현
- 패키지들의 관계
- 행위적 다이어그램(Behavioral Diagram) / 동적 다이어그램(Dynamic Diagram) : 유시커 상활타
- 유스케이스(Usecase) : 시스템이 제공하고 있는 기능 및 그와 관련된 외부 요소를 에서 표현
- 사용자의 관점
- 시퀀스(Sequence) : 객체 간 동적 상호 작용을 으로 으로 표현메시지 흐름
- 시간적 개념을 중심
- 커뮤니케이션(Communication) : 동작에 참여하는 객체들이 하고, 메시지뿐만 아니라 객체 간의 연관까지 표현
- 주고받는 메시지를 표현
- 상태(State) : 하나의 객체가 자신이 속한 클래스의 혹은 다른 객체와의 상호 작용에 따라 표현상태가 어떻게 변화하는지
- 상태 변화
- 활동(Activity) : 를 객체의 이나 조건에 따른 을 표현처리 로직순서대로
- 처리의 흐름
- 시스템이 어떤 기능을 수행하는지
- 타이밍(Timing) : 객체 상태 변화와 을 명시적으로 표현
- 시간 제약
UML 스테레오 타입(Sterotype)
- <> : 하나의 유스케이스가 어떤 시점에 반드시 다른 유스케이스를 실행하는
- 포함 관계
- <> : 하나의 유스케이스가 어떤 시점에 다른 유스케이스를 실행할 수도 있고, 그렇지 않을 수도 있는
- 확장 관계
- <> : 모든 메서드가 추상 메서드이며 바로 인스턴스를 만들 수 없는 클래스로 추상 메서드와 상수만으로 구성된 클래스
- <> : 일반적으로 정보 또는 오래 지속되는 연관된 행위를 형상화하는 클래스로 유스케이스 처리 흐름이 수행되는 과정에서 기억 장치에 저장되어야 할 정보를 표현하는 클래스
- <> : 시스템과 외부 액터와의 상호 작용을 담당하는 클래스
- <> : 시스템이 제공하는 기능의 로직 및 제어를 담당하는 클래스
클래스 다이어그램
- 객체 지향 모델링 시 클래스의 속성 및 연산과 클래스 간 를 표현한 다이어그램
- 정적인 관계
클래스 다이어그램 구성요소
- 클래스(Class) : 공통의 속성, 연산(메서드), 관계, 의미를 공유하는 객체들의 집합
- 속성(Attribute) : 클래스의 구조적 특성에 이름을 붙인 것
- 연산(Operation), 메서드(Method) : 클래스의 행위적 특징
- 접근 제어자(Access Modifier)
- **** : 클래스 내부 접근만 허용 (private)
- + : 클래스 외부 접근을 허용 (public)
- # : 동일 패키지/파생 클래스에서 접근 가능 (protected)
- ~ : 동일 패키지 클래스에서 접근 가능 (default)
클래스 간의 관계 : 연의 일실 포집
- 연관(Association) 관계 : 클래스가 서로 개념적으로 연결된 선
- 의존(Dependency) 관계 : 하나의 클래스가 또 다른 클래스를 사용하는 관계
- 일반화(Generalization) 관계 : 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현
- 실체화(Realization) 관계 : 추상 클래스나 인터페이스를 상속받아 자식 클래스가 추상 메서드를 구현할 때 사용
- 포함(Composition) 관계 : 영구적이고 집합 관계보다 더 강한 관계로 구성
- 집합(Aggregation) 관계 : 하나의 객체에 여러 개의 독립적인 객체들이 구성되는 단계
유스케이스 다이어그램(Usecase Diagram)
- 시스템이 제공하고 있는 기능 및 그와 관련된 외부 요소를 사에서 표현하는 다이어그램
- 용자의 관점
유스케이스 다이어그램 구성요소
- 유스케이스(Usecase) : 시스템이 제공해야 하는 서비스, 기능
- 액터(Actor) : 용자가 시스템에 대해 수행하는 역할
- 시스템(System)
- 시나리오(Scenario)
- 이벤트의 흐름
유스케이스 다이어그램의 관계
- 포함(Include) 관계
- 확장(Extend) 관계
- 일반화(Generalization) 관계
시퀀스 다이어그램(Sequence Diagram)
- 객체 간 상호 작용을 메시지 흐름으로 표현한 다이어그램
시퀀스 다이어그램 구성요소
- 객체(Object)
- 생명선(Lifeline)
- 실행(Activation)
- 메시지(Message)
패키지 다이어그램(Package Diagram)
- 시스템의 서로 다른 패키지들 사이의 의존 관계를 표현하기 위한 다이어그램
패키지 다이어그램 구성요소
- 패키지
- 의존관계
활동 다이어그램(Activity Diagram)
- 시스템이 어떤 기능을 수행하는지를 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서대로 표현하는 다이어그램
활동 다이어그램 구성요소
- 시작점(Initial Node)
- 전이(Transition)
- 액션(Action) / 액티비티(Activity)
- 종료점(Final Node)
- 조건(판단) 노드(Decision Node)
- 병합 노드(Merge Node)
- 포크 노드(Fork Node)
- 조인 노드(Join Node)
- 구획면(Swim Lane)
상태 다이어그램(State Diagram)
- 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지 표현하는 다이어그램
상태 다이어그램 구성요소
- 상태(State)
- 시작 상태
- 종료 상태
- 전이
- 이벤트(Event)
- 전이 조건
커뮤니케이션 다이어그램(Communication Diagram)
- 시퀀스 다이어그램과 같이 동작에 참여하는 객체들이 주고받는 메시지를 표현하고, 메시지뿐만 아니라 객체 간의 연관 관계까지 표현하는 다이어그램
커뮤니케이션 다이어그램 구성요소
- 액터(Actor)
- 객체(Object)
- 링크(Link)
- 메시지(Message)
컴포넌트 다이어그램(Component Diagram)
- 시스템을 구성하는 물리적인 컴포넌트와 그들 사이의 의존 관계를 나타내는 다이어그램
컴포넌트 다이어그램 구성요소
- 컴포넌트
- 인터페이스
- 의존 관계
UI 시나리오 문서의 작성 요건 : 완일이가 추수
- 완전성(Complete) : UI 시나리오는 누락이 없어야 하고, 최대한 빠짐없이 가능한 한 상세하게 기술
- 일관성(Consistent) : 서비스에 대한 목표, 시스템 및 사용자의 요구사항에 일관성이 있어야 하고, 모든 문서의 UI 스타일을 일관적으로 구성
- 이해성(Understandable) : 처음 접하는 사람도 이해하기 쉽도록 구성하고 설명해야 하고, 이해하지 못하는 추상적인 표현이나 이해하기 어려운 용어는 사용하지 않아야 함.
- 가독성(Readable) : 문서를 쉽게 읽을 수 있어야 하고, 표준화도니 템플릿을 작성하요 사용
- 추적 용이성(Traceable) : 쉽게 추적이 가능해야 하고, 변경 사항들이 언제, 어디서, 어떤 부분들이 왜 발생하였는지 추적이 쉬워야 함.
- 수정 용이성(Modifiable) : 쉽게 변경이 가능해야 하고, 수정 또는 개선 사항을 시나리오에 반영하는 데 있어 쉽게 적용할 수 있어야 함.
07. 프로그래밍 언어 활용
객체 지향 프로그래밍의 구성 요소 : 객클메
- 객체(Object) : 개체, 속성, 메서드로 구성된 클래스의 인스턴스
- 클래스(Class) : 객체 지향 프로그래밍에서 객체를 표현하는 추상 데이터 타입으로 객체를 생성하는 틀
- 메시지(Message) : 객체 간의 통신
객체의 구성 요소 : 개속메
- 개체(Entity) : 현실 세계에 보이는 본질을 의미
- 속성(Attribute) : 자료 저장소 역할을 하며, 절차 지향 프로그래밍의 변수와 대응
- 메서드(Method) : 호출 단위를 의미하며, 절차 지향 프로그래밍의 함수와 대응
라이브러리(Library)
- 필요할 때 찾아서 쓸 수 있도록 모듈화되어 제공되는 프로그램
- 구성 : 도설샘
- 도움말
- 설치 파일
- 샘플 코드
- 종류
- 표준 라이브러리
- 외부 라이브러리
08. SQL 응용
트랜잭션(Transaction)
- 인가받지 않은 사용자로부터 데이터를 보장하기 위해 DBMS가 가져야 하는 특성
- 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위
트랜잭션의 특성 : ACID
- 원자성(Atomicity) : 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료(Commit)되든지 아니면 전혀 반영되지 않도록 복구(Rollback) 되어야 한다.
- 일관성(Consistency) : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환된다.
- 독립성(Isolation) : 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우, 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없음.
- 지속성(Durability) : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.
트랜잭션의 상태 : 활부완실철
- 활동(Active) : 초기 상태, 트랜잭션이 실행 중일 때 가지는 상태
- 부분 완료(Partially Commited) : 마지막 명령문이 실행된 후에 가지는 상태
- 완료(Committed) : 트랜잭션이 성공적으로 완료된 후 가지는 상태
- 실패(Failed) : 정상적인 실행이 더 이상 진행될 수 없을 때 가지는 상태
- 철회(Aborted) : 트랜잭션이 취소되고 데이터베이스가 트랜잭션 시작 전 상태로 환원된 상태
병행 제어(Concurrency Control)
- 다수 사용자 환경에서 여러 트랜잭션이 수행할 때, 데이터베이스 일관성 유지를 위해 상호 작용을 제어하는 기법
병행 제어의 목적
- 데이터베이스 공유 최대화
- 시스템의 활용도 최대화
- 데이터베이스의 일관성 유지
- 사용자에 대한 응답 시간 최소화
병행 제어 미보장 시 문제점 : 갱현모연
- 갱신 손실(Lost Update) : 먼저 실행된 트랜잭션의 결과를 나중에 실행된 트랜잭션이 덮어쓸 때 발생하는 오류
- 현황 파악 오류(Dirty Read) : 트랜잭션의 중간 수행 결과를 다른 트랜잭션이 참조하여 발생하는 오류
- 모순성(Inconsistency) : 두 트랜잭션이 동시에 실행되어 데이터베이스의 일관성이 결여되는 오류
- 연쇄복귀(Cascading Rollback) : 복수의 트랜잭션이 데이터 공유 시 특정 트랜잭션이 처리를 취소할 경우 트랜잭션이 처리한 곳의 부분을 취소하지 못하는 오류
병행 제어 기법의 종류 : 로 낙타다
- 로킹(Locking) : 같은 자원을 액세스하는 다중 트랜잭션 환경에서 DB의 일관성과 무결성을 유지하기 위해 트랜잭션의 순차적 진행을 보장하는 직렬화 기법
- 낙관적 검증(Optimistic Validation) : 트랜잭션이 어떠한 검증도 수행하지 않고 일단 트랜잭션을 수행하고, 트랜잭션 종료 시 검증을 수행하여 데이터베이스에 반영하는 기법
- 타임 스탬프 순서(Time Stamp Ordering) : 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 타임 스탬프(Time Stamp)를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법
- 다중버전 동시성 제어(MVCC; Multi Version Concurrency Control) : 트랜잭션의 타임스탬프와 접근하려는 데이터의 타임 스탬프를 비교하여 직렬 가능성이 보장되는 적절한 버전을 선택하여 접근하도록 하는 기법
회복 기법(Recovery)
- 트랜잭션을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업
회복 기법의 종류 : 회로체크
- 로그 기반 회복 기법(Log Based Recovery)
- 지연 갱신 회복 기법(Deferred Update) : 트랜잭션이 완료되기 전까지 데이터베이스에 기록하지 않는 기법
- 즉각 갱신 회복 기법(Immediate Update) : 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영하는 기법
- 체크 포인트 회복 기법(Checkpoint Recovery) : 장애 발생 시 검사점 이후에 처리된 트랜잭션에 대해서만 장애 발생 이전 상태로 복원시키는 회복 기법
- 그림자 페이징 회복 기법(Shadow Paging Recovery) : 데이터베이스 트랜잭션 수행 시 복제본을 생성하여 데이터베이스 장애 시 이를 이용해 복구하는 기법
옵티마이저(Optimizer)
- SQL을 가장 빠르고 효율적으로 수행할 최적의 처리 경로를 생성해주는 DBMS 내부의 핵심 엔진
옵티마이저의 유형
- RBO(Rule Based Optimizer) : 통계 정보가 없는 상태에서 사전 등록된 규칙에 따라 질의 실행 계획을 선택하는 옵티마이저 (규칙(우선순위) 기반)
- CBO(Cost Based Optimizer) : 통계 정보로부터 모든 접근 경로를 고려한 질의 실행 계획을 선택하는 옵티마이저 (비용 기반)
SQL 수행과정 내 옵티마이저 역할
- 쿼리 변환(Query Transform) : SQL을 좀 더 일반적이고 표준화된 형태로 변환
- 비용 산정(Estimator) : 쿼리 명령어 각 단계의 선택도, 카디널리티 ,비용을 계산
- 계획 생성(Plan Generator) : 하나의 쿼리를 수행 시 후보군이 될 만한 실행 계획들을 생성해내는 역할
DDL(Data Define Language, 데이터 정의어)
- DDL의 종류에는 CREATE, ALTER, DROP, TRUNCATE(크알드트)가 있다.
CREATE 문
- 도메인, 스키마, 테이블, 뷰, 인덱스 등을 정의한다.
- 도스테뷰인
/* 스키마 생성 */
CREATE SCHEMA 스키마명 AUTHORIZATION 사용자_id;
/* 도메인 생성 */
CREATE DOMAIN 도메인명 [AS] 데이터_타입
[DEFAULT 기본값]
[CONSTRAINT 제약조건명 CHECK (범위값)];
/* 테이블 생성 */
CREATE TABLE 테이블명
(속성명 데이터_타입 [DEFAULT 기본값] [NOT NULL], ...
[, PRIMARY KEY(기본키_속성명, ...)]
[, UNIQUE(대체키_속성명, ...)]
[, FOREIGN KEY(외래키_속성명, ...)]
[REFERENCES 참조테이블(기본키_속성명, ...)]
[ON DELETE 옵션]
[ON UPDATE 옵션]
[, CONSTRAINT 제약조건명] [CHECK(조건식)]);
/* 뷰 생성 */
CREATE VIEW 뷰명[(속성명[, 속성명, ...])]
AS SELECT문;
/* 인덱스 생성 */
CREATE [UNIQUE] INDEX 인덱스명
ON 테이블명(속성명 [ASC | DESC] [, 속성명 [ASC | DESC]])
[CLUSTER];
ALTER 문
- 테이블에 대한 정의를 변경한다.
ALTER TABLE 테이블명 ADD 속성명 데이터_타입 [DEFAULT '기본값']; /* 새로운 속성(열) 추가 */
ALTER TABLE 테이블명 ALTER 속성명 [SET DEFAULT '기본값']; /* 특정 속성의 Default 값 변경 */
ALTER TABLE 테이블명 DROP COLUMN 속성명 [CASCADE]; /* 특정 속성 삭제 */
DROP 문
- 스키마, 도메인, 기본 테이블, 뷰 테이블, 인덱스, 계약 조건 등을 제거한다.
DROP SCHEMA 스키마명 [CASCADE | RESTRICT]; /* 스키마 제거 */
DROP DOMAIN 도메인명 [CASCADE | RESTRICT]; /* 도메인 제거 */
DROP TABLE 테이블명 [CASCADE | RESTRICT]; /* 테이블 제거 */
DROP VIEW 뷰명 [CASCADE | RESTRICT]; /* 뷰 제거 */
DROP INDEX 인덱스명 [CASCADE | RESTRICT]; /* 인덱스 제거 */
DROP CONSTRAINT 제약조건명; /* 제약조건 제거 */
- CASCADE : 제거할 요소를 참조하는 다른 모든 개체를 함께 제거한다.
- RESTRICT : 다른 개체가 제거할 요소를 참조 중 일때는 제거를 취소한다.
TRUNCATE 문
- 테이블에서 모든 행을 삭제한다.
TRUNCATE [TABLE] 테이블명 [, 테이블명]
DCL(Data Control Language, 데이터 제어어)
- DCL의 종류에는 COMMIT, ROLLBACK, GRANT, REVOKE(커롤그래)가 있다.
GRANT / REVOKE 문
- GRANT 문 : 데이터베이스 관리자가 데이터베이스 사용자에게 권한을 부여한다.
- REVOKE 문 : 데이터베이스 관리자가 데이터베이스 사용자에게 부여한 권한을 취소한다.
- 사용자 등급 지정 및 해제
GRANT 사용자등급 TO 사용자_ID_리스트 [IDENTIFIED BY 암호];
REVOKE 사용자등급 FROM 사용자_ID_리스트;
- 테이블 및 속성에 대한 권한 부여 및 취소
- 그온투(GRANT 권한 ON 테이블 TO 사용자)
- 리온프(REVOKE 권한 ON 테이블 FROM 사용자)
GRANT 권한_리스트 ON 개체 TO 사용자 [WITH GRANT OPTION];
REVOKE [GRANT OPTION FOR] 권한_리스트 ON 개체 FROM 사용자 [CASCADE];
- 권한 종류 : ALL, SELECT, INSERT, DELETE, UPDATE, ALTER 등
COMMIT 문
- 트랜잭션 처리가 정상적으로 완료된 후, 트랜잭션이 수행한 내용을 데이터베이스에 반영한다.
/* <사원> 테이블에서 '사원번호'가 40인 사원의 정보를 삭제한 후, COMMIT을 수행 */
DELETE FROM 사원 WHERE 사원번호 = 40;
COMMIT;
ROLLBACK 문
- 변경되었으나 아직 COMMIT 되지 않은 모든 내용을 취소하고 데이터베이스를 이전 상태로 되돌린다.
/* SAVEPOINT 'S1'까지 ROLLBACK을 수행 */
ROLLBACK TO S1;
SAVEPOINT 문
- 트랜잭션 내에 ROLLBACK 할 위치인 을 지정한다.
- 저장점
/* SAVEPOINT 'S1'을 설정하고, '사원번호'가 20인 사원의 정보를 삭제 */
SAVEPOINT S1;
DELETE FROM 사원 WHERE 사원번호 = 20;
TCL(Transaction Control Language)
- TCL의 종류에는 COMMIT, ROLLBACK, SAVEPOINT/CHECKPOINT(커롤세(체))가 있다.
- 트랜잭션을 제어하는 용도로 사용된다.
DML(Data Manipulation Language, 데이터 조작어)
- DML의 종류에는 SELECT, INSERT, UPDATE, DELETE(세인업데)가 있다.
SELECT 문
- 테이블에서 튜플을 검색한다.
- 일반 형식
SELECT [PREDICATE] [테이블명.]속성명 [AS 별칭][, [테이블명.]속성명, ...] /* ※ */
[, 그룹함수(속성명) [AS 별칭]]
[, WINDOW함수 OVER (PARTITION BY 속성명1, 속성명2, ...
ORDER BY 속성명3, 속성명4, ...)]
FROM 테이블명[, 테이블명, ...] /* ※ */
[WHERE 조건] /* ※ */
[GROUP BY 속성명, 속성명, ...]
[HAVING 조건]
[ORDER BY 속성명 [ASC | DESC]]; /* ※ */
- LIKE 연산자
대표 문자 | % | _ | # |
---|---|---|---|
의미 | 모든 문자를 대표함. | 문자 하나를 대표함. | 숫자 하나를 대표함. |
- 그룹 함수 | |||
- GROUP BY 절에 지정된 그룹별로 속성의 값을 집계할 때 사용된다. |
함수 | 기능 |
---|---|
COUNT(속성명) | 그룹별 튜플 수를 구하는 함수 |
SUM(속성명) | 그룹별 합계를 구하는 함수 |
AVG(속성명) | 그룹별 평균을 구하는 함수 |
MAX(속성명) | 그룹별 최대값을 구하는 함수 |
MIN(속성명) | 그룹별 최소값을 구하는 함수 |
STDDEV(속성명) | 그룹별 표준편차를 구하는 함수 |
VARIANCE(속성명) | 그룹별 분산을 구하는 함수 |
ROLLUP(속성명, 속성명, ...) | - 인수로 주어진 속성을 대상으로 그룹별 소계를 구하는 함수- 속성의 개수가 $n$ 개이면 $n+1$ 레벨까지, 하위 레벨에서 상위 레벨 순으로 데이터가 집계됨. |
CUBE(속성명, 속성명, ...) | - ROLLUP과 유사한 형태이지만, CUBE는 인수로 주어진 속성을 대상으로 모든 조합의 그룹별 소계를 구함.- 속성의 개수가 $n$ 개이면 $2^n$ 레벨까지, 상위 레벨에서 하위레벨 순으로 데이터가 집계됨. |
- 집합 연산자를 이용한 통합 질의 |
SELECT 속성명1, 속성명2, ...
FROM 테이블명
UNION | UNION ALL | INTERSECT | EXCEPT
SELECT 속성명1, 속성명2, ...
FROM 테이블명
[ORDER BY 속성명 [ASC | DESC]];
집합 연산자 | 설명 | 집합 종류 |
---|---|---|
UNION | - 두 SELECT 문의 조회 결과를 통합하여 모두 출력함.- 중복된 행은 한 번만 출력함. | 합집합 |
UNION ALL | - 두 SELECT 문의 조회 결과를 통합하여 모두 출력함.- 중복된 행도 그대로 출력함. | 합집합 |
INTERSECT | 두 SELECT 문의 조회 결과 중, 공통된 행만 출력함. | 교집합 |
EXCEPT | 첫 번째 SELECT 문의 조회 결과에서 두 번째 SELECT 문의 조회 결과를 제외한 행을 출력함. | 차집합 |
INSERT 문
- 기본 테이블에 새로운 튜플을 삽입할 때 사용한다.
INSERT INTO 테이블명([속성명1, 속성명2, ...])VALUES (데이터1, 데이터2, ...);
UPDATE 문
- 기본 테이블에 있는 튜플들 중에서 특정 튜플(행)의 내용을 변경한다.
UPDATE 테이블명
SET 속성명 = 데이터[, 속성명=데이터, ...]
[WHERE 조건];
DELETE 문
- 기본 테이블에 있는 튜플들 중에서 특정 튜플(행)을 삭제한다.
- DELETE 문은 테이블 구조나 테이블 자체는 그대로 남겨 두고, 테이블 내의 튜플들만 삭제한다.
- 테이블을 완전히 제거하려면 DROP 문을 사용한다.
DELETE
FROM 테이블명
[WHERE 조건];
- 서브쿼리(Sub-Query)
- SQL 문 안에 포함된 또 다른 SQL 문
- 종류
- FROM 절 서브쿼리
- WHERE 절 서브쿼리
/* FROM 절 서브쿼리 */
SELECT MAX(가격)
FROM 도서가격 A, (SELECT 책번호 FROM 도서 WHERE 책명='자료구조') B
WHERE A.책번호 = B.책번호;
/* WHERE 절 서브쿼리 */
SELECT MAX(가격)
FROM 도서가격
WHERE 책번호 IN (SELECT 책번호 FROM 도서 WHERE 책명='자료구조');
JOIN
- 2개의 릴레이션에서 한다.
- 연관된 튜플들을 결합하여, 하나의 새로운 릴레이션을 반환
- 일반적으로 FROM 절에 기술하지만, 릴레이션이 사용되는 곳 어디에나 사용할 수 있다.
- 크게 INNER JOIN과 OUTER JOIN으로 구분된다.
INNER JOIN
EQUI JOIN
- JOIN 대상 테이블에서 공통 속성을 기준으로 '='(equal) 비교에 의해 같은 값을 가지는 행을 연결하여 결과를 생성하는 JOIN 방법
- EQUI JOIN에서 JOIN 조건이 '='일 때 동일한 속성이 2번 나타나게 되는데, 이 중 하는 방법을 NATURAL JOIN 이라고 한다.
- 중복된 속성을 제거하여 같은 속성을 한 번만 표기
- EQUI JOIN 에서 을 JOIN 속성이라고 한다.
- 연결 고리가 되는 공통 속성
- WHERE 절을 이용한 EQUI JOIN의 표기 형식
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1, 테이블명2, ...
WHERE 테이블명1.속성명 = 테이블명2.속성명;
- NATURAL JOIN 절을 이용한 EQUI JOIN 표기 형식
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 NATURAL JOIN 테이블명2;
- JOIN ~ USING 절을 이용한 EQUI JOIN 표기 형식
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 JOIN 테이블명2 USING(속성명);
NON-EQUI JOIN
- JOIN 조건에 '=' 조건이 아닌 나머지 비교 연산자, 즉 >, <, <>, >=, <= 연산자를 사용하는 JOIN 방법
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1, 테이블명2, ...
WHERE (NON-EQUI JOIN 조건);
OUTER JOIN
- 릴레이션에서 하기 위한 JOIN 방법
- JOIN 조건에 만족하지 않는 튜플도 결과로 출력
LEFT OUTER JOIN
- INNER JOIN의 결과를 구한 후, 우측 항 릴레이션의 어떤 튜플과도 맞지 않는 좌측 항의 릴레이션에 있는 튜플들에 NULL 값을 붙여서 INNER JOIN의 결과에 추가한다.
/* 방법 1 */
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 LEFT OUTER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명;
/* 방법 2 */
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1, 테이블명2
WHERE 테이블명1.속성명 = 테이블명2.속성명(+);
RIGHT OUTER JOIN
- INNER JOIN의 결과를 구한 후, 좌측 항 릴레이션의 어떤 튜플과도 맞지 않는 우측 항의 릴레이션에 있는 튜플들에 NULL 값을 붙여서 INNER JOIN 의 결과에 추가한다.
/* 방법 1 */
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 RIGHT OUTER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명;
/* 방법 2 */
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1, 테이블명2
WHERE 테이블명1.속성명(+) = 테이블명2.속성명;
FULL OUTER JOIN
- LEFT OUTER JOIN 과 RIGHT OUTER JOIN 을 합쳐 놓은 것
- INNER JOIN의 결과를 구한 후, 좌측 항의 릴레이션의 튜플들에 대해 우측 항의 릴레이션의 어떤 튜플과도 맞지 않는 튜플들에 NULL 값을 붙여서 INNER JOIN 의 결과에 추가한다.
- 그리고 유사하게 우측 항의 릴레이션의 튜플들에 대해 좌측 항의 릴레이션의 어떤 튜플과도 맞지 않는 튜플들에 NULL 값을 붙여서 INNER JOIN 의 결과에 추가한다.
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 FULL OUTER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명;
프로시저(PROCEDURE)
- 일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합
프로시저 구성 : 디비컨 SET
- 선언부(DECLARE)
- 시작/종료부(BEGIN/END)
- 제어부(CONTROL)
- SQL
- 예외부(EXCEPTION)
- 실행부(TRANSACTION)
프로시저 생성
- 프로시저를 생성하기 위해 CREATE PROCEDURE 명령어를 사용한다.
CREATE [OR REPLACE] PROCEDURE 프로시저명(파라미터)
[지역변수 선언]
BEGIN
프로시저 BODY;
END;
프로시저 실행
- 프로시저를 실행하기 위해서는 EXECUTE 명령어 또는 CALL 명령어를 사용하며, EXECUTE 명령어를 줄여서 EXEC 로 사용하기도 한다.
EXECUTE 프로시저명;
EXEC 프로시저명;
CALL 프로시저명;
프로시저 제거
- 프로시저를 제거하기 위해서 DROP PROCEDURE 명령어를 사용한다.
DROP PROCEDURE 프로시저명;
트리거(TRIGGER)
- 데이터베이스 시스템에서 데이터의 삽입(Insert), 갱신(Update), 삭제(Delete) 등의
- 이벤트(Event)가 발생할 때 관련 작업이 자동으로 수행되게 하는 절차형 SQL
- 트리거의 구문에는 DCL(데이터 제어어)을 사용할 수 없으며, DCL이 포함된 프로시저나 함수를 호출하는 경우에 오류가 발생한다.
트리거 구성 : 디이비컨 SE
- 선언부(DECLARE)
- 이벤트뷰(EVENT)
- 시작/종료부(BEGIN/END)
- 제어부(CONTROL)
- SQL
- 예외부(EXCEPTION)
트리거의 생성
- 트리거를 생성하기 위해서는 CREATE TRIGGER 명령어를 사용한다.
CREATE [OR REPLACE] TRIGGER 트리거명 [동작시기 옵션][동작 옵션] ON 테이블명
REFERENCING [NEW | OLD] AS 테이블명
FOR EACH ROW
[WHEN 조건식]
BEGIN
트리거 BODY;
END;
트리거의 제거
- 트리거를 제거하기 위해 DROP TRIGGER 명령어를 사용한다.
DROP TRIGGER 트리거명;
사용자 정의 함수
- 프로시저와 유사하게 SQL을 사용하여 일련의 작업을 연속적으로 처리하지만,
- 종료 시 처리 결과로 단일값만을 변환하는 절차형 SQL
- 데이터베이스에 저장되어 SELECT, INSERT, DELETE, UPDATE 등 DML 문의 호출에 의해 실행된다.
- 예약어 RETURN 을 통해 을 반환하며, 출력 파라미터가 없다.
- 단일값
사용자 정의 함수 구성 : 디비컨 SER
- 선언부(DECLARE)
- 시작/종료부(BEGIN/END)
- 제어부(CONTROL)
- SQL
- 예외부(EXCEPTION)
- 반환부(RETURN)
사용자 정의 함수 생성
- 사용자 정의 함수를 생성하기 위해 CREATE FUNCTION 명령어를 사용한다.
CREATE [OR REPLACE] FUNCTION 사용자 정의 함수명(파라미터)
[지역변수 선언]
BEGIN
사용자 정의 함수 BODY;
RETURN 반환값;
END;
사용자 정의 함수 실행
- 사용자 정의 함수는 DML 에서 이나 이 놓일 자리를 대체하여 사용된다.값
- 속성명
SELECT 사용자 정의 함수명 FROM 테이블명;
INSERT INTO 테이블명(속성명) VALUES(사용자 저의 함수명);
DELETE FROM 테이블명 WHERE 속성명 = 사용자 정의 함수명;
UPDATE 테이블명 SET 속성명 = 사용자 정의 함수명;
사용자 정의 함수 제거
- 사용자 정의 함수를 제거하기 위해서 DROP FUNCTION 명령어를 사용한다.
DROP FUNCTION 사용자 정의 함수명;
제어문
IF 문
- 조건에 따라 실행할 문장을 달리하는 제어문
형식 1 : 조건이 참일 때만 실행한다.
IF 조건 THEN
실행할 문장1;
실행할 문장2;
...
END IF;
형식 2 : 조건이 참일 때와 거짓일 때 실행할 문장이 다르다.
IF 조건 THEN
실행할 문장1;
ELSE
실행할 문장2;
END IF;
LOOP 문
- 조건에 따라 실행할 문장을 반복 수행하는 제어문
LOOP
실행할 문장;
EXIT WHEN 조건;
END LOOP;
커서(CURSOR)
- 쿼리문의 처리 결과가 저장되어 있는 메모리 공간을 가리키는 포인터(Pointer)
- 커서의 수행은 열기(Open), 패치(Fetch), 닫기(Close)의 세 단계로 진행된다.
선언 형식
- (매개변수1, 매개변수2, ...) 는 SELECT 문의 WHERE 절에 사용할 수 있으며, 생략이 가능하다.
- 커서는 SELECT 문의 실행 결과가 저장된 곳의 시작 위치를 가리킨다.
CURSOR 커서명(매개변수1, 매개변수2, ...)
IS
SELECT문;
열기(Open) 형식
- 커서를 사용하기 전에 반드시 적는다.
OPEN 커서명(매개변수1, 매개변수2, ...);
패치(Fetch) 형식
- 커서명과 커서에 저장된 튜플들의 각 속성과 같은 자료형을 가진 변수를 적고 데이터를 가져온다.
FETCH 커서명 INTO 변수1, 변수2, ...;
닫기(Close) 형식
- 사용된 커서는 메모리 해제를 위해 반드시 닫아야 한다.
CLOSE 커서명;
윈도 함수
- 데이터베이스를 사용한 온라인 분석 처리 용도로 사용하기 위해서 표준 SQL에 추가된 함수
SELECT 함수명(파라미터)
OVER
([PARTITION BY 컬럼1, ...]
[ORDER BY 컬럼A, ...])
FROM 테이블명
- 순위 함수
- RANK : 특정 항목(컬럼)에 대한 순위를 구하는 함수
- DENSE_RANK : 레코드의 순위를 계산하는 함수 (동일 순위의 레코드 존재 시에도 후순위를 넘어가지 않음.)
- ROW_NUMBER : 레코드의 순위를 계산하는 함수 (동일 순위의 값이 존재해도 이와 무관하게 연속 번호를 부여)
09. 소프트웨어 개발 보안 구축
SW 개발 보안의 3대 요소 : 기무가
- 기밀성(Confidentiality) : 인가되지 않은 개인 혹은 시스템 접근에 따른 정보 공개 및 노출을 차단하는 특성
- 무결성(Integrity) : 정당한 방법을 따르지 않고서는 데이터가 변경될 수 없으며, 데이터의 정확성 및 완전성과 고의/악의로 변경되거나 훼손 또는 파괴되지 않음을 보장하는 특성
- 가용성(Availability) : 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속해서 사용할 수 있도록 보장하는 특성
SW 개발 보안 용어 : 자위취위
- 자산(Assets)
- 위협(Threats)
- 취약점(Vulnerability)
- 위험(Risk)
DoS(Denial of Service) 공격
- 시스템을 악의적으로 공격해서 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격
- 종류
- SYN 플러딩(SYN Flooding) : TCP 프로토콜의 구조적인 문제를 이용한 공격
- UDP 플러딩(UDP Flooding) : 대량의 UDP 패킷을 만들어 임의의 포트 번호로 전송하여 응답 메시지(ICMP Destination Unreachable)를 생성하게 하여 지속해서 자원을 고갈시키는 공격
- 스머프(Smurf) / 스머핑(Smurfing) : 하여 네트워크 전체에게 을 직접 브로드캐스팅하여 마비시키는 공격ICMP Echo 패킷
- 출발지 주소를 공격 대상의 IP로 설정
- 죽음의 핑(PoD; Ping of Death) : 전송하면 다수의 IP 단편화가 발생하고, 수신 측에서는 단편화된 패킷을 처리하는 과정에서 많은 부하가 발생하거나 재조합 버퍼의 오버플로우가 발생하여 정상적인 서비스를 하지 못하도록 하는 공격
- ICMP 패킷을 정상적인 크기보다 아주 크게 만들어
- 랜드 어택(Land Attack) : 출발지 IP와 목적지 IP를 같은 패킷 주소로 만들어 보냄으로써 수신자가 자기 자신에게 응답을 보내게 하여 시스템의 가용성을 침해하는 공격 기법
- 티어 드롭(Tear Drop) : IP 패킷의 재조합 과정에서 잘못된 Fragment Offset 정보로 인해 수신 시스템 문제를 발생하도록 만드는 DoS 공격
- 봉크(Bonk) / 보잉크(Boink) : 프로토콜의 오류 제어를 이용한 공격 기법으로서, 시스템의 패킷 재전송과 재조립이 과부하를 유발
DDoS(Distributed DoS) 공격
- 여러 대의 공격자를 분산 배치하여 동시에 동작하게 함으로써 특정 사이트를 공격하는 기법
DDoS의 공격 구성 요소 : HAMAD(하마드)
- 핸들러(Handler)
- 에이전트(Agent)
- 마스터(Master)
- 공격자(Attacker)
- 데몬 프로그램(Daemon)
인증 기술의 유형 : 지소생특
- 지식 기반 인증
- 소지 기반 인증
- 생체 기반 인증
- 특징 기반 인증
서버 접근 통제 유형
- 임의적 접근 통제(DAC; Discretionary Access Control) : 주체나 그룹의 신분에 근거하여 객체에 대한 접근을 제한하는 방법
- 강제적 접근 통제(MAC; Mandatory Access Control) : 객체에 포함된 정보의 허용등급과 접근 정보에 대하여 주체가 갖는 접근 허가 권한에 근거하여 객체에 대한 접근을 제한하는 방법
- 역할 기반 접근 통제(RBAC; Role Based Access Control) : 중앙 관리자가 사용자와 시스템의 상호관계를 통제하며 조직 내 맡은 역할(Role)에 기초하여 자원에 대한 접근을 제한하는 방법
3A(Authentication, Authorization, Accounting)
- 유무선 이동 및 인터넷 환경에서 가입자에 대한 안전하고 신뢰성 있는 인증, 권한 검증, 과금 기능을 체계적으로 제공하는 정보 기술
- 인증(Authentication)
- 권한 부여(Authorization)
- 계정 관리(Accounting)
벨-라파듈라 모델(BLP; Bell-LaPadula Policy) : 벨기
- 미 국방부 지원 보안 모델로 보안 요소 중 을 강조하며 강제적 정책에 의해 접근 통제하는 모델
- 기밀성
- No Read Up, No Write Down
비바 모델 : 비무
- 벨-라파듈라 모델의 단점을 보완한 을 보장하는 최초의 모델
- 무결성
- No Read Down, No Write Up
대칭 키 암호화 알고리즘
- DES(Data Encryption Standard) : 1975년 IBM 개발, NIST에서 발표
- SEED : 1999년 KISA
- AES(Advanced Encryption Standard) : 2001년 미국 표준 기술 연구소(NIST)
- ARIA(Academy, Research Institute, Agency) : 2004년 국가정보원과 산학연구협회
- IDEA(International Data Encryption Algorithm) : DES 대체, 스위스 연방기술 기관, 128비트의 키
- LFSR(Linear Feedback Shift Register) : XOR, 선형 되먹임 시프트 레지스터
비대칭 키 암호화 알고리즘
- 디피 헬만(Diffie-Hellman) : 최초의 공개키 알고리즘, 1976년 고안, 이산대수의 계산이 어려운 문제를 기본 원리
- RSA(Rivest-Shamir-Adleman) : 1977년 3명의 MIT 수학 교수, 소인수 분해
- ECC(Elliptic Cuve Crpytography) : 1985년 코블리치와 밀러, RSA 암호 방식에 대한 대안, 타원 곡선 암호
- ElGamal : T.ElGamal 1985년 제안, 이산대수의 계산이 어려운 문제를 원리
해시 알고리즘
- MD5 : 1991년 Rivest MD4 개선, 프로그램/파일 무결성 검사
- SHA-1 : 1993년 NSA 미 정부 표준 지정, DSA에서 사용, 160비트 해시값 생성
- SHA-256/384/512 : SHA 알고리즘 한 종류, 256비트 해시값 생성
- HAS-160 : 국내 표준 서명 알고리즘 KCDSA를 위하여 개발
- HAVAL : 메시지를 1024비트 블록으로 나눔, 메시지 다이제스트 출력
시큐어 코딩 가이드 적용 대상 : 입보시 에코캡아
- 입력 데이터 검증 및 표현
- 보안 기능
- 시간 및 상태
- 에러 처리
- 코드 오류
- 캡슐화
- API 오용
XSS(Cross Site Script)
- 검증되지 않은 외부 입력 데이터가 포함된 웹페이지가 전송되는 경우 사용자가 해당 웹페이지를 열람함으로써 웹페이지에 포함된 부적잘한 스크립트가 실행되는 공격
- 공격 유형
- Stored XSS
- Reflected XSS
- DOM XSS
사이트 간 요청 위조(CSRF; Cross Site Request Forgery)
- 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격
SQL 삽입(Injection)
- 응용 프로그램의 보안 취약점을 이용해서 악의적인 SQL 구문을 삽입, 실행시켜서 데이터베이스의 접근을 통해 정보를 탈취하거나 조작 등의 행위를 하는 공격 기법
- 공격 유형
- FROM SQL Injection
- Union SQL Injection
- Stored Procedure SQL Injection
- Mass SQL Injection
- Error-Based SQL Injection
- Blind SQL Injection
네트워크 보안 솔루션
- 방화벽(Firewall) : 기업 내부, 외부 간 트래픽을 모니터링 하여 시스템의 접근을 허용하거나 차단하는 시스템
- 웹 방화벽(WAF; Web Application Firewall) : 엡 애플리케이션의 보안에 특화된 보안 장비. XSS, SQL 인젝션 차단 가능
- 네트워크 접근 제어(NAC; Network Access Control) : 단말기가 내부 네트워크에 접속을 시도할 때 이를 제어하고 통제하는 기능을 제공하는 솔루션
- 침입 탐지 시스템(IDS; Intrusion Detectoion System) : 네트워크에서 발생하는 이벤트를 모니터링하고 비인가 사용자에 의한 자원 접근과 보안 정채 위반 행위(침입)을 실시간으로 탐지하는 시스템
- 침입 방지 시스템(IPS; Intrusion Prevention System) : 네트워크에 대한 공격이나 침입을 실시간으로 차단하고 유해 트래피에 대한 조치를 능동적으로 처리하는 시스템
- 무선 침입 방지 시스템(WIPS; Wireless Intrusion Prevention System) : 인가되지 않은 무선 단말기의 접속을 자동으로 탐지 및 차단하고 보안에 취약한 무선 공유기를 탐지하는 시스템
- 통합 보안 시스템(UTM; Unified Threat Management) : 다양한 보안 장비의 기능을 하나의 장비로 통합하여 제공하는 시스템
- 가상사설망(VPN; Virtual Private Network) : 인터넷과 같은 공중망에 인증, 암호화, 터널링 기술을 활용하여 마치 전용망을 사용하는 효과를 가지는 보안 솔루션
DRS(Disaster Recovery System)
- 재해복구계획의 원할한 수행을 지원하기 위하여 평상시에 확보하여 두는 인적, 물적 자원 및 이들에 대한 지속적인 관리체계가 통합된 재해복구센터
- 유형
- Mirror Site : RTO 즉시
- Hot Site : RTO 4시간 이내
- Warm Site : RTO 수일~수주
- Cold Site : RTO 수주~수개월
허니팟(Honeypot)
- 비정상적인 접근을 탐지하기 위해 의도적으로 설치해 둔 시스템
- 일부러 허술하게 마들어서 해커에게 노출하는 유인 시스템
10. 애플리케이션 테스트 관리
소프트웨어 테스트 필요성 : 발예향
- 오류 발견 관점 : 프로그램에 잠재된 오류를 발견하고 이를 수정하여 올바른 프로그램을 개발하기 위해 필요
- 오류 예방 관점 : 프로그램 실행 전에 동료 검토, 워크 스루, 인스펙션 등을 통해 오류를 사전에 발견하는 예방 차원의 필요
- 품질 향상 관점 : 사용자의 요구사항 및 기대 수준을 만족하도록 반복적인 테스트를 거쳐 제품의 신뢰도를 향상하는 품질 보증을 위해 필요
소프트웨어 테스트의 기본 원칙 : 결완초집 살정오
- 결함 존재 증명 : 결함이 존재함을 밝히는 활동
- 완벽 테스팅은 불가능 : 완벽하게 테스팅하는 시도는 불필요한 시간과 자원 낭비
- 초기에 테스팅 시작
- 결함 집중 : 적은 수의 모듈에서 대다수의 결함이 발견됨 (20% 80% - 파레토의 법칙)
- 살충제 패러독스 : 동일한 테스트 케이스에 의한 반복적 테스트는 버그를 찾지 못함.
- 정황에 의존 : 소프트웨어의 성격에 맞게 테스트 실시
- 오류-부재의 궤변 : 요구사항을 충족시켜주지 못한다면 결함이 없다고 해도 품질이 높다고 할 수 없음.
화이트박스 테스트(White-Box Test)
- 각 응용 프로그램의 을 검사하는 소프트웨어 테스트
- 내부 구조와 동작
화이트박스 테스트 유형 : 구결조 조변다 기제데
- 구문 커버리지 : 프로그램 내의
- 모든 명령문을 적어도 한 번 수행
- 결정 커버리지 : (각 분기의) 결정 포인트 내의 의 결과를 수행
- 전체 조건식이 적어도 한 번은 참(T)과 거짓(F)
- 조건 커버리지 : (각 분기의) 결정 포인트 내의 의 결과가 되도록 수행
- 각 개별 조건식이 적어도 한 번은 참과 거짓
- 조건/결정 커버리지 : 전체 조건식 뿐만 아니라 개별 조건식도 참 한 번, 거짓 한 번 결과가 되도록 수행
- 변경 조건/결정 커버리지 : 개별 조건식이 다른 개별 조건식에 영향을 받지 않고, 전체 조건식에 독립적으로 영향을 주도록 함으로써 조건/결정 커버리지를 향상 시킨 커버리지
- 다중 조건 커버리지 : 결정 조건 내 모든 개별 조건식의 모든 가능한 조합을 100% 보장
- 기본 경로 커버리지 : 를 테스트
- 수행 가능한 모든 경로
- 제어 흐름 테스트 : 프로그램 제어 구조를 로 나타내어 내부 로직을 테스트
- 그래프 형태
- 데이터 흐름 테스트 : 에 데이터 사용 현황을 추가한 그래프를 통해 테스트
- 제어 흐름 그래프
블랙박스 테스트(Black-Box Test)
- 프로그램 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트(기능 테스트)
블랙박스 테스트 유형 : 동경결상 유분페원비
- 동등분할 테스트 : 입력 데이터의 영역을 유사한 도메인별로 유횻값/무횻값을 그룹핑하여 대푯값 테스트 케이스를 도출
- 경곗값 분석 테스트 : 등가 분할 후 경곗값 부분에서 오류 발생 확률이 높기 때문에 경곗값을 포함하여 테스트 케이스를 설계하여 테스트
- 결정 테이블 테스트 : 요구사항의 논리와 발생조건을 테이블 형태로 나열하여 조건과 행위를 모두 조합하여 테스트
- 상태 전이 테스트 : 테스트 대상/시스템이나 객체의 상태를 구분하고 이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우의 수를 수행
- 유스케이스 테스트 : 시스템이 실제 사용되는 유스케이스로 모델링되어 있을 때 프로세스 흐름을 기반으로 테스트케이스를 명세화하여 수행
- 분류 트리 테스트 : SW의 일부 또는 전체를 트리 구조로 분석 및 표현하여 테스트 케이스를 설계하여 테스트
- 페어와이즈 테스트 : 테스트 데이터값들 간에 최소한 한 번씩을 조합하는 방식
- 원인-결과 그래프 테스트 : 그래프를 활용하여 입력 데이터 간의 관계 및 출력에 미치는 영향을 분석하여 효용성이 높은 테스트 케이스를 선정하여 테스트
- 비교 테스트 : 여러 버전의 프로그램에 같은 입력값을 넣어서 동일한 결과 데이터가 나오는지 비교
테스트 목적에 따른 분류 : 회안성 구회병
- 회복 테스트 : 시스템에 고의로 실패를 유도하고 시스템의 정상적 복귀 여부를 테스트
- 안전 테스트 : 소스 코드 내의 보안적인 결함을 미리 점검
- 성능 테스트 : 사용자의 이벤트에 시스템이 응답하는 시간, 특정 시간 내에 처리하는 업무량, 사용자 요구에 시스템이 반응하는 속도 등을 측정
- 구조 테스트 : 시스템의 내부 논리 경로, 소스 코드의 복잡도를 평가
- 회귀 테스트 : 오류를 제거하거나 수정한 시스템에서 오류 제거와 수정에 의해 새로이 유입된 오류가 없는지 확인하는 일종의 반복 테스트 기법
- 병행 테스트 : 변경된 시스템과 기존 시스템에 동일한 데이터를 입력 후 결과를 비교
성능 테스트의 성능 유형
- 부하 테스트 : 시스템에 부하를 계속 증가시키면서 시스템의 임계점을 찾는 테스트
- 강도 테스트 : 시스템 처리 능력 이상의 부하, 즉 임계점 이상의 부하를 가하여 비정상적인 상황에서의 처리를 테스트
- 스파이크 테스트 : 짧은 시간에 사용자가 몰릴 때 시스템 반응 측정 테스트
- 내구성 테스트 : 오랜 시간 동안 시스템에 높은 부하를 가하여 시스템 반응 테스트
테스트 종류에 따른 분류 : 명구경
- 명세 기반 테스트(블랙박스 테스트) : 프로그램의 를 기반으로 테스트 케이스를 선정하여 테스트
- 요구사항 명세서
- 구조 기반 테스트(화이트박스 테스트) : 소프트웨어 에 따라 테스트 케이스를 작성하고 확인
- 내부 논리 흐름
- 경험 기반 테스트(블랙박스 테스트) : 유사 소프트웨어나 유사 기술 평가에서 을 토대로 한, 을 기반으로 수행하는 테스트직관과 기술 능력
- 테스터의 경험
테스트 커버리지
- 프로그램의 테스트 수행 정도를 나타내는 값으로 테스트 수행의 완벽성을 측정하는 도구
테스트 커버리지 유형 : 기라코
- 기능 기반 커버리지 : 테스트 대상 애플리케이션의 전체 기능을 모수로 설정하고, 실제 테스트가 수행된 기능의 수를 측정
- 라인 기반 커버리지 : 애플이케이션 전체 소스 코드의 라인 수를 모수로 테스트 시나리오가 수행한 소스 코드의 라인 수 측정
- 코드 커버리지 : 소스 코드의 구문, 조건, 결정 등의 구조 코드 자체가 얼마나 테스트되었는지를 측정
테스트 오라클(Test Oracle)
- 테스트의 결과가 참인지 거짓인지 판단하기 위해서 사전에 정의된 참 값을 입력하여 비교하는 기법
테스트 오라클의 종류 : 참샘휴일
- 참 오라클 : 에 대하여 기대하는 결과를 생성함으로써 발생된 오류를 모두 검출
- 모든 입력값
- 샘플링 오라클 : 에 대해서만 기대하는 결과를 제공
- 특정한 몇 개의 입력값
- 휴리스틱 오라클 : 샘플링 오라클을 개선한 오라클로, 으로 처리
- 특정 입력값에 대해 올바른 결과를 제공하고 나머지 값들에 대해서는 휴리스틱(추정)
- 일관성 검사 오라클 : 애플리케이션 변경이 있을 때 이 동일한지 확인
- 수행 전과 수행 후의 결과값
테스트 레벨
- 함께 편성되고 관리되는 테스트 활동의 그룹
테스트 레벨 종류 : 단통시인
- 단위 테스트 : 사용자 요구사항에 대한 단위 모듈, 서브루틴 등을 테스트하는 단계
- 통합 테스트 : 단위 테스트를 통과한 모듈 사이의 인터페이스, 통합된 컴포넌트 간의 상호 작용을 검증하는 테스트
- 시스템 테스트 : 통합된 단위 시스템의 기능이 시스템에서 정상적으로 수행되는지를 검증
- 인수 테스트 : 계약상의 요구사항이 만족되었는지 확인하기 위한 테스트
하향식 및 상향식 통합 수행 방식 : 하스 상드
- 하스 상드 : 하향식(스텁), 상향식(드라이버)
테스트 하네스 구성요소 : 드 스슈케 시스목
- 드라이버
- 스텁
- 슈트
- 케이스
- 시나리오
- 스크립트
- 목 오브젝트
결함 심각도별 분류 : 치주 보경단
- 치명적(Critical) 결함
- 주요(Major) 결함
- 보통(Normal) 결함
- 경미한(Minor) 결함
- 단순(Simple) 결함
애플리케이션 성능 측정 지표 : 처응경자
- 처리량
- 응답 시간
- 경과 시간
- 자원 사용률
데이터베이스 성능저하 원인 : 락페릭사커
- DB Lock
- DB Fetch
- Connection Leak
- Pool Size
- Commit
배드 코드 유형 : 오문이 결침
- 오염
- 문서 부족
- 의미 없는 이름
- 높은 결함도
- 아키텍처 침식
클린 코드 작성 원칙 : 가단의 중추
- 가독성
- 단순성
- 의존성 최소
- 중복성 제거
- 추상화
메모리 관리 기법의 종류 : 반배할교
- 반입기법
- 배치기법
- 할당기법
- 교체기법
배치 기법의 유형 : 초적악
- 최초 적합(First-fit)
- 최적 적합(Best-fit)
- 최악 적합(Worst-fit)
프로세스 상태 : 생준 실대완
- 생성 상태
- 준비 상태
- 실행 상태
- 대기 상태
- 완료 상태
프로세스 상태 전이 : 디타 블웨
- 디스패치
- 타이머 런 아웃
- 블록
- 웨이크 업
선점 스케줄링 알고리즘 : SMMR
- SRT
- MLQ
- MLFQ
- Round Robin
비선점 스케줄링 알고리즘 : 우기 HFS
- 우선순위
- 기한부
- HRN
- FCFS
- SJF
반환시간 및 대기시간 계산 방법 : 반종도 대반서
- 반환시간 = 종료 시간 - 도착 시간
- 대기시간 = 반환시간 - 서비스 시간
교착상태 발생 조건 : 상점비환
- 상호 배제
- 점유와 대기
- 비선점
- 환형 대기
교착 상태 해결 방법 : 예회발복
- 예방
- 회피
- 발견
- 복구
클라우드 컴퓨팅 분류 : 사공하
- 사설 클라우드
- 공용 클라우드
- 하이브리드 클라우드
클라우드 서비스 유형 : 인플소
- 인프라형 서비스(IaaS)
- 플랫폼형 서비스(PaaS)
- 소프트웨어형 서비스(SaaS)
프로토콜의 기본 3요소 : 구의타
- 구문(Syntax) : 전송하고자 하는 데이터의 형식
- 의미(Semantics) : 두 기기 간의 효율적이고 정확한 정보 전송을 위한 협조 사항과 오류 관리를 위한 제어 정보를 규정
- 타이밍(Timing) : 두 기기간의 통신 속도
IPv4 전송 방식 : 유멀브
- 유니캐스트
- 멀티캐스트
- 브로드 캐스트
IPv6 전송 방식 : 유멀애
- 유니캐스트
- 멀티캐스트
- 애니캐스트
TCP 특징 : 신연흐혼
- 신뢰성 보장
- 연결 지향적 특징
- 흐름 제어
- 혼잡 제어
패키징 도구 구성요소 : 암키식저 파정크인
- 암호화
- 키 관리
- 식별 기술
- 저작권 표현
- 암호화 파일 생성
- 정책 관리
- 크랙 방지
- 인증
제품 소프트웨어 설치 매뉴얼 기본 작성 항목 : 목이주구
- 목차 및 개요
- 문서 이력 정보
- 설치 매뉴얼 주석
- 설치 도구의 구성
백업의 유형 : 전차증
- 전체 백업
- 차등 백업 : 마지막 백업 이후 변경된 모든 데이터를 백업
- 증분 백업 : 정해진 시간을 기준으로 그 이후에 변경된 파일만 백업
반응형