본문 바로가기

정처기

정보처리기사 실기 정리

반응형

요구사항 확인

1) 현행 시스템 파악: 현재 개발하고자 하는 시스템의 개발 범위를 설정하기 위해 구성과 기능, 연계 정보, 소프트웨어, 하드웨어, 네트워크 구성을 파악하는 과정

2) 현행시스템 파악 절차

- 현행 시스템 구성 파악: 기간 업무, 지원 업무

- 현행 시스템 기능 파악: 제공 기능 파악, 계층형 표시

- 인터페이스 현황 평가: 데이터 종류, 통신 규약, 연계 유형

 

- 아키텍처 구성 파악: 차상위 수준에서 파악

- 소프트웨어 구성 파악: 소프트웨어 제품명, 용도, 라이선스 수, 적용 방식 명시

- 하드웨어 구성 파악: 서버의 주요 사양, 서버의 이중화, 수량

- 네트워크 구성 파악: 네트워크 구성 파악 위해 네트워크 연결 방식을 구성도로 작성

3) 소프트웨어 아키텍처

- 여러가지 소프트웨어 구성요소와 외부 특성, 구성요소 간의 관계를 표현하는 시스템 구조

- 구성요소 간 관계를 표현하는 시스템의 구조나 구조체

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

: 관계를 제공하는 아키텍처 표준 기술

 

-> 소프트웨어 프레임 워크의 특징

모듈화: 변경 영향 극소화 품질 향상

재사용성

확장성

제어의 역흐름

 

4+1뷰

유스케이스 뷰: 아키텍처 도축하고 설계하는 작업 주도하는 뷰

논리 뷰: 설계 모델의 추상화

프로세스 뷰: 스레드와 프로세스 사이의 상호 작용

배포 뷰: 물리적 노드 구성 -> 배포 다이어그램

구현 뷰: 정적 소프트웨어 구현 -> 컴포넌트 뷰, 컴포넌트 다이어그램

 

+ 런타임: 프로그램이 실행되고 있는 동안의 동작 상태

+ 프레임워크: 소프트웨어의 특정 부분을 설계 및 구현 시 재사용이 가능하도록 클래스 제공

 

6) 개발 기술 환경 정의

- 운영체제: 사용자와 하드웨어의 인터페이스 역할을 하며 컴퓨터 시스템의 자원을 관리하는 소프트웨어

- DBMS: 사용자와 Database사이에서 정보 생성해주고 관리해주는 소프트웨어

+ ODBC: 응용 프로그램에서 DB에 접근하여 데이터를 관리할 수 있는 표준 인터페이스

- 미들웨어: 운영체제와 Application 사이에서 원만한 통신이 이루어질 수 있도록 중개 및 제어 역할을 하는 SW

 

- 미들웨어 종류

- DB: 원격 데이터베이스와 연결하기 위한 미들웨어

- RPC(Remote Procedure Call): 원격 프로시저를 마치 로컬 프로시저처럼 호출하는 방식의 미들웨어

- MOM: 메시지 기반의 비동기형 메시지를 전달하는 방식의 미들웨어

- TP-Monitor: 트랜잭션을 처리 및 감시하는 미들웨어

- ORB: 객체 지향 미들웨어로 코바 표준 스택을 구현한 미들웨어

- WAS: 사용자의 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어

https://ss-o.tistory.com/95?category=967966

 

비용 산정 모델

- 하향식 선정 방법: 전문가 판단, 델파이 기법

- 상향식 선정 방법: LOC, M/M, Putnam, COCOMO

Putnam: 개발 주기의 단계별 요구, 인원 분포도 가정

COCOMO: 보헴이 정의/프로그램 규모에 따라 비용 산정

 

9) 분석 모델 검증

유스케이스 모델 검증, 분석 클래스 검증, 개념 수준의 분석 클래스 검증

 

UML

개발자들이 원활한 의사소통을 하기 위해 고안된 표준화 통합 모델링 언어

 

2장 데이터 입출력

개념적, 논리적, 물리적 모델링(개눈물)

 

논리데이터모델링: 정규화, 완전성, 독립성, 포용성

정규화: 관계형 데이터베이스 설계 시 중복을 최소화하여 데이터를 구조화하는 과정

 

뷰: 테이블로부터 유도된 논리적인 가상 테이블

클러스터: 동일한 성격의 데이터를 같은 데이터 블록에 저장하는 물리적 저장 방법

 

3장 통합 구현

 

통합구현: 단위 기능을 하는 모듈 간의 연계와 통합

1. 연계 데이터 구성

1) 연계 요구사항 분석: 사용자 요구분석 중요한 작업

* 분석 기법: 인터뷰, 리서치, 체크리스트(기준 점검 통한), 델파이 기법(각분야 전문가로부터), 브레인스토밍(소속인원자연스럽게)

* 개체 정의서: 개념 모델링 단계에서 도출한 개체 타입과 속성 식별자 정보를 명세화한 문서

* 테이블 정의서: 테이블 구성 칼럼의 특성 및 인덱스 문서화

* 인터페이스 명세서: 인터페이스 정의서 기반으로 상세화

* 연계 시스템 구성: 송,수신 시스템, 중계서버

* 인터페이스 시스템 데이터 표준: 공통부, 개별부, 종료부

 

2) 연계 메커니즘

- 직접 연계: 송수신 시스템 연결 (DB Link, DB Connection, API/Open API)

- 간접 연계: EAI(이기종 간 시스템 연계 솔루션), ESB/Web Service(WSDL과 SOAP 프로토콜 이용한 시스템 연계), Socket(포트할당 클라이언트 요청 연결)

 

* 연계 메커니즘 주행 절차

데이터 추출 생성 -> 코드 매핑/변환 -> 파일 생성 -> 로그 기록 -> 송수신 어댑터 -> 전송 -> 반영

 

3) 연계 모듈 기능 구현

- EAI: 기업에서 운영되는 이기종 간 시스템 연계 솔루션

- Point - to Point: 가장 기본적, 변경 재사용 어려움

- Hub&Spoke: 허브 시스템, 확장, 유지보수 용이

- Message Bus: 미들웨어를 두고 처리, 뛰어난 확장성

- Hyblid: 병목현상 최소화

 

* ESB: 기업에서 운영되는 이기종 간 서비스를 통합하여 하나의 시스템으로 관리 운영할 수 있는 기술

 

  EAI 방식 ESB방식
구성도 APP ESB(BUS)
개념 미들웨어(Hub)를 이용하여 Biz로직을 중심으로 기업 내 APP 통합 연계 미들웨어(BUS)를 이용하여 서비스 중심으로 서비스를 지원하기 위한 관련 시스템의 유기적 연계(SOA 토대)
특징 허브 시스템을 통해 시스템을 통합하는 집중식 방식, 장애시 전체 영향 버스를 통해 연결하므로 뛰어난 확장성, 유현성, 신속성 제공. network에 의존적

* Web Service: 네트워크에 분산된 정보를 서비스 형태로 개방하여 표준화된 방식으로 공유

- SOAP: HTTP, HTTPS, SMTP 프로토콜을 사용하여 XML 기반의 메시지를 교환하는 프로토콜

- WSDL: 웹 서비스에 대한 상세 정보를 기술한 파일

- UDDI: WSDL을 등록하고 검색하기 위한 저장소

 

- XML: HTML 문법이 호환되지 않는 문제와 SGML의 복잡함을 해결하기 위해 고안된 마크업 언어

- JSON: 비동기 브라우저, 서버 통신을 위해 속성-값의 쌍으로 이루어진 개방형 표준 포맷

- AJAX: 자바스크립트를 이용한 비동기 통신으로 클라이언트와 서버 간 XML데이터를 주고 받는 기술

- 테스트 케이스: 명세 기반 테스트를 산출물로 입력값, 실행 조건, 기대 결과로 구성된 테스트 항목

 

4장 서버 프로그램 구현

 

1. 서버 프로그램 구현

1) 개발 환경 구축

* 개발 도구 분류

- 구현 도구: 코드 작성과 디버깅, 수정 작업

- 테스트 도구: 코드 기능과 품질 향상(xUnit, PMD, Findbugs, CppCheck, Sonar)

- 형상관리 도구: 코드와 산출물에 대한 버전 관리

- 빌드 도구: 코드의 빌드와 배포 수행(Gradle, Maven, Ant)

 

* JVM: 시스템 메모리를 관리하고 자바기반 어플리케이션을 위해 실행 환경 제공

 

* 형상 관리(SCM)

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

- 변경 원인을 알아내고 제어하며, 적절히 변경되고 있는지 확인하여 통보

- 형상 관리는 소프트웨어 개발 전단계에 적용하는 활동이며, 유지보수 단계에서도 수행

- 개발 전체 비용을 줄이고, 여러 방해 요인이 최소화되도록 보증을 목표

 

* 형상 관리 기능 종류

- 형상 식별: 계층 구조로 구분

- 버전 제어: 특정 절차와 도구를 결합

- 형상 통제: 현재의 기준선이 잘 반영될 수 있도록 조정

- 형상 감사: 무결성 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인 

- 형상 기록

 

2) 공통 모듈 구현

- 모듈: 하나의 소프트웨어 또는 하드웨어 단위

- 모듈화: 모듈을 통해 소프트웨어의 성능을 향상시키고 디버깅, 수정, 통합을 용이하게 하는 설계 기법

 

* 공통 모듈: 기능을 분할하고 추상화하여 성능 향상 및 유지보수를 효과적으로 하기 위한 공통 컴포넌트 구현 기법

 

* 결합도와 응집도

결합도: 상호의존의 정도. 결합도가 약해야 품질 상승

ds컨 이즈(익스) 커먼컨텐츠

data, stamp, control, external, common, content(낮 -> 높)

자료: 데이터에 대한 처리 결과를 돌려주는 방식

스탬프: 두 모듈이 동일한 자료구조를 조회하는 경우

제어: 다른 모듈에서 흐름 제어

외부: 외부의 다른 모듈에서 참조할 때

공통: 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때

내용: 내부 자료를 직접 참조하거나 수정할 때

 

응집도: 정보은닉 개념 확장, 응집도가 강할수록 품질 좋음

기엽고 순진한 교회오빠는 절은 시러 노우?

functional, sequential, communication, procedural, temporal, logical, coincidental(높 -> 낮)

기능적: 단일문제와 연관되어 수행될 경우

순차적: 출력 데이터를 다음 입력 데이터로 사용할 경우

통신적: 동일한 입출력을 사용하여 다른 기능 수행

절차적: 다수읜 관련 기능 가질 때 순차적

시간적: 특정 시간에 처리되는 걸 하나의 모듈로 작성

논리적: 유사 성격, 특정 형태로 분류되는 요소가 하나의 모듈이 되는 경우

우연적: 서로 관련 없는 요소로만 구성된 경우

 

3) 공통 모듈 구현 절차

DTO/VO -> SQL -> DAO -> Service, Controller -> View

* DTO: 프로세스 사이에서 데이터 전송

* VO: 고정 클래스가 가지는 Object

* DAO: 특정 타입의 DB 추상 인터페이스를 제공하는 객체

 

MVC패턴

생성패턴: 추상팩토리, 팩토리메소드, 빌더, 프로토타입, 싱글톤

구조패턴(클래스 객체 더 큰 구조로 할 수 있게): 어댑터, 브리지, 컴포지트, 데코레이터, 퍼싸드, 플라이웨이트, 프록시

행위패턴(서로 상호작용하는 방법, 책임 분배 방법 정의): 책임 연쇄, 커맨드, 인터프리터, 반복자, 매맨토, 옵서버, 템플릿 메소드

 

4) 팬 인 팬 아웃

- 소프트웨어의 구성요소인 모듈을 계층적으로 분석하기 위해 팬인, 팬아웃 활용

- 팬 인: 어떤 모듈을 제어하는 수, 해당 모듈로 들어오는 모듈의 수

- 팬 아웃: 제어되는 수, 해당 모듈에서 나가는 모듀ㅠㄹ의 수

* 공통 모듈 테스트: 화이트 박스 테스트 // IDE 도구를 활용하여 디버깅 진행

 

- 화이트 박스 검사: 내부 소스코드를 확인하며 내부 구조와 동작을 검사하는 테스트 기법

- 블랙박스 검사: 입력값에 목표 결과값이 나오는지 등을 봄

- Junit: 언어용 단위 테스트 도구

 

5) 배치 프로그램

: 사용자와 상호작용 없이 일련의 작업을 작업 단위로 묶어 정기적으로 반복 수행하는 일괄 처리 방법

* 배치 스케줄러: 일괄처리를 위해 주기적으로 발생시키는 작업 지원 도구

 

- 스프링배치: 대용량 처리를 제공하는 스케줄러

- 쿼츠 스케줄링: 플러그인을 통해 유연성을 제공하는 오픈 소스 기반 스케줄러

- Cron 표현식: 스케줄러를 실행시키기 위해 작업이 실행되는 주기를 설정하는 표현식

- 유형: 이벤트 배치, 온디멘드 배치, 정기 배치

- 온디멘드 배치: 명시적 요구가 있을 대마다 실행하는 기법

- 정기 배치: 정새진 시점에 실행하는 배치

 

* 배치 프로그램이 가지는 필수 요소

>> 배치 프로그램: 컴퓨터 프로그램 흐름에 따라 순차적으로 자료를 처리하는 방식

- 운영체제 발전에 따라 사용자와 상호작용 가능

- 한꺼번에 일괄적으로 대량 건 처리

- 보통 정해진 특정한 시간에 실시

- 업무의 효율성과 비효율적인 시스템 과부하를 줄이기 위해 사용

- 자동화: 사용자 개입없이 동작해야 함

- 견고성: 비정상적인 동작 중단이 발생하지 않아야 함

- 안정성: 어떤 문제가 생겼는지 발생했는지 등을 추적할 수 있어야 함

 

5장 인터페이스 구현

 

1. 인터페이스 구현

1) 인터페이스 산출물

* 인터페이스 설계서(가장 큰 단위의 설계서)

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

- 상세 기능 인터페이스 정의서: 상세기능 인터페이스 목록 + 상세기능 인터페이스 정의서

- 시스템 인터페이스 정의서: 시스템 인터페이스 목록 + 시스템 인터페이스 정의서

 

*인터페이스 정의서: 송수신 정보 구체화, 인터페이스 상세 정보

 

* 인터페이스 데이터 표준 확인: 상호 연계하고자 하는 시스템 간 인터페이스 되어야 할 데이터 형식과 표준 정의

 

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

* 인터페이스 명세서: 인터페이스 클래스의 세부 정보를 명시한 명세서

 

4) 인터페이스 기능 구현

1) 송신 측에서 필요한 데이터 선택 전송

2) 필요 항목에 대해서 데이터 전달

3) 전달 후 수신 측으로부터 전달 여부에 대한 값 반환

 

* JSON: 비동기식 브라우저/서버 통신을 위해 '속성-값'의 쌍으로 이루어진 오브젝트를 전달하기 위한 인간이 읽기 쉬운 텍스트를 사용하는 개방형 표준 포맷

* REST: URL 자원을 활용하여 HTTP 메서드를 주고받는 웹 아키텍처

* 직렬화: 데이터 구조나 오브젝트 상태를 다른 컴퓨터 환경에서 저장하고 재구성할 수 있는 포맷으로 변환하는 과정

 

5) 인터페이스 보안 취약점 및 보안 구현

* 스니핑: 직접 공격하지 않고 데이터를 몰래 들여다보는 공격 기법

* 인터페이스 보안 취약점 - 입어보니 시원한 에코캡

- 입력 데이터 검증 및 표현

- 보안 기능

- 시간 및 상태

- 에러 처리

- 코드 오류

- 캡슐화

- API 오용

 

6) 데이터베이스 보안 적용

* DB 암호화 알고리즘

- 대칭키: 암호화의 복호화의 암호키가 동일(DES/AES/SEED-블록 암호화)

- 비대칭키: 암호화와 복호화의 암호키가 다름(RSA/ECC/Elgamel)

- 해시: MD5/SHA

 

* DB 암호화 기법

- API 방식: 애플리케이션 레벨에서 암호화 모듈 적용

- Plug-In 방식: DBMS에서 Plug-In 모듈로 동작하는 방식

- Hybrid 방식: API 방식과 Plug-in 방식의 장점을 합친 방식

* IPSec: IP 계층에서 무결성과 인증을 보장하는 인증 헤더와 기밀성을 보장하는 암호화를 이용한 IP 보안 프로토콜

* SSL/TLS: 어플리케이션과 TCP/IP계층에서 웹 데이터를 암호화하고 전송 시 기밀성을 보장하는 공개키 기반 보안 프로토콜

 

* 데이터베이스 보안 기능 적용

- 데이터베이스 접근 권한

- 악의적 코드 삽입 금지

- 민감 데이터 관리

- 악의적 시도 시 에러 처리

 

7) 인터페이스 구현 검증

- xUnit: JAVA, C++, .NET 등 다양한 언어를 지원하는 단위 테스트 프레임워크

- STAF: 서비스 호출 및 컴포넌트 재사용 등의 테스트 프레임워크

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

- NTAF: NHN(Naver)의 테스트 자동화 프레임워크

- Selenium: 다양한 브라우저 및 개발 언어를 지원하는 테스트 프레임워크

- watir: Ruby를 사용하는 애플리케이션 테스트 프레임워크

 

8) 인터페이스 감시 도구

- 스카우터: 애플리케이션 모니터링 및 DB 모니터링, 인터페이스 감시 기능 제공

- 인터페이스 구현 검증 프로세스: 송신측에서 선택 전송 -> 인터페이스 객체 전송 -> 수신 트랜잭션 결과 반환

 

9) 인터페이스 오류 처리 방법

- 사용자 화면에 오류 인지하도록 구현

- 인터페이스 오류 로그 생성

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

 

 

6장 화면 설계

 

* UI: 사용자와 시스템 사이에서 의사소통을 할 수 있도록 고안된 물리적 가상의 매개체

* UI설계 원칙

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

- 유효성: 정확하고 완벽하게 목표에 달성할 수 있어야 한다.

- 학습성: 모두가 쉽게 배우고 사용 가능해야 한다.

- 유연성: 최대한 포용하고 실수를 방지할 수 있어야 한다.

* UI설계 지침: 사용자 중심, 일관성, 단순성, 결과 예측 가능, 가시성, 표준화, 접근성, 명확성, 오류 발생 해결

* UI 요구사항 종류: 기능적, 비기능적 요구사항

* UI표준정의: 디자인 철학과 원칙에 기반하여 시스템에 공통적으로 적용되는 화면 간 이동, 화면 구성에 대한 규약

* UX: 제품과 시스템 사용하면서 느낀 사용자의 직접적, 간접적인 경험

* UI 구동 환경 의의: OS 확인, 웹브라우저, 모니터 해상도, 프레임 시트

 

* 리치 클라이언트: 클라이언트가 책임지는 기술

* 씬 클라이언트: 서버가 책임지는 기술

* SSO(Single Sign On): 한번의 로그인으로 다른 사이트에 자동으로 접속하여 이용하는 방법

 

3) UI 지침: UI 표준에 따라 UI 설계와 개발 시 따라야 하는 가이드라인

* UI 개발 주요 기법

- 3C분석: 고객, 경쟁사, 자가분석

- SWOT: 강점, 약점, 기회, 위협 분석

- 시나리오 플래닝: 불확실성이 높은 상황 변화를 예측하고 다양한 시나리오 설계

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

- 워크숍: 소규모 과제, 회의

 

* 사용자 요구사항 도출

- 페르소나: 잠재적인 사용자의 목적과 관찰한 행동 패턴을 응집시켜 놓은 가상의 사용자

- 콘셉트 모델 정의(브레인스토밍)

- 요구사항 매트릭스: 페르소나의 목적을 기준으로 데이터 요구, 기능의 기반으로 만든 요구사항 표

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

- 이상적인 시스템 동작에 초점을 맞추는 시나리오

 

4) UI 설계 도구

- 스토리보드: UI화면 설계를 위해 와이어 프레임과 데이터베이스 연동 등 구축하는 서비스의 정보가 수록된 문서

- 와이어 프레임: 이해관계자들과 화면구성을 협의하거나 화면 단위로 대략적인 레이아웃만 구성하는 단계

- 프로토타입: 정적인 화면으로 설계된 와이어 프레임, 동적 요소를 적용하여 실제 구현된 것처럼 시뮬레이션 가능한 모형

 

5) UI 흐름 설계

- UI 설계서 구성: UI설계서 표지, 개정 이력, UI 요구사항 정의서, ...

- 유스케이스: 시스템 요구사항이자 시스템의 기능

 

6) 설계 도구 분류

- 화면 설계 도구: 파워 목업, 발사믹 목업, 카카오 오븐

- 프로토타이핑 도구: UX 핀, 액슈어, 네이버 프로토나우

- UI 디자인 도구: 스케치 어도비 익스피리언스

 

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

 

1. 애플리케이션 테스트 관리

1) 애플리케이션 테스트

* 소프트웨어 테스트:

- 개발된 응용 프로글매이나 시스템이 사용자가 요구하는 성능이나 사용성, 안전성 등을 만족하는지 확인하고 소프트웨어 결함을 찾아내는 과정

- 오류 발견의 관점, 예방의 관점, 품질 향상 관점

* 테스트 프로세스: 테스트 계획 -> 분석/설계 -> 수행 -> 관리

 

* 소프트웨어 테스트 원리

- 테스팅은 결함이 존재하는 것을 밝혀내는 행동

- 완벽한 테스팅은 없다

- 개발 초기에 테스팅 시작(완료 후 하면 비용 및 시간 증가)

- 결함의 집중(결함은 한 모듈에 집중)

- 살충제 패러독스: 동일한 테스트 케이스로 테스트를 진행하면 더이상 새로운 결함을 찾을수 없으므로 주기적으로 테스트 케이스를 점검하고 관리하여야 하낟.

- 테스팅은 정황에 의존적

- 오류-부재의 궤변: 요구사항을 충족시켜주지 못한다면, 결함이 없다고 해도 품질이 높다고 볼 수 없는 소프트웨어 테스트 원리

 

* 소프트웨어 테스트 산출물

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

- 정적 테스트: 프로그램 실행 없이 구조를 분석하여 논리성 검증(동료검토, 인스펙션, 워크스루)

- 동적 테스트 프로그램 실행 요구하는 테스트(화이트박스, 블랙박스 테스트)

 

*요구사항검토: 검토 담당자들이 수작업으로 분석하는 방법

 

* 종류

- 동료 검토: 내용을 직접 설명, 동료들이 이를 들으면서 결함 발견

- 워크스루: 미리 배포하여 사전 검토 회의를 통해 결함 발견

- 인스펙션: 작성자를 제외한 다른 검토 전문가들이 결함 발견

- 프로토타이핑: 견본품을 만들어 최종 결과물 예측

- 테스트 설계

- CASE 도구 활용: 요구사항 변경사항의 추적 및 분석, 관리, 표준 준수 여부 확인

- 화이트 박스 테스트: 내부 로직을 보면서 수행하는 구조 기반 테스트(제어구조/루프 테스트)

- 블랙박스 테스트: 경계값 분석, 동등분할, 결정테이블, 상태전이, 유스케이스

 

- 검증: 소프트웨어 과정을 테스트(개발자 과정)

- 확인: 소프트웨어 결과를 테스트(사용자 관점)

 

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

- 회귀 테스트: 수정 후 새롭게 유입된 오류가 있는지 테스트

- 회복 테스트: 정상 복귀 여부 확인 테스트

- 안전 테스트: 보안적인 결함 확인

- 강도 테스트: 과부하 시 정상적인 동작 하는지 테스트

- 성능 테스트: 시스템 반응 속도 테스트

- 구조 테스트: 경로나 소스코드 복잡도 테스트

- 병행 테스트: 동일한 데이터 입력 후 결과 비교

 

3) 소프트웨어 테스트 종류

** 구조 기반 테스트(화이트박스 테스트)

* 구문 커버리지: 모든 명령문을 적어도 한번 수행

* 결정 커버리지: 전체 결정문이 적어도 한번은 참과 거짓 결과 수행

* 조건 커버리지: 결정명령문 조건이 적어도 한번은 참과 거짓 결과 출력 수행

* 조건-결정 커버리지: 조건식뿐만 아니라 개별 조건식도 거짓이 한번씩 결과가 되도록 수행

* 변경 조건/결정 커버리지: 영향을 받지 않고 독립적인 영향을 주도록 수행

* 다중 조건 커버리지: 모든 개별식 조건의 모든 조합을 고려한 커버리지

* 명세기반 테스트: 동등분할, 경계값분석, 결정테이블, 유스케이스, 상태전이

* 경험기반 테스트: 블랙박스 테스트

* 테스트 케이스: 특정 요구사항을 준수하는지 확인하기 위해 입력값 실행조건, 에상결과의 집합

 

4) 테스트 오라클: 사전에 정의한 참값을 입력하여 비교

* 종류

- 참오라클: 모든 입력값에 대해 기대하는 결과 생성, 모든 오류 검사

- 샘플링 오라클: 특정 몇개의 입력값에 대해 결과값 제공

- 휴리스틱 오라클: 샘플 오라클을 개선한 것으로 몇개의 입력값에 대한 결과를 제공하고 나머지는 추정

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

 

* 테스트레벨: 테스트 활동의 그룹

- 단위 테스트: 단위 모듈, 서브루틴

- 통합 테스트: 모듈 간 상호작용

- 시스템 테스트: 시스템 기능

- 인수 테스트: 사용자 입장 테스트, 베타/알파 테스트

 

* 테스트 시나리오: 테스트를 수행하기 위한 테스트 케이스의 집합으로 테스트 케이스의 실행 순서와 절차를 작성한 문서

 

5) 통합 테스트

인터페이스 관련 오류와 결함을 찾아내는 테스트

- 하향식 통합: 깊이-너비, 스텁

- 상향식 통합: 드라이버

- 빅뱅 통합: 실제 모듈 테스트 진행

 

6) 테스트 자동화 도구

: 반복적인 테스트를 스크립트 형태로 구현하여 시간 단축과 비용 최소화

 

* 정적분석도구: 애플리케이션을 실행하지 않고 테스트 수행

* 성능테스트도구: 애플리케이션 처리량, 응답시간, 경과시간에 대해 가상 사용자를 생성하여 테스트 실행

* 테스트 통제 도구: 테스트 계획 및 관리를 위한 테스트 관리 도구

* 테스트 하네스: 테스트를 지원하기 위한 코드와 데이터를 말함 단위 테스트에 사용하기 위해 개발자가 작성

* 테스트 슈트: 테스트 대상 컴포넌트나 시스템에 사용되는 테스트 케이스 집합

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

* 테스트 스크립트: 자동화된 테스트 케이스의 절차와 실행순서 명시

* 목 오브젝트: 조건부로 사전에 입력해두면 예정된 행위를 수행하는 객체

 

7) 소프트웨어 결함

- 에러/오류: 결함의 원인이 되는 것으로 인간의 실수에서 생성

- 결함/버그: 에러나 오류가 원인이 되어 소프트웨어에 포함되어 있는 것

- 실패/문제: 결함이 시스템 실행 시 발생되어 시각적으로 문제를 확인

 

* 결함 추이 분석: 분포, 추세, 에이징 분석

* 테스트 커버리지: 테스트 품질 측정 기술

 

* 결함 심각도: 치명적, 주요, 보통, 경미, 단순

* 결함 우선순위: 치명적, 높음, 중간, 낮음

 

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

* 처리량: 처리하는 작업의 양. 처리할 수 있는 트랜잭션 수

* 응답시간: 요청해서 응답 도착까지 걸린 시간

- 응답 후 입력에 대한 응답 출력(완료된 상태)

* 경과시간: 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간

- 요구를 입력하여 트랜잭션 처리 후 출력(완료가 되지 않은 상태)

* 자원사용률: 처리할 동안의 CPU, MEM, DISK 등의 사용량

 

* 성능 테스트 도구: JMeter, Load UI

* 시스템 모니터링 도구

- 스카우터: 애플리케이션 및 OS 자원에 대한 모니터링 기능을 제공하는 소프트웨어

 

성능 개선(나쁜 코드, 클린 코드)

 

* 소스코드 품질 분석

- 정적 분석 도구: 작성된 코드를 실행시키지 않고 분석

- 동적 분석 도구: 애플리케이션을 실행하여 코드에 존재하는 메모리 누수 현황 파악 및 스레드의 결함 분석

 

* 애플리케이션 성능 개선 방안

- 소스코드 최적화

- 아키텍처 조정을 통한 성능 개선

- 프로그램 호출 순서 조정 적용

- 소스코드 품질 분석 도구 활용

- 메모리 사용 최적화 적용

- 입출력 발생의 최소화

- System.out.println() 사용 제외

 

 

 

8장 SQL 응용

 

 

1. SQL 응용

1) 절차형 SQL

특정 사용자가 실행 순서를 정해놓고 사용하는 SQL문

* 프로시저: 절차형 SQL문을 활용하여 사전에 정의해놓은 SQL문을 호출할 경우 특정 기능을 수행하는 트랜잭션 언어

- CREATE OR REPLACE 프로시저 생성 SQL문

* 사용자 정의 함수: 사용자가 정의하여 SQL문 처리 수행 후 단일 값으로 반환하는 절차형 SQL

 

2) 응용 SQL 작성

* 집계 함수

- 여러 행과 테이블 전체로부터 하나의 결과값 반환

- GROUP BY문 사용

 

* 그룹 함수

- 소그룹 간의 중간 합계, 소계를 계산하여 산출하는 함수

- ROLLUP: 소계, 중간 집계값 산출

- CUBE: 다차원 집계 생성

- GROUPING SET: 컬럼에 대한 개별 집계

 

* 윈도 함수

- 데이터베이스를 사용한 온라인 분석 처리 용도로 사용하기 위해 SQL에 추가한 함수

 

* JDBC

- 자바 언어를 이용하여 DBMS에 질의하고 데이터를 조작하는 API 제공

 

* MyBatis

- DBMS에 질의하기 위해 SQL 쿼리를 별도의 파일에 분리하고 Mapping을 통해 SQL 실행

- 복잡한 JDBC 코드 단순화

- SQL문 거의 그대로 사용 가능

- 우수한 성능

 

* 동적 SQL: 조건에 따라 SQL문 구문 자체를 변경하고 조작이 가능

 

* DCL

- GRANT: 권한 부여 - ON TO WITH

- REVOKE: 권한 해제 - ON FROM CASCADE

 

 

 

9장

 

 

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

1) 소프트웨어 개발 보안

* 보안의 3대 요소: 기밀성, 무결성, 가용성

- 기밀성: 인가된 사용자에게만 접근이 허용됨

- 무결성: 오직 인가된 사용자만 사용 가능

- 가용성: 인가 받은 사용자는 언제라도 사용 가능

 

* 인증: 합법적인 사용자인지를 확인하는 모든 행위

* 부인 방지: 데이터를 송수신한 자가 송수신 사실을 부인할 수 없도록 송수신 증거를 제공함

* 보안 용어: 자산, 위협, 취약점, 위험

 

2) 서비스 공격 유형

*DOS 공격: 악의적으로 공격해 의도된 용도로 사용하지 못하게 하는 공격

* DDOS 공격: 공격자를 분산배치하여 동시에 특정 시스템을 공격하는 기법

- 구성 요소: 핸들러, 에이전트, 마스터, 공격자, 데몬 프로그램

- 공격 대응 방안: 보안 솔루션 운영, 차단 정책 업데이트, 시스템 패치

* XSS: 사용자가 해당 웹페이지를 열람함으로써 웹페이지에 포함된 부적절한 스크립트가 실행되는 공격

* SQL 삽입: DB 쿼리 로직이 변경되어 정보 유출 또는 DB의 변경을 가하는 공격

* CSRF: 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격

* UDP플러딩: 대량의 UDP 패킷 생성하여 자원을 고갈시키는 공격

* 스머프 또는 스머핑: 네트워크 전체에 ICMP Echo 패킷을 브로드캐스팅하여 마비시키는 공격으로 제3의 사이트를 이용해 공격하는 기법

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

 

** 애플리케이션 공격

* HTTP GET 플러딩: 캐시 제어 공격으로 캐싱 서버 유도

* Slowris: HTTP GET 메서드 개행

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

 

** 네트워크 서비스 공격

* 네트워크 스캐너, 스니퍼: 보안 취약점 파악 -> 공격 도구

* 패스워드 크래킹: 사전 크래킹과 무차별 크래킹 사용

* IP 스푸핑: IP 주소 위조

* 트로이 목마: 위장하여 해당 프로그램 동작 시 부작용

 

** 취약점 공격

* 랜드어택: 수신자가 자기 자신에게 응답 보내게

* 티어드롭: IP 패킷 재조합 과정에서 잘못된 fragment offset 정보로 인해 수신시스템이 문제를 발생하도록

* 봉크/보잉크: 프로토콜의 오류 제어를 이용한 공격 기법

 

3) 암호 알고리즘

 

대칭키

- 블록 암호 :  DES(54bits key, 64bits Block), AES(DES대체), SEED(KISA 구현, 고속 블록, 128bits)

- 스트림 암호: RC4

비대칭키

- 디피헬만

- RSA: 소인수분해의 어려움을 이용하여 암호화

해시

- SHA: 미국 표준

- MD5: 128Bits 해시 알고리즘

 

*SSH: 응용계층과 TCP/IP계층에서 웹데이터 암호화 및 전송 시 기밀성을 보장하는 공개키 기반의 보안 프로토콜

* 일방향 암호화: 절대로 복호화 불가능한 알고리즘

 

4) 정보 자산 주요 용어

- 자산, 사용자, 소유자, 관리자

- 자산 분류 기준: 소프트웨어, 하드웨어, 데이터, 문서, 시설, 자원 설비, 인력

 

5) 보안 기능

- 인증 관리, 권한 관리, 암호화, 중요 정보 처리

* 솔트

- 일방향 해시함수에서 다이제스트를 생성할 경우 추가되는 임의의 문자열

- 암호문을 다른 값으로 만드는 것

 

6) 예외 처리/세션 통제

* 세션 하이제킹: 세션을 가로채어 정상적인 인증 절차를 무시하고 불법으로 시스템 접속

 

7) 소프트웨어 개발 보안 적용 사례

- MS-SDL, Seven TouchPoints, CLASP

- 보안 취약점: 보안 사고의 원인이 되는 보안 허점(외부 공격, 해킹)

- 보안 약점: 개발 과정에서 발생할 수 있는 결함/버그와 같은 오류

 

8) 소프트웨어 개발 보안 구현

* 시큐어 코딩 가이드: 입어보니 시원한 에코캡

- 입력 데이터 검증 및 표현

- 보안 기능

- 시간 및 상태

- 에러처리

- 코드 오류

- 캡슐화

- API 오용

 

(1) 입력 데이터 검증 및 표현: SQL 삽입, XSS

* SQL Injection: 유효성 검증을 하지 않을 경우, URL에 SQL문을 삽입하여 DB로부터 정보를 열람하거나 조작할 수 있는 취약점 공격 기법

* XSS: 웹페이지에 악의적인 스크립트를 포함해 사용자 측에서 실행되게 유도하는 방법

<취약점 보완 방법>

- SQL 삽입: Prepared Statement

- XSS: 치환함수

 

(2) 보안 기능: 인증, 권한 관리, 암호화

* 인증 관련 보안 약점: 적절한 인증 X, 반복된 인증 시도 제한 기능 부재, 취약 패스워드 허용

* 권한 관리 보안 약점: 주요 자원에 대한 잘못된 권한 설정, 부적절한 인가

* 암호화 보안 약점: 취약 암호화 알고리즘, 충분하지 않은 키 길이, 하드코딩된 비밀번호

- 부적절한 난수, 솔트 없는 일방향 해시 함수 사용

* 시간 상태: 경쟁조건 - 하나의 객체에 두개 이상의 스레드가 동시 처리되는 상황, 종료되지 않은 반복문, 재귀 함수

* 에러 처리: 오류 메시지 정보 노출, 오류 상황 대응 부재, 부적절한 예외 처리

 

(5) 코드 오류: 타입 변환 오류, 메모리 부적절한 반환 / 개발자 오류

- Null Pointer 역참조

- 부적절한 자원 해제

- 해제된 자원 사용

- 초기화하지 않은 변수 사용

 

(6) 캡슐화

- 잘못된 세션에 의한 정보 노출 -> 싱글톤 패턴

- 제거되지 않은 디버그 코드

- 시스템 정보 노출

* 세션: 서버와 클라이언트 간의 논리적인 연결

* 싱글톤 패턴: 전역 변수를 사용하지 않고 하나의 객체를 만들어 어디서든지 참조할 수 있도록 하는 패턴

 

(7) API 오용: 의도된 사용에 반하는 방법으로 API를 사용하거나 보안에 취약한 API 사용 시 발생

- DNS 의존한 보안 결점

- 취약한 API

* API: 프로그램 개발 및 작성을 위한 서브 프로그램

 

9) 소프트웨어 개발 보안 테스트

- 보안 테스트 유형: 화이트박스 테스트, 블랙박스 테스트

* 화이트 박스 테스트: 프로그램 내부 로직을 보면서 수행하는 구조 기반 테스트

* 블랙박스 테스트: 외부 사용자의 요구사항 명세를 보면서 테스트하는 것(성능 테스트)

 

* 정적분석: 소프트웨어를 실행하지 않고 보안 약점 분석

* 동적 분석: 실행 환경에서 보안 약점 분석

 

* 시큐어 코딩: 설계 및 구현 단계에서 보안 취약점을 사전에 제거하고 안전한 소프트웨어를 만드는 코딩 기법

 

 

 

11장

 

 

 

1. 운영체제의 특징

1) 운영체제: 인터페이스를 제공하는 소프트웨어로 컴퓨터 시스템과 사용자의 상호작용할 수 있는 편리성 제공

* 인터페이스: 서로 다른 시스템 사이에서 정보를 공유하는 시스템 또는 경계

 

Windows: GUI 제공, 선점형 멀티태스킹 방식 제공, 자동 감지 기능 ,OLE(Object Linking and Embeded) 사용

Unix: 대화식 운영체제, 다중 작업 기능 제공, 다중 사용자 기능 제공, 이식성 제공, 계층적 트리구조 파일 시스템 제공

Linux: 유닉수 기반, 유닉스 특징, 오픈소스, 다양한 리눅스 운영체제 종류

MAC: 유닉스 기반 GUI 운영체제

안드로이드: 리눅스 기반의 안드로이드 운영체제

 

* 안드로이드

- 휴대용 장치를 위한 운영체제와 미들웨어, 사용자 인터페이스, 표준 응용 프로그램 등을 포함하고 있는 소프트웨어 스택.

리눅스 모바일 운영체제. 자바와 코틀린 언어로 응용 프로그램 작성 가능. 컴파일된 바이트 코드를 구동할 수 있는 런타임 라이브러리 제공

 

* 운영체제 제어

- GUI: 그래픽 기반 제어

- CLI: 사용자가 직접 명령어 입력 후 명령 내리는 방식

 

* 리눅스/유닉스 계열 기본 명령어

- 쉘: 컴퓨터 내부를 관리하는 커널과 사용자 간의 연결하는 명령어 창

 

* 운영체제 핵심 기능

- 메모리, 스토리지, 주변 기기 관리

- 메모리 관리, 프로세스 관리

- 메모리에 있는 프로그램을 CPU로 이동시켜 관리

 

* MMU(Memory Management Unit)

- CPU가 메모리에 접근하는 것을 관리하는 하드웨어 부품으로 가상 메모리를 실제 메모리 주소로 변환하는 장치

 

2) 프로세스 관리

- 생성 상태: 사용자로 인해 프로세스가 생성된 상태

- 준비 상태: CPU에 할당받을 수 있는 상태

- 실행 상태: 프로세스가 CPU를 할당 받아 동작 중인 상태

- 대기 상태: 프로세스 실행 중 처리로 인해 CPU를 양도하고 대기 리스트에서 기다리는 상태

- 완료 상태: 프로세스가 CPU 할당을 받고 주어진 시간에 완전히 수행한 상태

 

* 디스패치: 준비 상태에 있는 프로세스를 스케줄링하여 CPU에 할당

* 타이머 런 아웃(타임아웃): 지정된 시간이 지나면 스케줄러에 의해 PCB 저장

* PCB: 운영체제가 프로세스의 정보를 표현한 것

* 문맥 교환: 프로세스 상태를 PCB에 저장하고 다음 프로세스의 PCB로부터 문맥을 복원하는 작업

 

(1) 프로세스 스케줄링: CPU를 사용하려는 프로세스 사이의 우선순위를 관리하는 작업

- 프로세스 스케줄링 이용 시 CPU 이용률 증가, 오버헤드 응답시간, 반환시간, 대기시간 감소

 

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

* 응답 시간: Response Time으로 대기시간 + 수행시간

* 대기 시간: 프로세스가 할당되기 전까지 대기 큐에서 대기하는 시간

* 응답률: (서비스 시간 + 대기시간) / 서비스 시간 -> HRN(Highest Response Ratio Next)

 

(2) 선점형 스케줄링

- 하나의 프로세스가 CPU에 할당되어 있을 때 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유하는 스케줄링 방식

* 라운드로빈: 시간 설정

* SRT: 가장 짧은 거 먼저

* 다단계 큐: 작업 분할 하위 단계 작업 선정 및 독자적인 스케줄링

* 다단계 피드백 큐: FIFO + RR의 혼합 마지막은 RR

(3) 비선점형 스케줄링

: 하나 할당 받으면 CPU 반환 시까지 다른 프로세스가 CPU에 할당하지 못하는 기법

* 우선순위: 프로세스별로 우선순위가 주어지고 우선순위 따라 CPU 할당

* 기한부: 명시된 시간이나 기한 내 완료되도록 계획

* FCFS: 도착 순서에 따라 CPU 할당

* SJF: 가장 작은 서비스 시간을 가진 프로세스 우선순위

* HRN: 대기중인 프로세스 중 응답률이 가장 높은 프로세스 우선순위

 

3) 가상화

- 물리적인 리소스들을 사용자에게 하나로 보이게 하거나 하나의 물리적인 리소스를 여러 개로 보이게 하는 기술

- 플랫폼 가상화: 플랫폼 위에 독립된 환경을 만드는 기술

- 리소스 가상화: 소프트웨어가 실행되는 것처럼

- 컴퓨터 가상화: 물리적인 리소스를 논리적인 리소스로 사용

- 분산처리 기술: 여러대 컴퓨터로 대용량 처리

 

4) 컴퓨터 클라우딩

- 인터넷 통해 서버 접속해서 리소스 제공하고 자원들을 네트워크 통해서 어디서든지 접속할 수 있는 기술

- 인프라형: 서버, 스토리지 같은 시스템 자원 클라우드 제공

- 플랫폼형: 인프라 생성 및 관리하는 복잡함을 없애고 애플리케이션 개발과 실행 시 사용

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

 

5) 데이터 베이스

- 시스템과 프로그램이 사용할 목적으로 통합하여 관리되는 데이터의 집합

* 데이터베이스 종류

- 파일 시스템: 파일에 이름 부여하고 위치 정의 후 DB 전 단계의 데이터를 관리하는 방식

- 계층형 데이터베이스 관리시스템: 데이터를 상하 종속적인 관계로 계층화하여 관리하는 DB

- 망형 데이터베이스 관리 시스템: 네트워크의 망 형태로 논리적으로 표현한 DB 모델

 

* 데이터베이스 도구

- DB를 편리하고 쉽게 다룰 수 있도록 도와주는 도구

 

* DBMS: 데이터 관리의 복잡성을 해결하는 동시에 데이터 생성 및 관리 기능을 지원하는 소프트웨어

 

* 유형

- 키-값 DBMS

- 컬럼 기반 데이터 저장 DBMS: Key안에 컬럼과 value의 조합

- 문서 저장 DBMS: 값의 데이터 타입을 문서 타입으로 사용

- 그래프 DBMS: 그래프 데이터 표현

 

* 특징

- 데이터 무결성: 정확성, 일관성, 유효성이 유지되는 것

- 데이터 일관성: 저장 후 데이터는 일정

- 데이터 회복성: 장애 발생 시 회복 가능

- 데이터 보안성: 불법적인 노출 변경, 손실로부터 보호

- 데이터 효율성: 응답시간, 저장 공간 활용 등 최적화

 

* ERD

엔티티(네모), 속성(원), 관계(마름모)

 

6) 트랜잭션

- DB 시스템에서 논리적인 기능을 수행하기 위한 작업의 기본 단위

 

* 트랜잭션의 특성

- Atomicity 원자성:  완료되든지 아니면 전혀 반영 안 되도록 복구되어야 함

- Consistency 일관성: 상태가 같아야 함

- Isolation 독립성, 격리성, 순차성: 다른 트랜잭션의 연산이 기어들 수 없다(접근 불가), 수행결과 참조 불가능

- Durability(영속성 지속성): 시스템이 고장나더라도 영구적으로 반영되어야 함

 

* 트랜잭션 상태

- 활동 상태: 초기 상태, 트랜잭션이 실행 중인 상태

- 부분 완료 상태: 마지막 명령문 실행되고 난 후 가지는 상태

- 완료 상태: 트랜잭션이 성공적으로 처리된 후 완료된 상태

- 실패 상태: 정상적 실행이 더이상 진행되지 않는 상태

- 철회 상태: 트랜잭션이 취소되고 DB가 트랜잭션 시작 전 상태로 환원

 

* 용어

- TCL: 트랜잭션 결과를 허용하거나 취소하는 목적

- COMMIT: 모든 작업을 정상적으로 처리하겠다고 트랜잭션을 확정하는 명령어

- ROLLBACK: 트랜잭션 실패로 작업을 취소하고 이전 상태로 되돌리는 제어어

- CHECKPOINT: 트랜잭션을 저장하는 시기를 설정하는 명령어

- 트리거: 트랜잭션 취소 이외 조치를 명세할 필요가 있는 경우 메시지를 보내 어떤 값을 자동으로 갱신하도록 프로시저를 가동시키는 방법

 

7) CRUD

- Create, Read, Update, Delete

 

8) 11장

* NoSQL: 전통적 RDBMS와 달리 데이터 저장이 필요한 테이블 스키마가 필요하지 않고 Join연산도 하지 않는 수평적 확장이 가능한 DBMS

* 온톨로지: 설계 시 개념, 속성, 관계를 컴퓨터가 이해할 수 있도록 서술

* 시맨틱 웹: 온톨로지를 이용하여 서비스 검색, 조합 등 기능들을 자동화하는 웹

* 데이터 마이닝: 대규모로 저장된 데이터 안에서 체계적이고 자동적으로 규치깅나 패턴을 찾아내는 기술

* 빅데이터: 주어진 비용과 시간을 초과한 페타바이트 크기의 정형 데이터

 

9) 네트워크

- 원하는 정보를 수신자에게 정확하게 전달하기 위한 인프라

- WAN: 넓고 라우팅 알고리즘이 필요한 네트워크

- LAN: 근거리 네트워크로 작은 지역을 커버하는 네트워크

 

* OSI 7계층

물데네전세표응

* 프로토콜: 이기종 시스템 간 데이터 교환을 할 수 있도록 하는 표준화 통신 규약

* 프로토콜 기본 요소: 구문, 의미, 타이밍 (구의타)

* 네트워크 프로토콜: 컴퓨터나 통신장비 사이에서 메시지를 교환하는 통신규약이나 규칙

 

* TCP: 근거리 통신망이나 인터넷에서 신뢰성 있는 전송을 수행하는 프로토콜

- 특징: 신뢰성 보장, 연결 지향적, 흐름제어, 혼잡제어

 

* UDP: 비연결성이고 신뢰성이 없으며 순서화되지 않는 데이터그램 서비스를 제공하는 통신 프로토콜

- 특징: 비연결성, 비신뢰성, 순서화되지 않은 데이터그램 서비스 제공, 단순헤더

 

* IPv4: 데이터 교환을 위해 32bit 주소 체계를 갖는 네트워크 계층의 프로토콜(유니캐스트, 멀티캐스트, 브로드캐스트)

* IPv6: 차세데 인터넷 프로토콜로 128bit 주소체계를 갖는 프로토콜(유니캐스트, 멀티캐스트, 애니캐스트)

 

* 패킷 스위칭: 작은 블록의 패킷으로 데이터를 전송하며 전송하는 동안만 네트워크 사용

 

* X.25: 두 단말장치가 패킷 통신망을 통해 원활한 패킷 전송을 하기 위한 프로토콜

 

* 프레임 릴레이: ISDN을 사용하기 위한 프로토콜

 

* ATM: 비동기 전송모드인 광대역 전송에 사용되는 스위칭 기법

 

* 서킷 스위칭: 리소스를 특정 사용계층이 독점하여 통신하는 방식

 

 

10) 라우팅 프로토콜

* 거리벡터 알고리즘: 인접 라우터와 정보를 공유하여 목적지까지의 방향과 거리를 결정

- RIP: 자율 시스템 내에서 사용하는 거리 벡터 알고리즘을 기반으로 개발된 통신규약으로 최대 홉수를 15개로 제한한 라우팅 프로토콜

- IGRP: RIP의 문제점을 개선하기 위해 만들어진 통신규약으로 대규모로 복잡한 통신망에서의 운용을 산정한 규격으로 되어 있고
신뢰성 및 부하, 대역폭, 지연을 고려하여 결정하는 프로토콜

 

* 링크 상태 알고리즘

- 링크 정보를 모든 라우터에게 전달하여 최적의 경로 구성

- OSPF(변화시에만), BGP(규모가 큰 네트워크를 상호 연결하는 알고리즘)

 

* 라우팅 프로토콜: 최종 목적지까지 패킷을 최소 비용 또는 최소 홉수를 알고리즘을 통해 적절한 경로를 설정해주는 프로토콜

 

 

 

 

12장 제품 소프트웨어 패키징

1. 제품 소프트웨어 패키징

1) 제품 소프트웨어 패키징

- 개발이 완료된 소프트웨어를 고객에게 전달하기 위해 패키징하는 과정

 

* 모듈: 기능 단위로 분해되고 추상되어 재사용 및 공유가 가능한 단위

* 모듈화: 모듈을 통해 제품 소프트웨어의 성능을 향상시키고 시스템의 통합, 수정을 용이하게 하는 SW 설계 기법

 

2) 릴리즈 노트

- 최종 사용자 고객에게 릴리즈 정보 제공 문서(현재 시제)

* 구성 요소

 - 헤더: 문서 이름, 제품 이름, 버전 정보, 릴리즈 날짜

 - 개요: 제품 및 변경에 대한 간략한 전반적인 개요

 - 프로세스(모정개 영정추)

 

3) 제품 소프트웨어 패키징 도구: 지식 재산권 보호하고 관리하는 기능 제공, 배포 보장 도구

 

4) 저작권 보호 패키징 도구

* DRM: 데이터의 안전한 배포를 활성화하거나 불법 배포를 방지하여 디지털 매체를 통해 유통되는 데이터의 저작권을 보호하기 위한 시스템

 

5) 암호화

텍스트, 콘텐츠 등을 암호문으로 만드는 기술

* 공개키 기반 구조(PKI): 공개키 암호화 방식 기반으로 디지털 인증서를 활용하는 소프트웨어, 하드웨어, 사용자 등을 총칭하는 암호 기술

* 대칭 및 비대칭 암호화: 암호화 시 키, 복호화 키 생성

* 전자서명: 전자적 형태의 정보

 

* DOI(Digital Object Identifier): 디지털 저작물에 특정 번호를 부여하는 일종의 바코드 시스템

* URI: 인터넷에 있는 자원을 나타내는 유일한 주소

* XrML: 디지털 콘텐츠, 웹서비스 권리 조건을 표현한 XML 기반의 마크업 언어

* MPEG-21: 멀티미디어 표준 규격

* JSON: 비동기 브라우저/서버통신(Ajax)을 위해 '속성-값'쌍, '키-값'쌍으로 이루어진 데이터 object를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷

* 코드 난독화: 역공학을 통한 공격을 막기 위해 프로그램 소스를 알아보기 힘든 코드로 바꾸는 기술

* Secure DB: 커널 암호화 방식으로 데이터베이스 파일을 직접 암호화하고 접근 제어와 보안적인 요소가 추가된 데이터베이스 강화 기술

* SSO(Single Sign On): 한번 인증절차를 통해 재인증 절차 없이 사용할 수 있는 통합 로그인 기술

* CMS: 콘텐츠 생산 전 활동의 과정을 관리하는 기술

 

6) 제품 소프트웨어 매뉴얼 작성

* 제품 소프트웨어 매뉴얼: 제품 소프트웨어 개발 단계부터 적응한 기준이나 패키징 이후 설치 및 사용자 측면의 주요 내용을 기록한 문서

* 제품 소프트웨어 설치 매뉴얼

* 제품 소프트웨어 사용자 매뉴얼

* 제품 소프트웨어 배포판: 배포 정보를 포함하여 개발된 컴포넌트 혹은 패키지가 제품화된 것

 

7) 제품 소프트웨어 패키징의 형상 관리

* 형상 관리: 소프트웨어의 변경사항을 관리하기 위해 개발된 일련 활동

 

* 형상관리 도구 기능: 체크인, 체크아웃, 커밋

- 체크인: 수정한 소스를 형상관리 저장소로 업로드하는 기능

- 커밋: 최종적으로 업데이트 되었을 대 형상관리 서버에 반영하도록 하는 기능

* 역할: 관리 유용, 동시개발, 빠른 복구

 

* 형상 식별: 계층 구조로 구분하여 수정 및 추적이 용이하도록 하는 작업

* 버전 제어: 다른 버전의 형상 항목을 관리하고 특정 절차와 도구를 결합시키는 작업

* 형상 통제: 현재의 기준선이 잘 반영될 수 있도록 조정

* 형상 감사: 확인, 검증, 검열 과정을 통해 공식적으로 승인

* 형상 기록: 보고서 작성

* 베이스 라인: 소프트웨어 변경 통제 시점

 

8) 버전 관리 도구

공유폴더 방식: 공유 폴더에 복사하는 방식(RCS)

클라이언트/서버 방식: CVS, SVN

분석 저장소 방식: 원격 저장소로 (GIT, Bitkeeper)

 

* 공유 폴더 방식

- 파일의 변경 사항을 데이터베이스에 기록하여 관리

 -- RCS: 파일, 잠금 방식으로 소스파일 수정은 1명으로 제한하여 버전 관리

* 클라이언트 서버 방식

- 버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리되는 방식

- 모든 버전 관리는 서버에서 수행

- 서버에 문제가 생기면 서버가 복구되기 전가지 다른 개발자와의 협업 및 버전 관리 작업은 중단

-- CVS: 서버와 클라이언트를 구성되어 다수의 인원이 동시에 접근하여 버전관리 가능

-- SVN: CVS개선. 아파치재단. trunk 디렉토리에서 모든 작업 수행. 커밋 시 revision이 1씩 증가. 서버는 유닉스. 디렉토리 파일을 자유롭게 이동 가능

 

* 분산저장소 방식

- 원격 저장소와 분산된 개발자 PC의 로컬 저장소에 함께 저장되어 관리되는 방식

- 로컬 저장소에서 버전 관리가 가능하므로 원격 저장소에 문제가 생겨도 로컬 저장소의 자료를 이용하여 작업 가능(SVN과 비슷한 중앙 통제 방식)

 

* Git

- 브랜치를 이용하면 기본 버전 관리 틀에 영향을 주지 않으면서 다양한 형태의 기능 테스팅이 가능

- SVN 저장소에 대해 이관 가능

- 브랜치, 체크아웃, 커밋 등 로컬 환경에서의 형상 관리 기능

 

 

 

 

 

 

https://ss-o.tistory.com/95?category=967966

반응형

'정처기' 카테고리의 다른 글

정보시스템 구축 관리  (0) 2021.05.14
프로그래밍 언어 활용  (0) 2021.05.09
소프트웨어 개발  (0) 2021.05.08
데이터베이스 구축  (0) 2021.05.07
소프트웨어 설계  (1) 2021.05.06