6장 : 통합 구현(2과목)
1. 단위 모듈 (Unit Module)
- 한 가지 동작을 수행하는 기능을 모듈로 구현한 것
- 단위 기능이라고도 불림
- 하나의 작은 프로그램
- 독립적인 컴파일이 가능
- 호출되거나 삽입이 가능
1-1. 단위 모듈의 구현 순서
1 | 단위 기능 명세서 작성 | 계층적으로 구조화한다. 정보 은닉을 고려한다. |
|
2 | 입출력 기능 구현 | CLI, GUI와 연동한다. | |
3 | 알고리즘 구현 | 사용자의 요구와 일치하는지 확인한다. |
2. 단위 모듈 테스트 ★★★
- 정해진 기능이 정확히 수행하는지 검증하는 것
- 사전 준비가 필요
- 시스템 수준의 오류는 잡아낼 수 없음
- 종류
- 화이트박스 테스트
- 블랙박스 테스트
2-1. 화이트박스 테스트 ★★★
- 모듈의 원시 코드를 오픈시킨 상태에서 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스 설계
- 원시 코드(모듈)의 모든 문장을 한 번 이상 실행함으로써 수행
- 모듈 안의 작동을 직접 관찰
- 설계된 절차에 초점을 둔 구조적 테스트, 프로시저 설계의 제어 구조를 사용하고 테스트 초기에 적용
- 검증 기준
- 문장 검증 기준(Statement Coverage): 소스 코드의 모든 구문이 한 번 이상 수행되도록 설계
- 분기 검증 기준(Branch Coverage): 소스 코드의 모든 조건문이 한 번 이상 수행되도록 설계
- 조건 검증 기준(Condition Coverage): 소스 코드의 모든 조건문의 각각의 조건식 대해 조건이 True인 경우와 False인 경우가 한 번 이상 수행되도록 설계
- 분기/조건 기준(Branch/Condition Coverage): 소스 코드의 모든 조건문과 각 조건문에 포함된 개별 조건식의 결과가 True인 경우와 False인 경우가 한 번 이상 수행되도록 설계
- 종류
- 기초 경로 검사(Base Path Testing): 절차적 설계의 논리적 복잡성 측정, 실행 경로의 기초 정의 지침
- 제어 구조 검사(Control Structure Testing)
- 조건 검사(Control Testing): 모듈 내에 있는 논리적 조건을 테스트하는 테스트 케이스 설계 기법
- 루프 검사(Loop Testing): 프로그램의 반복 구조에 초점을 맞추어 실시
- 데이터 흐름 검사(Data Flow Testing): 변수의 정의, 사용 위치에 초점을 맞추어 실시
2-2. 블랙박스 테스트 ★★★ 동경원오비
- 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증하는 테스트(= 기능 테스트)
- 사용자의 요구사항 명세를 보면서 테스트하는 것으로 주로 구현된 기능을 테스트 함
- 소프트웨어 인터페이스에서 실시되는 테스트로 테스트 과정의 후반부에 적용됨
- 종류
- 동치 분할 검사(Equivalence Partitioning Testing, 동치 클래스 분해)
입력자료에 초점을 맞추어 테스트 케이스(동치 클래스)를 만들고 검사하는 방법(=동등 분할 기법)
입력 조건에 타당한 입력 자료와 타당하지 않은 입력 자료의 개수를 균등하게 하여
테스트 케이스를 정하고, 해당 입력 자료에 맞는 결과가 출력되는지 확인 - 경계값 분석(Boundary Value Analysis)
입력 자료에만 치중한 동치 분할 기법을 보완하기 위한 기법
중간값보다 경계값에서 오류 발생 확률이 높다는 점을 이용하여 경계값을 테스트 케이스로 선정 - 원인-효과 그래프 검사(Cause-Effect Graphing Testing)
입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음
효용성이 높은 테스트 케이스를 선정하여 검사 - 오류 예측 검사(Error Guessing)
과거의 경험이나 확인자의 감각으로 테스트
보충적 검사 기법이며, 데이터 확인 검사라고도 함 - 비교 검사(Comparison Testing)
여러 버전의 프로그램에서 동일한 테스트 자료를 제공하여 동일 결과가 출력되는지 확인하는 기법
- 동치 분할 검사(Equivalence Partitioning Testing, 동치 클래스 분해)
3. IPC (Inter Process Communication)
- 모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합
- 메모리 모듈에 속함
- 종류
- Shared Memory : 다수의 프로세스가 공유 가능한 메모리를 구성하여 프로세스 간 통신을 수행
- Socket : 네트워크 소켓을 이용해 네트워크를 경유하는 프로세스들 간 통신을 수행
- Semaphores : 공유 자원에 대한 접근 제어를 통해 프로세스 간 통신을 수행
- Pipe & names Pipes : 선입선출 형태로 구성된 메모리를 여러 프로세스가 공유하여 통신을 수행
- Message Queueing : 메시지가 발생하면 이를 전달하는 형태로 프로세스 간 통신을 수행
4. 통합 개발 환경 (IDE : Integrated Development Environment)
- 편집기, 컴파일러, 디버거 등을 하나의 인터페이스로 통합한 것
- 오류에 대한 부분의 수정이 용이
- 외부 서비스와 연동이 가능
- 종류 : 이클립스, 비주얼 스튜디오, Xcode, 안드로이드 스튜디오, IDEA
5. 빌드 도구
- 소스 코드 파일들을 실행 가능한 제품 소프트웨어로 변환하는 과정 또는 결과물
- 전처리(Preprocessing), 컴파일 등의 작업들을 수행하는 소프트웨어
- 종류
- ANT (Another Neat Tool) : 아파치에서 개발, XML 기반, 유연성 높음, 스크립트의 재사용 어려움
- Maven : 아파치에서 개발, ANT의 대안, Dependency를 설정하여 라이브러리를 관리
- Gradle : 안드로이드 공식 빌드 도구
6. 그룹웨어 (Groupware)
- 여러 사용자가, 하나의 프로젝트를, 서로 다른 작업 환경에서, 원활히 작업할 수 있도록 도와주는 소프트웨어
7. 테스트 케이스 vs 테스트 프로시저 vs 테스트 시나리오
종류 | 설명 |
테스트 케이스 | 테스트에 필요한 입력 데이터, 테스트 조건, 예상 결과 등을 기입한 문서 테스트 수행에 필요한 환경이나 테스트 케이스 간의 의존성을 기입한 문서 |
테스트 프로시저 | 테스트 스크립트라고도 불림 테스트 케이스의 실행 순서를 의미 |
테스트 시나리오 | 여러 개의 테스트 케이스를 묶은 것 테스트 케이스 수행에 대한 절차를 명세한 문서 |
8. EAI와 ESB의 비교
구분 | EAI | ESB |
목적 | 애플리케이션 통합 | 애플리케이션 통합, 프로세스 통합 |
방식 | Native Adapter | 웹 서비스, JMS, IIOP |
표준 | 대부분 표준 | 개방형 표준 |
통합 범위 | 기업 내 이기종 애플리케이션 | 기업 내외 애플리케이션 |
유지 비용 | 높음 | 상대적 낮음 |
확장성 | 높음 | 매우 높음 |
활용 | E-Biz 인프라 | SOA 인프라 구현 핵심 플랫폼 |
8-1. EAI
- 기업에서 운영하는 서로 다른 애플리케이션을 Backend 소프트웨어에 관계없이 통합하는 솔루션
8-2. EAI 구성 요소
- EAI 플랫폼 : 메시지 큐, 트랜잭션 미들웨어 기능 수행
- Application Adapter : 재사용성 높은 인터페이스 지원
- Broker : 데이터 포맷 및 코드 변환
- Business Workflow : 미리 정의한 업무 프로세스에 따라 처리하는 소프트웨어 모듈
8-3. ESB
- 메시징, 웹 서비스, 데이터 변형, 인텔리전트 라우팅을 결합하여 다양한 애플리케이션 간 상호작용을 트랜잭션 무결성으로 연결 및 조절하는 표준 기반의 통합 플랫폼
8-4. ESB 구성 요소
- 레거시 연동 컴포넌트
- 메시지 변환 및 가공
- BPM
- 컨트롤과 모니터링
- 통합개발 환경
8-5. ESB 도입 효과
- 애플리케이션 통합 및 협업 지원
- 실시간 기업(RTE) 기반 제공
- 공통 서비스 환경 제공
- IT 거버넌스 Align
9. 웹 서비스
- 네트워크에 연결된 다른 컴퓨터 간 상호작용을 위한 서비스 또는 플랫폼
- 표준 방식으로 분산 저장된 자원들을 공유하고 호환 가능한 인터넷 서비스
- XML 기반 플랫폼과 구현 언어가 독립적인 컴포넌트 기반의 분산 컴퓨팅
9-1. 웹 서비스 필요성
- SOAP, UDDI, XML 등 관련 기술의 발달과 표준화의 정착
- 복잡해진 기업 환경
- e-Commerce 대두
구성 | 설명 |
SOAP | Simple Object Access Protocol SOA(서비스 중심 아키텍처)를 구현하기 위한 규약 웹 서비스의 등록, 검색과 비지니스의 발행, 검색을 하기위한 기술적 스펙 컴퓨터 네트워크상에서 HTTP, HTTPS 등을 통해 XML 기반 메시지를 교환하는 프로토콜 서로 다른 것들을 연결시켜 주는 프로토콜로 HTML, XML을 이용해 어느 플랫폼이든지 접근 가능 원활한 상호 운용을 목적으로 하여, 어떤 것을 사용했든지 간에 HTML, XML에 동의한다면 표준 방식으로 이어 줌 |
SOAP의 구성: WSDL(웹서비스를 XML로 기술한 언어) + UDDI(웹서비스 저장소) |
|
UDDI | 웹 서비스를 표현하고 기술하는 XML 문법 웹 서비스 등록하고 이를 실시간으로 검색할 수 있는 디렉토리 또는 프로토콜의 집합체, XML 기반 정보 레지스트리용으로 개발 |
WSDL | 플랫폼으로부터 독립적이고 단순한 XML 기반의 메시지 프로토콜 포맷 |
REST: ROA(자원 중심 아키텍처)를 구현하기 위한 규약 | |
REST | 자원의 표현에 의한 상태 전달 HTTP URL을 통해 자원을 명시하고 HTTP 메소드를 통해 해당 자원에 대한 생성, 조회, 갱신, 삭제 등의 명령을 적용할 수 있는 분산 하이퍼 미디어 시스템을 위한 소프트웨어 아키텍처 월드 와이드 웹과 같은 분산 하이퍼 미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식 REST 형식을 따른 시스템을 RESTful이라고 부름 PUT, GET, POST, DELETE, PATCH 사용 |
9-2. 웹 서비스 특징
- 단순성 (XML 기반)
- 상호운영성
- 시스템 구조의 유연성
- 사용의 편리성
- 통합환경의 제공
- IT 개발/운영비용의 절감
- 델파이 기법: 다양한 전문가의 의견에 따른 예측 방법
- JSON(JavaScript Object Notation): 속성-값-쌍으로 이루어진 데이터 객체를 전달하기 위해 사람이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷 // 비동기 처리에 사용되는 AJAX에서 XML을 대체하여 사용
- XML(eXtensible Markup Language): 특수한 목적을 갖는 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어로, HTML 문법이 각 웹 브라우저에서 상호 호환적이지 못한 문제와 SGML의 복잡함을 해결하기 위해 개발
- AJAX(Asynchronous JavaScript and XML) : 자바 스크립트 등을 이용하여 클라이언트와 서버 간의 XML 데이터를 교환 및 제어함으로써 이용자가 웹 페이지와 자유롭게 상호작용할 수 있도록 한 비동기 통신 기술