정보처리기사 실기 요약

정보처리기사 실기 요약

현행 시스템 파악

1. 현행 시스템 파악 개념

■ 현행 시스템 파악이란 현행 시스템이 어떤 하위 시스템으로 구성되어 있고, 제공 기능 및 연계 정보는 무엇이며 어떤 기술 요소를 사용하는지를 파악하는 활동

(사용하는 SW, HW 무엇인지? 어떻게 되어 있는지 파악하는 것)

2. 현행 시스템 파악 절차 (현기인 아소하네)

■ 1단계 

-시스템 구성  파악 → 기간업무(주요), 지원업무(보조)

-시스템  파악

-시스템 터페이스 현황 파악 → 데이터형식(XML, 고정가변포맷), 통신규약(TCP/IP, X.25), 연계유형(EAI)

■ 2단계

– 키텍처 파악 →  계층별로 어떤 기술요소 사용중인가 파악

– 프트웨어 구성 파악 →  설치된 소프트웨어 이름, 용도, 라이선스 등..

■ 3단계

– 시스템 드웨어 현황 파악 → 주요 사양, 이중화 구현 여부

– 트워크 구성 파악 → 네트워크 장비

3. 소프트웨어 아키텍처

■ 여러 가지 소프트웨어 구성요소와 그 구성요소가 가진 특성 중에서 외부에 드러나는 특성, 그리고 구성요소 간의 관계를 표현하는 시스템의 구조나 구조체를 의미

(소프트웨어를 설계하고 전개하기 위한 지침, 원칙)

■ 소프트웨어 아키텍처 프레임워크 

아키텍처가 표현하는 내용, 이들간의 관계를 제공하는 아키텍처 기술 표준

→ 구성요소 : 아키텍처 명세서, 이해관계자, 관심사, 관점, 뷰, 근거 

■ 소프트웨어 아키텍처 4+1 뷰

고객의 요구사항을 정리해 놓은 시나리오를 4개의 관점에서 바라보는 소프트웨어적인 접근 방법

(요구사항 충족을 증명하기 위해 유스케이스를 사용)

→ 4+1 뷰 구성 요소 (유논프구배)

1. 스케이스 뷰 

    → 아키텍처 도출, 설계 작업 주도, 다른 뷰 검증 시 사용

2. 리 뷰

→ 설계 모델의 추상화, 클래스를 식별

3. 로세스 뷰

→ 런타임시 스레드, 프로세스와 이들 간의 상호작용

4. 현 뷰

→ 컴포넌트 뷰, 개발자 관점의 구현

5. 포 뷰

    → 비기능적인 요구사항 고려

개발 기술 환경 정의

1. 개발 기술 환경 현행 시스템 분석

■ 운영체제(Operating System)

컴퓨터 시스템이 제공하는 모든 하드웨어, 소프트웨어를 사용할 수 있도록 해주고, 사용자와 컴퓨터 하드웨어 간의 인터페이스를 담당하는 프로그램 (사용자가 컴퓨터 쉽게 쓰도록..)

→ 운영체제 현행 시스템 분석 시 고려 사항

* 품질 측면 : 신뢰도, 성능(메모리 32, 64 비트, 배치작업)

* 지원 측면 : 기술 지원, 주변 기기, 구축 비용

■ OSI 7계층

– 응용 계층(Application Layer) → 사용자, 네트워크 간 연결 서비스

– 표현 계층(Presentation Layer) → 데이터 형식 설정, 암/복호화

– 세션 계층(Session Layer) → 연결 접속 및 동기제어

– 전송 계층(Transport Layer) → 신뢰성 있는 통신 보장

– 네트워크 계층(Network Layer) → 전송을 위한 최적의 경로 제공

– 데이터 링크 계층(Data Link Layer) → 전송, 전송오류 제어

– 물리 계층(Physical Layer) → 0과 1 비트 정보를 전기적 신호전달

■ DBMS(Database Management System)

데이터베이스의 가용성, 성능, 기술 지원, 호환성, 구축 비용을 분석한다.

→ DBMS 현행 시스템 분석 시 고려 사항

* 성능 측면 : 가용성, 성능, 상호 호환성

* 지원 측면 : 기술 지원, 구축 비용

■ 미들웨어(Middleware)의 개념

응용 프로그램과 프로그램이 운영되는 환경 간에 원만한 통신이 이루어질 수 있도록 제어해주는 소프트웨어이다.

→ DBMS 현행 시스템 분석 시 고려 사항

* 성능 측면 : 가용성, 성능(가비지 컬렉션)

* 지원 측면 : 기술 지원(오픈 소스), 구축 비용(총 소유 비용)

2. 개발 기술 환경 요구사항 파악

■ CPU 용량 산정

* OLTP/배치/데이터베이스 서버 →  tpmc 보정(계산)

* WEB/WAS 서버 → OPS

#2 요구사항 확인

요구사항 

1. 요구사항 개념

문제 해결 또는 목적 달성을 위해 고객에 의해 요구되거나, 표준이나 명세 등을 만족하기 위하여 시스템이 가져야 하는 서비스 또는 제약사항

■ 요구사항의 분류

→ 기능적 요구사항 (서비스)

→ 비기능적 요구사항 (제약사항)

■ 기능적 요구사항 특징 (도분명확)

–  → 의사소통이 중요하다. 요구사항이 어디있고, 어떻게 수집할 것인가? 

  (인터뷰, 설문조사, 브레인스토밍, 워크숍)

–  → 상충되는 요구사항 해결, 요구사항 정제

  (자료 흐름 지향 분석(DFD), 객체지향 분석(UML))

–  → 요구사항 문서화

  (자연어, 정형화 기법)

–  → 요구사항 완전한지 검증

  (동료 검토, 워크 스루, 인스펙션)

■ 요구사항 관리 절차 (협기변확)

– 요구사항 

– 요구사항 준선

– 요구사항 경관리

 요구사항 인 및 검증

2. 요구사항 분석

■ 요구사항 분석 기법 (분개할협정)

– 요구사항  (기능, 비기능 인지 구분)

– 념 모델링

– 요구사항 

– 요구사항 

– 형 분석

3. 요구사항 확인

■  요구사항 확인 기법 (요프모인)

– 구사항 검토

 로토 타이핑

– 델 검증

– 수 테스트

4. 요구사항 확인 프로세스

■ 요구사항 확인 프로세스 (목정비타)

– 요구사항 록 확인

– 요구사항 의서 작성 여부 확인

– 기능적 요구사항의 확인

–  시스템 연계 및 인터페이스 요구사항 확인

요구사항의 시스템화 타당성 분석

■ 상호 운용성

다른 목적을 지닌 2개 이상 시스템들이 상호 간 정보 및 서비스를 교환하면서 효과적으로 운용 될 수 있는 시스템의 능력

비용산정 모델

■ 상향식 산정방법 (전문가 판단, 델파이 기법)

■ 하향식 산정방법 (Man Month, COCOMO, Putnam, FP(Function Point))

#3 분석 모델 확인하기

분석 모델 검증 방법

분석 모델 검증은 요구사항 도출 기법을 활용하여 업무 분석가가 제시한 분석 모델에 대해서 확인하는 활동이다.

 분석 모델 검증 방법 (유개분)

– 스케이스 모델 검증

– 념 수준의 분석 클래스 검증

– 석 클래스 검증

분석 모델의 기술적 타당성 검토

 분석 모델의 기술적 타당성 검토 (성상아기)

– 능 및 용량 산정의 적정성

– 시스템 간 호 운용성

– IT 시장 성숙도 및 트렌드 부합성

– 술적 위험 분석

■ 분석 모델의 시스템화 타당성 분석 프로세스 (컬작검확)

– 타당성 검토의견 럼 추가

– 타당성 검토의견 

– 타당성 분석 결과 

– 타당성 분석 결과 인 및 배포/공유

2장. 데이터 입출력 구현

#1 논리 데이터 저장소 확인

논리 데이터 모델 검증

1. 논리 데이터 모델링 개념

■ 데이터베이스 설계 프로세스의 기초 설계 단계로 비즈니스 정보의 구조와 규칙을 명확하게 표현할 수 있는 기법이다.

2. 논리 데이터 모델링 특성 (정포완독)

– 규화 : 모든 데이터를 정규화(Normalization)하여 모델링 

– 용성 : 모든 엔티티 타입, 속성, 관계, 프로세스 등을 포함

– 전성 : 모든 규칙과 관계를 완전하고 정확하게 표현

– 립성 : 성은, 제약사항에 독립적인 모델, 특정 DBMS로부터 독립적인 성질

3. 논리 데이터 모델링 속성 (개속관)

– 체(Entity) : 관리할 대상이 되는 실체

– 성(Attributes) : 관리할 정보의 구체적 항목

– 계(Relationship) : 개체 간의 대응 관계

4. 개체-관계(E-R) 모델

■ 현실 세계에 존재하는 데이터와 그들 간의 관계를 사람이 이해할 수 있는 형태로 명확하게 표현하기 위해 가장 널리 사용되고 있는 모델이다.

■ 요구사항으로 얻어낸 정보들을 개체, 속성, 관계로 기술한 모델이다.

5. 정규화

■ 정규화 개념

    관계형 데이터베이스의 설계에서 중복을 최소화하여 데이터를 구조화하는 프로세스이다.

■ 이상 현상 (삽삭갱)

    – 입이상 : 정보 저장시 해당 정보의 불필요한 세부정보를 입력해야 하는 경우

    – 제이상 : 정보 삭제 시 원치 않는 다른 정보가 같이 삭제되는 경우

    – 신이상 : 중복 데이터 중에서 특정 부분만 수정되어 중복된 값이 모순을 일으키는 경우

 정규화의 단계 (원부이 결다조)

    – 제 1 정규형 (자화)

    – 제 2 정규형 (분함수 종속 제거)

    – 제 3 정규형 (행함수 종속 제거)

    – 보이스코드 정규형 (정자 함수 종속 제거)

    – 제 4 정규형 (치 종속성 제거)

    – 제 5 정규형 (인 종속성 제거)

#2 물리 데이터 저장소 설계

물리 데이터 모델 설계

1. 물리 데이터 모델링 개념

■ 물리 데이터 모델링은 논리모델을 적용하고자 하는 기술에 맞도록 상세화해가는 과정이다.

2. 물리 데이터 모델링 변환 절차

  1. 개체를 테이블로 변환
  2. 속성을 컬럼으로 변환
  3. UID를 기본키로 변환
  4. 관계를 외래키로 변환
  5. 컬럼 유형과 길이 정의
  6. 반 정규화 수행

물리 데이터 저장소 구성

1. 테이블 제약조건(Constraint) 설계

■ 제한(Restricted)

참조 무결성 원칙을 위배하는 연산을 거절하는 옵션

■ 연쇄(Cascade)

튜플을 삭제하면서, 참조되는 릴레이션에서 이 튜플을 참조하는 튜플들도 삭제하는 옵션

■ 널 값(Nullify)

    튜플을 삭제하면서, 참조되는 릴레이션에서 이 튜플을 참조하는 튜플들의 외래키에 NULL 값을 넣는 옵      션

2. 인덱스(Index) 설계

■ 인덱스 개념

검색 연산의 최적화를 위해 데이터베이스 내에 열에 대한 정보를 구성한 데이터구조이다.

■ 인덱스 적용 기준

– 인덱스 분포도가 10 ~ 15% 이내인 경우

    – 조회 및 출력 조건으로 사용되는 컬럼인 경우

■ 인덱스 컬럼 선정

    – 분포도가 좋은 컬럼은 단독적으로 생성

    – 자주 조합되어 사용되는 컬럼은 결합 인덱스로 생성

    – 가능한 한 수정이 빈번하지 않은 컬럼을 선정

■ 설계 시 고려 사항

  – 지나치게 많은 인덱스는 오버헤드로 작용

    – 인덱스로 인한 추가적인 저장공간이 필요함을 고려

    – 너무 넓은 범위를 인덱스 처리 시 많은 오버헤드 발생 가능성

3. 뷰(View) 설계

■ 뷰 속성

– REPLACE : 뷰가 존재하는 경우 재생성

    – FORCE : 본 테이블의 존재 여부 관계없이 뷰 생성

    – NOFORCE : 기본 테이블이 존재할때 뷰 생성

    – WITH CHECK OPTION : 서브 쿼리 내의 조건을 만족하는 행만 변경

    – WITH READ ONLY : 데이터 조작어(DML) 작업 불가

4. 클러스터(Cluster) 설계

■ 적용 기준

– 인덱스의 단점을 해결한 기법, 분포도가 넓을수록 오히려 더 유리

    – 액세스 효율 향상을 위한 물리적 저장 방법

    – 대량의 범위를 자주 액세스하는 경우 적용

■ 설계 시 고려 사항

– 검색 효율은 높여주지만 입력, 수정, 삭제 시 부하가 증가

    – UNION, DISTINCT, ORDER BY, GROUP BY가 빈번한 컬럼은 검토 대상

    – 수정이 자주 발생하지 않는 컬럼은 검토 대상

    – 처리 범위가 넓어 문제가 발생하는 경우는 단일 테이블 클러스터링을 고려

    – 조인이 많아 문제가 발생하는 경우는 다중 테이블 클러스터링을 고려 

5. 파티션(Partition) 설계

■ 파티션의 종류 (레해리컴)

    – 인지 파티셔닝 : 연속적인 숫자나 날짜를 기준으로 하는 파티셔닝 기법

    – 시 파티셔닝 : 해시 함수 값에 의한 파티셔닝 기법

    – 스트 파티셔닝 : 특정 파티션에 저장 될 데이터에 대한 명시적 제어가 가능한 파티셔닝 기법

    – 포지트 파티셔닝 : 범위분할 + 해시분할

■ 파티션의 장점 (성가백합)

    – 능 향상 : 데이터 액세스 범위를 줄여 성능 향상

    – 용성 향상 : 전체 데이터 훼손 가능성 감소, 가용성 향상

    – 업 가능 : 분할 영역을 독립적으로 백업하고 복구가능

    –  감소 : 디스크 스트라이핑(병렬처리)으로 입출력 성능 향상

#3 데이터 조작 프로시저 작성

데이터 조작 프로시저 개발

1. 프로시저(Procedure)의 개념

■ SQL을 이요해 생성된 데이터를 조작하는 프로그램이다. 데이터베이스 내부에 저장되고 일정한 조건이 되면 자동으로 수행된다. (저장된 프로시저, 저장된 함수, 저장된 패키지, 트리거)

2. PL/SQL 개념

■ 표준 SQL을 기본으로 Oracle에서 개발한 데이터 조작 언어이다. Oracle 기반 모든 프로시저 작성에 사용되며 표준 SQL의 확장 기능이 우수하다.

데이터 조작 프로시저 테스트

1. PL/SQL 테스트

■ DBMS_OUTPUT 패키지 활용

메시지를 버퍼에 저장하고 버퍼로부터 메시지를 읽어오기 위한 인터페이스 패키지 DBMS_OUTPUT을        코드에 포함시킨다.

■ DBMS_OUTPUT 패키지 설명

– DBMS_OUTPUT.DISABLE : 메시지 버퍼 내용 삭제

    – DBMS_OUTPUT.ENABLE : 메시지 버퍼 내용 할당 

    – DBMS_OUTPUT.PUT : 하나의 라인을 여러번에 걸쳐 저장

    – DBMS_OUTPUT.PUT_LINE : PUT과 동일하나, 퍼버에 저장되는 메시지의 마지막 라인 끝에 EOL 문자          추가

    – DBMS_OUTPUT.GET_LINE : 한 번 호출될 때마다 하나의 라인만을 읽어옴

    – DBMS_OUTPUT.GET_LINES : 지정된 라인을 모두 읽어들임

■ DBMS_OUTPUT 패키지 실행 방법

PL/SQL의 처리결과를 화면에 출력하기 위한 SERVEROUTPUT을 ON 시키고, 실행하고자 하는 PL/SQL        블록 또는 저장 객체 명을 호출한다.

    (SET SERVEROUTPUT ON)

#4 데이터 조작 프로시저 최적화

데이터 조작 프로시저 성능개선

1. 옵티마이저 통계 확인

■ 옵티마이저(Optimizer)의 개념

SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해주는 DBMS 내부 핵심엔진이다.

    옵티마이저가 생성한 SQL 처리 경로를 실행계획이라 부른다.

■ 옵티마이저의 유형

    – RBO(Rule Based Optimizer) = 규칙기반 옵티마이저

통계 정보가 없는 상태에서 사전 등록된 규칙에 따라 질의 실행 계획을 선택하는 옵티마이저

      (원하는 처리경로로 유도 용이)

    – CBO(Cost Based Optimizer) = 비용기반 옵티마이저

통계 정보로부터 모든 접근 경로를 고려한 질의실행 계획을 선택하는 옵티마이저

      (성능보장 가능)

■ 힌트 사용

    SQL 성능 개선의 핵심 부분으로 옵티마이저 실행 계획을 원하는 대로 변경할 수 있게 한다.

    – /* + RULE */ : 규칙 기반 접근 방식을 사용하도록 지정

    – /* + CHOOSE */ : 오라클 옵티마이저 디폴트 값에 따름

    – /* + INDEX(테이블명 인덱스명) */ : 지정된 인덱스를 강제적으로 사용하도록 지정

    – /* + USE_HASH(테이블명) */ : 지정된 테이블들의 조인이 Hash Join 형식으로 일어나도록 유도

    – /* + USE_MERGE(테이블명) */ : 지정된 테이블들의 조인이 Sort Merge 형식으로 일어나도록 유도

    – /* + USE_NL(테이블명) */ : 지정된 테이블들의 조인이 Nested Loop 형식으로 일어나도록 유도

3장. 통합 구현

#1 연계 데이터 구성

연계 요구사항 분석

1. 연계 요구사항 분석의 개념

■ 서로 다른 두 시스템, 장치, 소프트웨어를 이어주는 중계 역할을 하는 연계 시스템과 관련된 요구사항을 분석하는 과정이다. 

■ 연계 요구사항 분석 기법 (인체설델브)

터뷰 : 사용자 면담을 통해 연계 요구사항 도출

크리스트 : 시스템 운영 환경, 성능, 보안, 데이터 발생 주기 등의 기준에 대한 점검을 통한 분석

문지 : 서비스 활용 목적에 따라 연계 필요 데이터 식별 및 연계 주기 등을 설문지를 통해 분석하는 기법

파이 기법 : 전문가의 경험적 지식을 통한 분석 기법

레인스토밍 : 소속된 인원들이 자발적으로 자연스럽게 제시된 아이디어 목록을 통해 분석하는 기법

 연계 요구사항 분석 참고 문서 (코테응시)

드 정의서 : 공통 코드 정의서

이블 정의서 : 데이터 모델링 정의서, 테이블/프로세스 연관도, 테이블별 컬럼 정의서

용 프로그램 구성도 : 애플리케이션 메뉴구성, 화면설계, 데이터 발생 시점, 주기, 발생 패턴 등 확인

스템 구성도 : 하드웨어, 소프트웨어, 네트워크 등 연계 대상 시스템 구성도

2. 연계 요구사항 분석 참고문서

■ 개체(Entity) 정의서

데이터베이스 개념 모델링 단계에서 도출한 개체의 타입과 관련 속성, 식별자 등의 정보를 개괄적으로 명세화한 정의서이다.

■ 테이블(Table) 정의서

논리 및 물리 모델링 과정에서 작성하는 설계 산출물로 테이블을 구성하는 컬럼들의 특성, 인덱스(Index), 업무 규칙을 문서화한 것이다. (컬럼명, 데이터 타입, 길이, 널 여부, 키 여부, 디폴드 값 등…)

■ 인터페이스(연계) 명세서

인터페이스(연계) 정의서에 작성한 인터페이스 별로 송수신하는 데이터 타입, 길이 등 인터페이스 항목을 상세하게 작성한다. 

■ 인터페이스 명세서 구성요소

송신 시스템과 수신 시스템 간의 인터페이스 방식, 주기 등을 기록한 현황을 작성한다.

# 인터페이스 명세서 주요 항목 (인최 크시데)

– 터페이스 ID

– 대 처리 횟수

– 데이터 기(평균/최대)

– 스템 정보

– 이터 정보 

3. 연계 요구사항 분석 절차

  1. 시스템 현황 확인
  2. 정의서 확인
  3. 체크리스트 작성
  4. 인터뷰 및 면담
  5. 연계 요구사항 분석서 작성

4. 연계 시스템의 구성(송수중)

– 송신 시스템 : 연계할 데이터를 데이터베이스와 애플리케이션으로부터 연계 테이블 또는 파일 형태로 생성하여 송신하는 시스템

– 수신 시스템 : 수신한 연계 테이블 또는 파일의 데이터를 수신 시스템에서 관리하는 데이터 형식에 맞게 변환하여 데이터베이스에 저장하거나 애플리케이션에서 활용할 수 있도록 제공하는 시스템

– 중계 서버 : 송신 시스템과 수신 시스템 사이에서 데이터를 송수신하고 연계 데이터의 송수신 현황을 모니터링 하는 시스템이다. 연계 데이터의 보안 강화 및 다중 플랫폼 지원 등이 가능하다.

연계 데이터 식별 및 표준화

1. 연계 데이터 식별

■ 연계 데이터 범위 검토사항

  송신부                       수신부
———————————–
Not Null                      Null                         →          송신 시스템 입력된 값 그대로 연계
    Null                       Not Null                    →          연계 불가

송신 데이터 크기 > 수신 데이터 크기      →          연계 불가
송신 데이터 크기 < 수신 데이터 크기      →          수신 시스템의 데이터 크기로 변환하여 연계

2. 연계 데이터 표준화

■ 인터페이스 시스템의 데이터 표준 (공개종)

– 인터페이스 통부 : 인터페이스 표준 항목을 포함

– 인터페이스 별부 : 송수신 시스템에서 업무 처리에 필요한 데이터 포함

– 인터페이스 료부 : 전송 데이터의 끝을 표시하는 문자를 포함하여 종료 표시 

■ 송수신 전문 구성 (공전시거 개데종)

—————————

– 전문 통부

 전문 길이

– 스템 공통

– 래공통

—————————

 전문 별부

 데이터

—————————

 전문 료부

—————————

#2 연계 메커니즘 구성

연계 메커니즘 정의

1. 연계 메커니즘 개념

■ 응용 소프트웨어와 연계 대상 모듈 간의 데이터 연계 시 요구사항을 고려한 연계방법과 주기를 설계하기 위한 메커니즘

2. 연계 방식

■ 직접 연계 

장점 : 연계 및 통합 구현이 단순하며 용이함, 개발 소요 비용 및 기간이 짧음, 연계 처리 성능이 대체로 좋음

단점 : 시스템간 결합도가 높아 시스템 변경에 민감, 제한적인 환경

  • DB 링크 : 데이터베이스에서 제공하는 DB 링크 객체를 사용
  • DB 연결 : DB 커넥션 풀 이용
  • API / Open API : DB에서 데이터를 읽어서 제공하는 API
  • JDBC : JDBC를 이용하여 DB와 연결
  • 하이퍼 링크 : 현재 페이지에서 다른 부분으로 가거나 전혀 다른 페이지로 이동하게 해주는 속성

■ 간접 연계

장점 : 서로 상이한 네트워크, 프로토콜 연계 및 통합 가능, 환경 변경에 적응성이 좋음

단점 : 아키텍처 및 메커니즘이 복잡해 성능 저하 요소 존재, 테스트 기간이 상대적으로 장기간 소요

  • 연계 솔루션(EAI) : 기업에서 운영되는 서로 다른 플랫폼 및 애플케이션들 간의 정보 전달, 연계, 통합을 가능케 해주는 솔루션
  • Web Service/ESB : 웹 서비스가 설명된 WSDL과 SOAP 프로토콜을 이용한 시스템 연계
  • 소켓(Socket) : 소켓을 생성하여 포트를 할당하고, 클라이언트의 요청을 연결하여 통신

연계 장애 및 오류처리 구현

==> 로그 기록 및 분석만 기억하자!

#3 내외부 연계 모듈 구현

연계 모듈 구현 환경 구성 및 개발

1. 연계 모듈 기능 구현

■ 개발하고자 하는 응용 소프트웨어와 연계 모듈 간의 세부 설계서를 확인하여 일관되고 정형화된 연계 기능을 구현할 수 있다. 주로 EAI/ESB 방식과 웹 서비스 방식으로 구분된다.

2. EAI/ESB 방식

■ EAI(Enterprise Application Integration) 방식의 개념

운영되고 있는 서로 다른 플랫폼 및 애플리케이션들 간의 정보 전달, 연계, 통합을 가능하게 해 주는 솔루션이다. (통합 및 연계성으로 인한 확장성 증가)

■ ESB(Enterprise Service Bus) 방식의 개념

운영되고 있는 서로 다른 플랫폼 및 애플리케이션들 간을 하나의 시스템으로 관리 운영 할 수 있도록 서비스 중심의 통합을 지향하는 아키텍쳐 기술. 버스를 중심으로 각 프로토콜이 호환 가능하게 한다. (느슨한 결합)

3. 웹 서비스 방식

■ 네트워크에 분산된 정보를 서비스 형태로 개방하여 표준화된 방식으로 공유하는 기술로써 서비스 지향 아키텍처 개념을 실현하는 대표적인 기술이다.

■ SOAP(Simple Object Access Protocol)

HTTP, HTTPS, SMTP 등을 사용하여 XML 기반의 메시지를 네트워크 상태에서 교환하는 프로토콜.

(SOAP Envelope, Header, Body)

■ WSDL(Web Service Description Language)

웹 서비스명, 제공 위치, 메시지 포맷, 프로토콜 정보 등 웹 서비스에 대한 상세 정보를 기술한 파일로 XML 형식으로 구현

■ UDDI(Universal Description, Discovery and Integration)

웹 서비스에 대한 정보인 WSDL을 등록하고 검색하기 위한 저장소로 공개적으로 접근, 검색이 가능한 레지스트리

4장. 서버 프로그램 구현

#1 개발환경 구축

개발환경 구축

1. 개발환경 구축의 개념

■ 개발환경 구성 시 구현될 시스템 요구사항의 명확한 이해가 필요하다.

2. 개발 도구의 분류 (빌구테형)

– 드 도구 : 작성한 코드의 빌드 및 배포를 수행하는 도구

– 현 도구 : 개발자의 코드 작성과 디버깅, 수정 등의 작업을 지원하는 도구

– 스트 도구 : 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구

– 상 관리 도구 : 개발자들이 작성한 코드와 리소스 등에 대한 버전 관리를 위한 도구

3. 개발환경 구성요소

■ 서버 하드웨어 개발환경

– 웹 서버 :  HTTP를 이용한 요청/응답 처리, 정적 콘텐츠(Java Script, CSS, Image) 처리

– 웹 애플리케이션 서버 : 동적 콘텐츠(JSP, Servlet) 처리

– 데이터베이스 서버 : 데이터의 수집, 저장을 위한 용도로 사용

 파일 서버 : 파일 저장 하드웨어로 물리 저장장치를 활용한 서버

■ 클라이언트 하드웨어 개발환경

 클라이언트 프로그램 : 설치를 통해 사용자와 커뮤니케이션

– 웹 브라우저 : 웹 서비스 형태로 브라우저를 통해 사용자와 커뮤니케이션

– 모바일 앱 : 모바일 디바이스에 설치되어 활용되는 애플리케이션

– 모바일 웹 : 모바일상 웹 브라우저를 통해 서비스 제공

■ 소프트웨어 개발환경

– 운영체제 

 미들웨어

– DBMS 

■ 형상관리의 개념

소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동이다.

■ 형상관리의 절차 (식통감기)

– 형상  

– 형상  

– 형상 

– 형상 

#2 공통 모듈 구현

공통 모듈 구현

1. 공통 모듈 구현의 개념

■ 모듈(Module)의 개념

모듈은 크게 독립된 하나의 소프트웨어 또는 하드웨어 단위를 지칭하는 용어이다.

■ 모듈화의 개념 

소프트웨어의 성능 향상시키거나 복잡한 시스템의 수정, 재사용, 유지 관리 등이 용이하도록 기능 단위의 모듈로 분해하는 설계 및 구현 기법이다.

■ 모듈화 기법

– 루틴 : 소프트웨어 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령들의 모임

– 메인 루틴 : 프로그램의 주요한 부분. 메인 루틴은 서브 루틴을 호출

– 서브 루틴 : 메인 루틴에 의해 필요할 때마다 호출되는 루틴

2. 소프트웨어 모듈 응집도

■ 응집도(Cohesion)의 개념

모듈의 독립성을 나타내는 개념으로, 모듈 내부 구성요소 간 연관 정도이다.

■ 응집도의 유형 (우논시절 통순기)

– 연적 응집도 : (응집도 제일 나쁨) 구성요소가 연관이 없을 경우

– 리적 응집도 : 유사한 성격을 가짐, 특정 형태로 분류

 간적 응집도 : 특정 시간에 처리

 차적 응집도 : 순차적으로 수행

– 신적 응집도 : 동일한 입출력 사용

– 차적 응집도 : 한 활동으로부터 나온 출력값을 사용

– 능적 응집도 : (응집도 제일 좋음) 모든 기능이 단일한 목적을 위해 수행

3. 소프트웨어 모듈 결합도

■ 결합도(Coupling)의 개념

모듈 외부의 모듈과의 연관도 또는 모듈 간의 상호의존성이다.

■ 결합도의 유형 (내공 외제 스자)

– 용 결합도 : (결합도 제일 높음) 다른 모듈 내부에 있는 변수, 기능을 다른 모듈에서 사용할 경우

– 통 결합도 : 모듈 밖 전역 변수를 참조하고 갱신하는 식으로 상호작용 할 경우

 부 결합도 : 두 개의 모듈이 외부에서 도입된 기능을 공유할 경우

– 어 결합도 : 값 뿐만 아니라 어떻게 처리해야 한다는 제어 요소가 전달되는 경우

– 탬프 결합도 : 모듈간 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우

– 료 결합도 : (결합도 제일 낮음) 전달되는 파라미터를 통해서만 상호 작용이 일어나는 경우

4. 공통 모듈 구현 절차

■ MVC 디자인 패턴

– Model(모델) : 애플리케이션이 무엇을 할 것인지 정의

– View(뷰) : 화면에 무엇인가를 보여주기 위한 역할

 Controller(컨트롤러) : 모델이 어떻게 처리할지를 알려주는 역할

5. 팬인(Fan-In) 및 팬아웃(Fan-Out)

■ 팬인 

어떤 모듈을 제어(호출)하는 모듈의 수, 모듈 자신을 기준으로 모듈에 들어오면 팬인

■ 팬아웃

어떤 모듈에 의해 제어(호출)되는 모듈의 수, 모듈 자신을 기준으로 모듈에서 나가면 팬아웃

공통 모듈 테스트

1. 공통 모듈 테스트의 종류 (화메 화드스)

– 이트박스 테스트

– 서드 기반 테스트

– 면 기반 테스트

– 테스트 라이버 / 테스트 

#3 서버 프로그램 구현

서버 프로그램 구현

1. 서버 프로그램 세부 구현 프로세스 (디스 다써클)

– DTO/VO

– SQL문

– DAO

– Service

– Controller

#4 배치 프로그램 구현

배치 프로그램

1. 배치 프로그램 개념

■ 사용자와의 상호작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 방법이다.

2. 배치 프로그램의 필수 요소 (이온정)

– 벤트 배치 : 사전에 정의해 둔 조건 충족 시 자동으로 실행 

– 디맨드 배치 :  사용자의 명시적 요구가 있을 때마다 실행

– 기 배치 : 정해진 시점에 정기적으로 실행

3. 배치 스케줄러

■ 배치 스케줄러 개념

일괄 처리를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업 지원하는 도구이다.

5장. 인터페이스 구현

#1 인터페이스 설계 확인

외부, 내부 모듈 간 공통 기능 및 데이터 인터페이스 확인

1. 인터페이스 설계서

■ 인터페이스 설계서 개념

인터페이스 설계서는 이 기종 시스템 및 컴포넌트 간 데이터 교환 및 처리를 위해 각 시스템의 교환되는 데이터, 업무, 송수신 주체 등이 정의된 문서이다.

■ 상세 기능 인터페이스 정의서 주요 항목 (아명오개 전후파반)

– 인터페이스 ID : 인터페이스를 구분하기 위한 식별자
– 인터페이스  : 인터페이스 고유 명칭

– 퍼레이션 명 : 인터페이스의 세부 동작 명칭

– 오퍼레이션  : 인터페이스의 세부 동작 프로세스에 대한 세부 설명

–  조건 : 인터페이스 세부 동작이 정상적으로 작동하기 위한 사전에 완료되어야 하는 조건 기술

 사 조건 : 인터페이스 세부 동작이 정상적으로 작동된 이후에 발생하는 조건 기술

– 라미터 : 인터페이스 구성 항목 값

– 환 값 : 인터페이스 전송 후 반환되는 값

2. 인터페이스 설계서의 내부, 외부 모듈의 기능 확인

  • 인터페이스 정의서를 통한 기능 확인
    • 시스템 인터페이스 정의서 
    • 상세 기능 인터페이스 정의서
  • 정적, 동적 모형을 통한 기능 확인

외부 및 내부 모듈 연계를 위한 인터페이스 기능 식별

1. 외부, 내부 모듈 연계 방법(EAI, ESB 연계 방법)

■ EAI(Enterprise Application Integration) 방식

EAI는 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간의 정보를 전달, 연계, 통합이 가능하도록 해주는 솔루션이다. 각 시스템 간의 확장성을 높여 줄 수 있다. (모듈간 통합)

■ EAI 구축 유형 (포허 메하)

– 인트 투 포인트(Point-to-point) : 가장 기초적인 통합방법 1:1 방식

– 브 앤 스포크(Hub & Spoke) : 허브 시스템을 통해 데이터를 전송하는 중앙 집중식 방법, 허브 장애시 전체 장애 발생

– 시지 버스(Message Bus) : 애플리케이션 사이 미들웨어(버스)를 두어 연계하는 미들웨어 통합 방식

– 이브리드(Hybrid) : 허브앤 스포크(내부) + 메시지 버스(외부)

■ ESB(Enterprise Service Bus) 방식

기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션들 간을 하나의 시스템으로 관리 운영할 수 있도록 서비스 중심의 통합을 지향하는 아키텍처이다. (표준 API 통합)

#2 인터페이스 기능 구현

인터페이스 기능 구현 정의

1. 모듈 간 세부 설계서 확인

■ 각 모듈의 컴포넌트 명세서와 인터페이스 명세서 등 세부 설계서를 확인하여 인터페이스에 필요한 기능을 확인한다.

■ 컴포넌트 명세서

컴포넌트 명세서는 컴포넌트의 개요, 내부 클래스의 동작, 인터페이스를 통해 외부와 통신하는 명세를 정의한다. 

■ 인터페이스 명세서

인터페이스 명세서는 컴포넌트 명세서에 명시된 인터페이스 클래스의 세부적인 조건 및 기능을 명시한 명세서이다. (아명오개 전후파반)

인터페이스 기능 구현

1. 사전에 정의된 기능에 대한 구체적 분석

■ 상세하게 정의된 기능 구현 정의 내용을 토대로 어떻게 구현할 것인지 분석한다.

2. 인터페이스 구현

■ 인터페이스 구현 방법에는 데이터 통신을 사용하는 방법과 인터페이스 객체를 사용하여 인터페이스를 구현하는 방법이 있다.

■ 데이터 통신을 사용하는 인터페이스 구현

  • 인터페이스 객체 생성 구현 : 인터페이스 객체를 생성하기 위해서 데이터베이스에 있는 정보를 SQL을 통해 선택한 후 이를 JSON으로 생성
  • 인터페이스 객체 전송 후 전송 결과를 수신 측에서 반환 받도록 구현 : 송신 측에서 JSON으로 작성된 인터페이스 객체를 AJAX 기술을 이용하여 수신 측에 송신. 수신측에서는 JSON 인터페이스 객체를 수신받고 이를 파싱 후 처리.

■ 인터페이스 객체를 사용하는 인터페이스 구현

  • 송신 시스템의 인터페이스 테이블 : 송신 관련 정보를 관리하기 위한 항목과 송신 시스템에서 필요한 항목 구현 
  • 수신 시스템의 인터페이스 테이블 : 수신 관련 정보를 관리하기 위한 항목과 수신 시스템에서 필요한 항목 구현

인터페이스 보안 기능 적용

1. 인터페이스 보안 구현 방안

■ 시큐어 코딩 가이드 적용 (입보시 에코캡아)

– 력 데이터 검증 및 표현 : 프로그램 입력 값에 대한 검증 누락, 잘못된 형식

– 안 기능 : 보안 기능의 부적절한 구현

– 간 및 상태 : 병렬 시스템, 하나 이상의 프로세스가 동작하는 환경에서 시간, 상태의 부적절한 관리

– 러 처리 : 에러 미처리, 불충분한 처리 등으로 에러 메시지에 중요 정보가 포함

– 드 오류 : 개발자가 범할 수 있는 코드 오류로 인해 유발

– 슐화 : 불충분한 캡슐화로 인해 인가되지 않은 사용자에게 데이터 유출

– API 오용 : 의도된 사용에 반하는 방법으로 API를 사용하거나, 보안에 취약한 API 사용

■ 데이터베이스 암호화 알고리즘 (대비해)

– 칭 키 암호화 알고리즘 : 암, 복호화에 같은 암호 키를 쓰는 알고리즘

– 대칭 키 암호화 알고리즘 : 공개키는 누구나 알 수 있지만, 그에 대응하는 비밀키는 키의 소유자만 알 수 있도록, 공개키와 비밀키를 사용하는 알고리즘

– 시 암호화 알고리즘 : 해시값으로 원래 입력값을 찾아낼 수 없는 일방향성의 특성을 가진 알고리즘

■ 데이터베이스 암호화 기법 (애플하)

– API 방식 : 암호 모듈(API)을 적용하는 애플리케이션 수정 방식

– Plug-In 방식 : DB 레벨의 확장성 프로시저 기능을 이용, DBMS에 Plug-In 모듈로 동작하는 방식

– Hybrid 방식 : API 방식과 Plug-In 방식을 결합하는 방식

#3 인터페이스 구현 검증

인터페이스 구현 검증

1. 인터페이스 구현 검증 도구

■ 인터페이스 구현 검증 도구의 개념

구현된 인터페이스의 동작을 검증하기 위해 인터페이스 구현 및 감시 도구를 통해서 인터페이스 동작 상태를 검증하고 모니터링 할 수 있다. 인터페이스 구현을 검증하기 위해서는 인터페이스 세부 기능을 기능 단위로 테스트하는 단위 테스트와 전체 인터페이스 흐름을 확인할 수 있는 시나리오를 통한 통합 테스트가 필요하다.

■ 인터페이스 구현 검증 도구의 종류 (엑스피 셀웨)

– xUnit :자바, C++, .Net 등 다양한 언어를 지원하는 단위테스트 프레임워크

– STAF 서비스 호출, 컴포넌트 재사용 등 다양한 환경을 제공하는 테스트 프레임워크

– FitNesse 웹 기반 테스트 케이스 설계/실행/결과 확인 등을 지원하는 테스트 프레임워크

– Selenium 다양한 브라우저 지원 및 개발언어를 지원하는 웹 애플리케이션 테스트 프레임워크

– watir 루비 기반 웹 애플리케이션 테스트 프레임워크

2. 인터페이스 감시 도구


■ 스카우터(SCOUTER)

애플리케이션에 대한 모니터링 및 DB Agent를 통해 오픈 소스 DB 모니터링 기능, 인터페이스 감시 기능을 제공한다.

3. 인터페이스 구현 검증에 필요한 설계 산출물

 인터페이스 단위 테스트 케이스통합 테스트 케이스를 활용하여 최종적으로 인터페이스 구현 검증을 한다.

인터페이스 오류 처리 확인 및 보고서 작성

1. 인터페이스 오류 처리 방법 (화로테)

– 사용자 면에서 오류를 인지 하도록 구현

– 인터페이스 오류 그 생성

– 인터페이스 관련 이블에 오류 사항 기록

6장. 화면 설계

#1 UI 요구사항 확인

UI 요구사항 확인

1. UI(User Interface) 개념

■ UI는 넓은 의미에서 사용자와 시스템 사이에서 의사소통할 수 있도록 고안된 물리적, 가상의 매개체이다. 사람이 접하게 되는 화면.

2. UI 유형 (CG NO)

– CLI (Command Line Interface) : 정적인 텍스트 기반 인터페이스

– GUI (Graphical User Interface) : 그래픽 반응 기반 인터페이스

 NUI (Natural User Interface) : 직관적 사용자 반응 기반 인터페이스 (신체부위 사용)

– OUI (Organic User Interface) : 유기적 상호작용 기반 인터페이스 (모든 사물)

3. UI 분야 

– 물리적 제어 분야 : 정보 제공과 기능 전달을 위한 하드웨어 기반

– 디자인적 분야 : 콘텐츠의 정확하고 상세한 표현과 전체적 구성

– 기능적 분야 : 사용자의 편의성에 맞춰 쉽고 간편하게 사용가능

4. UI 설계 원칙 (직유 학유)

– 관성 : 누구나 쉽게 이해하고, 쉽게 사용할 수 있어야 함

– 효성 : 정확하고 완벽하게 사용자의 목표가 달성될 수 있도록 제작

– 습성 : 초보와 숙련자 모두가 쉽게 배우고 사용할 수 있게 제작

– 연성 : 사용자의 인터랙션을 최대한 포용하고, 실수를 방지할 수 있도록 제작

5. UI 설계 지침 (사일단결 가표접명오)

– 용자 중심 : 사용자가 이해하기 쉽고 편하게 사용할 수 있는 환경을 제공하며 실사용자에 대한 이해가 바탕이 되어야 함

– 관성 : 버튼이나 조작 방법을 사용자가 기억하기 빠르고 쉽게 습득할 수 있도록 설계

– 순성 : 조작 방법은 가장 간단하게 작동되도록 하여 인지적 부담 최소화

– 과 예측 가능 : 작동시킬 기능만 보고도 결과 예측이 가능해야 함

– 시성 : 주요 기능을 메인 화면에 노출하여 쉬운 조작이 가능해야 함

– 준화 : 디자인을 표준화하여 기능구조의 선행 학습 이후 쉽게 사용 가능해야 함

– 근성 : 사용자의 직무, 연령, 성별 등이 고려된 다양한 계층을 수용해야 함

– 확성 : 사용자가 개념적으로 쉽게 인지해야 함

– 류 발생 해결 : 사용자가 오류에 대한 상황을 정확하게 인지할 수 있어야 함

6. UI 요구사항 확인

■ UI 요구사항은 사용자가 정보 시스템을 구축하여 얻고자 하는 최종 목적의 기준이다.

■ UI 요구사항 구분

  • 기능적 요구사항 : 시스템이 제공하는 기능, 서비스에 대한 요구사항
  • 비기능적 요구사항 : 사용성, 효율성, 시스템 환경 등에 관한 요구사항

UI 표준

1. UI 표준 개념

■ UI 표준은 디자인 철학과 원칙 기반하에 전체 시스템에 공통으로 적용되는 화면 간 이동, 화면구성 등에 관한 규약이다.

2. UI 표준 구성 (액정 스패조)

– 전체적인 UX 원칙 : 사용자의 관점에서 사용자 업무를 효율적으로 수행할 수 있는 UX원칙 정의

– 책 및 철학 : 조직의 목표나 정체성을 포함하는 정책 및 철학 설정

– UI 타일 가이드 : UI에 대한 구동 환경 및 레이아웃 등을 정의

– UI 턴 모델 정의 : CRUD 방식을 기반으로 데이터 입력, 출력 패턴 모델 정의

– UI 표준 수립을 위한 직 구성 : UI 팀 및 표준 개발팀을 주축으로 추진 조직 구성

UI 지침

1. UI 지침(Guideline) 개념

■ UI 지침이란 UI 표준에 따라 사용자 인터페이스 설계, 개발 시 지켜야할 세부사항을 규정하는 가이드라인이다. 

■ UI 개발을 위한 주요 기법 

 3C 분석 : 고객(Customer), 경쟁하고 있는 자사(Company)와 경쟁사(Competitor)를 비교, 분석하여 자사를 어떻게 차별화해서 경쟁에서 이길 것인가를 분석하는 기법

– SWOT 분석 : 기업의 내부 환경과 외부 환경을 분석하여 Strength(강점), Weakness(약점), Opportunity(기회), Threat(위협) 요인을 규정하고 이를 토대로 경영 전략을 수립하는 방법

– 시나리오 플래닝 : 불확실성이 높은 상황 변화를 사전에 예측하고 다양한 시나리오를 설계하는 방법으로 불확실성을 제거해나가려는 경영 전략의 한 방법

– 사용성 테스트 : 사용자가 직접 제품을 사용하면서 미리 작성된 시나리오에 맞춰 과제를 수행한 후, 질문에 답하도록 하는 테스트

– 워크숍 : 소집단 정도의 인원으로 특정 문제나 과제에 대한 새로운 지식, 기술, 아이디어 방법들을 서로 교환하고 검토하는 연구회 및 세미나

■ UI 컨셉션 (정와스) : 요구사항을 구체화하는 단계, 대표 화면 설계를 진행하는 단계 

– 보 구조 설계

– 이어 프레임 스케치

– 토리보드 설계

스토리보드

1. 스토리보드 개념

■ UI 화면 설계를 위해서 정책이나 프로세스 및 콘텐츠의 구성, 와이어 프레임, 기능에 대한 정의, 데이터베이스의 연동 등 구축하는 서비스를 위한 대부분의 정보가 수록된 문서. 디자이너나 개발자가 최종적으로 참고하는 산출 문서.

■ UI 화면 설계 구분  (와스프)

– 이프레임 : 이해 관계자들과 화면구성을 협의하거나 서비스의 간략한 흐름을 공유하기 위해 화면 단위의 레이아웃을 설계하는 작업 

 토리보드 : 정책, 프로세스, 콘텐츠 구성, 와이어 프레임, 기능 정의, 데이터베이스 연동 등 서비스 구축을 위한 모든 정보가 담겨 있는 설계 산출물 (정적)

 로토타입 : 정적인 화면으로 설계된 와이어 프레임 또는 스토리보드에 동적 효과를 적용하여 실제 구현된 것처럼 시뮬레이션할 수 있는 모형

2. 스토리보드 작성 절차 (개서스 메추)

1. 전체 요 작성

2. 서비스 흐름 작성

3.스타일링 작성

4. 메뉴별 화면 설계도 작성 및 상세설계

5.추가 관련 정보 작성

프로토타입

1. 프로토타입 개념

■ 컴퓨터 시스템이나 소프트웨어 설계 또는 성능, 구현 가능성, 운용 가능성을 평가하거나 요구사항을 좀 더 잘 이해하고 결정하기 위해서 전체적인 기능을 간략한 형태로 구현한 시제품

2. 프로토타입 유형

  • 아날로그 : 종이와 펜을 이용하여 화면의 구조를 스케치
  • 디지털 : 프로토타이핑 도구를 사용하여 화면의 구조를 만듬

3. UI 프로토타입 작성 시 고려 사항 (계범 목기 산유)

– 프로토타입 획 작성

– 프로토타입 위 확인

– 프로토타입 표 확인

– 프로토타입 간 및 비용 확인

– 프로토타입 출물 확인

– 프로토타입 의사항 확인

4. UI 프로토타입 제작 및 검토 프로세스 (아유프적)

– 소프트웨어 키텍처 설계 원리 확인

– 프로토타입 스케이스 작성

– UI 요구사항을 반영한 로토타입 제작

– UI 정성 검토

#2 UI 설계

UI 설계 도구

1. UI 설계 도구의 유형

■ 화면 설계 도구 

– 파워 목업

– 발사믹 목업

– 카카오 오븐

■ 프로토타이핑 도구

– UX 핀

– 액슈어

– 네이버 프로토나우

■ UI 디자인 도구

– 스케치

– 어도비 익스피리언스 디자인 CC

7장. 애플리케이션 테스트 관리

#1 애플리케이션 테스트 케이스 작성

애플리케이션 테스트 케이스 작성

1. 소프트웨어 테스트의 이해

■ 소프트웨어 테스트 개념

소프트웨어 테스트란 개발된 응용 애플리케이션이나 시스템이 사용자가 요구하는 기능과 성능, 사용성, 안정성 등을 만족하는지 확인하고, 노출되지 않은 소프트웨어의 결함을 찾아내는 활동이다.

■ 소프트웨어 테스트 필요성 (발예향)

– 오류 견 관점 : 잠재된 오류를 발견하고 이를 수정하여 올바른 프로그램을 개발하기 위해 필요

– 오류 방 관점 : 프로그램 실행 전에 동료 검토, 워크스루, 인스펙션 등을 통해 오류를 사전에 발견하는 예방 차원의 필요

– 품질 상 관점 : 사용자의 요구사항 및 기대 수준을 만족하도록 반복적인 테스트를 거쳐 제품의 신뢰도를 향상하는 품질 보증을 위해 필요

■ 소프트웨어 테스트의 기본 원칙 (결완초집 살정오)

– 테스팅은 함이 존재함을 밝히는 것

– 벽한 테스팅은 불가능

– 개발 기에 테스팅 시작

– 결함 중 : 20% 모듈에서 80% 결함이 발견된다.

– 충제 페러독스 : 동일한 테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못함

– 테스팅은 황에 의존적 : 소프트웨어 성격에 맞게 테스트 실시

– 류-부재의 궤변 : 요구사항을 충족시켜주지 못한다면, 결함이 없다고 해도 품질이 높다고 볼 수 없다.

■ 소프트웨어 테스트 산출물 (결시계케)

– 테스트 과서 : 테스트 결과를 정리한 문서. 테스트 프로세스를 리뷰하고, 테스트 결과를 평가하고 리포팅하는 문서

– 테스트 나리오 : 테스트 수행을 위한 여러 개의 테스트 케이스 집합. 테스크 케이스의 동작 순서를 기술한 문서이며, 테스트 절차를 명세한 문서

– 테스트 획서 : 테스트 목적과 범위 정의, 대상 시스템 구조 파악, 테스트 수행 절차, 일정, 종료 조건 등 테스트 수행을 계획한 문서

– 테스트 이스 : 테스트를 위한 설계 산출물. 사용자의 요구사항을 준수하는지 확인하기 위해 설계된 입력값, 실행 조건, 기대 결과로 구성된 테스트 항목의 명세서

2. 소프트웨어 테스트 유형

■ 프로그램 실행 여부에 따른 분류

  • 정적 테스트 : 프로그램 실행 없이 구조를 분석하여 논리성을 검증하는 테스트 
    • 동료 검토, 워크스루, 인스펙션
  • 동적 테스트 : 프로그램 실행을 요구하는 테스트
    • 화이트박스 테스트, 블랙박스 테스트
  • 화이트박스 테스트 (제루) : 어구조 테스트, 프 테스트

■ 테스트 시각에 따른 분류

  • 검증(Verification) : 소프트웨어 과정을 테스트. 개발자 혹은 테스터의 시각으로 소프트웨어가 기능을 올바로 수행하는지 알아보는 과정
  • 확인(Validation) : 소프트웨어 결과를 테스트. 사용자 시각으로 올바른 소프트웨어가 개발되었는지 입증하는 과정

■ 테스트 목적에 따른 분류 (회안강성 구회병)

 복 테스트 : 고의로 실패를 유도하고, 시스템의 정상적 복귀 여부를 테스트

– 전 테스트 : 불법 소프트웨어가 시스템을 파괴하지 못하도록 소스 코드 내의 보안결함을 미리 점검하는 테스트

– 도 테스트 : 과다 정보량을 부과하여 과부하 시에도 시스템이 정상적으로 작동되는지 검증하는 테스트

– 능 테스트 : 시스템이 응답하는 시간, 특정 시간 내에 처리하는 업무량, 사용자 요구에 시스템이 반응하는 속도 등을 측정하는 테스트

– 조 테스트 : 시스템 내부 논리 경로, 소스 코드의 복잡도를 평가하는 테스트 

– 귀 테스트 : 오류를 제거하거나 수정한 시스템에서 오류 제거와 수정에 의해 새로이 유입된 오류가 없는지 확인하는 일종의 반복 테스트

– 행 테스트 : 변경된 시스템과 기존 시스템에 동일한 데이터를 입력 후 결과를 비교하는 테스트

■ 테스트 종류에 따른 분류 (명구경)

– 세 기반 테스트

– 조 기반 테스트

– 험 기반 테스트

3. 테스트 케이스

■ 테스트 케이스 개념

특정 요구사항에 준수하는 지를 확인하기 위해 개발된 입력값실행 조건 , 예상된 결과의 집합이다.

4. 테스트 오라클

■ 테스트 오라클 개념

테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참 값을 입력하여 비교하는 기법이다.

■ 테스트 오라클 종류 (참샘휴일)

– 참 오라클 : 모든 입력값에 대해 기대하는 결과를 생성함으로써 발생된 오류를 모두 검출할 수 있는 오라클

– 샘플링 오라클 : 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공해 주는 오라클

– 휴리스틱 오라클 : 샘플링 오라클을 개선한 오라클로, 특정 입력값에 대해 올바른 결과를 제공하고, 나머지 값들에 대해서는 휴리스틱(추정)으로 처리하는 오라클

– 일관성 검사 오라클 : 애플리케이션 변경이 있을 때, 수행 전과 후의 결괏값이 동일한지 확인하는 오라클

애플리케이션 테스트 시나리오 작성

1. 테스트 레벨

■ 테스트 레벨 개념

함께 편성되고 관리되는 테스트 활동의 그룹이다. 테스트 레벨은 프로젝트에서 책임과 연관되어 있다. 각각의 테스트 레벨은 서로 독립적이다.

■ 테스트 레벨 종류 (단통시인)

– 위 테스트 : 단위 모듈, 서브루틴 등을 테스트하는 단계

 합 테스트 : 인터페이스, 통합된 컴포넌트 간의 상호작용을 검증하는 테스트 단계

– 스템 테스트 : 통합된 단위 시스템의 기능이 시스템에서 정상적으로 수행되는지 검증하는 테스트 단계 

– 수 테스트 : 계약상 요구사항이 만족되었는지 확인하기 위한 테스트 단계

2. 테스트 시나리오

■ 테스트 시나리오 개념

테스트 수행을 위한 여러 테스트 케이스의 집합으로, 테스트 케이스의 동작 순서를 기술한 문서이며 테스트를 위한 절차를 명세한 문서이다.

#2 애플리케이션 통합 테스트

애플리케이션 통합 테스트 수행

1. 통합 테스트 

■ 통합 테스트 개념

애플리케이션 통합 테스트는 소프트웨어 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 체계적인 테스트 기법이다. 단위 테스트가 끝난 모듈 또는 컴포넌트 단위의 프로그램이 설계 단계에서 제시한 애플리케이션과 동일한 구조와 기능으로 구현된 것인지를 확인하는 테스트이다.

■ 하향식 통합 개념

메인 제어 모듈(프로그램)로 부터 아래 방향으로 제어의 경로를 따라 이동하면서 하향식으로 통합하면서 테스트를 진행하며, 메인 제어 모듈에 통합되는 하위 모듈과 최하위 모듈은 ‘깊이-우선’ 또는 ‘너비-우선’ 방식으로 통합된다. (더미 모듈 스텁 개발 및 사용)

■ 상향식 통합 개념

애플리케이션 구조에서 최하위 레벨의 모듈 또는 컴포넌트로부터 위쪽 방향으로 제어의 경로를 따라 이동하면서 구축과 테스트를 수행한다. (더미 모듈 드라이버 작성 및 사용)

2. 테스트 자동화 도구

■ 테스트 자동화 도구 유형 (정실성통)

– 정적 분석 도구

– 테스트 실행 도구

– 성능 테스트 도구

– 테스트 통제 도구

 테스트 하네스 개념

애플리케이션 컴포넌트 및 모듈을 테스트하는 환경의 일부분으로, 테스트를 지원하기 위한 코드와 데이터를 말하며, 단위 또는 모듈 테스트에 사용하기 위해 코드 개발자가 작성한다.

 테스트 하네스 구성요소 (드 스슈케 스목)

– 테스트 라이버 : 테스트 대상 하위 모듈을 호출, 파라미터 전달, 테스트 수행 후 결과 도출 등 상향식 테스트에 필요

– 테스트  : 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로 하향식 테스트에 필요

– 테스트  : 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합

– 테스트 이스 : 입력값, 실행 조건, 기대 결과 등의 집합

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

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

애플리케이션 개선 조치사항 작성

1. 테스트 커버리지

■ 테스트 커버리지 개념

주어진 테스트 케이스에 의해 수행되는 소프트웨어의 테스트 범위를 측정하는 테스트 품질 측정 기준이며, 테스트의 정확성과 신뢰성을 향상시키는 역할을 한다.

■ 테스트 커버리지 유형 (기라코)

– 능 기반 커버리지 : 테스트 대상 애플리케이션의 전체 기능을 모수로 설정하고, 실제 테스트가 수행된 기능의 수를 측정하는 방법 

 인 커버리지 : 애플리케이션 전체 소스 코드의 라인 수를 모수로 테스트 시나리오가 수행한 소스 코드의 라인 수를 측정하는 기법

– 드 커버리지 : 소프트웨어 테스트 충분성 지표 중하나로 구조 코드 자체가 얼마나 테스트되었는지를 측정하는 방법

■ 코드 커버리지 유형 (구결조 조변다)

– 문 커버리지

– 정 커버리지

– 건 커버리지

– 건/결정 커버리지

– 경 조건/결정 커버리지

– 중 조건 커버리지

2. 결함의 식별 및 관리

■ 결함 심각도 분류 (치주 보경단)

– 명적 결함

– 요 결함

– 통 결함

– 미한 결함

 순 결함

#3 애플리케이션 성능 개선

애플리케이션 성능 분석

1. 애플리케이션 성능 점검 개요

■ 애플리케이션 성능 측정 지표 (처응경자)

– 리량 : 주어진 시간에 처리할 수 있는 트랜잭션 수

– 답 시간 : 사용자 입력이 끝난 후, 응답 출력이 개시될 때까지의 시간

– 과 시간 : 입력 시점부터 트랜잭션을 처리 후 그 결과의 출력이 완료할 때까지 걸리는 시간

– 원 사용률 : 트랜잭션을 처리하는 동안 사용하는 CPU 사용량, 메모리 사용량, 네트워크 사용량

2. 애플리케이션 성능 저하 원인

■ 데이터베이스 관련 성능 저하 원인 (락페릭사커)

– DB Lock : 대량의 데이터 처리시 발생

– DB Fetch : 실제 필요한 데이터보다 많은 데이터 요청이 들어올 경우 응답시간 저하 현상 발생

– Connection Leak : DB 연결과 관련한 JDBC 객체를 사용 후 종료하지 않을 경우 발생

 Connection Pool Size : 너무 작거나 크게 설정한 경우 성능 저하 현상이 발생할 가능성 존재

– Commit : 불필요한 Commit이 자주 발생하는 경우 성능저하

3. 애플리케이션 성능 테스트 프로세스

■ 애플리케이션 성능 테스트 수행 절차 (도환시성)

– 성능 테스트 구 설치

– 테스트 경 설정

– 나리오 생성

– 능테스트 실행 및 모니터링

애플리케이션 성능 개선

1. 소스 코드 최적화의 이해

■ 나쁜 코드 유형 (오문이 결침)

–  : 기능을 수행하지 못하는 많은 컴포넌트들이 존재

– 서부족 : 현재 코드와 문서가 일치하지 않아 개발자의 지식부족 초래

– 의미 없는  : 클래스, 함수, 컴포넌트 이름들이 명확한 의미를 갖지 못하거나 실제 작동과 불일치

– 높은 합도 : 데이터와 컨트롤 흐름이 복잡하게 연결

– 아키텍처  : 아키텍처상 변형들로 인해 시스템 품질이 떨어짐

■ 클린 코드 유형 (이주배 함제오)

– 의미 있는 

– 간결한 

– 보기 좋은 

– 작은 

– 읽기 쉬운 어 흐름

– 류 처리

8장. 소프트웨어 개발 보안 구축

#1 소프트웨어 개발 보안 설계

SW 개발 보안 설계

1. SW 개발 보안의 구성요소

■ SW 개발 보안의 3대 요소 (기무가)

– 밀성 : 인가되지 않은 개인 혹은 시스템 접근에 따른 정보 공개 및 노출을 차단하는 특성

– 결성 : 정당한 방법을 따르지 않고선 데이터가 변경될 수 없으며, 데이터의 정확성 및 완전성과 고의/악의로 변경되거나 훼손 또는 파괴되지 않음을 보장하는 특성

– 용성 : 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속 사용할 수 있도록 보상하는 특성

■ SW 개발 보안 용어 (자위취위)

–  : 조직의 데이터 또는 조직의 소유자가 가치를 부여한 대상 

–  : 조직이나 기업의 자산에 악영향을 끼칠 수 있는 사건이나 행위

– 약점 : 위협이 발생하기 위한 사전 조건에 따른 상황

–  : 위협이 취약점을 이용하여 조직의 자산 손실 피해를 가져올 가능성

2. SW 개발 보안을 위한 공격기법의 이해

■ DOS 공격의 개념

DOS(Denial of Service)는 시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격이다.

■ DDOS 공격의 개념

DOS의 또 다른 형태로 여러 대의 공격자를 분산 배치하여 동시에 동작하게 함으로써 특정 사이트를 공격하는 기법이다.

■ DDOS 공격 구성요소 (HAMAD(하마드))

– 핸들러(Handler) : 마스터 시스템의 역할을 수행하는 프로그램

– 에이전트(Agent) : 공격 대상에게 직접 공격을 가하는 프로그램

– 마스터(Master) : 공격자에게서 직접 명령을 받는 시스템

– 공격자(Attacker) : 공격을 주도하는 해커의 컴퓨터

– 데몬(Daemon) 프로그램 : 에이저트 시스템의 역할을 수행하는 프로그램

■ 자원 고갈 공격기법

– SYN 플러딩(SYN Flooding) : TCP 프로토콜 구조적인 문제를 이용한 공격

– UDP 플러딩(UDP Flooding) : 대량의 UDP 패킷을 만들어 임의의 포트 번호로 전송하여 응답 메시지를 생성하게 하여 지속해서 자원을 고갈시키는 공격

– 스머프(Smurf) : 출발지 주소를 공격 대상 IP로 설정하여 네트워크 전체에게 ICMP Echo 패킷을 직접 브로드캐스팅하여 마비시키는 공격

– PoD(Pint of Death) : 큰 사이즈의 패킷을 의도적으로 목표시스템으로 발생시켜 시스템이 서비스할 수 없는 상태로 만드는 공격

■ 애플리케이션 공격기법

– HTTP GET 플러딩 : Http 캐시 옵션을 조작하여 캐싱 서버가 아닌 웹서버가 직접 처리하도록 유도, 웹서버 자원을 소진시키는 서비스 거부 공격

– Slowloris : HTTP GET 메소드를 사용하여 헤더의 최종 끝을 알리는 개행 문자열인 \r\n\r\n을 전송하지 않고 \r\n만 전송하여 대상 웹서버와 연결상태를 장시간 지속시키고 연결 자원을 모두 소진시키는 서비스 거부 공격

– RUDY : 요청 헤더의 Content-length를 비정상적으로 크게 설정하여 메시지 바디 부분을 매우 소량으로 보내 계속 연결 상태를 유지시키는 공격

■ 취약점 공격

– 랜드어택(Land Attack) : 출발지 IP와 목적지 IP를 같은 패킷 주소로 만들어 보냄으로써 수진자가 자기 자신에게 응답을 보내게 하여 시스템의 가용성을 침해하는 공격기법

– 봉크 / 보잉크(Bonk / Boink) : 프로토콜의 오류 제어를 이용한 공격기법으로서 시스템의 패킷 재전송과 재조립이 과부하를 유발

(봉크 : 같은 시퀀스 번호를 계속 보냄, 보잉크 : 일정한 간격으로 시퀀스 번호에 빈 공간 생성)

– 티어 드롭(Tear Drop) : IP 패킷의 재조합과정에서 잘못되 Fragment Offset 정보로 인해 수신시스템이 문제를 발생하도록 만드는 Dos 공격

3. SW 개발 보안을 위한 암호화 알고리즘

■ 암호 알고리즘 방식

– 대칭 키 암호 방식 

  • 블록 암호 방식 → 긴 평문을 암호화하기 위해 고정 길이의 블록을 암호화 하는 블록 암호 알고리즘을 반복하는 방법 (DES, AES, SEED)
  • 스트림 암호 방식 : 매우 긴 주기의 난수열을 발생시켜 평문과 더불어 암호문을 생성하는 방식 (RC4)

– 비대칭 키 암호 방식 

  • 디피-헬만, RSA

– 해시 방식

  • SHA, MD5

4. 정보에 대한 보안 항목식별

■ 개인정보보보호 관련 법령 (개망신)

– 인정보 보호법

– 정보통신

– 용정보법

■ 고유식별정보의 종류 (주여운외)

– 민등록번호

– 권번호

– 전면허번호

– 국인 등록번호

■ 개인정보보호 법령 내 정보사고 (분도유변훼)

– 

– 

– 

– 

– 

#2 소프트웨어 개발 보안 구현

SW 개발 보안 구현

1. 시큐어 코딩 가이드

■ 시큐어 코딩 가이드 (입보시 에코캡아)

– 력 데이터 검증 및 표현

– 안 기능

– 간 및 상태

– 러 처리

– 드 오류

– 슐화

– API 오용

9장. 응용 SW 기초 기술 활용

#1 운영체제의 특징

운영체제 종류

1. 운영체제의 개념

■ 운영체제는 사용자가 컴퓨터의 하드웨어를 쉽게 사용할 수 있도록 인터페이스를 제공해 주는 소프트웨어이다. 한정된 시스템 자원을 효과적으로 사용할 수 있도록 관리 및 운영함으로써 사용자에게 편리성을 제공한다. 운영체제는 컴퓨터 시스템과 사용자 간의 인터페이스 기능을 담당한다.

2. 운영체제 종류

■ 윈도즈(Windows) 운영체제 특징 (지선자 오)

– GUI 제공 : 키보드 없이 마우스로 아이콘이나 메뉴를 선택하여 작업을 수행하는 그래픽 기반의 인터페이스 방식

– 점형 멀티테스킹 방식 제공 : 동시에 여러 개의 프로그램을 실행하면서 운영체제가 각 작업의 CPU 이용 시간을 제어

– 동감지 기능 제공 : 하드웨어를 설치했을 때 필요한 시스템 환경을 운영체제가 자동으로 구성해주는 자동감지 기능 제공

– OLE(Object Linking and Embedding) 사용 : 개체를 현재 작성 중인 문서에 자유롭게 연결 또는 삽입하여 편집할 수 있게 하는 기능 제공

■ 유닉스 운영체제 특징 (대다 사이계)

– 화식 운영체제 기능 제공 : 프롬프트가 나타난 상태에서 사용자가 명령을 입력하면 시스템은 그 명령을 수행하는 사용자 명령 기반의 대화식 운영체제 기능을 제공

– 중 작업 기능 제공 : 다수의 작업(프로세스)이 CPU와 같은 공용 자원을 나누어 사용하여 한 번에 하나 이상의 작업을 수행하는 기능 제공

– 다중 용자 기능 제공 : 여러 대의 단말이 하나의 컴퓨터에 연결되어서, 여러 사람이 동시에 시스템을 사용하여 각각의 작업을 수행할 수 있는 기능 제공

– 식성 제공 : 90% 이상 C 언어로 구현되어 있고, 시스템 프로그램이 모듈화되어 있어서 다른 하드웨어 기종으로 쉽게 이식 가능

– 층적 트리 구조 파일 시스템 제공 : 유닉스는 계층적 트리구조를 가짐으로써 통합적인 파일 관리가 용이

운영체제 기본 명령어 활용

1. 운영체제 제어

■ CLI, GUI 두가지 제어 방법이 존재한다.

■ 윈도즈 운영체제 기본 명령어

– ATTRIB : 파일 속성을 표시하거나 바꿈

– CALL : 한 일괄 프로그램에서 다른 일괄 프로그램을 호출

– CD : 현재 디렉터리 이름을 보여주거나 바꿈

– CHKDSK : 디스크를 검사하고 상태 보고서를 표시

– CLS : 화면을 지움

– CMD : Windows 명령 프롬프트 창을 열어줌

– COMP : 두 개 이상의 파일을 비교

– DISKPART : 디스크 파티션 속성을 표시하거나 구성

– ECHO : 메시지를 표시하거나 ECHO를 사용 또는 사용하지 않음

– ERASE : 하나 이상의 파일을 지움

– EXIT : CMD.EXE 프로그램을 마침

■ 리눅스/유닉스 운영체제의 기본 명령어

  • 시스템 관련
    • uname -a : 시스템의 모든 정보를 확인하는 명령어
    • uname -r : 운영체제의 배포버전을 출력하는 명령어
    • cat : 파일의 내용을 화면에 출력하는 명령어
    • uptime : 시스템의 가동 시간과 현재 사용자 수, 평균 부하량 등을 확인하는 명령어
  • 사용자
    • id : 사용자의 로그인명, id, 그룹 id 등을 출력하는 명령어
    • last : 시스템의 부팅부터 현재까지의 모든 사용자의 로그인과 로그아웃에 대한 정보를 표시하는 명령어
    • who : 현재 접속 사용자 정보를 표시하는 명령어
  • 파일 처리
    • ls : 자신이 속해있는 폴더 내에서의 파일 및 폴더들을 표시하는 명령어
    • pwd : 현재 작업 중인 디렉토리의 절대 경로를 출력하는 명령어
    • rm : 파일 삭제 명령어
    • cp : 파일 복사 명령어
    • mv : 파일 이동 명령어
  • 프로세스
    • ps : 현재 실행되고 있는 프로세스 목록을 출력하는 명령어
    • pmap : 프로세스 ID를 기준으로 메모리 맵 정보를 출력하는 명령어
    • kill : 특정 PID 프로세스 종료 명령어
  • 파일 권한
    • chmod : 특정 파일 또는 디렉토리의 퍼미션 수정 명령어
    • chown : 파일이나 디렉토리의 소유자, 소유 그룹 수정 명령어
  • 네트워크 
    • ifconfig : 네트워크 인터페이스를 설정하거나 확인하는 명령어
    • host : 도메인명은 알고 있는데 ip 주소를 모르거나 혹은 그 반대의 경우에 사용하는 명령어
  • 압축
    • tar : 여러 개의 파일을 하나의 파일로 묶거나 풀 때 사용하는 명령어(압축은 불가능)
    • gzip : 파일을 묶거나 풀 수 는 없지만 압축을 담당하는 명령어
  • 검색
    • grep : 입력으로 전달된 파일의 내용에서 특정 문자열을 찾고자 할 때 사용하는 명령어
    • fing : 특정한 파일을 찾는 명령어
  • 파일 이동
    • cp : 디렉토리를 복사할 때 사용하는 명령어
    • rsync : 로컬 또는 원격에 파일과 디렉토리를 복사하고 동기화하는 명령어
  • 디스크 사용
    • df : 시스템에 마운트된 하드데스크의 남은 용량을 확인할때 사용하는 명령어
    • du : 파일 사이즈를 KB 단위로 보여주는 명령어
  • 디렉터리 이동
    • cd : 디렉터리를 이동하는 명령어

운영체제 핵심 기능 파악

1. 운영체제 핵심 기능

■ 메모리 관리

– 프로그램의 실행이 종료될 때까지 메모리를 가용한 상태로 유지 및 관리하는 기능

– 메모리가 꽉차게 되는 시스템 속도가 느려지고 때로는 시스템이 멈추는 현상 발생

■ 프로세스 관리

– CPU와 데이터를 송수신하는 상황에서 현재 메모리 사용 부분, 메모리 입출력 순서, 메모리 공간 확보 등 프로세스에 대한 종합적인 관리 기법

■ 메모리 관리 기법 (반배할교)

– 입 기법 : 메모리에 적재할 다음 프로세스의 반입 시기를 결정하는 기법

– 치 기법 : 디스크에 있는 프로세스를 메모리 어느 위치에 저장할 것인지 결정하는 기법

– 당 기법 : 실행해야 할 프로세스를 메모리에 어떤 방법으로 할당할 것인지 결정하는 기법

– 체 기법 : 재배치 기법으로 메모리에 있는 프로세스 중 어떤 프로세스를 제거할 것인지 결정하는 기법

■ 프로세스 상태 전이 (디타 블웨스)

– 스패치 : 준비 상태에 있는 여러 프로세스 중 실행될 프로세스를 선정하여 CPU를 할당 → 문맥교환

– 이머 런 아웃 : CPU에 할당된 프로세스는 지정된 시간이 초과하면 스케줄러에 의해 PCB저장, CPU 반납 후 다시 준비 상태로 전이.. 타임 슬라이스 만료, 선점시 타임아웃 발생

–  : 실행 상태에 있는 프로세스가 지정된 할당시간을 초과하기 전에 입출력이나 기타 사건이 발생하면 CPU를 스스로 반납하고 입출력이 완료될 때까지 대기 상태로 전이

– 이크 업 : 입출력이 종료되면 대기 상태의 프로세스에게 종료 사실을 알려주고, 준비상태로 전이

– Swap-in : 프로세스에게 다시 기억장치가 할당될 경우

– Swap-out : 프로세스가 기억장치를 잃은 경우

■ 프로세스 스케줄링 주요 종요

– 서비스 시간 : 프로세스가 결과를 산출하기까지 소요되는 시간

– 응답시간 (= 대기시간+수행시간) : 프로세스들이 입려되어 수행하고 결과를 산출하기까지 소요되는 시간

 대기시간 : 프로세스가 프로세서에 할당 대기까지 큐에 대기하는 시간, 할당되면 0이 된다.

– 종료시간 : 요구되는 Processing time을 모두 수행하고 종료된 시간

– 시간 할당량 : 한 프로세스가 프로세서를 독점하는 것을 방지하기 위해 서비스되는 시간 할당량

– 응답률 (= (대기시간+서비스시간) / 서비스시간)

■ 선점형 스케줄링 알고리즘 유형

– 라운드 로빈(Round Robin) : 프로세스는 같은 크기의 CPU 시간을 할당, 프로세스가 할당된 시간 내에 처리 완료를 못면 준비 큐 리스트의 가장 뒤로 보내지고, CPU는 대기 중인 다음 프로세스로 넘어간다.

– SRT(Shortest Remaining Time First) : 가장 짧은 시간이 소요되는 프로세스를 먼저 수행하고, 남은 처리 시간이 더 짧다고 판단되는 프레스가 준비 큐에 생기면 언제라도 선점됨.

– 다단계 큐(Multi Level Queue) : 작업들을 여러 종류의 그룹으로 분할, 여러 개의 큐를 이용하여 상위단계 작업에 의한 하위단계 작업이 선점 당함.

– 다단계 피드백 큐(MLFQ) : 입출력 위주와 CPU 위주인 프로세스의 특성에 따라 큐마다 서로 다른 CPU 시간 할당량을 부여, 마지막에는 라운드 로빈 방식으로 처리

■ 비선점형 스케줄링 알고리즘 유형

– 우선순위(Priority) : 프로세스별로 우선순위가 주어지고 우선순위에 따라 CPU 할당

– 기한부(Deadline) : 작업들이 명시된 시간이나 기한 내에 완료하도록 계획

– FCFS(First Come First Service) : 프로세스가 대기 큐에 도착한 순서에 따라 CPU를 할당, FIFO 알고리즘이라고도 함

– SJF(Short Job First) : 프로세스가 도작하는 시점에 따라 그 당시 가장 작은 서비스 시간을 갖는 프로세스가 종료 시까지 자원 점유

– HRN(Highest Response Ratio Next) : 대기 중인 프로세스 중 현재 응답률이 가장 높은 것을 선택, 기아현상을 최소화

2. 가상화, 클라우드

■ 가상화 개념

가상화는 물리적인 리소스들을 사용자에게 하나로 보이게 하거나, 하나의 물리적인 리소스를 여러 개로 보이게 하는 기술이다. 

■ 가상화 기술요소 

– 컴퓨팅 가상화 : 물리적으로 컴퓨터 리소스를 가상화하여 논리적 단위로 리소스를 활용할 수 있도록 하는 기술

– 스토리지 가상화 : 스토리지와 서버 사이의 계층을 추가하여 스토리지를 논리적으로 제어 및 활용할 수 있도록 하는 기술

– I/O 가상화 : 서버와 I/O 디바이스 사이에 위치하는 미들웨어 계층으로, 서버의 I/O 자원을 물리적으로 분리하고 케이블과 스위치 구성을 단순화하여 효율적인 연결을 지원하는 기술

– 컨테이너 : 컨테이너화된 애플리케이션들이 단일 운영체제상에서 실행되도록 해주는 기술

– 분산처리 기술 : 여러 대의 컴퓨터 계산 및 저장 능력을 이용하여 커다란 문제나 데이터를 처리하고 저장하는 기술

– 네트워크 가상화 기술 : 물리적으로 떨어져 있는 다양한 장비들을 연결하기 위한 수단으로 중계장치의 가상화를 통한 가상 네트워크를 지원하는 기술

■ 클라우드 컴퓨팅 분류 (사공하)

– 설 클라우드 : 기업 및 조직 내에 보유하고 있는 컴퓨팅 자원을 사용하여 내부에 구축되어 운영되는 클라우드. 직접적인 통제가 가능하며 보안성을 높일 수 있다.

– 용 클라우드 : 클라우드 서비스 제공 업체에서 다중 사용자를 위한 컴퓨팅 자원 서비스를 제공하는 클라우드. 확장성, 유연성 등이 뛰어나다.

– 이브리드 클라우드 : 사설 클라우드 + 공용 클라우드. 사실 클라우드 약점인 구축 비용 문제와 공용 클라우드 약점인 보안성 확보 문제를 해결

■ 클라우드 컴퓨팅 유형 (인플소)

– 인프라형 서비스(IaaS) : 서버, 스토리지 같은 시스템 자원을 클라우드로 제공하는 서비스

– 플랫폼형 서비스(PaaS) : 인프라 생성, 관리 하는 복잡함 없이 애플리케이션을 개발, 실행, 관리할 수 있게 하는 플랫폼을 제공하는 서비스

– 소프트웨어형 서비스(SaaS) : 소프트웨어 및 관련 데이터는 중앙에 호스팅되고 사용자는 웹 브라우저 등의 클라이언트를 통해 접속하여 소프트웨어를 서비스 형태로 이용하는 서비스

#2 데이터베이스 기초 활용하기

데이터베이스 종류

1. 데이터베이스

■ 데이터베이스 개념

데이터베이스는 다수의 인원, 시스템 또는 프로그램이 사용할 목적으로 통합하여 관리되는 데이터의 집합이다. 

■ 데이터베이스 종류

  • 파일 시스템 : 파일에 이름을 부여하고 저장이나 검색을 위해 그것들을 어디에 위치시켜야 하는 등을 정의한 뒤 관리하는 데이터베이스 전 단계의 데이터 관리 방식 (중요성 떨어짐)
    • ISAM, VSAM
  • 계층형 데이터베이스 관리시스템(HDBMS) : 데이터를 상하 종속적인 관계로 계층화하여 관리하는 데이터베이스. 데이터에 대한 접근 속도는 빠르나, 종속적인 구조로 변화하는 데이터 구조에 유연하게 대응하기가 쉽지 않다.
    • IMS, System2000
  • 망형 데이터베이스 관리시스템(NDBMS) : 데이터 구조를 네트워크상의 망 형태로 표현한 데이터 모델. HDBMS 보다 유연하지만 설계가 복잡하다.
    • IDS, IDMS
  • 관계형 데이터베이스 관리시스템(RDBMS) : 관계형 모델을 기반으로 하는 가장 보편적인 데이터베이스 관리시스템이다. 변화하는 업무나 데이터 구조에 대한 유연성이 좋아 유지 관리가 용이하다.
    • Oracle : 오라클사에서 개발한 DBMS로 유료이다. 대부분의 운영체제를 제공하고 대형 시스템에서 많이 쓰임
    • SQL Server : MS에서 개발한 DBMS. MS에서만 사용 가능하며, C#등과 호환됨
    • MySQL : 오라클의 관계형 데이터베이스 시스템. 오픈 소스 기반으로 개발
    • Maria DB : MySQL 출신 개발자가 만든 DB로 MySQL과 완벽히 호환

2. DBMS

■ DBMS(Database Management System) 개념

DBMS는 데이터 관리의 복잡성을 해결하는 동시에 데이터 추가, 변경, 검색, 삭제 및 백업, 복구, 보안 등의 기능을 지원하는 소프트웨어이다.

■ DBMS 유형 (키컬도그)

– 키-값 DBMS

– 컬럼 기반 데이터 저장 DBMS

– 문서(Document) 저장 DBMS

– 그래프 DBMS

■ DBMS 특징

– 데이터 무결성

– 데이터 일관성

– 데이터 회복성

– 데이터 보안성

– 데이터 효율성

관계형 데이터베이스 활용

1. ERD(E-R Diagram) 개념

■ ERD는 업무 분석 결과로 도출된 실체(엔티티)와 엔티티 간의 관계를 도식화한 다이어그램이다. 데이터의 흐름과 연관성을 공통적으로 쉽게 확인할 수 있다.

데이터베이스 관리

1. 트랜잭션

■ 트랜잭션의 개념

DBMS가 가져야 하는 특성으로, 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위이다.

■ 트랜잭션의 특성 (ACID)

– 원자성(Atomicity) : 연산 전체가 성공 또는 실패. 하나라도 실패하면 전체가 취소되어야 함.

– 일관성(Consistency) : 트랜잭션이 실행 성공 후 항상 일관된 데이터베이스 상태를 보존해야 함

– 격리성(Isolation) : 트랜잭션 실행 중 발생하는 연산의 중간 결과를 다른 트랜잭션이 접근 불가

– 영속성(Durability) : 성공이 완료된 트랜잭션 결과는 영속적으로 데이터베이스에 저장

■ 트랜잭션 상태 설명 (활부완실철)

– 동 상태 : 초기 상태, 트랜잭션 실행 중 가지는 상태

– 분 완료 상태 : 마지막 명령문이 실행된 후 가지는 상태

– 료 상태 : 트랜잭션이 성공적으로 완료된 후 가지는 상태

– 패 상태 : 정상적인 실행이 더 이상 진행될 수 없을 때 가지는 상태

– 회 상태 : 트랜잭션이 철회되고 데이터베이스가 트랜잭션 시작 전 상태로 환원된 상태

2. 데이터베이스 기술 트랜드

■ 빅데이터 개념

빅데이터는 시스템, 서비스, 조직 등에서 주어진 비용, 시간 내에 처리 가능한 데이터 범위를 넘어서는 수십 페타바이트(PB) 크기의 비정형 데이터이다. 

■ 빅데이터 특성

데이터의 양, 데이터의 다양성, 데이터의 속도

■ NoSQL 개념 

NoSQL은 전통적인 RDBMS와 다른 DBMS를 지칭하기 위한 용어로 데이터 저장에 고정된 테이블 스키마가 필요하지 않고 조인연산을 사용할 수 없으며, 수평적으로 확장이 가능한 DBMS이다.

■ 데이터 마이닝 개념

대규모로 저장된 데이터 안에서 체계적이고 자동적으로 통계적 규칙이나 패턴을 찾아내는 기술이다. 

#3 네트워크 기초 활용하기

네트워크 계층 구조 파악

1. 네트워크 개념

 네트워크란 원하는 정보를 원하는 수신자 또는 기기에 정확하게 전송하기 위한 기반 인프라이다.

■ 거리에 따른 네트워크 분류 

– WAN (광대역 네트워크)

– LAN (근거리 네트워크)

2. OSI 7계층

■ 국제 표준화 기구인 ISO에서 개발한 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 개방형 시스템 상호 연결 모델이다.

■ 7 Layer

 응용 계층

– 표현 계층

– 세션 계층

– 전송 계층 (L4 스위치)

– 네트워크 계층 (라우터)

– 데이터 링크 계층 (브리지, 스위치)

– 물리 계층 (허브, 리피터)

3. 네트워크 장비

■ 1계층 장비

– 허브 : 여러 대의 컴퓨터를 연결하여 네트워크를 보내거나, 수신된 정보를 여러 대의 컴퓨터로 송신하기 위한 장비

– 리피터 : 디지털 신호 증폭 장비

■ 2계층 장비

– 브리지 : 두 개의 LAN을 서로 연결해 주는 장비

– L2 스위치 : 느린 전송속도의 브리지, 허브의 단점을 개선하기 위해 나옴. 출발지에서 들어온 프레임을 목적지 MAC 주소 기반으로 빠르게 전송시키는 데이터 링크 계층의 통신장치

– NIC(Network Interface Card) : 외부 네트워크와 접속하여 가장 빠른 속도로 데이터를 주고받을 수 있게 컴퓨터 내에 설치되는 장치

– 스위칭 허브 : 스위치 기능을 지닌 허브. 사용되는 대부분의 허브가 이것이다. 

■ 3계층 장비

– 라우터 : LAN과 LAN을 연결하너가 LAN과 WAN을 연결하기 위한 인터넷 네트워킹 장비, 알고리즘을 통한 최적의 경로로 원하는 목적지까지 안전하게 전달.

– 게이트웨이 : 프로토콜을 서로 다른 통신망에 접속할 수 있게 해주는 장치

 L3 스위치 : 3계층에서 네트워크 단위들을 연결하는 통신 장비

– 유무선 인터넷 공유기 : 외부로 들어오는 인터넷 라인을 연결하여 유선 혹은 무선으로 여러 대의 기기를 연결하여 인터넷 라인을 공유할 수 있도록 하는 네트워크 장비

– 망(백본) 스위칭 허브 : 광역 네트워크를 커버하는 스위칭 허브, 대단위 지역을 커버함 

■ 4계층 장비

 L4 스위치 : 4계층에서 네트워크 단위들을 연결하는 통신장비. TCP/UDP 등 스위칭 수행. 로드밸런싱 가능

네트워크 프로토콜 파악

1. 프로토콜

■ 프로토콜 개념

프로토콜은 서로 다른 시스템이나 기기들 간의 데이터 교환을 원할히 하기 위한 표준화된 통신규약이다.

■ 프로토콜의 기본요소 (구의타)

– 구문(Syntax) : 시스템 간의 정보 전송을 위한 데이터 형식, 코딩, 신호 레벨 등의 규정

– 의미(Semantic) : 시스템 간의 정보 전송을 위한 제어 정보로 조정과 에러 처리를 위한 규정

– 타이밍(Timing) : 시스템 간의 정보 전송을 위한 속도 조절과 순서 관리 규정

2. TCP

■ TCP(Transmission Control Protocol) 개념

전송 제어 프로토콜은 인터넷 프로토콜 스위트의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로 사용된다.

■ TCP의 특징 (신연흐혼)

– 신뢰성 보장

– 연결 지향적 특징

– 흐름제어

– 혼잡제어

3. UDP

■ UDP(User Datagram Protocol) 개념

비연결성이고, 신뢰성이 없으며, 순서화되지 않은 데이터그램 서비스를 제공하는 전송(Transport, 4계층) 계층의 통신 프로토콜이다.

■ UDP의 특징

– 비신뢰성

– 순서화되지 않은 데이터그램 서비스 제공

– 실시간 응용 및 멀티캐스팅 가능

– 단순 헤더

4. IPv4, IPv6

■ IPv4

인터넷에서 사용되는 패킷 교환 네트워크상에서 데이터를 교환하기 위한 32bit 주소체계를 갖는 네트워크 계층(3계층)의 프로토콜이다.

■ IPv4 전송방식

– 유니캐스트

– 멀티캐스트

– 브로드캐스트

■ IPv6

현재 IPv4가 가지고 있는 주소고갈, 보안성, 이동성 지원 등의 문제점을 해결하기 위해 개발된 128bit 주소체계를 갖는 차세대 인터넷 프로토콜이다.

■ IPv6 전송방식

– 유니캐스트

– 멀티캐스트

– 애니캐스트

Start typing and press Enter to search

Shopping Cart