정보처리기사 실기 최종

2020. 10. 17. 08:15컴퓨터언어

728x90
반응형

 

NASA, 미국 표준 암호화 : SHA

인트라넷 : 온프레미스

CPU 메모리 주소 가상 -> 실제 : MMU

ATM : 회선교환 + 패킷교환

오픈소스 DB 모니터링 기능 : 스카우터

 

Java class 

클래스란? 객체 생성을 위한 필드(속성)와 메소드(함수) 정의하는 설계도 

같은 파일에서 클래스를 정의할 때는 public을 두번 사용할 수 없다. 

객체 자체 heap 영역에 생성되고, 객체변수가 그 heap 영역의 주소를 가리키는 것이다. 

실행클래스 안에 또다른 클래스나 메서드를 정의할 때는 static을 앞에 붙인다. 

실행클래스 = main() 메서드가 속해있는 클래스 

객체 : 속성과 이를 처리하기 위한 메소드를 결합한 소프트웨어 모듈 

클래스 : 공통된 특성과 행위를 갖는 객체의 집합으로, 객체의 유형 또는 타입을 의미 

메시지 : 객체들 간에 상호작용을 위한 수단으로, 객체의 메소드를 일으키는 외부의 요구사항 

 

Python basic 

입력 데이터가 여러 개(.split()으로 구분)이면서 동일한 라인에 변수를 같은 갯수로 선언할 수 있다. 

입력 데이터가 여러 개이지만, 이를 받는 변수가 하나라면, 그 변수는 리스트가 된다. 

Input()은 무조건 문자열로 저장되므로 형변환이 필요하면 별도로 해주어야 한다. 

주의할 것은, 정수형으로 변환될 때 “0”이 맨 앞에 있다면 생략된다는 것이다. 

Print()는 콤마로 여러 데이터를 출력하며, 데이터  분리문자는 “sep=’-’” 와 같이 이용한다. 

end는  마지막에 표시할 문자를 나타낸다. 

Sep 생략  기본 구분문자는 공백이며, end 생략  기본값은 줄나눔이다. 

Ex Print(“%-8.2f”, % 200.20) 

Capitalize() : 문자열의 첫글자만 대문자로 바꿈 

Title() :  단어(공백구분)의 첫글자만 대문자로 바꿈 

Find() : 찾지 못하면 -1 반환 <파일> 

Index() : 찾지 못하면 오류 반환 <인오> 

리스트에서 요소 삭제 : del list[index] or list.remove(‘something’) 

 

Pop(index) : 해당 index에 위치한 요소를 출력하고 삭제함 

Copy()를 사용해야 서로 다른 메모리를 사용한다. 

slice는 실제 index 기반이다. 즉 [0,1,2,3,4][:4] == [0,1,2,3] 이다. 

Print(문자열)일 때, 따옴표는 출력되지 않는다. 

Range()가 감소상태라면, 최종위치+1까지다. 

F = 123456.789E-3이 주어졌다면, 123.456789로 고치고 시작해라. 

파이썬에서는 나눗셈 시 자동으로 float으로 형변환되므로, 소수점을 답안에 작성하는 것에 유의할 것. 

 

라이브러리 

라이브러리란? 프로그램을 효율적으로 개발할 수 있도록 자주 사용하는 함수나 데이터들을 미리 만들어 모아 놓은 집합체로, 필요할 때 언제든지 호출하여 사용할 수 있다. 

표준라이브러리 + 외부라이브러리 

모듈? 하나의 기능이 한 개의 파일로 구현된 형태 

패키지? 하나의 패키지 폴더 안에 여러 개의 모듈을 모아 놓은 형태 

 

C 

stdio.h : 데이터의 입출력에 사용되는 기능들을 제공한다. printf, scanf, fprintf, fscanf, fclose, fopen 

math.h : 수학 함수들을 제공 

string.h : 문자열 처리에 사용되는 기능들을 제공 

stdlib.h : 자료형변환, 난수발생, 메모리할당에 사용되는 기능들을 제공 

time.h : 시간처리에 사용되는 기능들을 제공 

 

Java 

java.lang : java에 기본적으로 필요한 인터페이스, 자료형, 예외처리 등에 관련된 기능 제공. Import문 필요없음 System, Error, Math, String, Process, Runtime 

java.util : 날짜 처리, 난수 발생, 복잡한 문자열 처리 등에 관련된 기능 제공. Date, Calender, Random, StringTokenizer 

java.io : 파일 입출력과 관련된 기능 및 프로토콜 제공. InputStream, OutputStream, Reader, Writer 

java.net : 네트워크와 관련된 기능 제공. Socket, URL, InetAddress 

java.awt : 사용자 인터페이스(UI)와 관련된 기능 제공. Frame, Panel, Dialog, Button, Checkbox 

 

Python 

내장함수 : Python에 기본적인 인터페이스로 import문이나 클래스명 없이 사용 가능. abs(), slice(), pow(), print() 

os : 운영체제와 상호작용하기 위한 기능 제공. getcwd(), chdir(), system() 

re : 고급 문자열 처리를 위한 기능 제공. findall(), sub() 

math : 복잡한 수학 연산을 위한 기능 제공. cos(), log() 

random : 무작위 선택을 위한 기능 제공. choice(), sample(), random(), randrange() 

statistics : 통계값 산출을 위한 기능 제공. mean(), median(), variance() 

datetime : 날짜와 시간 조작을 위한 기능 제공. today(), date(), strftime() 

 

절차적 프로그래밍 언어 

일련의 처리 절차를 정해진 문법에 따라 순서대로 기술해 나가는 언어 

프로그램이 실행되는 절차를 중요시 한다. 

데이터를 중심으로 프로시저를 구현한다. 

프로그램 전체가 유기적으로 연결되어 있다. 

자연어에 가까운 단어와 문장으로 구성된다. 

과학 계산이나 하드웨어 제어에 주로 사용된다. 

장점 : 컴퓨터의 처리구조와 유사하여 실행속도가 빠르다, 같은 코드를 복사하지 않고 다른 위치에서 호출하여 사용할 수 있다, 모듈 구성이 용이하며 구조적인 프로그래밍이 가능하다. 

단점 : 프로그램을 분석하기 어렵다, 유지보수나 코드수정이 어렵다. 

종류 : C, ALGOL, COBOL, FORTRAN 

C : 1972년 벨 연구소 데니스 리치, 시스템 소프트웨어 전문, 이식성이 좋아 컴퓨터 기종에 관계없음, 컴파일러 방식, 포인터 제공으로 자료의 주소 조작 가능, 고급+저급 특성 모두 갖춤 

ALGOL : 수치 계산이나 논리연산을 위한 과학 기술 계산용 언어, PASCAL과 C 언어의  

COBOL : 사무처리용 언어, 영어문장형식으로 이해와 사용이 쉽다, 4개의 DIVISION으로 구성 

FORTRAN : 과학기술계산용 언어, 수학과 공학 분야의 공식이나 수식과 같은 형태로 프로그래밍 가능 

 

객체지향 프로그래밍 

현실 세계의 개체(Entity) 기계의 부품처럼 하나의 객체로 만들어, 기계적인 부품들을 조립하여 제품을 만들듯이 소프트웨어를 개발할 때도 객체들을 조립해서 프로그램을 작성할 수 있도록 하는 프로그래밍 기법 

프로시저보다는 명령과 데이터로 구성된 객체를 중심으로 하는 프로그래밍 기법으로, 한 프로그램을 다른 프로그램에서 이용할 수 있도록 한다. 

장점 : 상속을 통한 재사용과 시스템의 확장이 용이, 코드의 재활용성이 높다, 자연적인 모델링에 의해 분석과 설계를 쉽고 효율적으로 할 수 있다, 사용자와 개발자 사이의 이해를 쉽게 해준다, 대형 프로그램의 작성이 용이하다. 

단점 : 프로그래밍 구현을 지원해주는 정형화된 분석 및 설계 방법이 없다, 구현 시 처리 시간이 지연된다. 

종류 : Smalltalk(1세대), C++, Java 

 

스크립트언어 

HTML 문서 안에 직접 프로그래밍 언어를 삽입하여 기계어로 컴파일 되지 않고 별도의 번역기가 소스를 분석하여 동작하게 하는 언어. 

게시판 입력, 상품 검색, 회원 가입 등과 같은 데이터베이스 처리 작업을 수행하기 위해 주로 사용 

서버용 스크립트 언어 : ASP, JSP, PHP, Python 

클라용 스크립트 언어 : Javascript 

장점 : 컴파일 없이 바로 실행하므로 결과를 바로 실행할 수 있다, 배우고 코딩하기 쉽다, 개발 시간이 짧다, 소스 코드를 쉽고 빠르게 수정할 수 있다. 

단점 : 코드를 읽고 해석해야 하므로 실행 속도가 느리다, 런타임 오류가 많이 발생한다. 

 

선언형 언어 

프로그램이 수행해야 할 문제를 기술하는 언어 

목표를 명시하되 알고리즘은 명시하지 않음 

함수형 언어와 논리형 언어로 구분 

가독성이나 재사용성이 좋다. 

작동 순서를 구체적으로 작성하지 않기 때문에 오류가 적다. 

프로그램 동작을 변경하지 않고도 관련 값을 대체할 수 있다. 

종류 : HTML, XML, Haskell(부작용x), LISP(인공지능,재귀호출,연결리스트구조), PROLOG(인공지능,논리적추론,리스트처리) 

 

선언형 언어 : 프로그램이 수행해야 할 문제를 기술 

명령형 언어 : 문제를 해결하기 위한 방법을 기술 

 

예외처리 

예외 : 프로그램의 정상적인 실행을 방해하는 조건이나 상태 

예외처리 : 예외 발생 시 프로그래머가 해당 문제에 대비해 작성해 놓은 처리 루틴을 수행하도록 하는 것 

예외의 원인 : 컴퓨터 하드웨어 문제, 운영체제의 설정 실수, 라이브러리 손상, 사용자의 입력 실수, 받아들일 수 없는 연산, 할당하지 못하는 기억장치 접근 

java에서는 java.lang 패키지에서 예외와 관련된 클래스를 제공 

 

오답노트 

hap = 0 

for i in range(1, 11): 

    hap += i 

print(i) 

 

여기서 i도 출력이 된다. 

 

비트 연산자가 여러 개일 경우, ~ -> & -> ^ -> | 순으로 계산하라! 

예를 들어, d = a & b & ~b 가 주어지면, d = [3: {2: a & b} & (1: ~b)] 순으로 한다. 

 

버블정렬 : a[n] & a[n+1] 

선택정렬 : a[i] & a[j] 

페이지 나누기 

20200914 

2장 요구사항 확인 

 

현행시스템 파악? 새로 개발하려는 시스템의 개발 범위를 명확히 설정하기 위해 현행 시스템의 구성과 제공 기능, 시스템 간의 전달 정보, 사용되는 기술 요소, 소프트웨어, 하드웨어, 네트워크의 구성 등을 파악하는 것. 

 

1단계 시스템 구성 파악 : 조직의 주요 업무를 담당하는 기간 업무와 이를 지원하는 지원 업무로 구분하여 기술 

2단계 시스템 기능 파악 : 단위업무시스템이 현재 제공하는 기능들을 주요 + 하부 + 세부 기능으로 구분하여 계층형으로 표시 

3단계 시스템 인터페이스 파악 : 단위업무시스템  주고받는 데이터의 종류, 프로토콜, 연계 유형, 주기 등을 명시 

4단계 아키텍처 구성 파악 : 기간 업무 수행에 어떠한 기술 요소들이 사용되는지 최상위 수준에서 계층별로 표현한 아키텍처 구성도로 작성. 아키텍처가 단위 업무 시스템별로 다른 경우에는 가장 핵심 되는 기간 업무 처리 시스템을 기준으로 표현. 

5단계 소프트웨어 구성 파악 : 단위 업무 시스템 별로 업무 처리를 위해 설치되어 있는 소프트웨어들의 제품명, 용도, 라이선스 적용 방식, 라이선스  등을 명시 

Apache Tomcat – WAS – Apache License  1 

6단계 하드웨어 구성 파악 : 단위 업무 시스템들이 운용되는 서버의 주요 사양과 수량, 이중화의 적용 여부를 명시 

7단계 네트워크 구성 파악 : 업무 시스템들의 네트워크 구성을 파악할  있도록 서버의 위치, 서버  네트워크 연결 방식을 네트워크 구성도로 작성 

 

개발 기술 환경 

개발기술환경? 운영체제 + DBMS + 미들웨어 

 

요구사항 정의 

요구공학? 무엇을 개발해야 하는지 요구사항을 정의하고, 분석 및 관리하는 프로세스를 연구하는 학문 

기능 요구사항 + 비기능 요구사항 + 시스템 요구사항 + 사용자 요구사항 

요구사항 도출 기법 : 인터뷰, 설문, 프로토타이핑, 브레인스토밍, 워크샵, 유스케이스(사용자의 요구 단위를 기능 단위로 표현) 

요구사항 분석 : 사용자의 요구사항 중 명확하지 않거나 모호하여 이해되지 않는 부분을 발견하고 걸러내는 과정 

요구사항 명세 : 요구사항을 체계적으로 분석한 후 승인될 수 있도록 문서화하는 것 

페이지 나누기 

20200915 

요구사항 

 

요구사항 : 소프트웨어가 어떤 문제를 해결하기 위해 제공하는 서비스에 대한 설명과 정상적으로 운영되는데 필요한 제약조건으로, 개발에 참여하는 이해관계자(개발자, 개발의뢰자, 사용자)들 간 의사소통을 원활하게 함 

 기술하는 내용에 따라 : 기능 요구사항 + 비기능 요구사항 

기술하는 관점과 대상의 범위에 따라 : 시스템 요구사항 + 사용자 요구사항 

요구사항 개발 프로세스 : 요구사항을 체계적으로 도출하면 이를 분석한 후 분석 결과를 명세서에 정리한 다음 확인 및 검증하는 일련의 과정 

 

요구사항 도출 : 시스템, 사용자, 시스템 개발에 관련된 사람들이 서로 의견을 교환하여 요구사항이 어디에 있고 어떻게 수집할 것인지를 식별하고 이해하는 과정. 인터뷰, 설문, 프로토타이핑, 브레인스토밍, 워크샵, 유스케이스 등 기법으로 도출한다. 

SDLC 동안 지속적으로 반복된다. 

개발자와 고객 사이의 관계가 만들어지고, 이해관계자가 식별된다. 

*유스케이스 : 사용자의 요구사항을 기능 단위로 표현하는 것 

 

요구사항 분석 : 개발 대상에 대한 사용자의 요구사항 중 명확하지 않거나 모호하여 이해되지 않는 부분을 발견하고 걸러내는 과정 

 

요구사항 명세 : 요구사항을 체계적으로 분석한 후 승인될 수 있도록 문서화하는 것 

기능 요구사항은 빠짐없이, 비기능 요구사항은 필요한 것만 명확하게 기술 

사용자가 이해하기 쉬우며, 개발자가 효과적으로 설계할 수 있도록 작성 

 

요구사항 확인 : 개발 자원을 요구사항에 할당하기 전에 요구사항 명세서가 정확하고 완전하게 작성되었는지 검토 

분석가의 확인, 개발자의 검증 

요구사항 관리도구를 이용하여 요구사항 정의 문서들에 대해 형상관리를 수행 

 

형상? 소프트웨어 개발 단계의 각 과정에서 만들어지는 프로그램, 설명서, 데이터 

형상관리? 형상들의 변경사항을 관리하는 일련의 활동 

 

요구사항 분석 기법 

개발 대상에 대한 사용자의 요구사항 중 명확하지 않거나 모호한 부분을 걸러내기 위한 방법으로, 요구사항 분류, 개념 모델링, 요구사항 할당, 요구사항 협상, 정형 분석 등이 있다. 

 

요구사항 분류 

요구사항을 명확히 확인할 수 있도록 다음과 같은 기준으로 분류한다. 

기능 요구사항인지 vs 비기능 요구사항인지 

하나 이상의 상위 요구사항에서 유도된 것인지 vs 이해관계자나 다른 원천으로부터 직접 발생한 것인지 

개발할 제품에 관한 것인지 vs 개발 과정(프로세스)에 관한 것인지 

우선순위에 따른 분류 

소프트웨어에 미치는 영향의 범위에 따른 분류 

소프트웨어 생명 주기 동안에 변경될 가능성이 있는지 여부에 따른 분류 

 

개념 모델링 

요구사항을 보다 쉽게 이해할 수 있도록 현실 세계의 상황을 단순화하여 개념적으로 표현한 “모델"을 만드는 과정 

유스케이스 다이어그램, 데이터 흐름 모델, 객체 모델 등 

UML로 표기 

 

요구사항 확인 기법 

요구사항 분석 후 문서화된 내용을 확인하고 검증하는 방법으로, 개발 자원이 배정되기 전에 수행해야 한다. 

요구사항 검토, 프로토타이핑, 모델 검증, 인수 테스트 등이 있다. 

 

요구사항 검토 

문서화된 요구사항을 훑어보면서 확인하는 가장 일반적인 요구사항 검증 방법 

 

프로토타이핑 

초기 도출된 요구사항을 토대로 프로토타입을 만든 후 대상 시스템의 개발이 진행되는 동안 도출되는 요구사항을 반영하면서 지속적으로 프로토타입을 재작성하는 과정 

빠른 제작 가능, 사용자와 개발자 또는 개발자 간 의사소통이 원활, 문제점 사전 식별 가능 

사용자의 관심이 프로토타입에 집중, 프로토타입 개선에 대한 비용부담, 사용성 과대평가 우려 

 

모델 검증 

요구사항 분석 단계에서 개발된 모델이 요구사항을 충족시키는지 검증 

 

인수 테스트 

사용자가 실제로 사용될 환경에서 요구사항들이 모두 총족되는지 사용자 입장에서 확인하는 과정 

사용자 인수 테스트, 운영상 인수 테스트, 계약 인수 테스트, 규정 인수 테스트, 알파검사, 베타검사 

 

UML 

Unified Modeling Language 

시스템 분석, 설계, 구현 등 시스템 개발 과정에서 시스템 개발자와 고객 또는 개발자 상호 간 의사소통이 원활하도록 표준화한 대표적인 객체지향 모델링 언어로, 사물 + 관계 + 다이어그램 등으로 구성 

시스템의 구조를 표현하는 6개의 구조 다이어그램 + 시스템의 동작을 표현하는 7개의 행위 다이어그램을 작성 가능 

 

사물 

모델을 구성하는 가장 중요한 기본 요소로, 다이어그램 안에서 관계가 형성될 수 있는 대상 

구조사물 : 시스템의 개념적/물리적 요소를 표현 - 클래스, 유스케이스, 컴포넌트, 노드 

행동사물 : 시간과 공간에 따른 요소들의 행위를 표현 - 상호작용, 상태머신 

그룹사물 : 요소들을 그룹으로 묶어서 표현 - 패키지 

주해사물 : 부가적인 설명이나 제약조건 등을 표현 - 노트 

 

관계 

사물과 사물 사이의 연관성을 표현 

연관관계(Association) : 2개 이상의 사물이 서로 관련되어 있음을 표현, 방향성은 화살표 있는 실선으로 나타내며 양방향은 화살표 없는 실선 

의존관계(Dependency) : 연관관계와 유사하지만 짧은 시간 동안(조건 등)만 연관을 유지하는 관계, 영향을 주는 쪽에서 받는 쪽으로 점선 화살표를 연결 

집합관계(Aggregation) : 하나의 사물이 다른 사물에 독립적으로 포함되어 있는 관계, 포함하는 쪽이 속 빈 마름모 실선을 가짐 

포함관계(Composition) : 하나의 사물이 다른 사물에 종속적으로 포함되어 있는 관계, 포함하는 쪽이 속 찬 마름모 실선을 가짐 <포함하니까 꽉 찬 마름모> 

일반화관계(Generalization) : 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현, 구체적(하위) 사물에서 일반적(상위) 사물 쪽으로 속 빈 화살표 실선을 연결 

실체화관계(Realization) : 사물이 할 수 있거나 해야 하는 기능(행위, 인터페이스)으로 서로를 그룹화 할 수 있는 관계를 표현, 사물에서 기능 쪽으로 속 빈 화살표 점선을 연결 

 

다이어그램 

사물과 관계를 도형으로 표현한 것 

여러 관점에서 시스템을 가시화한 “뷰"를 제공함으로써 의사소통에 도움을 줌 

정적 모델링에서는 구조적 다이어그램, 동적 모델링에서는 행위 다이어그램을 주로 사용 

구조적 다이어그램 : 클래스 다이어그램, 객체 다이어그램, 컴포넌트 다이어그램, 배치 다이어그램, 복합체 구조 다이어그램, 패키지 다이어그램 

행위 다이어그램 : 그 외 

 

기능 모델링 

사용자의 요구사항을 분석하여 개발될 시스템이 갖춰야 할 기능들을 정리한 후 사용자와 함께 정리된 내용을 공유하기 위해 표현하는 것으로, 유스케이스 다이어그램과 액티비티 다이어그램이 있다. 

 

유스케이스 다이어그램 

개발될 시스템과 관련된 외부 요소들(사용자, 외부 시스템)이 개발될 시스템을 이용해 수행할 수 있는 기능을 사용자 관점에서 표현한 것 

 

 

페이지 나누기 

운영체제 

컴퓨터 시스템의 자원들을 효율적으로 관리 

컴퓨터 사용자가 컴퓨터를 편리하고 효율적으로 사용할 수 있도록 환경을 제공 

사용자와 하드웨어 간 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공 

 

DBMS 

Oracle, Mysql, SQLite, MongoDB, Redis 

 

요구공학 : 무엇을 개발해야 하는지 요구사항을 정의하고 분석 및 관리하는 프로세스를 연구하는 학문으로, 요구사항 개발이 이 중 한 요소이다. 

 

유스케이스 다이어그램 = 시스템 범위 + 액터 + 유스케이스 + 관계 

사용자와 다른 외부 시스템들이 개발될 시스템을 이용해 수행할 수 있는 기능을 사용자의 관점에서 표현한 것 

외부 요소와 시스템 간 상호작용을 확인할 수 있다 

사용자의 요구사항을 분석하기 위한 도구로 사용된다. 

시스템의 범위를 파악할 수 있다. 

 

유스케이스 명세서 

유스케이스 안에서의 액터와 시스템 간 상호작용 과정을 글로 자세히 표현한 것 

유스케이스 다이어그램에 있는 모든 유스케이스에 대해 개별적으로 작성해야 함 

각 유스케이스 명세서에 작성된 사건의 흐름을 참고하여 활동 다이어그램을 작성한다. 

 

액티비티(활동) 다이어그램 

각각의 유스케이스에 대해 그 기능이 처리되는 흐름을 순서에 맞게 사용자 관점에서 자세한 그림으로 표현한 것 

 

페이지 나누기 

액티비티 다이어그램 = 액션 + 액티비티 + 노드 + 스윔레인 

각각의 유스케이스에 대해 그 기능이 처리되는 흐름을 순서에 맞게 사용자의 관점에서 자세한 그림으로 표현한 것 

 

액션(둥근 사각형) 

더 이상 분해될 수 없는 단일 작업 

 

액티비티(둥근 사각형) 

몇 개의 액션으로 분리될 수 있는 작업 

 

스윔레인 

액티비티 수행을 담당하는 주체를 가로/세로 실선으로 구분 

 

 

정적 모델링 

사용자가 요구한 기능을 구현하는 데 필요한 자료들의 논리적인 구조를 개발자의 관점에서 표현한 것 

UML을 이용한 정적 모델링의 대표적인 것이 클래스 다이어그램 

 

클래스 다이어그램 

시스템을 구성하는 클래스 

클래스의 특성인 속성과 오퍼레이션 

속성과 오퍼레이션에 대한 제약조건 

클래스 사이의 관계 

 

연관 클래스 

두 클래스가 연관 관계에 있을 때 추가적으로 표현해야 할 속성이나 오퍼레이션이 있는 경우 사용되는 클래스 

두 클래스를 잇는 선의 가운데로부터 점선을 이어 표시 

이름은 연관 관계의 이름을 이용해 지정 

 

집합관계 : 다른 클래스의 객체 변수를 매개변수로 받아옴 

포함관계 : 다른 클래스의 객체 변수를 현재 클래스 내에서 new 키워드로 생성 

 

동적 모델링 

시스템 설계자가 시간의 흐름에 따라 변하는 시스템 내부 구성요소의 상태 변화를 파악하기 위해 그림으로 표현하는 것 

시퀀스 다이어그램, 커뮤니케이션 다이어그램, 상태 다이어그램 

 

시퀀스 다이어그램 

시스템이나 객체들이 메시지를 주고받으며 시간의 흐름에 따라 상호작용하는 과정을 액터, 객체, 라이프라인, 활성상자, 메시지 등 요소를 사용하여 그림으로 표현한 것 

 

액터 

시스템으로부터 서비스를 요청하는 외부 요소로, 사람이나 외부 시스템을 의미 

 

객체 

메시지를 주고받는 주체 

: 앞이 객체명, 뒤쪽이 클래스명 

 

라이프라인 

객체가 메모리에 존재하는 기간으로, 객체 아래쪽에 점선을 그어 표현 

 

활성상자 

객체가 메시지를 주고받으며 구동되고 있음을 표현 

라이프라인 상에 겹쳐 직사각형 형태로 표현 

 

메시지 

객체가 상호작용을 위해 주고받는 것 

메시지를 받는 쪽으로 화살표를 그린다. 

 

--- 

 

커뮤니케이션 다이어그램 

시스템이나 객체들이 메시지를 주고받으며 시간의 흐름에 따라 상호작용하는 과정을 액터, 객체, 링크, 메시지 등 그림으로 표현한 것. 

시퀀스 다이어그램의 라이프라인과 활성상자 대신 “링크"가 객체 간 관계를 표현 

 

상태 다이어그램 

객체들 사이에 발생하는 이벤트에 의한 객체들의 상태 변화를 상태, 이벤트, 상태전환 등 그림으로 표현한 것 

 

+ (Public) : 어떤 클래스에서라도 접근이 가능 

- (Private) : 해당 클래스 내부에서만 접근이 가능 

# (Protected) : 동일 패키지 내의 클래스 또는 해당 클래스를 상속 받은 외부 패키지의 클래스에서 접근이 가능 

~ (Package) : 동일 패키지 내부에 있는 클래스에서만 접근이 가능 

 

데이터 모델 

현실세계의 정보들을 컴퓨터에 표현하기 위해서 단순화, 추상화하여 체계적으로 표현한 개념적 모형 

 

데이터 모델의 구성요소 

개체  데이터베이스에 표현하려는 것으로, 사람이 생각하는 개념이나 정보 단위 같은 현실 세계의 대상체 

속성 : 데이터의 가장 작은 논리적 단위로서 파일 구조상의 데이터 항목 또는 데이터 필드 

관계 : 개체 간의 관계 또는 속성 간의 논리적 연결 

데이터 모델의 종류 = 개념적 데이터 모델 + 논리적 데이터 모델 + 물리적 데이터 모델 

데이터 모델에 표시할 요소 = 구조 + 연산 + 제약조건 

 

 

페이지 나누기 

20200923 

 

데이터 모델에 표시할 요소 = 구조 + 연산 + 제약조건 

구조 : 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질을 표현 

연산 : 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세로서 데이터베이스를 조작하는 기본 도구 

제약조건 : 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건 

 

데이터 모델 

현실세계의 정보를 컴퓨터에 표현하기 위해 단순화, 추상화하여 체계적으로 표현한 개념적 모형 

  

데이터 모델의 구성요소 

개체 : 데이터베이스에 표현하려는 것으로 사람이 생각하는 개념이나 정보단위 같은 현실세계의 대상체 

속성 : 데이터의 가장 작은 논리적 단위로서 파일 구조상의 데이터 항목 또는 데이터 필드 

관계 : 개체 간 관계 또는 속성 간 논리적 연결 

  

데이터 모델의 종류 

개념적 데이터 모델 

현실 세계에 대한 사람의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정 

  

논리적 데이터 모델 

개념적 모델링으로 나온 개념적 구조를 컴퓨터가 이해하고 처리할 수 있는 컴퓨터 환경에 맞도록 변환하는 과정 

관계모델, 계층모델, 네트워크모델 

  

논리 데이터 모델 품질 검증 

완성된 논리 데이터 모델이 기업에 적합한지를 확인하기 위해 품질을 검증하는 것 

  

데이터 모델의 표시 요소 

구조 : 논리적으로 표현된 개체 타입 간 관계로서 데이터 구조 및 정적 성질을 표현 

연산 : 데이터베이스에 저장된 실제 데이터들을 처리하는 작업에 대한 명세로서 데이터베이스를 조작하는 기본 도구 

제약조건 : 데이터베이스에 저장될 수 있는 실제 데이터들의 논리적인 제약 조건 

  

이상 

테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 테이블 조작 시 문제가 발생하는 현상 

  

함수적 종속 

어떤 테이블 R의 속성 부분집합 중 X, Y가 있을 때, 속성 X의 값 각각에 대해 시간에 관계없이 속성 Y의 값이 오직 하나만 연관되어 있는 경우 Y는 X에 함수적 종속, X는 Y를 함수적으로 결정한다고 한다. 

  

무손실 분해 

원본 테이블에서 일부 속성들만 추출한 프로젝션들을 다시 Natural Join 해도 정보 손실 없이 원래대로 복귀되는 형태의 분해 

  

정규화 

테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정으로, 삽입/삭제/갱신 이상의 발생 가능성을 줄이는 것이 목표다. 

 

1정규형 : 테이블의 모든 속성의 도메인이 원자 값을 가짐 

2정규형 : 1정규형 만족 + 부분함수적종속을 제거 

3정규형 : 2정규형 만족 + 이행함수적종속을 제거 

BCNF : 3정규형 만족 + 결정자가 후보키(유일성+최소성) 

4정규형 : 다치종속 

 

테이블 

데이터를 저장하는 데이터베이스의 가장 기본적인 오브젝트 

로우, 컬럼, 기본키, 외래키 

기본키 = 후보키 중에서 선택한 주키로서, 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성 

외래키 = 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합 

  

반정규화 

시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합/중복/분리하는 과정으로, 의도적으로 정규화 원칙을 위배하는 행위 

테이블 통합, 테이블 분할, 중복 테이블 추가, 중복 속성 추가 

  

테이블 통합 

두 개의 테이블이 조인되는 경우가 많아 하나의 테이블로 합쳐 사용하는 것이 성능 향상에 도움이 될 경우 수행 

  

테이블 통합 시 고려사항 

데이터 검색은 간편하지만 레코드 증가로 인해 처리량이 증가한다. 

입력/수정/삭제 규칙이 복잡해질 수 있다. 

Not Null, Default, Check 등의 제약조건을 설계하기 어렵다. 

  

테이블 분할 

테이블을 수직 또는 수평으로 분할하는 것 

  

수평 분할 : 레코드별로 사용 빈도의 차이가 큰 경우 레코드 사용 빈도에 따라 테이블 분할 

  

수직 분할 : 하나의 테이블에 속성이 너무 많을 경우 속성을 기준으로 테이블을 분할 

갱신 위주의 속성 분할 : 데이터 갱신 시 레코드 잠금으로 인해 다른 작업을 수행할 수 없으므로 갱신이 자주 일어나는 속성들을 수직분할하여 사용 

자주 조회되는 속성 분할 : 테이블에서 자주 조회되는 속성이 극히 일부일 경우 자주 사용되는 속성들을 수직 분할하여 사용 

크기가 큰 속성 분할 : 이미지나 2GB 이상 저장될 수 있는 텍스트 형식 등으로 된 속성들을 수직분할하여 사용 

보안을 적용해야 하는 속성 분할 : 테이블 내의 특정 속성에 대해 보안을 적용할 수 없으므로 보안을 적용해야 하는 속성들을 수직 분할하여 사용 

  

테이블 분할 시 고려사항 

기본키의 유일성 관리가 어려워진다. 

데이터 양이 적거나 사용 빈도가 낮은 경우 테이블 분할이 필요한지 고려해야 한다. 

분할된 테이블로 인해 수행 속도가 느려질 수 있다. 

데이터 검색에 중점을 두어 테이블 분할 여부를 결정해야 한다. 

  

중복 테이블 추가 

여러 테이블에서 데이터를 추출해서 사용해야 하거나 다른 서버에 저장된 테이블을 이용해야 하는 경우 중복 테이블을 추가하여 작업의 효율성을 향상시킬 수 있다. 

  

중복 테이블을 추가하는 경우 

정규화로 인해 수행 속도가 느려지는 경우 

많은 범위의 데이터를 자주 처리해야 하는 경우 

특정 범위의 데이터만 자주 처리해야 하는 경우 

처리 범위를 줄이지 않고는 수행 속도를 개선할 수 없는 경우 

  

중복 속성 추가 

조인해서 데이터를 처리할 때 데이터를 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것. 

  

<중복 속성 추가하는 경우> 

조인이 자주 발생하는 속성인 경우 

접근 경로가 복잡한 속성인 경우 

액세스의 조건으로 자주 사용되는 속성인 경우 

기본키의 형태가 적절하지 않거나 여러 개의 속성으로 구성된 경우 

 

페이지 나누기 

 

20200924 

인덱스 

데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조 

 

TABLE SCAN 

인덱스가 없으면 특정한 값을 찾기 위해 모든 데이터 페이지를 확인하는 것 

 

클러스터드 인덱스 

레코드의 물리적 순서가 인덱스의 엔트리 순서와 일치하게 유지되도록 구성되는 인덱스 

인덱스 키의 순서에 따라 데이터가 정렬되어 저장되는 방식 

실제 데이터가 순서대로 저장되어 있어 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있다. 

데이터 삽입/삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬해야 함 

한 개의 릴레이션에 하나의 인덱스만 생성 가능 

 

넌클러스터드 인덱스 

인덱스의 키 값만 정렬되어 있을 뿐 실제 데이터는 정렬되지 않는 방식 

데이터를 검색하기 위해서는 먼저 인덱스를 검색하여 실제 데이터의 위치를 확인해야 하므로 클러스터드 인덱스에 비해 검색 속도가 떨어진다. 

한 개의 릴레이션에 여러 개의 인덱스를 만들 수 있음 

 

비트맵 인덱스 

인덱스 컬럼의 데이터를 비트값인 0 또는 1로 변환하여 인덱스 키로 사용하는 방법 

데이터가 반복되어 압축 효율이 좋음 

분포도가 좋은 컬럼에 적합 

키값을 포함하는 로우의 주소를 제공하는 것이 목적 

 

함수 기반 인덱스 

컬럼의 값 대신 컬럼에 특정 함수나 수식을 적용하여 산출된 값을 사용하는 것으로, B+트리 인덱스 또는 비트맵 인덱스를 생성하여 사용한다. 

데이터를 입력하거나 수정할 때 함수를 적용해야 하므로 부하가 발생할 수 있다. 

사용된 함수가 사용자 정의 함수일 경우 시스템 함수보다 부하가 더 크다. 

대소문자/띄어쓰기 등에 상관없이 조회할 때 유용하게 사용된다. 

적용 가능한 함수의 종류 : 산술식, 사용자 정의 함수, PL/SQL Function, SQL Function, Package, C Callout 등 

 

비트맵 조인 인덱스 

다수의 조인된 객체로 구성된 인덱스로, 단일 객체로 구성된 일반적인 인덱스와 액세스 방법이 다르다. 

비트맵 인덱스와 물리적 구조가 동일하다. 

 

도메인 인덱스 

개발자가 필요한 인덱스를 직접 만들어 사용하는 것으로, 확장형 인덱스라고도 한다. 

개발자가 필요에 의해 만들었지만 프로그램에서 제공하는 인덱스처럼 사용할 수도 있다. 

 

트리 기반 인덱스 

인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것으로, 상용 DBMS에서는 트리구조 기반의 B+트리 인덱스를 주로 활용한다. 

 

인덱스 대상 테이블 기준 

테이블의 크기가 MULTI BLOCK READ(테이블 액세스 시 메모리에 한 번에 읽어 들일 수 있는 블록의 수) 를 초과 

랜덤 액세스가 빈번한 테이블 

특정 범위나 특정 순서로 데이터 조회가 필요한 테이블 

다른 테이블과 순차적 조인이 발생되는 테이블 

 

인덱스 대상 컬럼 선정 기준 

가능한 한 수정이 빈번하지 않은 테이블 

인덱스가 자동 생성되는 기본키와 유니크키 제약조건을 사용한 컬럼 

분포도가 10~15% 이내인 컬럼 

분포도가 10~15% 이상이어도 부분 처리를 목적으로 하는 컬럼 

분포도가 좁은 컬럼은 단독 인덱스로 생성 

ORDER BY, GROUP BY, UNION이 빈번한 컬럼 

인덱스가 자주 조합되어 사용되는 경우 하나의 결합 인덱스로 생성 

 

인덱스 설계 

분명하게 드러난 컬럼에 대해 기본적인 인덱스를 먼저 지정한 후, 개발 단계에서 필요한 인덱스의 설계를 반복적으로 진행한다. 

 

인덱스 설계 시 고려사항 

새로 추가되는 인덱스는 기존 액세스 경로에 영향을 미칠 수 있다. 

인덱스를 만들면 추가적인 저장 공간이 필요하다. 

인덱스와 테이블 데이터의 저장 공간이 분리되도록 설계한다. 

 

 

사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블 

저장장치 내에 물리적으로 존재하지 않지만, 사용자에게는 있는 것처럼 간주 

데이터의 논리적 독립성 제공 

일단 정의된 뷰는 다른 뷰의 정의에 기초가 될 수 있다. 

뷰가 정의된 기본 테이블이나 뷰를 삭제하면 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다. 

기본 테이블의 기본키를 포함한 속성(열) 집합으로 뷰를 구성해야만 삽입/삭제/갱신 연산이 가능하다. 

 

분포도 

(조건에 맞는 레코드 수 / 전체 릴레이션 레코드 수) X 100 

 

 

뷰의 장점 

데이터의 논리적 독립성이 제공된다. 

사용자의 데이터 관리를 간단하게 해준다. 

접근 제어를 통한 자동 보안이 제공된다. 

동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원해준다. 

 

뷰의 단점 

독립적인 인덱스를 가질 수 없다. 

뷰의 정의를 변경할 수 없다. 

뷰로 구성된 내용에 대한 삽입/삭제/갱신 연산에 제약이 있다. 

 

클러스터 

데이터 저장 시 데이터 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법 

 

클러스터의 특징 

데이터 조회 속도는 향상시키지만 데이터 입력/수정/삭제에 대한 성능은 저하시킨다. 

클러스터는 데이터의 분포도가 넓을수록 유리하다. *인덱스는 좁을수록 유리 

데이터의 분포도가 넓을수록 저장 공간을 절약할 수 있다. 

클러스터링된 테이블은 클러스터링키 열을 공유하므로 저장 공간이 줄어든다. 

대용량을 처리하는 트랜잭션은 전체 테이블을 스캔하는 일이 자주 발생하므로 클러스터링을 하지 않는 것이 좋다. 

파티셔닝 된 테이블에는 클러스터링을 할 수 없다. 

디스크 I/O가 줄어든다. 

처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우에는 다중 테이블 클러스터링을 사용. 

 

클러스터 대상 테이블 

분포도가 넓은 테이블 

대량의 범위를 자주 조회하는 테이블 

입력/수정/삭제가 자주 발생하지 않는 테이블 

자주 조인되어 사용되는 테이블 

ORDER BY, GROUP BY, UNION이 빈번한 테이 

 

파티셔닝 

대용량의 테이블이나 인덱스를 성능 향상과 수월한 관리를 위해 작은 논리적 단위인 파티션으로 나누는 것 

테이블이나 인덱스를 파티셔닝하면 파티션키 또는 인덱스키에 따라 물리적으로 별도의 공간에 데이터가 저장된다. 

데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행된다. 

 

파티셔닝 장점 

데이터 가용성이 향상된다. 

파티션별로 데이터가 분산되어 저장되므로 디스크의 성능이 향상된다. 

파티션별로 백업 및 복구를 수행하므로 속도가 빠르다. 

 

파티셔닝 단점 

하나의 테이블을 세분화하여 관리하므로 세심한 관리가 요구된다. 

테이블 간 조인에 대한 비용이 증가한다. 

용량이 작은 테이블에 파티셔닝을 수행하면 오히려 성능이 저하된다. 

 

파티션의 종류 

범위분할 : 지정한 열의 값을 기준으로 분할 

해시분할 : 해시 함수를 적용한 결과 값에 따라 데이터를 분할 

특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로, 데이터를 고르게 분산할 때 유용 

특정 데이터가 어디에 있는지 판단할 수 없음 

고객번호, 주민번호 등과 같이 데이터가 고른 컬럼에 효과적 

조합분할 : 먼저 범위분할 후 해시분할 

범위분할한 파티션이 너무 커서 관리가 어려울 때 유용 

 

데이터베이스 용량 설계 

데이터가 저장될 공간을 정의하는 것으로, 테이블에 저장할 데이터 양과 인덱스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야 한다. 

 

데이터베이스 용량 설계의 목적 

데이터베이스의 용량을 정확히 산정하여 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높인다. 

 

데이터 접근성을 향상시키는 설계 방법 

테이블의 테이블스페이스와 인덱스의 테이블스페이스를 분리하여 구성한다. 

테이블스페이스와 임시 테이블스페이스를 분리하여 구성한다. 

테이블을 마스터 테이블과 트랜잭션 테이블로 분류한다. 

 

 

<통합구현> 

통합구현 : 사용자의 요구사항에 맞춰 송수신 모듈과 중계 모듈 간의 연계를 구현하는 것 

송수신시스템, 모듈, 중계시스템, 연계데이터, 네트워크로 구성 

 

직접연계 : DB Link, API, JDBC, DB Connection 

간접연계 : 연계 솔루션, ESB, Socket, Web Service 

 

페이지 나누기 

20200925 

 

연계데이터 식별 및 표준화 순서 

범코식표명 

연계범위 및 항목 정의 - 연계 코드 변환 및 매핑 - 연계 데이터 식별자와 변경 구분 추가 - 연계 데이터 표현 방법 정의 - 연계 정의서 및 명세서 작성 

 

연계 매커니즘 

송수신 시스템과 중계 시스템 간의 모듈 구성과 연계 방식 

데이터의 생성 및 전송을 담당하는 송신 체계 + 데이터 수신 및 운영 DB 반영을 담당하는 수신체계 + 송수신 시스템 사이에서 송수신과 송수신 시스템 현황을 모니터링하는 중계 시스템 

 

직접연계 : 중간 매개체 없이 송수신 시스템이 직접 연계 

간접연계 : 중간 매개체 있음 

 

직접연계 

간접연계 

장점 

개발 비용이 저렴 

개발 기간이 짧음 

연계 처리 성능이 뛰어남 

서로 다른 네트워크, 프로토콜 등 다양한 환경의 연계 및 통합이 가능하다 

송수신 시스템 간 인터페이스가 변경되어도 오류 없이 서비스가 가능하다 

보안 품질 보장과 비즈니스 처리를 위한 로직을 쉽게 반영할 수 있다 

단점 

송수신 시스템 간 결합도가 높아 시스템 변경 시 오류가 발생할 수 있다. 

보안을 위한 암호화, 복호화 처리와 비즈니스 로직을 적용하기 어렵다 

연계 및 통합이 가능한 시스템 환경이 제한적 

연계 매커니즘과 아키텍처가 복잡 

개발 및 적용 기간이 비교적 길다 

중간 매개체로 인해 성능이 저하될 수 있다 

종류 

DB Link, DB Connection, API, JDBC 

연계 솔루션, ESB, Socket, Web Service 

 

연계 매커니즘 구성 순서 (중간중간 오류 로그 기록) 

<생매태서> 

연계 데이터 생성 및 추출 - 코드 매핑 및 데이터 변환 - 인터페이스 테이블 또는 파일 생성 - 연계 서버 또는 송신 어댑터 => (전송) => 연계 서버 또는 수신 어댑터 -> 인터페이스 테이블 또는 파일 생성 -> 코드 매핑 및 데이터 변환 -> 운영 DB에 연계 데이터 반영 

 

연계 데이터 생성 및 추출 

연계 솔루션과 관계없이 응용 프로그램이나 DB 등 응용 시스템에서 연계 데이터를 생성하고 추출하는 것 

 

코드 매핑 및 데이터 변환 

송신 시스템에서 작성한 코드를 수신 시스템에서 사용하는 코드로 매핑 및 변환 

변환 시점 : 

송신 시스템에서 인터페이스 테이블 또는 파일을 생성할 때 

수신 시스템에서 운영 DB로 연계 데이터를 반영할 때 

연계 서버를 설치할 때 

 

인터페이스 테이블 또는 파일 생성 

연계 데이터를 인터페이스 테이블/파일 형식으로 생성 

 

로그 기록 

송수신 시스템에서 수행되는 모든 과정에 대한 결과 및 오류에 대한 정보를 로그 테이블이나 파일에 기록하는 것 

 

연계 서버 또는 송수신 어댑터 

신어댑터에서 인터페이스 테이블 또는 파일을 전송 형식에 맞도록 변환하고 송신을 수행 

수신어댑터에서 송신 시스템으로부터 수신한 데이터를 인터페이스 테이블이나 파일로 생성 

 

연계 매커니즘 구간별 오류 발생 시점 

송신 시스템 : 연계 데이터 생성 및 추출 시, 코드 매핑 및 데이터 변환 시, 인터페이스 테이블 및 파일 등록 시 

수신 시스템 : 연계 데이터 로드 시, 코드 매핑 및 데이터 변환 시, 운영 DB에 반영 시 

연계 서버 : 연계 데이터 로드 및 전송 형식으로 변환 시, 연계 데이터 송수신 시, 수신 시스템의 데이터 형식으로 변환 및 로드 시 

 

장애 및 오류 유형과 처리 방안 

오류유형 

내용 

 

처리방안 

송신 시스템의 연계 프로그램 

데이터 생성 및 추출 권한이 없거나 데이터 변환시 예외 미처리 등 연계 프로그램 구현상의 오류 

등록되지 않은 코드로 매핑 불가능 

송수신 연계 프로그램의 로그를 확인하여 원인을 분석한 후 처리하고, 데이터 전송이나 반영을 재작업함 

수신 시스템의 연계 프로그램 

운영 DB 접근 권한이 없거나 데이터 변환 및 반영 시 예외 미처리 등 연계 프로그램 구현상의 오류 

등록된 데이터가 존재하지 않음 

연계 서버 

연계 서버 실행, 송수신, 전송 형식 변환 등 서버의 기능과 관련된 오류 

연계 서버 미작동 

송수신 시스템의 IP 및 PORT 접속 불가능 

연계 서버 재시작 

연계 서버 로그를 확인하여 원인을 분석한 후 처리 

연계 데이터 

송신 시스템에서 생성 및 추출된 데이터의 값이 유효하지 않은 오류 

유효하지 않은 날짜 

송신 연계 프로그램의 로그를 확인하여 데이터를 보정한 후 재전송 

 

연계 데이터 보안 = 전송구간보안 + 데이터보안 

송신 시스템에서 수신 시스템으로 전송되는 연계 데이터는 보안에 취약할 수 있으므로 데이터의 중요성을 고려하여 전송 구간에서의 암/복호화 또는 데이터의 암/복호화를 구현한다. 

 

전송 구간 보안 

전송되는 데이터나 패킷을 쉽게 가로챌 수 없도록 암호화 기능이 포함된 프로토콜을 사용하거나, 가로채더라도 내용을 확인할 수 없게 데이터나 패킷을 암호화 

전송 구간 암호화를 지원하는 VPN이나 연계 솔루션 적용 

 

데이터 보안 

송신 시스템에서 연계 데이터를 추출할 때와 수신 시스템에서 데이터를 운영 DB에 반영할 때 데이터를 암/복호화 하는 것 

개인정보보호법에 따른 주민등록번호, 운전면허번호, 장애인관리번호, 은행계좌번호, 신용카드번호 

 

암호화 알고리즘 

주민등록번호, 은행계좌번호 같은 중요정보를 보호하기 위해 평문을 암호화된 문장으로 만드는 절차 또는 방법 

단방향 암호화 방식 : 해시 이용 

양방향 암호화 방식 : 개인키 및 공개키 이용, SEED, ARIA, DES, AES, RSA 

 

연계 모듈 구현 환경 

연계 매커니즘에 따라 구현된 연계 시스템 환경 및 모듈 구현 환경 

연계 모듈 구현 환경 = 트리거 또는 프로그래밍 언어를 이용한 EAI, ESB 방식 + 배치 프로그램 및 인터페이스 파일을 이용한 웹서비스 방식으로 구분 

 

트리거 

데이터베이스 시스템에서 데이터의 삽입, 갱신, 삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL 

 

EAI 

기업 내 각종 애플리케이션 및 플랫폼 간의 정보 전달, 연계, 통합 등 상호 연동이 가능하게 해주는 솔루션 

비즈니스 간 통합 및 연계성을 증대시켜 각 시스템 간의 확성을 높여줌 

구축 유형 : 

유형 

기능 

Point-to-Point 

가장 기본적인 애플리케이션 통합 방식으로, 애플리케이션을 1:1로 연결 

변경 및 재사용이 어렵다. 

Hub&Spoke 

단일 접점인 허브 시스템을 통해 데이터를 전송하는 중앙 집중형 방식 

확장 및 유지보수가 용이 

허브 장애 발생 시 시스템 전체에 영향을 미침 

Message Bus 

(ESB) 

애플리케이션 사이에 미들웨어를 두어 처리하는 방식 

확장성이 뛰어나며 대용량 처리가 가능 

Hybrid 

그룹 간에는 Message Bus, 그룹 내에서는 Hub&Spoke 방식을 사용 

필요한 경우 한 가지 방식으로 EAI 구현 가능 

데이터 병목 현상 최소화 가능 

 

미들웨어 

운영체제와 해당 운영체제에 의해 실행되는 응용 프로그램 사이에서 운영체제가 제공하는 서비스 이외에 추가적인 서비스를 제공하는 소프트웨어 

 

ESB 

애플리케이션 간 연계, 데이터 변환, 웹서비스 지원 등 표준 기반의 인터페이스를 제공하는 솔루션 

특정 서비스에 국한되지 않고 범용적으로 사용하기 위하여 애플리케이션과의 결합도를 약하게 유지한다. 

애플리케이션 통합 측면에서 EAI와 유사하지만 애플리케이션 보다는 서비스 중심의 통합을 지향 

 

웹서비스 

네트워크의 정보를 표준화된 서비스 형태로 만들어 공유하는 기술로, 서비스 지향 아키텍처(SOA) 개념을 실현하는 대표적인 기술 

SOAP, UDDI, WSDL로 구성 

 

서비스 지향 아키텍처 

기업의 소프트웨어 인프라인 정보시스템을 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중심으로 구축하는 정보기술 아키텍처 

 

XML 

웹브라우저 간 HTML 문법이 호환되지 않는 문제와 SGML의 복잡함을 해결하기 위하여 개발된 다목적 마크업 언어 

대소문자를 구분한다 

속성값은 반드시 큰 따옴표로 묶어야 한다 

트리 구조로 되어 있어 상위 태그는 여러 하위 태그를 가질 수 있다 

 

SOAP(Simple Object Access Protocol) 

컴퓨터 네트워크 상에서 HTTP/HTTPS, SMTP 등을 이용하여 XML 기반의 메시지를 교환하기 위한 통신 규약 

웹서비스에서 사용되는 메시지의 형식과 처리 방법을 지정 

HTTP 기반에서 동작하기 때문에 프록시와 방화벽의 영향 없이 통신 가능 

XML과 동일한 텍스트 형식의 데이터 포맷으로 다양한 플랫폼과 시스템에서 활용가능 

 

UDDI(Universal Description, Discovery and Integration) 

인터넷에서 전세계의 비즈니스 업체 목록에 자신의 정보를 등록하기 위한 확장성 생성 언어(XML) 기반의 규격 

WSDL을 등록하여 서비스와 서비스 제공자를 검색하고 접근하는 데 사용 

 

WSDL(Web Services Description Language) 

웹서비스명, 서비스 제공위치, 프로토콜 등 웹서비스에 대한 상세 정보를 XML 형식으로 구현 

 버전1.1에서 2.0으로 가면서 operation이 types에 직접 연결되면서 message가 삭제됨 

 

연계 테스트 

구축된 연계 시스템과 연계 시스템의 구성 요소가 정상적으로 동작하는지 확인하는 활동 

 

연계 매커니즘에서 “전송"은 송신 시스템에서 생성된 연계 데이터를 네트워크 환경에 맞는 데이터로 변환한 후 수신 시스템으로 보내는 것으로, 전송 주기는 실시간, 분, 시간, 일 단위 등으로 설정할 수 있다. 이 전송 주기를 결정하는 항목 3가지? 

송신 시스템에서 연계 데이터를 생성 및 추출하는 방식 

수신 시스템에서 연계 데이터를 운영 DB에 반영하는 방식 

연계 서버 또는 송수신 어댑터의 연계 주기 

 

연계 매커니즘에서 “코드 매핑 및 데이터 변환”은 송신 시스템에서 사용하는 코드를 수신 시스템에서 사용하는 코드로 매핑 및 변환하는 것으로, 시스템 환경과 특성에 따라 적절한 시점을 선택하여 수행해야 한다. 

송신 시스템 : 인터페이스 테이블 또는 파일을 생성할 때 

수신 시스템 : 운영 DB에 연계 데이터를 반영할 때 

연계 서버 : 설치할 때 

 

<개발환경 구축> 

응용소프트웨어 개발을 위해 개발 프로젝트를 이해하고 소프트웨어 및 하드웨어 장비를 구축하는 것 

하드웨어 환경 : 클라이언트(PC/스마트폰) + 서버(웹서버, WAS, 데이터베이스 서버, 파일 서버) 

 

웹 서버 

클라이언트로부터 직접 요청을 받아 처리하는 서버로, 저용량의 정적 파일들을 제공 

Apache HTTP Server, Google Web Server, Microsoft Internet Information Server 

 

웹 애플리케이션 서버 

사용자에게 동적 서비스를 제공하기 위해 웹 서버로부터 요청을 받아 데이터 가공 작업을 수행하거나, 웹 서버와 데이터베이스 서버 또는 웹 서버와 파일 서버 사이에서 인터페이스 역할을 수행하는 서버 

Apache Tomcat, WebSphere, WebLogic, JEUS 

 

데이터베이스 서버 

데이터베이스와 이를 관리하는 DBMS를 운영하는 서버 

MySQL Server, Oracle Server, Microsoft SQL Server 

 

파일 서버 

데이터베이스에 저장하기에는 비효율적이거나, 서비스 제공을 목적으로 유지하는 파일들을 저장하는 서버 

AWS S3 

 

웹서버의 기능6 

HTTP/HTTPS 지원 : 브라우저로부터 요청을 받아 응답할 때 사용되는 프로토콜 

통신 기록 : 처리한 요청들을 로그파일로 기록하는 기능 

정적 파일 관리 : HTML, CSS, 이미지 등의 정적파일들을 저장하고 관리하는 기능 

대역폭 제한 : 네트워크 트래픽의 포화를 방지하기 위해 응답속도를 제한하는 기능 

가상 호스팅 : 하나의 서버로 여러 개의 도메인 이름을 연결하는 기능 

인증 : 사용자가 합법적인 사용자인지를 확인하는 기능 

 

HTTP vs HTTPS 

HTTP : 하이퍼텍스트 문서를 전송하기 위해 사용하는 프로토콜 

HTTPS : HTTP에 보안 모듈을 결합시킨 프로토콜 

 

소프트웨어 환경 

클라이언트와 서버 운영을 위한 시스템 소프트웨어와 개발에 사용되는 개발 소프트웨어로 구성 

 

개발언어 산정기준 <범친이 효적> 

적정성 : 개발하려는 소프트웨어의 목적에 적합 

효율성 : 코드의 작성 및 구현이 효율적 

이식성 : 다양한 시스템 및 환경에 적용 가능 

친밀성 : 개발 언어에 대한 개발자들의 이해도와 활용도가 높아야 함 

범용성 : 다른 개발 사례가 존재하고 여러 분야에서 활용되고 있어야 함 

 

형상관리 

소프트웨어의 개발 과정에서 소프트웨어의 변경사항을 관리하기 위해 개발된 일련의 활동 

 

모듈 

모듈화를 통해 분리된 시스템의 각 기능들로, 서브루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업단위 등과 같은 의미로 사용된다. 

 

모듈화 

소프트웨어의 성능을 향상시키거나 시스템의 수정 및 재사용, 유지관리 등이 용이하도록 시스템의 기능들을 모듈 단위로 분해하는 것 

 

페이지 나누기 

20200927 

 

DBMS접속 

사용자가 데이터를 사용하기 위해 응용 시스템을 이용하여 DBMS에 접근하는 것 

 

응용시스템 = 웹서버 + WAS 

 

DBMS 접속기술 

DBMS에 접근하기 위해 사용하는 API 또는 API의 사용을 편리하게 도와주는 프레임워크 

 

API 

응용 프로그램 개발 시 운영체제나 DBMS 등을 이용할 수 있도록 규칙 등에 대해 정의해 놓은 인터페이스 

 

프레임워크 

특정 기능을 수행하기 위해 필요한 클래스나 인터페이스 등을 모아둔 집합체 

 

SQL Mapping 

SQL로 호출되는 테이블이나 열 데이터를 개발하려는 언어의 객체에 맞도록 변환하여 연결하는 것 

 

MyBatis 

JDBC에서 XML로 SQL을 쉽게 사용할 수 있도록 하는 SQL Mapping 기반의 오픈소스 접속 프레임워크 

 

NVL 함수 

NVL(A, B)에서 A가 Null인 경우 B를 반환 

 

커서 

SQL문의 실행 결과로 반환된 복수 개의 튜플들에 접근할 수 있도록 해주는 기능 

 

 

정적SQL 

동적SQL 

SQL구성 

커서를 통한 정적 처리 

문자열 변수에 담아 동적 처리 

개발 패턴 

커서의 범위 안에서 반복문을 활용하여 SQL 작성 

NVL 함수 없이 로직을 통해 SQL 작성 

실행속도 

빠름 

 

사전검사 

가능 

불가능 

 

동적 SQL 

다양한 조건에 따라 SQL 구문을 동적으로 변경하여 처리할 수 있는 SQL 처리 방식 

 

프레임워크의 특성<모재확제> 

모듈화 : 캡슐화를 통해 모듈화를 강화하고 설계 및 구현의 변경에 따른 영향을 최소화함으로써 소프트웨어의 품질을 향상시킴 

재사용성 : 재사용 가능한 모듈들을 제공함으로써 개발자의 생산성을 향상시킴 

확장성 : 다형성을 통한 인터페이스 확장이 가능하여 다양한 형태와 기능을 가진 애플리케이션 개발이 가능 

제어의 역흐름 : 개발자가 관리하고 통제해야 하는 객체들의 제어 권한을 프레임워크에 넘김으로써 생산성을 향상시킴 

 

페이지 나누기 

20200928 

 

DTO (Data Transfer Object) 

데이터 교환을 위해 사용할 객체를 만드는 과정 

로직은 구현하지 않고 변수와 데이터를 저장하고 반환하는 메소드만 구현한다 

변수 및 객체를 송수신할 데이터의 자료형에 알맞게 생성한다. 

 

DAO (Data Access Object) 

데이터베이스에 접근하고 SQL을 활용하여 데이터를 실제로 조작하는 코드를 구현하는 과정 

 

@Repository 

DAO에 특화된 어노테이션으로, 클래스를 Spring 프레임워크 객체(Bean)로 등록함. 

메소드에서 발생하는 예외들을 Spring 프레임워크에서 처리하도록 만듬. 

 

@Autowired 

복잡한 XML 태그 없이 자동으로 해당 객체와 동일한 타입의 Spring 프레임워크 객체를 연결해주는 어노테이션. 

 

SqlSession 

XML로 작성된 SQL문을 사용하기 위한 객체 

 

Service 

사용자의 요청에 응답하기 위한 로직을 구현하는 과정 

 

Controller 

사용자의 요청에 적절한 서비스를 호출하여, 그 결과를 사용자에게 반환하는 코드를 구현하는 과정 

예를 들어 사용자가 검색을 요청했다면, 여러 서비스 중에 “검색"에 대한 서비스를 컨트롤러에서 고름 

 

@Service 

서비스 클래스를 구현하기에 적합한 Spring 프레임워크의 객체로 등록 

 

@Resource(name = “이름") 

Autowired가 동일한 타입의 Spring 프레임워크 객체를 연결해준다면, Resource는 동일한 이름으로 연결 

 

@RequestMapping(value = “URL”, method = RequestMethod.POST) 

‘URL’을 Controller의 메소드와 매핑할 때 사용하는 어노테이션 

메소드 정보를 숨기려면 POST, URL에 노출하려면 GET을 사용 

 

웹사이트 - Controller – Service – DAO – XML(SQL) - Database 

 

배치 프로그램 

사용자와의 상호작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하는 것 

자동으로 수행되는 주기에 따라 정기/이벤트성/On-Demand 배치로 구분 

 

정기 배치 

일, 주, 월과 같이 정해진 기간에 정기적으로 수행 

 

이벤트성 배치 

특정 조건을 설정해두고 조건이 충족될 때만 수행 

 

On-Demand 배치 

사용자 요청 시 수행 

 

배치 프로그램이 갖춰야 하는 필수 요소 

대용량 데이터 : 대량의 데이터를 가져오거나, 전달하거나, 계산하는 등의 처리가 가능 

자동화 : 심각한 오류가 발생하는 상황을 제외하고는 사용자의 개입 없이 수행 

견고성 : 잘못된 데이터나 데이터 중복 등의 상황으로 중단되는 일 없이 수행 

안정성/신뢰성 : 오류가 발생하면 오류의 발생 위치, 시간 등을 추적 가능 

성능 : 다른 응용 프로그램의 수행을 방해하지 않아야 하고, 지정된 시간 내에 처리 완료 

 

배치 스케줄러 

일괄 처리 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구 

스프링배치, Quartz 

 

스프링배치 

Job : 수행할 작업 정의 

Job Launcher : 실행을 위한 인터페이스 

Step : Job 처리를 위한 제어 정보 

Job Repository : Step의 제어 정보를 포함하여 작업 실행을 위한 모든 정보 저장 

 

Quartz 

Scheduler : 실행환경 관리 

Job : 수행할 작업 정의 

JobDetail : Job의 상세 정보 

Trigger : Job의 실행 스케줄 정의 

 

Cron 

리눅스의 스케줄러 도구로, crontab 명령어를 통해 작업을 예약할 수 있다. 

-e : 편집기(Editor)를 호출하여 작업 추가 및 수정 

-l : 작업 목록(List) 출력 

-r : 작업 삭제(Remove) 

 

분 시 일 월 요일 명령어 

 

팬인/팬아웃은 답안에 숫자(개수)로 적어야 한다. 

 

웹 응용 시스템 : 웹서버와 WAS로 구성되며 웹 응용 프로그램이 DBMS에 접근하기 위한 인터페이스 역할을 수행 

 

사용자 인터페이스 

사용자와 시스템 간 상호작용이 원활하게 이뤄지도록 도와주는 장치나 소프트웨어 

 

사용자 인터페이스의 3가지 분야 

정보 제공과 전달을 위한 물리적 제어에 관한 분야 

콘텐츠의 상세적인 표현과 전체적인 구성에 관한 분야 

모든 사용자가 편리하고 간편하게 사용하도록 하는 기능에 관한 분야 

 

UI의 기본 원칙 <유아인은 유학&직유> 

학습성 : 누구나 쉽게 배우고 익힐 수 있다 

유연성 : 사용자의 요구사항을 최대한 수용하고 실수를 최소화해야 한다 

직관성 : 누구나 쉽게 이해하고 사용할 수 있어야 한다 

유효성 : 사용자의 목적을 정확하고 완벽하게 달성해야 한다 

 

UI 설계 지침 <일사단결! 가표접명오!> 

사용자 중심 

일관성 

단순성 

결과 예측 가능 

가시성 

표준화 

접근성 

명확성 

오류 발생 해결 

 

UI 설계 도구 

사용자의 요구사항에 맞게 UI의 화면 구조나 화면 배치 등을 설계할 때 사용하는 도구 

 

와이어프레임 : 기획 단계의 초기에 제작하는 것으로, 페이지에 대한 개략적인 레이아웃이나 UI 요소에 대한 뼈대 설계 

와이어프레임을 제작할 때는 각 페이지의 영역 구분, 콘텐츠, 텍스트 배치 등을 화면 단위로 설계한다. 

 

목업 : 디자인, 사용방법 설명, 평가 등을 위해 와이어프레임보다 좀 더 실제 화면과 유사하게 만든 정적인 형태의 모형 

시각적으로만 구성요소를 배치하는 것으로 실제로 구현되지는 않는다. 

 

스토리보드 

와이어프레임에 콘텐츠에 대한 설명, 페이지 간 이동 흐름 등을 추가한 문서 

 

프로토타입 

와이어프레임이나 스토리보드 등에 “인터랙션”을 적용함으로써 실제 구현된 것처럼 테스트가 가능한 동적 모형 

 

페이지 나누기 

20200929 

유스케이스 

사용자 측면에서의 요구사항으로, 사용자가 원하는 목표를 달성하기 위해 수행할 내용을 기술 

 

UI 표준 및 지침 

UI 표준 : 전체 시스템에 포함된 모든 UI에 공통적으로 적용될 내용으로, 화면 구성이나 화면 이동 등이 포함 

UI 지침 : UI 요구사항, 구현 시 제약사항 등 UI 개발 과정에서 꼭 지켜야 할 공통의 조건을 의미 

 

웹의 3요소 

웹 사이트 개발 시 고려할 사항 

웹 표준(Web Standards) : 웹에서 사용되는 규칙 또는 기술을 의미하는 것으로, 웹 사이트 작성 시 이용하는 HTML, JavaScript 등에 대한 규정, 웹 페이지가 다른 기종이나 플랫폼에서도 구현도록 제작하는 기법 등을 포함 

웹 접근성(Web Accessibility) : 누구나, 어떠한 환경에서도 웹 사이트에서 제공하는 모든 정보를 접근하여 이용할 수 있도록 보장하는 것 

웹 호환성(Cross Browsing) : 하드웨어나 소프트웨어 등이 다른 환경에서도 모든 이용자에게 동등한 서비스를 제공하는 것 

 

UI 스타일 가이드 

개발자나 디자이너들이 UI를 작성할 때 기준이 되는 규칙들로, 구동환경, 레이아웃, 네비게이션, 기능, 구성요소 순으로 정의한다. 

 

UI 요구사항 확인 

새로 개발할 시스템에 적용할 UI 관련 요구사항을 조사해서 작성하는 단계로, 다양한 경로를 통해 사용자의 요구사항을 조사하고 분석한 후 작성해야 한다. 

목표 정의 -> 활동 사항 정의 -> UI 요구사항 작성 

 

목표 정의 

사용자들을 대상으로 인터뷰를 진행한 후 사용자들의 의견이 수렴된 비즈니스 요구사항을 정의 

인터뷰를 통해 사업적, 기술적인 요구사항을 명확히 이해한다. 

인터뷰 진행 시 유의사항 

인터뷰는 가능하면 개별적으로 진행 

가능한 많은 사람을 인터뷰하여 다양한 의견을 수렴하되, 다수의 의견으로 인해 개인의 중요한 의견을 놓치지 않도록 주의 

인터뷰는 한 시간을 넘지 않도록 함 

인터뷰 진행은 반드시 사용자 리서치를 시작하기 전에 해야 함 

<인터뷰 후 리서치> 

 

활동사항 정의 

조사한 요구사항을 토대로 앞으로 해야 할 활동 사항을 정의 

사용자와 회사의 비전을 일치시키는 작업을 수행 

리서치 규모, 디자인 목표 등 결정할 수 있도록 각각에 필요한 예산과 일정 결정 

기술의 발전 가능성을 파악하고 UI 디자인의 방향을 제시 

인터뷰한 내용을 기반으로 경영진마다 다르게 이해하고 있는 프로젝트에 대해 정확히 이해하고 협의하도록 돕는다 

사업 전략 및 목표, 프로세스의 책임자 선정, 회의 일정 및 계획 작성, 우선순위의 선정, 개별적인 단위업무를 구분 

 

UI 요구사항 작성 

여러 경로를 통해 수집된 사용자들의 요구사항을 검토하고 분석하여 UI 개발 목적에 맞게 작성해야 한다 

반드시 실사용자 중심으로 작성 

여러 사람의 인터뷰를 통해 다양한 의견을 수렴해서 작성 

UI 요구사항을 바탕으로 UI의 전체적인 구조를 파악 및 검토해야 함 

요구사항 요소 확인 -> 정황 시나리오 작성 -> 요구사항 작성 

 

요구사항 요소 확인 

파악된 요구사항 요소의 종류와 각각의 표현 방식 검토 

 

데이터 요구 : 사용자가 요구하는 모델과 객체들의 주요 특성을 기반으로 하여 데이터 객체들을 정리 

기능 요구 : 사용자의 목적 달성을 위해 무엇을 실행해야 하는지를 동사형으로 설명 

제품/서비스의 품질 : 데이터 및 기능 요구 외에 제품의 품질, 서비스, 감성적 품질 등을 고려하여 작성 

제약 사항 : 제품 완료 데드라인, 전체 개발 및 제작에 필요한 비용, 시스템 준수에 필요한 규제가 포함 

 

정황 시나리오 작성 

사용자의 요구사항을 도출하기 위해 작성하는 것으로, 사용자가 목표를 달성하기 위해 수행하는 방법을 순차적으로 묘사 

정황 시나리오는 요구사항 정의에 사용되는 초기 시나리오다. 

개발하는 서비스의 모습을 상상하는 첫 번째 단계로 사용자 관점에서 시나리오를 작성해야 한다. 

사용자가 주로 사용하는 기능 위주로 작성해야 하며, 함께 발생되는 기능들은 하나의 시나리오에 통합한다. 

육하원칙에 따라 간결하고 명확하게 작성한다. 

작성된 시나리오는 외부 전문가 또는 경험이 풍부한 사람에게 검토를 의뢰한다. 

 

UI 프로토타입 

프로토타입 : 사용자의 요구사항을 기반으로 실제 동작하는 것처럼 만든 동적인 형태의 모형으로, 테스트가 가능하다 

장점 : 사용자를 설득하고 이해시키기 쉽다, 요구사항과 기능의 불일치 등으로 인한 혼선을 예방할 수 있어 개발 시간을 줄일 수 있다, 사전에 오류를 발견할 수 있다 

단점 : 부분적으로 프로토타이핑을 진행하다보면 중요한 작업이 생략될 수 있다, 프로토타입에 사용자의 모든 요구사항을 반영하기 위한 반복적인 개선 및 보완 작업 때문에 작업 시간을 증가시킬 수 있고 필요 이상으로 자원을 소모할 수 있다 

페이퍼 프로토타입 + 디지털 프로토타입 

 

UI 흐름 설계 

업무의 진행 과정이나 수행 절차에 따른 흐름을 파악하여 화면과 폼을 설계하는 단계 

기능 작성 -> 입력 요소 확인 -> 유스케이스 설계 -> 기능 및 양식 확인 

 

기능 작성 

화면에 표현할 기능을 작성하는 단계 

 

UI 상세 설계 

실제 설계 및 구현을 위해 모든 화면에 대해 자세하게 설계를 진행하는 단계 

 

상세설계순서 : 요구사항 확인 -> UI 설계서 표지 및 개정 이력 작성 -> UI 구조 설계 -> 메뉴 구조 설계 -> 화면 설계 

 

네비게이션 vs 사이트맵 

네비게이션 : 사용자가 사이트에서 원하는 정보를 빠르게 찾을 수 있도록 안내 

사이트맵 : UI 시스템 구조를 바탕으로 사이트에 표시할 콘텐츠를 한 눈에 알아볼 수 있도록 메뉴별로 구분한 모형 

 

--- 

 

애플리케이션 테스트 

애플리케이션에 잠재되어 있는 결함을 찾아내는 일련의 행위 또는 절차 

 

Validation 확인 

사용자의 입장에서 개발한 소프트웨어가 고객의 요구사항에 맞게 구현되었는지 확인하는 것 

 

Verification 검증 

개발자의 입장에서 개발한 소프트웨어가 명세서에 맞게 만들어졌는지 점검하는 것 

 

애플리케이션 테스트의 기본 원리 

완벽한 테스트 불가능 

애플리케이션 테스트는 소프트웨어의 잠재적인 결함을 줄일 수 있지만 결함이 없다고 증명할 수는 없다. 즉 완벽한 소프트웨어 테스팅은 불가능하다. 

 

결함 집중(Defect Clustering) 

애플리케이션의 결함은 대부분 개발자의 특성이나 애플리케이션의 기능적 특징 때문에 특정 모듈에 집중되어 있다. 애플리케이션의 20%에 해당하는 코드에서 전체 결함의 80%가 발견된다고 하여 “파레토 법칙"을 적용하기도 한다. 

 

살충제 패러독스(Pesticide Paradox) 

애플리케이션 테스트에서는 동일한 테스트 케이스로 동일한 테스트를 반복하면 더 이상 결함이 반복되지 않는 “살충제 패러독스” 현상이 발생한다. 따라서 테스트 케이스를 지속적으로 보완 및 개선해야 한다. 

 

정황(Context) 의존 

애플리케이션 테스트는 소프트웨어 특징, 테스트 환경, 테스터 역량 등 정황(Context)에 따라 테스트 결과가 달라질 수 있으므로, 정황에 따라 테스트를 다르게 수행해야 한다. 

 

오류-부재의 궤변(Absence of Errors Fallacy) 

소프트웨어의 결함을 모두 제거해도 사용자의 요구사항을 만족시키지 못하면 해당 소프트웨어는 품질이 높다고 말할 수 없다. 

 

테스트와 위험은 반비례 

테스트를 많이 하면 할수록 미래에 발생할 위험을 줄일 수 있다. 

 

테스트의 점진적 확대 

테스트는 작은 부분에서 시작하여 점점 확대하며 진행해야 한다. 

 

테스트의 별도 팀 수행 

테스트는 개발자와 관계없는 별도의 팀에서 수행해야 한다. 

 

테스트 케이스 

구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 입력 값, 실행 조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서 

 

애플리케이션 테스트의 분류 

 

프로그램 실행 여부에 따른 테스트 

정적 테스트 : 프로그램을 실행하지 않고 명세서나 소스 코드를 대상으로 분석하는 테스트. 개발 초기에 결함을 발견할 수 있어 소프트웨어의 개발 비용을 낮추는 데 도움이 됨. 

워크스루, 인스펙션, 코드검사 

 

워크스루 Walkthrough = 검토회의 

소프트웨어 개발자의 작업 내역을 개발자가 모집한 전문가들이 검토하는 것 

소프트웨어 검토를 위해 미리 준비된 자료를 바탕으로 정해진 절차에 따라 평가 

오류의 조기 검출을 목적으로 하며 발견된 오류는 문서화한다. 

 

인스펙션 Inspection 

워크스루를 발전시킨 형태로, 소프트웨어 개발 단계에서 산출된 결과물의 품질을 평가하며 이를 개선하기 위한 방법 등을 제시 

 

동적 테스트 : 프로그램을 실행하여 오류를 찾는 테스트로, 소프트웨어 개발의 모든 단계에서 테스트를 수행할 수 있다. 

블랙박스 테스트 + 화이트박스 테스트 

 

테스트 기반(Test Bases)에 따른 테스트 

애플리케이션을 테스트 할 때 무엇을 기반으로 수행하느냐에 따라 명세/구조/경험 기반으로 나뉜다. 

 

명세 기반 테스트 

사용자의 요구사항에 대한 명세를 빠짐없이 테스트 케이스로 만들어 구현하고 있는지 확인하는 테스트 

동등분할, 경계 값 분석 

 

구조 기반 테스트 

소프트웨어 내부의 논리 흐름에 따라 테스트 케이스를 작성하고 확인하는 테스트 

구문 기반, 결정 기반, 조건 기반 

 

경험 기반 테스트 

유사 소프트웨어나 기술 등에 대한 테스터의 경험을 기반으로 수행하는 테스트 

경험 기반 테스트는 사용자의 요구사항에 대한 명세가 불충분하거나 테스트 시간에 제약이 있는 경우 수행하면 효과적이다. 

에러 추정, 체크 리스트, 탐색적 테스팅 

 

 

시각에 따른 테스트 

검증 테스트 : 개발자의 입장에서 개발된 소프트웨어가 명세서에 맞게 잘 작성되었는지 확인 

확인 테스트 : 사용자의 입장에서 개발된 소프트웨어가 고객의 요구사항에 맞게 잘 작성되었는지 확인 

 

목적에 따른 테스트 

회복 테스트 : 시스템에 여러 가지 결함을 주어 실패하도록 한 후 올바르게 복구되는지를 확인하는 테스트 

 

페이지 나누기 

20200930 

 

회복 테스트 : 시스템에 여러 가지 결함을 주어 실패하도록 한 후 올바르게 복구되는지를 확인하는 테스트 

안전 테스트 : 시스템에 설치된 시스템 보호 도구가 불법적인 침입으로부터 시스템을 보호할 수 있는지 확인하는 테스트 

회귀 테스트 : 소프트웨어의 변경 또는 수정된 코드가 오류 없이 작동하는지 확인하는 테스트 

병행 테스트 : 변경된 소프트웨어와 기존 소프트웨어에 동일한 데이터를 입력하여 결과값을 비교하는 테스트 

강도 테스트 : 소프트웨어에 과도한 정보량이나 빈도 등을 부과하여 과부하 시에도 소프트웨어가 정상적으로 작동하는지 확인하는 테스트 

성능 테스트 : 소프트웨어의 실시간 성능, 전체적인 효율성 등을 진단하는 테스트로, 소프트웨어의 처리량, 응답시간 등을 테스트 

구조 테스트 : 소프트웨어 내부의 논리적인 경로, 소스 코드의 복잡도 등을 평가하는 테스트 

 

테스트 기법에 따른 애플리케이션 테스트 

 

화이트박스 테스트 

모듈의 원시 코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법 

설계된 절차에 초점을 둔 구조적 테스트로 프로시저 설계의 제어 구조를 사용하여 테스트 케이스를 설계하며, 테스트 과정의 초기에 적용된다. 

모듈 안의 작동을 직접 관찰한다. 

원시 코드(모듈)의 모든 문장을 한 번 이상 실행함으로써 수행된다. 

프로그램의 제어 구조에 따라 선택, 반복 등의 분기점 부분들을 수행함으로써 논리적 경로를 제어한다. 

 

화이트박스 테스트의 종류 

기초 경로 검사 

테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법으로, 테스트 측정 결과는 실행 경로의 기초를 정의하는 데 지침으로 사용된다. 

 

제어 구조 검사 <제대로 줘> 

조건 검사 : 프로그램 모듈 내에 있는 논리적 조건을 테스트하는 테스트 케이스 설계 기법 

루프 검사 : 프로그램의 반복 구조에 초점을 맞춰 실시하는 테스트 케이스 설계 기법 

데이터 흐름 검사 : 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법 

 

화이트박스 테스트의 검증 기준 Coverage <문분조분조> 

테스트 케이스들이 테스트에 얼마나 적정한지를 판단하는 기준 Statement, Branch, Condition, Branch/Condition 

문장 검증 기준 : 소스 코드의 모든 구문이 한 번 이상 수행되도록 테스트 케이스 설계 

분기 검증 기준 : 소스 코드의 모든 조건문이 한 번 이상 수행되도록 테이스 케이스 설계 

조건 검증 기준 : 소스 코드의 모든 조건문에 대해 조건이 True인 경우와 False인 경우가 한 번 이상 수행되도록 

분기/조건 기준 : 소스 코드의 모든 조건문과 각 조건문에 포함된 개별 조건식의 결과가 True인 경우와 False인 경우가 한 번 이상 수행되도록 테스트 케이스 설계 

 

검증 기준의 종류(Coverage) <코라기> 

코드 커버리지 : 소스 코드의 구문, 분기, 조건 등의 구조 코드 자체가 얼마나 테스트 되었는지를 측정하는 방법 

화이트박스 테스트의 문분조분조가 코드 커버리지에 해당 

인 커버리지 : 테스트 시나리오가 수행한 소스코드의 라인 수 / 전체 소스 코드의 라인 수 

기능 기반 커버리지 : 실제 테스트가 수행된 기능의 수 / 전체 기능의 수 

 

블랙박스 테스트 

소프트웨어가 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증하는 테스트로, 기능 테스트라고도 한다. 

사용자의 요구사항 명세를 보면서 테스트하는 것으로, 주로 구현된 기능을 테스트한다. 

소프트웨어 인터페이스에서 실시되는 테스트 

부정확하거나 누락된 기능, 인터페이스 오류, 자료 구조나 외부 데이터베이스 접근에 따른 오류, 행위나 성능 오류, 초기화와 종료 오류 등을 발견하기 위해 사용되며, 테스트 과정의 후반부에 적용 

 

블랙박스 테스트의 종류 

동치 분할 검사 Equivalence Partitioning Testing 

입력 자료에 초점을 맞춰 테스트 케이스를 만들고 검사하는 방법 

프로그램의 입력 조건에 타당한 입력 자료와 타당하지 않은 입력 자료의 개수를 균등하게 하여 테스트 케이스를 정하고, 해당 입력 자료에 맞는 결과가 출력되는지 확인하는 기법 

 

경계값 분석 Boundary Value Analysis 

입력 자료에만 치중한 동치 분할 기법을 보완하기 위한 기법 

입력 조건의 중간값보다 경계값에서 오류가 발생될 확률이 높다는 점을 이용하여 입력 조건의 경계값을 테스트 케이스로 선정하여 검사하는 기법 

 

원인-효과 그래프 검사 Cause-Effect Graphing Testing 

입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법 

 

오류 예측 검사 Error Guessing 

과거의 경험이나 확인자의 감각으로 테스트하는 기법 

다른 블랙박스 테스트 기법으로는 찾아낼 수 없는 오류를 찾아내는 일련의 보충적 검사 기법이며, 데이터 확인 검사라고도 한다. 

 

비교 검사 Comparison Testing 

여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법 

 

개발 단계에 따른 애플리케이션 테스트 

검증(단위Unit - 통합Integration - 시스템System) - 확인(인수Acceptance) 

 

단위 테스트 

코딩 직후 소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트에 초점을 맞춰 테스트하는 것 

인터페이스, 외부적 I/O, 자료 구조, 독립적 기초 경로, 오류 처리 경로, 경계 조건 등을 검사한다. 

사용자의 요구사항을 기반으로 한 기능성 테스트를 최우선으로 수행한다. 

구조 기반 테스트와 명세 기반 테스트로 나뉘지만 주로 구조 기반 테스트를 시행한다. 

 

구조 기반 테스트 : 프로그램 내부 구조 및 복잡도를 검증하는 화이트박스 테스트 시행 

제어흐름, 조건결정 

명세 기반 테스트 : 목적 및 실행 코드 기반의 블랙박스 테스트 시행 

동등분할, 경계값분석 

 

통합 테스트 

단위 테스트가 완료된 모듈들을 통합하여 하나의 시스템으로 완성시키는 과정에서의 테스트 

모듈 간 또는 통합된 컴포넌트 간 상호작용 오류를 검사 

 

시스템 테스트 

개발된 소프트웨어가 해당 컴퓨터 시스템에서 완벽하게 수행되는가를 점검하는 테스트 

기능 요구사항은 블랙박스 테스트, 비기능 요구사항은 화이트박스 테스트 시행 

 

*환경적인 장애 리스크 

OS, DBMS, 시스템 운영 장비 등 테스트 시 사용할 물리적, 논리적 테스트 환경과 실제 소프트웨어를 사용할 환경이 달라서 발생할 수 있는 바람직하지 못한 결과를 의미 

 

인수 테스트 

개발한 소프트웨어가 사용자의 요구사항을 충족하는지에 중점을 두고 테스트 

다음 6가지의 종류로 구분하여 테스트한다. 

사용자 인수 테스트 : 사용자가 시스템 사용의 적절성 여부를 확인 

운영상 인수 테스트 : 시스템 관리자가 시스템 인수 시 수행하는 테스트 기법으로, 백업/복원 시스템, 재난 복구, 사용자 관리, 정기 점검 등을 확인 

계약 인수 테스트 : 계약 상의 인수/검수 조건을 준수하는지 여부를 확인한다. 

규정 인수 테스트 : 소프트웨어가 정부 지침, 법규, 규정 등 규정에 맞게 개발되었는지 확인한다. 

알파 테스트 : 개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트 기법. 테스트는 통제된 환경에서 행해지며, 오류와 사용상의 문제점을 사용자와 개발자가 함께 확인하면서 기록한다. 

베타 테스트 : 선정된 최종 사용자가 여러 명의 사용자 앞에서 행하는 테스트 기법. 실업무를 가지고 사용자가 직접 테스트하는 것으로, 개발자에 의해 제어되지 않은 상태에서 테스트가 행해지며, 발견된 오류와 사용상의 문제점을 기록하고 개발자에게 주기적으로 보고한다. 

 

통합 테스트 

단위 테스트가 끝난 모듈을 통합하는 과정에서 발생하는 오류 및 결함을 찾는 테스트 기법 

비점진적 통합 방식 vs 점진적 통합 방식 

 

비점진적 통합 방식 

단계적으로 통합하는 절차 없이 모든 모듈이 미리 결합되어 있는 프로그램 전체를 테스트하는 방법으로, 빅뱅 통합 테스트 방식이 있다. 

규모가 작은 소프트웨어에 유리하며 단시간 내에 테스트가 가능하다. 

전체 프로그램을 대상으로 하기 때문에 오류 발견 및 장애 위치 파악 및 수정이 어렵다. 

 

점진적 통합 방식 

모듈 단위로 단계적으로 통합하면서 테스트하는 방법으로, 하향식/상향식/혼합식 통합 방식이 있다. 

오류 수정이 용이하고, 인터페이스와 연관된 오류를 완전히 테스트할 가능성이 높다. 

 

하향식 통합 테스트 

주요 제어 모듈은 작성된 프로그램을 사용하고, 주요 제어 모듈의 종속 모듈들은 스텁으로 대체 -> 

깊이 우선 또는 넓이 우선 등의 통합 방식에 따라 하위 모듈인 스텁들이 한 번에 하나씩 실제 모듈로 교체 -> 

모듈이 통합될 때마다 테스트를 실시 -> 

새로운 오류가 발생하지 않음을 보증하기 위해 회귀 테스트 실시 

 

상향식 통합 테스트 

하위 모듈들을 클러스터로 결합 -> 

상위 모듈에서 데이터의 입출력을 확인하기 위해 더미 모듈인 드라이버 작성 -> 

통합된 클러스터 단위로 테스트 -> 

테스트가 완료되면 클러스터는 프로그램 구조의 상위로 이동하여 결합하고 드라이버는 실제 모듈로 대체 

 

클러스터 

하나의 주요 모듈과 관련된 종속 모듈의 그룹 

 

드라이버 

테스트 대상의 하위 모듈을 호출하고, 파라미터를 전달하고, 모듈 테스트 수행 후의 결과를 도출하는 도구 

 

스텁 

하향식 통합에 있어서 모듈 간 통합 테스트를 위해 일시적으로 필요한 조건만을 가지고 있으며, 임시로 제공되는 시험용 모듈 

 

애플리케이션 테스트 프로세스 

테스트 계획 -> 테스트 분석 및 디자인 -> 테스트 케이스 및 시나리오 작성 -> 테스트 수행 -> 테스트 결과 평가 및 리포팅 -> 결함 추적 및 관리 

 

애플리케이션 테스트 후 산출되는 문서 

테스트 계획서, 테스트 케이스, 테스트 시나리오, 테스트 결과서 

 

SQL Structured Query Language 

관계대수와 관계해석을 기초로 한 혼합 데이터 언어, 표준 관계형 데이터베이스 언어 

 

DDL Data Define Language 데이터 정의어 

DB 구조, 데이터 형식, 접근 방식 등 DB를 구축하거나 수정할 목적으로 사용하는 언어 

 

스키마 

데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 것으로 데이터 개체, 속성, 관계 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의 

페이지 나누기 

 

20201001 

트랜잭션 

데이터베이스에서 하나의 논리적 기능을 수행하기 위한 일련의 연산 집합으로서 작업의 단위 

하나의 트랜잭션은 commit 또는 rollback되어야 한다. 

 

COMMIT 

트랜잭션이 성공적으로 끝나면 데이터베이스가 새로운 일관성 상태를 가지기 위해 변경된 모든 내용을 데이터베이스에 반영하도록 하는  

 

ROLLBACK 

아직 COMMIT 되지 않은 변경된 모든 내용들을 취소하고 데이터베이스를 이전 상태로 되돌리는 명령어 

 

DML 

데이터베이스 사용자가 응용프로그램이나 질의어를 통해 저장된 데이터를 실질적으로 관리하는 데 사용하는 언어 

데이터베이스 사용자와 데이터베이스 관리 시스템  인터페이스 제공 

 

% : ~로 시작 또는 끝나는 문자열 

_ : 한 글자 자리 대체 

# : 한 숫자 자리 대체 

 

결함 추적 및 관리 

에러 발견 

에러 등록 

에러 분석 

결함 확정 

결함 할당 

결함 조치 

결함 조치 검토 및 승인 

 

에러 = 오류 : 결함(Defect)의 원인이 되는 것으로, 일반적으로 소프트웨어 개발자, 분석가 등 사람에 의해 발생한 실수를 의미 

결함 = 결점 = 버그 : 에러로 인해 소프트웨어 제품에 발생한 결함을 의미하며, 결함을 제거하지 않으면 소프트웨어 제품에 문제가 발생할 수 있다. 

 

테스트 케이스 

구현된 소프트웨어가 사용자 요구사항을 정확하게 준수하는지 확인하기 위해 설계된 입력값, 실행 조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서로, 명세 기반 테스트(사용자의 요구사항에 대한 명세를 빠짐없이 테스트 케이스로 구현하고 있는지 확인하는 것)의 설계 산출물에 해당된다. 

 

테스트 시나리오 

테스트 케이스를 적용하는 순서에 따라 여러 개의 테스트 케이스들을 묶은 집으로, 테스트 케이스들을 적용하는 구체적인 절차를 명세한 문서이다. 

 

테스트 오라클 

테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참 값을 대입하여 비교하는 기법 및 활동 

 

테스트 오라클의 특징 

제한된 검증 : 테스트 오라클을 모든 테스트 케이스에 적용할 수 없다. 

수학적 기법 : 테스트 오라클의 값을 수학적 기법을 이용하여 구할 수 있다. 

자동화 기능 : 테스트 대상 프로그램의 실행, 결과 비교, 커버리지 측정 등을 자동화 할 수 있다. 

 

페이지 나누기 

 

20201002 

테스트 오라클의 종류 

참 오라클 (True) 

모든 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하는 오라클로, 발생된 모든 오류를 검출할 수 있다. 

항공기, 은행, 발전소 소프트웨어 등 미션 크리티컬한 업무에 사용 

 

샘플링 오라클 (Sampling) 

특정한 몇몇 테스트 케이스의 입력 값들에 대해서만 기대하는 결과를 제공하는 오라 

 

추정 오라클 (Heuristic) 

샘플링 오라클을 개선한 오라클로, 특정 테스트 케이스의 입력값에 대해 기대하는 결과를 제공하고, 나머지 입력 값들에 대해서는 추정으로 처리하는 오라클 

 

일관성 검사 오라클 (Consistent) 

애플리케이션의 변경이 있을 때, 테스트 케이스의 수행 전과 후의 결과 값이 동일한지를 확인하는 오라클 

 

테스트 케이스 작성 순서 

테스트 계획 검토 및 자료 확보 : 사용자 요구사항 검토 

위험 평가 및 우선순위 결정 

테스트 요구사항 정의 : 사용자 요구사항 재검토 

테스트 구조 설계 및 테스트 방법 결정 : 테스트 절차, 장비, 도구, 테스트 문서화 방법 결정 

테스트 케이스 정의 : 입력 값, 실행 조건, 기대 결과 기술 

테스트 케이스 타당성 확인 및 유지 보수 : 테스트 케이스 유용성 검토, 갱신 

 

테스트 자동화 도구 

사람이 반복적으로 수행하던 테스트 절차를 스크립트 형태로 구현하는 자동화 도구를 적용함으로써 쉽고 효율적으로 테스트를 수행할 수 있도록 한 것 

 

휴먼 에러 

사람의 판단 실수나 조작 실수 등으로 인해 발생하는 에러 

 

테스트 자동화 도구 장점 

UI가 없는 서비스도 정밀 테스트가 가능하다. 

테스트 결과를 그래프 등 다양한 표시 형태로 제공 

테스트 결과에 대한 객관적인 평가 기준 제공 

사용자의 요구사항 등을 일관성 있게 검증 

반복작업을 자동화함으로써 인력 및 시간 절약 

다중 플랫폼 호환성, 소프트웨어 구성, 기본 테스트 등 향상된 테스트 품질 보장 

 

단점 

비공개 상용 도구의 경우 고가의 추가 비용이 필요하다. 

자동화 도구를 프로세스 단계별로 적용하기 위한 시간, 비용, 노력이 필요하다. 

테스트 자동화 도구의 사용방법에 대한 교육 및 학습이 필요하다. 

 

테스트 자동화 수행 시 고려사항 

테스트 절차를 고려하여 재사용 및 측정이 불가능한 테스트 프로그램은 제외한다. 

모든 테스트 과정을 자동화 할 수 있는 도구는 없으므로 용도에 맞는 적절한 도구를 선택해서 사용한다. 

테스트 엔지니어의 투입 시기가 늦어지면 프로젝트의 이해 부족으로 인해 불완전한 테스트를 초래할 수 있으므로 반드시 프로젝트 초기에 엔지니어의 투입 시기를 계획해야 한다. 

 

테스트 자동화 도구의 유형 5 

정적 분석 도구 

프로그램을 실행하지 않고 분석하는 도구로, 소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함 등을 발견하기 위해 사용된다. 

테스트를 수행하는 사람이 작성된 소스 코드를 이해하고 있어야만 분석이 가능하다. 

 

테스트 실행 도구 = 데이터 주도 접근 방식 + 키워드 주도 접근 방식 

스크립트 언어를 사용하여 테스트를 실행하는 방법으로, 테스트 데이터와 테스트 수행방법 등이 포함된 스크립트를 작성한 후 실행한다. 

 

데이터 주도 접근 방식 

스프레드 시트에 테스트 데이터를 저장하고, 이를 읽어 실행하는 방식. 

다양한 테스트 데이터를 동일한 테스트 케이스로 반복하여 실행할 수 있다. 

스크립트에 익숙하지 않은 사용자도 미리 작성된 스크립트에 테스트 데이터만 추가하여 테스트할 수 있다. 

 

키워드 주도 접근 방식 

스프레드 시트에 테스트를 수행할 동작을 나타내는 키워드와 테스트 데이터를 저장하여 실행하는 방식. 

키워드를 이용하여 테스트를 정의할 수 있다. 

 

성능 테스트 도구 

애플리케이션의 처리량, 응답시간, 경과 시간, 자원 사용률 등을 인위적으로 적용한 가상의 사용자를 만들어 테스트를 수행함으로써 성능의 목표 달성 여부를 확인한다. 

 

테스트 통제 도구 

테스트 계획 및 관리, 테스트 수행, 결함 관리 등을 수행하는 도구로, 종류에는 형상관리도구, 결함추적/관리도구 등이 있다. 

 

테스트 하네스 도구 

애플리케이션의 컴포넌트 및 모듈을 테스트하는 환경의 일부분으로, 테스트를 지원하기 위해 생성된 코드와 데이터를 의미. 

테스트가 실행될 환경을 시뮬레이션 하여 컴포넌트 및 모듈이 정상적으로 테스트되도록 한다. 

 

테스트 하네스의 구성 요소 

테스트 드라이버 : 테스트 대상의 하위 모듈을 호출하고, 파라미터를 전달하고, 모듈 테스트 수행 후의 결과를 도출하는 도구 

테스트 스텁 : 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로, 일시적으로 필요한 조건만을 가지고 있는 테스트용 모 

테스트 슈트(Suites) : 테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합 

테스트 케이스 : 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지 확인하기 위해 설계된 입력 값, 실행 조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서로, 명세 기반 테스트 설계의 산출물에 해 

테스트 스크립트 : 자동화된 테스트 실행 절차에 대한 명세서 

목 오브젝트 : 사전에 사용자의 행위를 조건부로 입력해 두면, 그 상황에 맞는 예정된 행위를 수행하는 객체 

 

결함 

오류 발생, 작동 실패 등과 같이 소프트웨어 개발자가 설계한 것과 다르게 동작하거나 다른 결과가 발생되는 것 

 

결함 관리 프로세스 

관리 계획 - 기록 - 검토 - 수정 - 재확인 - 추적 및 모니터링 - 분석 및 보고서 작성 

 

결함 추적 순서 

등록 검토 할당 수정 조치보류 종료 해제 

결함 등록 Open : 테스터와 품질 관리(QA) 담당자에 의해 발견된 결함이 등록된 상태 

결함 검토 Reviewed : 등록된 결함을 테스터, 품질 관리(QA) 담당자, 프로그램 리더, 담당 모듈 개발자에 의해 검토된 상태 

결함 할당 Assigned : 결함을 수정하기 위해 개발자와 문제 해결 담당자에게 결함이 할당된 상태 

결함 수정 Resolved : 개발자가 결함 수정을 완료한 상태 

결함 조치 보류 Deferred : 결함의 수정이 불가능해 연기된 상태로, 우선순위, 일정 등에 따라 재오픈을 준비중인 상 

결함 종료 Closed : 결함이 해결되어 테스터와 품질 관리(QA) 담당자가 종료를 승인한 상태 

결함 해제 Clarified : 테스터, 프로그램 리더, 품질 관리(QA) 담당자가 종료 승인한 결함을 검토하여 결함이 아니라고 판명한 상태 

 

*프로그램 리더 : 소프트웨어 설계, 구현 등 소프트웨어의 기술 분야를 책임지는 사람 

 

결함 관리 측정 지표 

결함 분포 : 모듈 또는 컴포넌트의 특정 속성에 해당하는 결함 수 측정 

결함 추세 : 테스트 진행 시간에 따른 결함 수의 추이 분석 

결함 에이징 : 특정 결함 상태로 지속되는 시간 측정 

 

결함 분류 4 

시스템 결함 

기능 결함 

GUI 결함 

문서 결함 

 

테스트 단계별 유입 결함 

기획 시 유입되는 결함 

설계 시 유입되는 결함 

코딩 시 유입되는 결함 

테스트 부족으로 유입되는 결함 

 

결함 심각도 

애플리케이션에 발생한 결함이 전체 시스템에 미치는 치명도를 나타내는 척도 

High 

Medium 

Low 

 

결함 우선순위 

발견된 결함 처리에 대한 신속성을 나타내는 척도로, 결함의 중요도와 심각도에 따라 설정되고 수정 여부가 결정. 

심각도가 높다고 상위 우선순위는 아님. 

 

결함 관리 도구 

Mantis 

Trac 

Redmine 

Bugzilla 

 

애플리케이션 성능 

사용자가 요구한 기능을 최소한의 자원을 사용하여 최대한 많은 기능을 신속하게 처리하는 정도 

 

애플리케이션 성능 측정 지표 

처리량 Throughput : 일정 시간 내에 애플리케이션이 처리하는 일의 양 

응답 시간 Response Time : 애플리케이션에 요청을 전달한 시간부터 응답이 도착할 때까지 걸린 시간 

경과 시간 Turn Around Time : 애플리케이션에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간 

자원 사용률 Resource Usage : 애플리케이션이 의뢰한 작업을 처리하는 동안의 CPU 사용량, 메모리 사용량, 네트워크 사용량 등 자원 사용률 

 

애플리케이션의 성능 분석 도구는 애플리케이션의 성능을 테스트하는 도구와 시스템을 모니터링하는 도구로 분류됨. 

 

성능 테스트 도구 

애플리케이션의 성능을 테스트하기 위해 애플리케이션에 부하나 스트레스를 가하면서 애플리케이션의 성능 측정 지표를 점검하는 도구 

JMeter : HTTP, FTP 등 다양한 프로토콜을 지원하는 부하 테스트 도구. Cross-Platform 

LoadUI : 서버 모니터링, Drag&Drop 등 사용자의 편리성이 강화된 부하 테스트 도구. HTTP, JDBC 등 다양한 프로토콜 지원. Cross-Platform 

OpenSTA : HTTP, HTTPS 프로토콜에 대한 부하 테스트 및 생산품 모니터링 도 

 

시스템 모니터링 도구 

애플리케이션이 실행되었을 때 시스템 자원의 사용량을 확인하고 분석하는 도구 

성능 저하의 원인 분석, 시스템 부하량 분석, 사용자 분석 등 시스템을 안정적으로 운영할 수 있는 기능 제공. 

Scouter, Zabbix 

 

애플리케이션 성능 저하 원인 

커넥션 풀의 크기를 너무 작거나 크게 설정한 경우 

JDBC나 ODBC 같은 미들웨어를 사용한 후 종료하지 않아 연결 누수가 발생한 경우 

DB에 필요 이상의 많은 데이터를 요청한 경우 

 

Connection 객체 

특정 데이터 원본과 연결할 수 있게 해주는 객체로, 클라이언트/서버 데이터베이스 시스템의 경우 서버에 대한 실제 네트워크 연결과 동일함 

 

DB Lock 

동시 사용 시 레코드 잠금 

 

커넥션 풀 

데이터베이스와 연결된 커넥션을 풀에 미리 만들어 놓고 커넥션이 필요할 때 풀에서 꺼내 사용하고 다시 반환하는 기법 

 

연결 누수 

JDBC 등이 DB에 접근하기 위해 커넥션 풀에 저장된 커넥션을 사용하는데, 사용 후에 커넥션이 반납되지 않아 커넥션 풀이 지속적으로 줄어드는 현상 

 

소켓 

프로세스 사이의 대화를 가능하게 하는 쌍방향 통신 방식 

연결을 요청하는 클라이언트 소켓 + 요청을 받아들이는 서버 소켓 

 

애플리케이션 성능 분석 절차 

성능 테스트 도구와 시스템 모니터링 도구의 유형을 파악하고 특징 정리 -> 

성능 점검 계획서 작성 -> 

성능 측정을 위한 테스트 케이스 작성 -> 

테스트 수행 -> 

테스트 결과 분석 -> 

성능 저하 원인 분석 

 

클린 코드 

누구나 쉽게 이해하고 수정 및 추가할 수 있는 단순, 명료한 코드, 즉 잘 작성된 코드 

 

클린 코드 작성 원칙 <가단의중추> 

가독성 

단순성 

의존성 배제 

중복성 최소화 

추상화 

 

소스 코드 최적화 유형 

클래스 분할 배치 : 하나의 클래스는 하나의 역할만 수행하도록 응집도를 높이고, 크기를 작게 작성 

*응집도 : 모듈이 독립적인 기능으로 정의되어 있는 정도. 명령어나 호출문 등 모듈의 내부 요소들이 서로 관련되어 있는 정도. 

느슨한 결합 Loosely Coupled : 인터페이스 클래스를 이용하여 추상화된 자료구조와 메소드를 구현함으로써 클래스 간 의존성을 최소화 

코딩 형식 준수 : 줄바꿈 사용, 개념적 유사성이 높은 종속 함수 사용, 호출하는 함수는 선배치 & 호출되는 함수는 후배치, 지역 변수는 각 함수의 맨 처음에 선언 

좋은 이름 사용 

적절한 주석문 사용 

 

소스코드 품질 분석 도구 

정적 분석 도구 : pmd, cppcheck, SonarQube, checkstyle, ccm, cobertura 

동적 분석 도구 : Avalanche, Valgrind 

 

스레드 

프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위 

 

테스트 시나리오 

테스트를 수행할 여러 테스트 케이스의 동작 순서를 기술한 문서 

 

팩토리 메소드 패턴 Factory Method Pattern 

상위 클래스에서 객체를 생성하는 인터페이스를 정의하고, 이를 상속받는 하위 클래스에서 실제 객체를 만드는 방식. 

객체를 생성하는 인터페이스와 실제 객체를 생성하는 클래스를 분리할 수 있는 방식으로 팩토리 메소드 패턴을 이용하면 소프트웨어의 의존성을 최소화할 수 있다. 

 

소프트웨어 개발 보안 

소프트웨어 개발 과정에서 발생할 수 있는 보안 취약점을 최소화하여 보안 위협으로부터 안전한 소프트웨어를 개발하기 위한 일련의 보안 활동 

소프트웨어 개발 보안의 목표 : 데이터의 기밀성 Confidentiality + 무결성 Integrity + 가용성 Availability 유지 

 

소프트웨어 보안 취약점이 발생하는 경우 

보안 요구사항이 정의되지 않은 경우 

소프트웨어 설계 시 논리적 오류가 포함된 경우 

기술 취약점을 갖고 있는 코딩 규칙을 적용한 경우 

 

안전한 소프트웨어 개발을 위한 수행 작업 

SDLC(소프트웨어 개발 생명 주기) 각 단계마다 보안 활동을 수행한다. 

재사용이 가능한 보안 모듈을 만들어 유사한 소프트웨어 개발에 사용될 수 있도록 한다. 

소프트웨어 개발 보안을 위한 표준을 확립한다. 

 

소프트웨어 개발 보안 관련 기관 

행정안전부 : 정책 총괄, 제도 정비 

한국인터넷진흥원(KISA) : 개발 보안 정책 및 가이드 개발, 개발 보안에 대한 기술 지원, 교육과정 및 자격제도 운영 

발주기관 : 소프트웨어 개발 보안의 계획을 수립, 감리법인 선정, 보안 준수여부 점검 

사업자 : 보안관련 인력 대상으로 교육 실시, 보안 가이드를 참조하여 개발, 요구사항 이행 

감리법인 : 감리 계획을 수립하고 협의, 보안 약점의 제거 여부 및 조치 결과 확인 

 

보안 요소 

기밀성 : 시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용된다. 정보가 전송 중에 노출되더라도 데이터를 읽을 수 없다. 

무결성 : 시스템 내의 정보는 오직 인가된 사용자만 수정할 수 있다. 

가용성 : 인가받은 사용자는 언제라도 사용할 수 있다. 

인증 : 시스템 내 정보와 자원을 사용하려는 사용자가 합법적인 사용자인지를 확인하는 모든 행위. 패스워드, 인증용 카드, 지문검사 등 

부인 방지 : 데이터를 송수신한 자가 송수신 사실을 부인할 수 없도록 송수신 증거를 제공 

 

Secure SDLC 

보안상 안전한 소프트웨어를 개발하기 위해 SDLC에 보안 강화를 위한 프로세스를 포함한 것 

구현 단계에서의 보안 활동 : 표준 코딩 정의서 및 소프트웨어 개발 보안 가이드를 준수 

 

세션 

서버와 클라이언트의 연결 

 

세션 통제 

세션의 연결과 연결로 인해 발생하는 정보를 관리하는 것으로, 요구사항 분석과 설계 단계에서 진단해야 하는 보안 점검 내용이다. 

 

세션 통제의 보안 약점 = 불충분한 세션 관리 + 잘못된 세션에 의한 정보 노출 

불충분한 세션 관리 

일정한 규칙이 존재하는 세션ID가 발급되거나 타임아웃이 너무 길게 설정되어 있는 경우 발생할 수 있는 보안 약점 

 

세션ID 

서버가 클라이언트들을 구분하기 위해 부여하는 키로, 클라이언트가 서버에 요청을 보낼 때마다 세션ID를 통해 인증이 수행됨. 

 

세션 하이재킹 

서버에 접속하고 있는 클라이언트들의 세션 정보를 가로채는 것 

페이지 나누기 

 

20201003 

 

잘못된 세션에 의한 정보 노출 

다중스레드 환경에서 멤버변수에 정보를 저장할 때 발생하는 보안 약점 

싱글톤 패턴에서 레이스컨디션으로 인해 동기화 오류가 발생하거나 멤버 변수의 정보가 노출될 수 있다. 

멤버 변수보다 지역 변수를 활용하여 변수의 범위를 제한함으로써 방지 가능 

 

멤버 변수 

객체와 연결된 변수로, 클래스 내에 선언되어 클래스의 모든 메소드들이 접근 가능한 변수 

 

싱글톤 

하나의 객체를 생성하면 생성된 객체를 어디서든 참조할 수 있지만, 여러 프로세스가 동시에 참조할 수는 없는 디자인 패턴 

 

레이스컨디션 

두 개 이상의 프로세스가 공용 자원을 획득하기 위해 경쟁하고 있는 상태 

 

세션 설계 시 고려사항 

시스템의 모든 페이지에서 로그아웃이 가능하도록 UI 구성 

로그아웃 요청 시 할당된 세션이 완전히 제거되도록 함 

이전 세션이 종료되지 않으면 새 세션이 생성되지 못하도록 설계 

중복 접근이 허용되지 않은 경우 접근 제어 

세션 타임아웃은 중요도가 높으면 2~5분, 낮으면 15~30분으로 설정 

패스워드 변경 시 활성화된 세션을 삭제하고 재할당한다. 

 

세션ID의 관리 방법 

안전한 서버에서 최소 128비트의 길이로 생성 

로그인 시 로그인 전의 세션ID를 삭제하고 재할당 

세션ID가 노출되지 않도록 URL Rewrite 기능을 사용하지 않는 방향으로 설계 

 

URL Rewrite 

쿠키를 사용할 수 없는 환경에서 세션ID 전달을 위해 URL에 세션ID를 포함시키는 것 

 

입력 데이터 검증 및 표현 

입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목 

검증되지 않은 데이터가 입력되는 경우 처리, 객체에 지정된 자료형 확인, 일관된 언어셋 사용 

 

보안 약점의 종류 

SQL 삽입 

❗️ 입력란에 SQL을 삽입하여 무단으로 DB를 조회하거나 조작하는 보안약점 ✅ 입력 데이터에 SQL 예약어 및 특수문자가 입력되지 않게 필터링을 설정하여 해결 

크로스사이트스크립트(XSS) 

❗️ 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취하거나 비정상적 기능 수행을 유발하는 보안약점 ✅ HTML태그의 사용을 제한하거나 <, >, & 등의 문자가 삽입되지 않도록 Backend에서 다른 문자로 치환 

위험한 형식 파일 업로드 

❗️ 악의적인 스크립트를 업로드함으로써 시스템에 손상을 주거나, 시스템을 제어할 수 있는 보안약점 ✅ 확장자 제한(구현되어 있는 언어 피하기), 파일명암호화, 웹사이트와 서버 경로분리, 실행속성 제거 

경로조작 및 자원삽입 

❗️ 데이터 입출력 경로를 조작하여 서버자원을 수정/삭제할 수 있는 보안약점 ✅ /, \ 등의 문자로 경로순회공격을 못하도록 필터적용 

운영체제 명령어 삽입 

❗️ 시스템 명령어의 실행을 유도함으로써 권한을 탈취하거나 시스템 장애를 유발하는 보안약점 ✅ 웹 인터페이스를 통해 시스템 명령어가 전달되지 않도록 하고, 시스템에서는 외부입력값에 대해 검증절차 부여 

신뢰하지 않는 URL 주소로 자동접속 연결 

❗️ 사이트 주소를 입력값으로 받는 경우, 이를 조작하여 방문자를 피싱 사이트로 유도하는 보안약점 ✅ 연결되는 외부 사이트의 주소를 "화이트 리스트"로 관리함으로써 방지 

좋아요공감 

공유하기 

통계 

글 요소 

보안 기능 

소프트웨어 개발의 구현 단계에서 코딩하는 기능인 인증, 접근제어, 기밀성, 암호화 등을 올바르게 구현하기 위한 보안 점검 항목 

 

보안 기능의 보안 약점 

적절한 인증 없이 중요기능 허용 

❗ 보안검사를 우회하여 인증과정 없이 중요한 정보 또는 기능에 접근 및 변경이 가능 ✅ 중요정보나 기능을 수행하는 페이지에서는 재인증 기능을 수행하도록 하여 방지 

부적절한 인가 

❗ 접근제어 기능이 없는 실행경로를 통해 정보 또는 권한을 탈취 ✅ 모든 실행경로에 대해 접근제어 검사를 수행하고, 사용자에게는 반드시 필요한 접근권한만을 부여하여 방지 

중요한 자원에 대한 잘못된 권한설정 

❗️ 권한설정이 잘못된 자원에 접근하여 해당 자원을 임의로 사용 ✅ 소프트웨어 관리자만 자원들을 읽고 쓸 수 있도록 설정하고, 인가되지 않은 사용자의 접근 여부 검사 

취약한 암호화 알고리즘 사용 

❗ 암호화된 환경설정 파일을 해독하여 비밀번호 등의 중요정보를 탈취할 수 있다 ✅ 안전한 암호화 알고리즘을 이용하고, 업무관련 내용이나 개인정보 등은 IT보안인증사무국이 안정성을 확인한 암호모듈을 이용 

중요정보 평문 저장 및 전송 

❗️ 암호화되지 않은 평문 데이터를 탈취하여 중요정보 획득 ✅ 중요정보를 저장하거나 전송할 때는 반드시 암호화 과정을 거치도록 하고 HTTPS(HTTP+Secure) 또는 SSL(데이터를 송수신하는 두 컴퓨터 사이에서 인증/암호화/무결성을 보장하는 업계표준프로토콜) 이용하기 

하드코드(데이터를 코드 내부에 직접 입력하는 것)된 비밀번호 

❗️ 소스코드 유출 시 내부에 하드코드된 패스워드를 이용하여 관리자 권한 탈취 ✅ 패스워드는 암호화하여 별도의 파일에 저장하고, 디폴트 패스워드(사용자를 등록하기 전에 설치권한을 획득하기 위해 사용되는 초기설정암호)나 디폴트 키의 사용 피하기 

 

코드 오류 

소프트웨어 구현 단계에서 개발자들이 코딩 중 실수하기 쉬운 형변환, 자원 반환 등의 오류를 예방하기 위한 보안 점검 항목 

 

널 포인터 

포인터에 널이 저장되어 어떠한 곳도 가리키지 못하는 상태의 요소 

 

널 포인터 역참조 

포인터에 널이 저장되어 있을 때 이를 참조할 경우 발생하는 오류 

주로 함수의 반환 값을 참조하도록 코딩한 경우 그 함수가 오류로 인해 널을 반환하면 발생한다. 

널이 될 수 있는 포인터를 이용하기 전에 널 값을 갖고 있는지 검사함으로써 방지 

 

부적절한 자원 해제 

자원을 반환하는 코드를 누락하거나 프로그램 오류로 할당된 자원을 반환하지 못했을 때 발생하는 보안 약점 

 메모리, 소켓 등 유한한 시스템 자원이 계속 점유하고 있으면 자원 부족으로 인해 새로운 입력을 처리하지 못할 수 있다. 

프로그램 내에 자원 반환 코드가 누락되었는지 확인하고, 오류로 인해 함수가 중간에 종료되었을 때 예외처리에 관계없이 자원이 반환되도록 코딩함으로써 방지 

 

해제된 자원 사용 

이미 사용이 종료되어 반환된 메모리를 참조하는 경우 발생하는 보안 약점 

반환된 메모리를 참조하는 경우 예상하지 못한 값 또는 코드를 수행하게 되어 의도하지 않은 결과가 발생할 수 있다. 

반환된 메모리에 접근할 수 없도록 주소를 저장하고 있는 포인터를 초기화함으로써 방지 

 

초기화되지 않은 변수 사용 

변수 선언 후 값이 부여되지 않은 변수를 사용할 때 발생하는 보안 약점 

변수가 선언되어 메모리가 할당되면 해당 메모리에 이전에 사용하던 내용이 계속 남아있어 변수가 외부에 노출되는 경우 중요정보가 악용될 수 있다. 

변수 선언 시 할당된 메모리를 초기화함으로써 방지 

 

캡슐화 

데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것 

정보 은닉이 필요한 중요한 데이터와 기능을 불충분하게 캡슐화하거나 잘못 사용함으로써 발생할 수 있는 문제를 예방하기 위한 보안 점검 항목 

 

(구현 단계에서의) 잘못된 세션에 의한 정보 노출 

다중 스레드 환경에서 멤버 변수에 정보를 저장할 때 발생하는 보안 약점. 

싱글톤 패턴에서 레이스컨디션으로 인해 동기화 오류가 발생하거나, 멤버 변수의 정보가 노출될 수 있다. 

멤버 변수보다 지역 변수를 활용하여 변수의 범위를 제한함으로써 방지 

 

제거되지 않고 남은 디버그 코드 

개발 중에 버그 수정이나 결과값 확인을 위해 남겨둔 코드들로 인해 발생하는 보안 약점 

디버그 코드에 인증 및 식별 절차를 생략하거나 우회하는 코드가 포함되어 있는 경우 공격자가 이를 악용할 수 있다. 

소프트웨어를 배포하기 전에 코드 검사를 통해 남아있는 디버그 코드를 삭제함으로써 방지 

 

시스템 데이터 정보 노출 

시스템의 내부 정보를 시스템 메시지 등을 통해 외부로 출력하도록 코딩했을 때 발생하는 보안 약점 

시스템 메시지를 통해 노출되는 메시지는 최소한의 정보만을 제공함으로써 방지 

 

Public 메소드로부터 Private 배열 반환 

배열의 주소가 외부에 공개되어 외부에서 접근할 수 있게 된다. 

Private 배열을 별도의 메소드를 통해 조작하거나, 동일한 형태의 복제본으로 반환받은 후 값을 전달하는 방식으로 방지 

 

Private 배열에 Public 데이터 할당 

Private 배열에 Public으로 선언된 데이터 또는 메소드의 파라미터를 저장할 때 발생하는 보안 약점 

Public으로 선언된 데이터를 Private 배열에 저장할 때, 레퍼런스가 아닌 값을 직접 저장함으로써 방지할 수 있다. 

 

개인키 = 대칭키 = 단일키 = 비밀키 

블록 암호화 방식 : 한번에 하나의 데이터 블록을 암호화. DES, SEED, AES, ARIA 

스트림 암호화 방식 : 평문과 동일한 길이의 스트림을 생성하여 비트 단위로 암호화. LFSR, RC4 

 

개인키 장점 

암호화/복호화 속도가 빠르다 

알고리즘이 단순하다 

공개키 암호 기법보다 파일의 크기가 작다 

 

개인키 단점 

사용자의 증가에 따라 관리해야 할 키의 수가 상대적으로 많아진다. 

 

공개키 = 비대칭키 

RSA 

 

공개키 장점 

키의 분배가 용이하다 

관리해야 할 키의 개수가 적다 

 

공개키 단점 

암호화/복호화 속도가 느리다 

알고리즘이 복잡하다 

개인키 암호화 기법보다 파일의 크기가 크다 

 

공개키 기반 구조 PKI Public Key Infrastructure 

공개키 암호 시스템을 안전하게 사용하고 관리하기 위한 정보 보호 표준 방식 

X.509 방식 : 인증기관에서 발생하는 인증서를 기반으로 상호 인증을 제공 

비X.509 방식 : 국가별, 지역별로 맞게 보완 및 개발 

 

SEED : 1999년 한국인터넷진흥원. 블록 128, 키 128/256. 

ARIA : 2004년 Academy + Research Institute + Agency. 블록 128, 키 128/192/256. 

DES : 1975년 NBS. 블록 64, 키 56. 

AES : 2001년 NIST. 블록 128, 키 128/192/256. 

RSA : 1978년 MIT의 Rivest + Shamir + Adelman, 큰 숫자를 소인수분해하기 어렵다는 것에 기반. 

 

해시 

임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것 

해시 알고리즘 = 해시 함수 

해시 함수로 변환된 값/키 = 해시값 = 해시키 

데이터의 암호화, 무결성 검증을 위해 사용될 뿐만 정보보호의 다양한 분야에서 활용된다. 

SHA, MD5, N-NASH, SNEFRU 

 

Secure Coding 

소프트웨어 구현단계에서 발생할 수 있는 보안 취약점들을 최소화하기 위해 보안 요소들을 고려하며 코딩하는 것 

페이지 나누기 

20201004 

 

소프트웨어 개발 보안과 관련하여 입력 데이터로 인해 발생하는 문제를 예방하기 위해 해야하는 작업 

일관된 언어셋 사용하도록 코딩한다. 

객체에 지정된 자료형이 올바른지 확인한다. 

검증되지 않은 데이터가 입력되는 경우 를 처리할 수 있도록 구현한다. 

 

운영체제 

컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임 

 

운영체제의 목적 

처리 능력 Throughput : 일정 시간 내에 시스템이 처리하는 일의 양 => “향상" 

반환 시간 Turn Around Time : 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간 => “단축" 

사용 가능도 Availability : 시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도 => “향상" 

신뢰도 Reliability : 시스템이 주어진 문제를 정확하게 해결하는 정도 => “향상" 

 

운영체제의 기능 

프로세서, 기억장치, 입출력장치, 파일 및 정보 등의 자원을 관리 

자원을 효율적으로 관리하기 위해 자원의 스케줄링 기능 제공 

사용자와 시스템 간 인터페이스 제공 

시스템의 각종 하드웨어와 네트워크를 관리/제어 

데이터를 관리하고, 데이터 및 자원의 공유 기능 제공 

시스템의 오류를 검사하고 복구 

자원 보호 기능을 제공 

입출력에 대한 보조 기능 제공 

가상 계산기 기능 제공 

 

운영체제의 주요 자원 관리 

프로세스 관리 : 프로세스 스케줄링 및 동기화 관리 담당. 프로세스 생성과 제거, 시작과 정지, 메시지 전달 등 기능 담당 

기억장치 관리 : 프로세스에게 메모리 할당 및 회수 관리 담당 

주변장치 관리 : 입출력장치 스케줄링 및 전반적인 관리 담당 

파일 관리 : 파일의 생성과 삭제, 변경, 유지 등의 관리 담당 

 

운영체제 계층 구조 

하드웨어 - CPU 관리 - 기억장치 관리 - 프로세스 관리 - 주변장치 관리 - 파일 시스템 관리 - 사용자 프로세스 

 

 

Windows 

1990년대 Microsoft 개발 

GUI : 키보드로 명령어를 직접 입력하지 않고, 마우스로 아이콘이나 메뉴를 선택하여 모든 작업을 수행하는 방식 

선점형 멀티태스킹 : 동시에 여러 개의 프로그램을 실행하는 멀티태스킹을 하면서 운영체제가 각 작업의 CPU 이용 시간을 제어하여 응용 프로그램 실행 중 문제가 발생하면 해당 프로그램을 강제 종료시키고 모든 시스템 자원을 반환하는 방식 

PnP Plug and Play 자동감지기능 : 컴퓨터 시스템에 프린터나 사운드 카드 등의 하드웨어를 설치했을 때, 해당 하드웨어를 사용하는 데 필요한 시스템 환경을 운영체제가 자동으로 구성해 주는 기능 

OLE Object Linking and Embedding : 다른 여러 응용 프로그램에서 작성된 문자나 그림 등의 개체(Object) 현재 작성 중인 문서에 자유롭게 연결(Linking)하거나 삽입(Embedding)하여 편집할 수 있게 하는 기능 

255자의 긴 파일명 

Single-User 시스템 : 컴퓨터 한 대를 한 사람만이 독점해서 사용한다. 

 

UNIX 

1960년대 AT&T, MIT, General Electric 공동개발 

시분할 시스템을 위해 설계된 대화식 운영체제로, 소스가 공개된 개방형 시스템이다. 

대부분 C 언어로 작성되어 있어 이식성이 높으며 장치, 프로세스 간 호환성이 높다. 

크기가 작고 이해하기 쉽다. 

다중 사용자 Multi-User, 다중 작업 Multi-Tasking을 지원한다. 

많은 네트워킹 기능을 제공하므로 통신망 관리용 운영체제로 적합하다. 

트리 구조의 파일 시스템을 갖는다. 

전문적인 프로그램 개발에 용이하다. 

다양한 유틸리티 프로그램들이 존재한다. 

*시분할 시스템 : 여러 명의 사용자가 사용하는 시스템에서 컴퓨터가 사용자들의 프로그램을 번갈아가며 처리해 줌으로써 각 사용자에게 독립된 컴퓨터를 사용하는 느낌을 주는 것으로, 라운드 로빈 방식이라고도 함. 

 

UNIX 시스템의 구성 

커널 

UNIX의 가장 핵심적인 부분 

컴퓨터가 부팅될 때 주기억장치에 적재된 후 상주하면서 실행된다. 

하드웨어를 보호하고, 프로그램과 하드웨어 간 인터페이스 역할을 담당한다. 

프로세스(CPU 스케줄링) 관리, 기억장치 관리, 파일 관리, 입출력 관리, 프로세스 간 통신, 데이터 전송 및 변환 등 여러 가지 기능을 수행한다. 

 

 

사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어 해석기 

시스템과 사용자 간의 인터페이스를 담당 

DOS의 COMMAND.COM과 같은 기능을 수행 

주기억장치에 상주하지 않고, 명령어가 포함된 파일 형태로 존재하며 보조기억장치에서 교체 처리가 가능하다. 

파이프라인 기능을 지원하고 입출력 재지정을 통해 출력과 입력의 방향을 변경할 수 있다. 

공용 Shell이나 사용자 자신이 만든 Shell을 사용할 수 있다. 

 

*파이프라인 

둘 이상의 명령을 함께 묶어 처리한 결과를 다른 명령의 입력으로 전환하는 기능 

 

유틸리티 프로그램 

일반 사용자가 작성한 응용 프로그램을 처리하는 데 사용 

DOS에서의 외부 명령어에 해당됨 

에디터, 컴파일러, 인터프리터, 디버거 등이 있음 

 

기억장치 관리 전략 

보조기억장치의 프로그램이나 데이터를 주기억장치에 적재시키는 시기, 적재 위치 등을 지정하여 한정된 주기억장치의 공간을 효율적으로 사용하기 위한 것 

 

반입 Fetch 전략 

보조기억장치에 보관중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략으로, 요구 반입(Demand Fetch)과 예상 반입(Anticipatory Fetch)이 있다. 

 

요구 반입 : 실행중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재 

예상 반입 : 실행중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재하는 방법 

 

배치 Placement 전략 

새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지를 결정하는 전략 

프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 ~ 

최초 적합 First Fit : 첫 번째 분할 영역에 배치시키는 방법 

최적 적합 Best Fit : 단편화를 가장 작게 남기는 분할 영역에 배치시키는 방법 

최악 적합 Worst Fit : 단편화를 가장 많이 남기는 분할 영역에 배치시키는 방법 

 

교체 Replacement 전략 

주기억장치의 모든 영역이 이미 사용중인 상태에서 새로운 프로그램이나 데이터를 주기억장치에 배치하려고 할 때, 이미 사용되고 있는 영역 중에서 어느 영역을 사용할 것인지를 결정하는 전략 

 

단편화 

주기억장치의 분할된 영역에 프로그램이나 데이터를 할당할 경우, 분할된 영역이 프로그램이나 데이터보다 작거나 커서 생기는 빈 기억공간 

 

dd if=/dev/zero of=[파일명] bs=[용량] count=[반복횟수] 

 

프로세스 

프로세서에 의해 처리되는 사용자 프로그램, 시스템 프로그램, 실행중인 프로그램 

PCB를 가진 프로그램 

실기억장치에 저장된 프로그램 

프로세서가 할당되는 실체로서 디스패치가 가능한 단위 

프로시저가 활동중인 것 

비동기적 행위를 일으키는 주체 

지정된 결과를 얻기 위한 일련의 계통적 동작 

운영체제가 관리하는 실행 단위 

목적 또는 결과에 따라 발생되는 사건들의 과정 

 

*Dispatch 

준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이되는 과정 

 

*Wake Up 

입출력 작업이 완료되어 프로세스가 대기 상태에서 준비 상태로 전이되는 과정 

 

프로세스 상태 전이 

프로세스가 시스템 내에 존재하는 동안 프로세스의 상태가 변하는 것 

제출, 접수, 준비, 실행, 대기. 

주요 : 준비, 실행, 대기. 

 

제출 Submit : 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태 

접수 Hold : 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태 

준비 Ready : 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태. 프로세스는 준비상태 큐에서 실행을 준비하고 있다. 접수 상태에서 준비 상태로의 전이는 Job 스케줄러에 의해 수행된다. 

실행 Run : 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태. 프로세스 수행이 완료되기 전에 프로세스에게 주어진 프로세서 할당 시간이 종료(Time Run Out)되면 프로세스는 준비 상태로 전이된다. 

대기 Wait / 보류,블록 Block : 프로세스에 입출력 처리가 필요하면 현재 실행 중인 프로세스가 중단되고, 입출력 처리가 완료될 때까지 대기하고 있는 상태 

 

Proc 디렉터리 

보조기억장치에 실제 존재하는 파일이 아닌 메모리에 저장되어 있는 데이터를 확인할 수 있는 가상 디렉터리 

 

Top 

현재 CPU와 메모리 사용률을 모니터링 

 

Ps 

PID를 확인 

 

데이터베이스 

특정 조직의 업무를 수행하는 데 필요한 상호 관련된 데이터들의 모임 

 

통합된 데이터 Integrated Data : 검색의 효율성을 위해 중복이 최소화된 데이터의 모임 

저장된 데이터 Stored Data : 컴퓨터가 접근할 수 있는 저장 매체에 저장된 데이터 

운영 데이터 Operational Data : 조직의 고유한 업무를 수행하는 데 존재 가치가 확실하고 없어서는 안 될 반드시 필요한 데이터 

공용 데이터 Shared Data : 여러 응용 시스템들이 공동으로 소유하고 유지하는 데이터 

 

DBMS 

사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해 주는 소프트웨어 

 

데이터베이스를 관리하기 위한 필수 기능 

정의 : 데이터의 타입과 구조, 데이터가 데이터베이스에 저장될 때의 제약 조건 등 명시 

조작 : 체계적 데이터 처리를 위해 데이터 접근 기능을 명시 

제어 : 데이터의 정확성과 안전성을 유지하기 위해 무결성, 보안 및 권한 검사, 병행 제어 등 명시 

 

DBMS의 장점 

데이터의 일관성을 유지할 수 있다 

데이터의 논리적, 물리적 독립성이 보장된다 

데이터의 실시간 처리가 가능하다 

 

DBMS의 단점 

데이터베이스의 전문가가 부족하다 

전산화 비용이 증가한다 

시스템이 복잡하다 

 

ER 모델 

1976년 피터 첸 

 

개체 타입, 관계 타입, 속성 

 

기본키 

개체 타입에서 개체를 유일하게 식별해 주는 속성 또는 속성 집합 

 

페이지 나누기 

20201005 

 

프로시저 Stored Procedure 

절차현 SQL을 활용하여 특정 기능을 수행하는 일종의 트랜잭션 언어로, 호출을 통해 실행되어 미리 저장해 놓은 SQL 작업을 수행함 

데이터베이스에 저장되어 수행되기 때문에 Stored Procedure라고도 불린다. 

여러 프로그램에서 호출하여 사용할 수 있다. 시스템의 일일 마감 작업, 일괄작업에 주로 사용 

 

트랜잭션 언어 

데이터베이스를 조작하고 트랜잭션을 처리하는 언어로, SQL과 TCL이 이에 해당 

 

절차형 SQL 

C, Java 등의 프로그래밍 언어와 같이 연속적인 실행이나 분기, 반복 등 제어가 가능한 SQL 

 

CREATE [OR REPLACE] PROCEDURE 프로시저명(파라미터명 IN 자료형) 

IS 지역변수 

BEGIN 

    UPDATE ~~ 

    EXCEPTION 

        WHEN PROGRAM_ERROR THEN 

            ROLLBACK; 

    COMMIT; 

END; 

 

트리거 

데이터베이스 시스템에서 삽입, 갱신, 삭제 등 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL. 

데이터베이스에 저장되며 데이터 변경 및 무결성 유지, 로그 메시지 출력 등의 목적으로 사용됨 

트리거의 구문에는 DCL을 사용할 수 없으며, DCL이 포함된 프로시저나 함수를 호출하는 경우에도 오류가 발생함 

트리거에 오류가 있는 경우 트리거를 처리하는 데이터에도 영향을 미치므로 트리거를 생성할 때 세심한 주의가 필요함 

 

사용자 정의 함수 

프로시저와 유사하게 SQL을 사용하여 일련의 작업을 연속적으로 처리하며, 종료 시 처리 결과를 단일값으로 반환하는 절차형 SQL 

DML의 호출에 의해 실행됨 

RETURN을 통해 값을 반환하므로 출력 파라미터가 없음 

SELECT로 조회만 가능 

프로시저를 호출하여 사용할 수 없음 

 

SELECT 사용자정의함수명 FROM 테이블명; 

INSERT INTO 테이블명(속성명) VALUES (사용자정의함수명); 

DELETE FROM 테이블명 WHERE 속성명 = 사용자정의함수명; 

UPDATE 테이블명 SET 속성명 = 사용자정의함수명; 

 

구분 

프로시저 

사용자 정의 함수 

반환값 

없거나 1개 이상 

1개 

파라미터 

입력/출력 

입력 

사용 가능 명령문 

DML, DCL 

SELECT 

호출가능 대상 

프로시저, 사용자 정의 함수 

사용자 정의 함수 

사용방법 

실행문 

DML에 포함 

 

사용자 정의 함수 문제에서 파라미터 () 넣는거 잊지 말 것. 

 

제어문 

위에서 아래로 차례대로 실행되는 절차형 SQL의 진행 순서를 변경하기 위해 사용하는 명령문 

  

GOTO문 

원하는 위치로 이동 

 

커서 

쿼리문의 처리 결과가 저장되어 있는 메모리 공간을 가리키는 포인터 

내부에서 자동으로 생성되어 사용되는 묵시적 커서 + 사용자가 직접 정의해서 사용하는 명시적 커서 

(선언 ->)열기 Open -> 패치 Fetch -> 닫기 Close 순으로 진행 

묵시적 커서 : 수행된 쿼리문의 정상적인 수행 여부를 확인하기 위해 사용 

명시적 커서 : 쿼리문의 결과를 저장하여 사용함으로써 동일한 쿼리가 반복 수행되어 데이터베이스 자원이 낭비되는 것을 방지 

 

커서의 속성 

SQL%FOUND : 쿼리 수행의 결과로 패치된 튜플 수가 1개 이상이면 TRUE 

SQL%NOTFOUND : 쿼리 수행의 결과로 패치된 튜플 수가 0개이면 TRUE 

SQL%ROWCOUNT : 쿼리 수행의 결과로 패치된 튜플 수를 반환 

SQL%ISOPEN : 커서가 열린 상태이면 TRUE. 묵시적 커서는 자동 생성 후 자동으로 닫히기 때문에 항상 FALSE 

 

GRANT OPTION FOR : 현재 그 사람의 권한은 유지하고, 그 사람이 다른 사람에게 줄 권한을 뺏음 

 

개체 타입 = <학생> 

개체 어커런스 = 개체 인스턴스 = 학생 A 

도메인 : 하나의 속성이 가질 수 있는 같은 타입의 원자 값들의 집합 

단순 속성 : 더 이상 다른 속성으로 나눌 수 없는 속성. 나이. 

복합 속성 : 2개 이상의 속성들로 분해할 수 있는 속성. 주소 = 시 + 군 + 구 

 

관계 : 2개 이상의 개체 사이에 존재하는 연관성 

관계 타입 : 같은 관계들의 집합 또는 틀 

1:1 관계 : 관계에 참여하고 있는 두 개체 타입이 모두 하나씩의 개체 어커런스를 갖는 관계 

1:N 관계 : 관계에 참여하고 있는 개체 타입 중 한 개체 타입은 여러 개의 개체 어커런스를 가질 수 있고, 다른 한 개체 타입은 하나의 개체 어커런스를 갖는 관계 

N:M 관계 : 관계에 참여하고 있는 두 개체 타입 모두 여러 개의 개체 어커런스를 가질 수 있는 관계 

 

관계형 데이터 모델 

데이터를 테이블 또는 릴레이션의 구조로 표현하는 논리적 데이터 모델 

 

릴레이션 

데이터를 원자 값으로 갖는 이차원의 테이블 

릴레이션은 물리적인 저장 구조가 아닌 논리적 구조이므로 다양한 정렬 기준으로 통하여 릴레이션을 표현 가능 

릴레이션 스키마 = 머리글 

릴레이션 인스턴스 = 튜플들 

 

슈퍼키 

한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로, 유일성은 만족시키지만 최소성은 만족시키지 못한다. 

 

후보키 

튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합으로, 유일성과 최소성을 모두 만족시킨다. 

 

기본키 

후보키 중에서 특별히 선정된 키로 중복된 값을 가질 수 없다. 

 

외래키 

다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합 

 

대체키 

후보키 중에서 선정된 기본키를 제외한 나머지 후보키 

 

*유일성 

하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 함 

 

*최소성 

키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야 함 

 

무결성 

데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 정확성 

 

무결성 제약 조건 

데이터베이스에 들어 있는 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약조건 

 

개체 무결성 Entity Integrity 

기본 테이블의 기본키를 구성하는 어떤 속성도 Null 값이나 중복값을 가질 수 없다. 

 

도메인 무결성 Domain Integrity 

주어진 속성 값이 정의된 도메인에 속한 값이어야 한다. 

 

참조 무결성 Referential Integrity 

외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 한다. 

 

사용자 정의 무결성 

속성값들이 사용자가 정의한 제약조건에 만족해야 한다. 

 

Null 무결성 

릴레이션의 특정 속성 값이 Null이 될 수 없도록 한다. 

 

고유 무결성 

릴레이션의 특정 속성에 대해 각 튜플이 갖는 속성값들이 서로 달라야 한다. 

 

키 무결성 

하나의 릴레이션에는 적어도 하나의 키가 존재해야 한다. 

 

페이지 나누기 

20201006 

 

네트워크 

두 대 이상의 컴퓨터를 전화선이나 케이블 등으로 연결하여 자원을 공유하는 것 

각 사이트들이 분포되어 있는 지리적 범위에 따라 LAN과 WAN으로 분류 

 

LAN Local Area Network 

회사, 학교, 연구소 등에서 비교적 가까운 거리에 있는 컴퓨터, 프린터, 저장장치 등과 같은 자원을 연결하여 구성한다. 

주로 자원 공유를 목적으로 사용 

사이트 간 거리가 짧아 데이터의 전송 속도가 빠르고 에러 발생이 낮다 

근거리 통신망에서는 주로 버스형이나 링형 구조를 사용한다 

 

WAN Wide Area Network 

국가와 국가 혹은 대륙과 대륙 등과 같이 멀리 떨어진 사이트들을 연결하여 구성 

사이트 간 거리가 멀기 때문에 통신 속도가 느리고 에러 발생률이 높다 

일정한 지역에 있는 사이트들을 근거리 통신망으로 연결한 후 각 근거리 통신망을 연결하는 방식을 사용한다. 

 

인터넷 

TCP/IP 프로토콜을 기반으로 하여 전 세계 수많은 컴퓨터와 네트워크들이 연결된 광범위한 컴퓨터 통신망 

 

미 국방성의 ARPANET에서 시작되었다. 

유닉스 운영체제를 기반으로 한다. 

인터넷에 연결된 모든 컴퓨터는 고유한 IP 주소를 갖는다. 

컴퓨터 또는 네트워크를 서로 연결하기 위해서는 브리지, 라우터, 게이트웨이가 사용된다. 

다른 네트워크 또는 같은 네트워크를 연결하여 중추적 역할을 하는 네트워크로, 보통 인터넷의 주가 되는 기간망을 “백본"이라고 한다. 

 

IP주소 

인터넷에 연결된 모든 컴퓨터 자원을 구분하기 위한 고유한 주소 

숫자로 8비트씩 4부분, 총 32비트로 구성되어 있다. 

A Class : 국가나 대형 통신망에 사용 (0~127로 시작), 2^24개의 호스트 사용 가능 

B Class : 중대형 통신망에 사용 (128~191로 시작), 2^16개의 호스트 사용 가능 

C Class : 소규모 통신망에 사용 (192~223으로 시작), 2^8개의 256개의 호스트 사용 가능 

D Class : 멀티캐스트 용으로 사용 (224~239로 시작) 

E Class : 실험적 주소이며 공용되지 않음 

 

*멀티캐스트 

한 명 이상의 송신자들이 특정한 한 명 이상의 수신자들에게 데이터를 전송하는 방식으로, 인터넷 화상회의 등에서 사용 

 

IPv6 

현재 사용하고 있는 IP주소 체계인 IPv4의 주소 부족 문제를 해결하기 위해 개발 

IPv4에 비해 자료 전송 속도가 빠르다 

IPv4와 호환성이 뛰어나다 

인증성, 기밀성, 데이터 무결성의 지원으로 보안 문제를 해결할 수 있다. 

주소의 확장성, 융통성, 연동성이 뛰어나며, 실시간 흐름 제어로 향상된 멀티미디어 기능 지원 

Traffic Class, Flow Label을 이용하여 등급별, 서비스별로 패킷을 구분할 수 있어 품질 보장이 용이하다. 

 

IPv6의 구성 

16비트씩 8부분, 총 128비트로 구성 

각 부분을 16진수로 표현하고, 콜론으로 구분한다. 

유니캐스트 Unicast : 단일 송신자와 단일 수신자 간의 통신(1:1 통신에 사용) 

멀티캐스트 Multicast : 단일 송신자와 다중 수신자 간의 통신(1:N 통신에 사용) 

애니캐스트 Anycast : 단일 송신자와 가장 가까이 있는 단일 수신자 간의 통신(1:1 통신에 사용) 

 

도메인 네임 

숫자로 된 IP 주소를 사람이 이해하기 쉬운 문자 형태로 표현한 것 

Www : 호스트 컴퓨터 이름 

Naver : 소속 기관 이름 

Co : 소속 기관 종류 

Kr : 소속 국가 

 

도메인 네임 시스템 Domain Name System DNS 

문자로 된 도메인 네임을 컴퓨터가 이해할 수 있는 IP 주소로 변환하는 역할을 하는 시스템 

 

DNS 서버 

DNS 역할을 하는 서버 

 

OSI 참조 모델 Open System Interconnection 

다른 시스템 간의 원활한 통신을 위해 ISO(국제표준화기구)에서 제안한 통신 규약으로, 개방형 시스템 간 데이터 통신 시 필요한 장비 및 처리 방법 등을 7단계로 표준화하여 규정한다. 

하위 : 물 -> 데 -> 네 -> 

상위 : 전 -> 세 -> 표 -> 응 

 

OSI 참조 모델의 목적 

서로 다른 시스템 간을 상호 접속하기 위한 개념을 규정 

OSI 규격을 개발하기 위한 범위를 정함 

관련 규정의 적합성을 조절하기 위한 공통적 기반을 제공 

 

OSI 참조 모델에서의 데이터 단위 

 

프로토콜 데이터 단위 PDU Protocol Data Unit 

동일 계층 간에 교환되는 정보의 단위 

물리 계층 : 비트 

데이터 링크 계층 : 프레임 

네트워크 계층 : 패킷 

전송 계층 : 세그먼트 

세션, 표현, 응용 계층 : 메시지 

 

서비스 데이터 단위 SDU Service Data Unit 

서비스 접근점(SAP)을 통해 상하위 계층끼리 주고받는 정보의 단위 

 

서비스 접근점 SAP 

상위 계층이 자신의 하위 계층으로부터 서비스를 제공받는 점 

 

물리 계층 

전송에 필요한 두 장치 간 실제 접속과 절단 등 기계적, 전기적, 기능적, 절차적 특성에 대한 규칙을 정의 

물리적 전송 매체와 전송 신호 방식을 정의하며, RS-232C, X.21 등의 표준이 있다. 

리피터, 허브 

 

데이터 링크 계층 

두 개의 인접한 개방 시스템들 간에 신뢰성 있고 효율적인 정보 전송을 할 수 있도록 한다. 

송신 측과 수신 측의 속도 차이를 해결하기 위한 흐름 제어 기능 

프레임의 시작과 끝을 구분하기 위한 프레임 동기화 기능 

오류의 검출과 회복을 위한 오류 제어 기능 

프레임의 순서적 전송을 위한 순서 제어 기능 

HDLC, LAPB, LLC, MAC, LAPD, PPP 등의 표준이 있다. 

랜카드, 브리지, 스위치 

 

네트워크 계층 

개방 시스템들 간의 네트워크 연결을 관리하는 기능과 데이터의 교환 및 중계 기능을 한다. 

네트워크 연결을 설정/유지/해제하는 기능을 한다. 

경로 설정(Routing), 데이터 교환 및 중계, 트래픽 제어, 패킷 정보 전송을 수행한다. 

X.25, IP 등의 표준이 있다. 

라우터 

 

전송 계층 Transport Layer 

논리적 안정과 균일한 데이터 전송 서비스를 제공함으로써 종단 시스템 간에 투명한 데이터 전송을 가능하게 한다. 

OSI 7계층 중 하위 3계층과 상위 3계층의 인터페이스를 담당한다. 

종단 시스템 간의 전송 연결 설정, 데이터 전송, 연결 해제 기능을 한다. 

주소 설정, 다중화(분할 및 재조립), 오류 제어, 흐름 제어를 수행한다. 

TCP, UDP 등의 표준이 있다. 

게이트웨이 

 

세션 계층 

송수신 측 간의 관련성을 유지하고 대화 제어를 담당한다. 

 

표현 계층 

응용 계층으로부터 받은 데이터를 세션 계층에 보내기 전에 통신에 적당한 형태로 변환하고, 세션 계층에서 받은 데이터는 응용 계층에 맞게 변환하는 기능을 한다. 

서로 다른 데이터 표현 형태를 갖는 시스템 간의 상호 접속을 위해 필요한 계층 

코드 변환, 데이터 암호화, 데이터 압축, 구문 검색, 정보 형식(포맷) 변환, 문맥 관리 기능을 한다. 

 

응용 계층 

사용자가 OSI 환경에 접근할 수 있도록 서비스를 제공한다. 

응용 프로세스 간의 정보 교환, 전자 사서함, 파일 전송, 가상 터미널 등의 서비스를 제공 

 

네트워크 관련 장비 

NIC 네트워크 인터페이스 카드 = 이더넷 카드 = 네트워크 어댑터 

컴퓨터와 컴퓨터 또는 컴퓨터와 네트워크를 연결하는 장치로, 정보 전송 시 정보가 케이블을 통해 전송될 수 있도록 정보 형태를 변경한다. 

 

MAC 주소 :네트워크 어댑터(NIC)의 고유 번호 

 

허브 

한 사무실이나 가까운 거리의 컴퓨터들을 연결하는 장치로, 각 회선을 통합적으로 관리하며 신호 증폭 기능을 하는 리피터의 역할도 포함한다. 

더미 허브 : 네트워크에 흐르는 모든 데이터를 단순히 연결하는 기능만을 제공한다. LAN이 보유한 대역폭을 컴퓨터 수만큼 나누어 제공한다. 네트워크에 연결된 각 노드를 물리적인 성형 구조로 연결한다. 

스위칭 허브 : 네트워크상에 흐르는 데이터의 유무 및 흐름을 제어하여 각각의 노드가 허브의 최대 대역폭을 사용할 수 있는 지능형 허브이다. 

 

리피터 

전송되는 신호가 전송 선로의 특성 및 외부 충격 등의 요인으로 인해 원래 형태와 다르게 왜곡되거나 약해질 경우 원래의 신호 형태로 재생하여 다시 전송하는 역할을 수행 

물리계층에서 동작하는 장비 

 

브리지 

LAN과 LAN을 연결하거나 LAN 안에서의 컴퓨터 그룹(세그먼트)을 연결하는 기능 수행 

데이터 링크 계층 중 MAC 계층에서 사용된다. 

네트워크 상의 많은 단말기들에 의해 발생되는 트래픽 병목 현상을 줄일 수 있다. 

네트워크를 분산적으로 구성할 수 있어 보안성을 높일 수 있다. 

브리지를 이용한 서브넷 구성 시 전송 가능한 회선 수는 브리지가 n개일  n(n-1)/2개이다. 

 

스위치 

LAN과 LAN을 연결하여 훨씬 더 큰 LAN을 만드는 장치 

하드웨어를 기반으로 처리하므로 전송속도가 빠르다 

포트마다 각기 다른 전송속도를 지원하도록 제어할 수 있고, 수십에서 수백개의 포트를 제공한다. 

데이터 링크 계층에서 사용 

 

스위치 분류 

L2 스위치 : 일반적인 스위치, MAC주소를 기반으로 프레임 전송, 동일 네트워크 간 연결만 가능 

L3 스위치 : L2 스위치에 라우터 기능이 추가된 것으로, IP 주소를 기반으로 패킷 전송, 서로 다른  네트워크 간 연결 가능 

L4 스위치 : 로드밸런서가 달린 L3 스위치로, IP 주소 및 TCP/UDP를 기반으로 사용자들의 요구 서버의 부하가 적은 곳에 배분하는 로드밸런싱 기능 제공 

L7 스위치 : IP 주소, TCP/UDP 포트 정보에 패킷 내용까지 참조하여 세밀하게 로드밸런싱 함. 

 

로드밸런서 

특정 서버에만 부하가 발생하지 않도록 트래픽을 분산시켜 주는 장비 

 

라우터 

LAN과 LAN의 연결 기능에 데이터 전송의 최적 경로를 선택할 수 있는 기능이 추가된 것으로 서로 다른 LAN이나 LAN과 WAN의 연결도 수행한다. 

 

게이트웨이 

전 계층의 프로토콜 구조가 다른 네트워크의 연결을 수행 

 

TCP/IP 

인터넷에 연결된 서로 다른 기종의 컴퓨터들이 데이터를 주고받을 수 있도록 하는 표준 프로토콜 

 

TCP Transmission Control Protocol 

신뢰성 있는 연결형 서비스를 제공 

패킷의 다중화, 순서 제어, 오류 제어, 흐름 제어 기능을 제공 

스트림 전송 기능을 제공 

 

IP Internet Protocol 

데이터그램을 기반으로 하는 비연결형 서비스를 제공 

패킷의 분해/조립, 주소 지정, 경로 선택 기능을 제공 

헤더의 길이는 최소 20Byte에서 최대 60Byte이다. 

 

OSI 

TCP/IP 

기능 

응용, 표현, 세션 

응용 

응용 프로그램 간의 데이터 송수신 제공 

TELNET, FTP, SMTP, SNMP, DNS, HTTP 

전송 

전송 

호스트들 간의 신뢰성 있는 통신을 제공 

TCP, UDP 

네트워크 

인터넷 

데이터 전송을 위한 주소 지정, 경로 설정을 제공 

IP, ICMP, IGMP, ARP, RARP 

데이터 링크, 물리 

네트워크 액세스 

실제 데이터(프레임)를 송수신하는 역할을 한다. 

Ethernet, IEEE 802, HDLC, X.25, RS-232C, ARQ 

 

프로토콜 

TCP 

UDP 

연결성 

연결형 서비스 

비연결형 서비스 

신뢰성 

높음 

낮음 

속도 

느림 

빠름 

패킷 교환 방식 

가상 회선 방식 

데이터그램 방식 

수신(재전송) 

수신함 

수신 안 함 

통신 방식 

1:1 

1:1, 1:N, N:N 

용도 

신뢰성 요구 작업 

실시간 전송 작업 

 

응용 계층의 주요 프로토콜 

FTP File Transfer Protocol : 컴퓨터와 컴퓨터 또는 컴퓨터와 인터넷 사이에서 파일을 주고받을 수 있도록 하는 원격 파일 전송 프로토콜 

SMTP Simple Mail Transfer Protocol : 전자 우편을 교환하는 서비스 

TELNET : 멀리 떨어져 있는 컴퓨터에 접속하여 자신의 컴퓨터처럼 사용할 수 있도록 해주는 서비스. 

SNMP Simple Network Management Protocol : TCP/IP의 네트워크 관리 프로토콜로, 라우터나 허브 등 네트워크 기기의 네트워크 정보를 네트워크 관리 시스템에 보내는 데 사용되는 표준 통신 규약 

DNS : 도메인 네임을 IP 주소로 매핑하는 시스템 

HTTP : WWW에서 HTML 문서를 송수신하기 위한 표준 프로토콜 

 

전송 계층의 주요 프로토콜 

TCP Transmission Control Protocol : 양방향 연결형 서비스 제공. 가상 회선 연결 형태의 서비스 제공. 스트림 위주(패킷)의 전달. 신뢰성 있는 경로를 확립하고 메시지 전송을 감독. 순서/오류/흐름 제어. 

UDP User Datagram Protocol : 데이터 전송 전에 연결을 설정하지 않는 비연결형 서비스 제공. TCP에 비해 단순한 헤더 구조를 가지므로 오버헤드가 적다. 신뢰성 보다는 속도를 중시하는 네트워크에서 사용 

RTCP Real-Time Control Protocol : RTP 패킷의 전송 품질을 제어하기 위한 제어 프로토콜. 세션에 참여한 각 참여자들에게 주기적으로 제어 정보 전송. 하위 프로토콜은 데이터 패킷과 제어 패킷의 다중화를 제공. 

 

*RTP : 멀티캐스트나 유니캐스트  

 

인터넷 계층의 주요 프로토콜 

IP(Internet Protocol) : 전송할 데이터에 주소를 지정하고 경로를 설정하는 기능을 한다. 

ICMP(Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜) : IP와 조합하여 통신중에 발생하는 오류의 처리와 전송 경로 변경 등을 위한 제어 메시지를 관리하는 역할을 하며, 헤더는 8Byte로 구성된다. 

 

네트워크 액세스 계층의 주요 프로토콜 

Ethernet(IEEE 802.3) : CSMA/CD 방식의 LAN 

IEEE 802 : LAN을 위한 표준 프로토콜 

HDLC : 비트 위주의 데이터 링크 제어 프로토콜 

X.25 : 패킷 교환망을 통한 DTE와 DCE 간의 인터페이스를 제공하는 프로토콜 

RS-232C : 공중 전화 교환망(PSTN)을 통한 DTE와 DCE 간의 인터페이스를 제공하는 프로토콜 

 

연결형(접속) 통신 

송수신 간을 논리적으로 연결한 후 데이터를 전송하는 방식으로, 가상 회선 방식이 대표적이다. 데이터 전송의 안정성과 신뢰성이 보장되지만, 연결 설정 지연이 일어나며 회선 이용률이 낮아질 수 있다. 

 

비연결형(비접속) 통신 

송수신 간 논리적 연결 없이 데이터를 독립적으로 전송하는 방식으로, 데이터그램 방식이 대표적이다. 

 

프로토콜 

서로 다른 기기들 간 데이터 교환을 원활하게 수행할 수 있도록 표준화시켜 놓은 통신 규약 

 

프로토콜의 특징 

다중화, 단편화, 재조립, 캡슐화, 연결 제어, 오류 제어, 동기화, 주소 지정 

 

프로토콜의 기본 요소 

구문, 의미, 시간 

 

데이터 교환방식 

회선 교환 방식 : 통신을 원하는 두 지점을 교환기를 이용하여 물리적으로 접속시키는 방식으로, 기존 음성 전화망이 대표적 

 

패킷 교환 방식 : 모든 사용자에게 빠른 응답 시간을 제공하기 위해 메시지를 일정한 길이의 패킷으로 잘라서 전송하는 방식 

 

DTE와 DCE 사이의 접속 규정 : X.25 

패킷망 상호 간의 접속을 위한 프로토콜 : X.75 

 

가상 회선 방식 : 단말장치 상호 간에 논리적인 가상 통신 회선을 미리 설정하여 송신지와 수신지 사이의 연결을 확립한 후에 설정된 경로를 따라 패킷들을 순서적으로 운반하는 방식 

 

데이터그램 방식 : 연결 경로를 설정하지 않고 인접한 노드들의 트래픽(전송량) 상황을 감안하여 각각의 패킷들을 순서에 상관없이 독립적으로 운반하는 방식 

 

프레임 릴레이 

기존의 X.25가 갖는 오버헤드를 제거하여 고속 데이터 통신에 적합하도록 개선한 프로토콜 

 

라우팅(Routing 경로제어) 

송수신 측 간의 전송 경로 중에서 최적 패킷 교환 경로를 결정하는 기능으로, 경로 제어표를 참조하여 라우터에 의해 수행된다. 

 

*최적 패킷 교환 경로 

어느 한 경로에 데이터의 양이 집중하는 것을 피하면서, 최저의 비용으로 최단 시간에 송신할 수 있는 경로 

 

라우팅 요소 

성능 기준, 경로의 결정 시간과 장소, 정보 발생지, 경로 정보의 갱신 시간 

 

페이지 나누기 

 

20201007 

 

소프트웨어 패키징 

모듈별로 생성한 실행 파일들을 묶어 배포용 설치 파일을 만드는 것 

 

소프트웨어 패키징 시 고려사항 

사용자의 시스템 환경, 즉 운영체제, CPU, 메모리 등에 필요한 최소 환경을 정의한다. 

UI는 사용자가 눈으로 직접 확인할 수 있도록 시각적인 자료와 함께 제공하고 매뉴얼과 일치시켜 패키징한다. 

단순히 패키징하여 배포하는 것으로 끝나는 것이 아니라, 하드웨어와 함께 관리될 수 있도록 Managed Service 형태로 제공하는 것이 좋다. 

고객의 편의성을 고려한 안정적인 배포가 중요하다. 

다양한 사용자의 요구사항을 반영할 수 있도록 패키징의 변경 및 개선에 대한 관리를 항상 고려한다. 

 

모듈화 Modularity 

소프트웨어의 성능을 향상시키거나 시스템의 수정 및 재사용, 유지 관리 등이 용이하도록 시스템을 각 기능별로 나누는 것 

 

Managed Service 

고객이 사용 중인 소프트웨어를 24시간 모니터링하면서 문제 발생 시 현장에 바로 출동하여 필요한 점검을 수행하는 등의 체계적인 운영 관리와 유지 보수를 수행하는 서비스 

 

패키징 작업 순서 

기능 식별 : 작성된 코드의 기능을 확인한다. 

모듈화 : 확인된 기능 단위로 코드들을 분류한다. 

빌드 진행 : 모듈 단위별로 실행파일을 만든다. 

사용자 환경 분석 : 웹, 모바일, PC 등 소프트웨어가 사용될 환경이나 운영체제, CPU, RAM 등의 최소 운영 환경을 정의한다. 

패키징 및 적용 시험 : 빌드된 실행 파일들을 정의된 환경에 맞게 배포용 파일 형식으로 패키징한다. 정의된 환경과 동일한 환경에서 패키징 결과를 테스팅한 후 소프트웨어에 대한 불편사항을 사용자 입장에서 확인한다. 

패키징 변경 개선 : 확인된 불편사항을 반영하기 위한 패키징의 변경 및 개선을 진행한다. 

배포 : 배포 수행 시 오류가 발생하면 해당 개발자에게 전달하여 수정을 요청한다. 

*jar : java 응용 소프트웨어나 라이브러리를 배포하기 위한 패키지 형식 

*war : java Servlet, java Class, xml 및 웹 애플리케이션 서비스를 제공하기 위한 패키지 형식 

*ear : jar와 war를 묶어 하나의 애플리케이션 서비스를 제공할 수 있는 패키지 형식 

 

릴리즈 노트 

개발 과정에서 정리된 릴리즈 정보를 소프트웨어의 최종 사용자인 고객과 공유하기 위한 문서 

 

릴리즈 노트 초기 버전 작성 시 고려사항 

정확하고 완전한 정보를 기반으로 개발팀에서 직접 현재 시제로 작성해야 한다. 

신규 소스, 빌드 등의 이력이 정확하게 관리되어 변경 또는 개선된 항목에 대한 이력 정보들도 작성되어야 한다. 

 

머릿말, 개요, 목적, 문제 요약, 재현 항목, 사용자 영향도, SW 지원 영향도, 노트, 면책 조항, 연락처 

재현 항목 : 버그 발견에 대한 과정 설명 

 

릴리즈 노트 추가 버전 작성 이유 

테스트 과정에서 베타 버전 출시, 긴급한 버그 수정, 업그레이드와 같은 자체 기능 향상, 사용자 요청 등 

 

릴리즈 노트 작성 순서 

모듈 식별 : 모듈별 빌드 수행 후 릴리즈 노트에 작성될 내용들을 확인한다. 

릴리즈 정보 확인 : 릴리즈 노트 이름, 소프트웨어 이름, 릴리즈 버전, 릴리즈 날짜, 노트 날짜, 노트 버전 등 확인 

릴리즈 노트 개요 작성 : 소프트웨어 및 변경사항 전체에 대한 간략한 내용 작성 

영향도 체크 : 버그나 이슈 관련 내용 또는 해당 릴리즈 버전에서의 기능 변화가 다른 소프트웨어나 기능을 사용하는 데 미칠 수 있는 영향에 대해 기술한다. 

정식 릴리즈 노트 작성 : Header(머릿말), 개요, 영향도 체크 항목을 포함하여 정식 릴리즈 노트에 작성될 기본 사항들을 작성한다. 

추가 개선 항목 식별 : 추가 버전 릴리즈 노트 작성이 필요한 경우 추가 릴리즈 노트 작성 

 

디지털 저작권 관리 DRM Digital Right Management 

저작권자가 배포한 디지털 콘텐츠가 저작권자가 의도한 용도로만 사용되도록 디지털 콘텐츠의 생성, 유통, 이용까지의 전 과정에 걸쳐 사용되는 디지털 콘텐츠 관리 및 보호 기술 

 

클리어링 하우스 Clearing House : 저작권에 대한 사용 권한, 라이선스 발급, 사용량에 따른 결제 관리 등을 수행하는 곳 

콘텐츠 제공자 Contents Provider : 콘텐츠를 제공하는 저작권자. 클리어링 하우스에 라이선스를 등록함. 콘텐츠 분배자에게 콘텐츠 등록함. 

패키저 Packager : 콘텐츠를 메타 데이터와 함께 배포 가능한 형태로 묶어 암호화하는 프로그램 

콘텐츠 분배자 Contents Distributor : 암호화된 콘텐츠를 유통하는 곳이나 사람. 콘텐츠 소비자로부터 받은 라이선스 요청을 클리어링 하우스에게 함. 콘텐츠 소비자에게 다운로드 제공. 

콘텐츠 소비자 Customer : 콘텐츠를 구매해서 사용하는 주체. 콘텐츠 분배자에게 라이선스 요청. 요금은 클리어링 하우스에게 지불. 

DRM 컨트롤러 DRM Controller : 배포된 콘텐츠의 이용 권한을 통제하는 프로그램 

보안 컨테이너 Security Container : 콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안 장치 

 

*메타 데이터 Meta Data : 데이터에 대한 속성 정보 등을 설명하기 위한 데이터 

 

디지털 저작권 관리의 기술 요소 

암호화 Encryption : 콘텐츠 및 라이선스를 암호화하고 전자 서명을 할 수 있는 기술 

키 관리 Key Management : 콘텐츠를 암호화한 키에 대한 저장 및 분배 기술  

암호화 파일 생성 Packager : 콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술 

식별 기술 Identification : 콘텐츠에 대한 식별 체계 표현 기술 

저작권 표현 Right Expression : 라이선스의 내용 표현 기술 

정책 관리 Policy Management : 라이선스 발급 및 사용에 대한 정책 표현 및 관리 기술 

크랙 방지 Tamper Resistance : 크랙에 의한 콘텐츠 사용 방지 기술 

인증 Authentication : 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술 

 

*전자 서명 Digital Signature 

전자 문서의 변경 여부를 확인할 수 있도록 작성자의 고유 정보를 암호화하여 문서에 포함하는 기술 

 

소프트웨어 사용자 매뉴얼 

사용자가 소프트웨어를 사용하는 과정에서 필요한 내용을 문서로 기록한 설명서와 안내서 

개별적으로 동작이 가능한 컴포넌트 단위로 작성 

컴포넌트 명세서와 컴포넌트 구현 설계서를 토대로 작성 

 

*컴포넌트 : 독립적인 업무 또는 기능을 수행하는 단위이며, 실행 코드 기반으로 작성된 모듈 

*모듈 : 하나의 기능이 한 개의 파일로 구현된 형태 

*모듈화 :  

소프트웨어의 성능을 향상시키거나 시스템의 수정 및 재사용, 유지관리 등이 용이하도록 시스템의 기능들을 모듈 단위로 분해하는 것 

 

 

컴포넌트 명세서 : 컴포넌트의 개요 및 내부 클래스의 동작, 외부와의 통신 명세 등을 정의한 문서 

컴포넌트 구현 설계서 : 컴포넌트 구현에 필요한 컴포넌트 구조도, 컴포넌트 목록, 컴포넌트 명세, 인터페이스 명세로 구성된 설계서 

 

소프트웨어 사용자 매뉴얼 작성 순서 

기능 식별 -> 사용자 화면 분류 -> 사용자 환경 파일 확인 -> 초기화 절차 확인 -> 이상 Case 확인 -> 최종 매뉴얼 적용 

 

소프트웨어 설치 매뉴얼 작성 순서 

기능 식별 -> UI 분류 -> 설치 파일 / 백업 파일 확인 -> Uninstall 절차 확인 -> 이상 Case 확인 -> 최종 매뉴얼 적용 

 

형상 관리 SCM Software Configuration Management 

소프트웨어 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동 

 

형상 관리 기능 

형상 식별 : 형상 관리 대상에 이름과 관리 번호를 부여하고, 계층 구조로 구분하여 수정 및 추적이 용이하도록 하는 작업 

버전 제어 : 소프트웨어 업그레이드나 유지 보수 과정에서 생성된 다른 버전의 형상 항목을 관리하고, 이를 위해 특정 절차와 도구(Tool)를 결합시키는 작업이다. 

형상 통제 

형상 감사 

형상 기록(상태 보고) 

 

소프트웨어의 버전 등록 관련 주요 용어 

저장소 Repository : 최신 버전의 파일들과 변경 내역에 대한 정보들이 저장되어 있는 곳 

가져오기 Import : 버전 관리가 되고 있지 않은 아무것도 없는 저장소(Repository)에 처음으로 파일을 복사한다. 

체크아웃 Check-Out : 프로그램을 수정하기 위해 저장소에서 파일을 받아온다. 소스 파일과 함께 버전 관리를 위한 파일들도 받아온다. 

체크인 Check-In : 체크아웃 한 파일의 수정을 완료한 후 저장소의 파일을 새로운 버전으로 갱신한다. 

커밋 Commit : 체크인을 수행할 때 이전에 갱신된 내용이 있는 경우에는 충돌(Conflict)을 알리고 Diff 도구를 이용해 수정한 후 갱신을 완료한다. 

동기화 Update : 저장소의 최신 버전으로 자신의 작업 공간을 동기화한다. 

 

소프트웨어 버전 등록 과정 

가져오기 Import -> 인출 Check-Out -> 예치 Commit -> 동기화 Update -> 차이 Diff 

 

공유 폴더 방식 

버전 관리 자료가 로컬 컴퓨터의 공유 폴더에 저장되어 관리되는 방식 

SCCS, RCS, PVCS, QVCS 

 

클라이언트/서버 방식 

버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리되는 방식 

CVS, SVN, CVSNT, Clear Case, CMVC, Perforce 

 

분산 저장소 방식 

버전 관리 자료가 하나의 원격 저장소와 분산된 개발자 PC의 로컬 저장소에 함께 저장되어 관리되는 방식 

Git, Mercurial, Bitkeeper 

 

빌드 

소스 코드 파일들을 컴파일한 후 여러 개의 모듈을 묶어 실행 파일로 만드는 과정 

 

빌드 자동화 도구 

빌드를 포함하여 테스트 및 배포를 자동화하는 도구 

 

애자일 환경에서는 하나의 작업이 마무리될 때마다 모듈 단위로 나눠서 개발된 코드들이 “지속적 통합"됨 

 

Ant, Maven, Gradle, Jenkins 

 

Jenkins 

Java 기반의 오픈 소스 형태로, 가장 많이 사용되는 빌드 자동화 도구 

서블릿 컨테이너에서 실행되는 서버 기반 도구 

SVN, Git 등 대부분의 형상 관리 도구와 연동이 가능하다. 

친숙한 Web GUI 제공으로 사용이 쉽다. 

여러 대의 컴퓨터를 이용한 분산 빌드나 테스트가 가능하다. 

 

*서블릿 Server Side Applet 

클라이언트의 요청을 처리해주기 위해 서버 측에서 실행되는 작은 프로그램 

 

*서블릿 컨테이너 

서블릿을 실행하고 서블릿의 생명주기를 관리하는 역할을 하는 것 

 

Gradle 

Groovy를 기반으로 오픈 소스 형태의 자동화 도구로, 안드로이드 앱 개발 환경에서 사용된다. 

 

*Groovy 

Java에 Python, Ruby, Smalltalk 등의 장점을 결합한 동적 객체 지향 프로그래밍 언어 

 

DSL Domain Specific Language 

웹페이지 영역에 특화되어 사용되는 HTML과 같이 특정한 도메인(영역, 용도)에 맞게 기능을 구성한 언어 

728x90
반응형