정보처리기사_2과목_소프트웨어개발(3)

2021. 2. 24. 13:25공부/정보처리기사

728x90
반응형

제품소프트웨어 패키징

1. 애플리케이션 패키징
 1)패키징 
프로그램 제작자가 최종사용자가 사용 할 프로그램을 다양한 환경에서 쉽게 자동으로 설치(업데이트/삭제 가능)할 수 있게 패키지를 만들어 배포하는 과정을 말한다.(매뉴얼 포함)
 2)릴리즈 노트
소프트웨어 제품과 함께 배포 되고 이문서들에는 제품의 주요 변경 사항이 담겨 있다.

릴리즈 노트 구성항목
구분 → 설명
헤더(header) → 문서이름(예: 릴리스 노트), 제품이름, 릴리스번호, 출시일, 노트날짜, 노트버전등
개요 → 제품 및 변경에 대한 간략한 개요
목적 → 버그 픽스와 새로운 기능 목록
이슈 요약 → 버스수정이나 개선사항에 대한 짧은 설명
재현 단계 →버그발생을재현하기 위한 절차
해결책 → 버그수정을 위한 수정/ 개선 사항의 간단한 설명
최종 사용자 영향 →버전 변경에 따른 최종 사용자 기준의 기능 및 응용 프로그램 상의 영향도 기술
SW지원 영향도 →버전 변경에 따른 SW지원 프로세스 및 영향도 기술 
참고 → 소프트 웨어나 하드웨어의 설치, 업그레이드 제품 문서화에 관한 참고사항(문서화 업데이트 포함)
면책 → 회사및 표준 제품 관련 메시지, 프리웨어 불법 복제 금지 등 참조에 대한 고지사항
연락처 → 사용자 지원 및 문의 관련한 연락처 정보
애플리케이션 배포 도구
배포를 위한 패기징시에 디지털 컨텐츠의 지적 재산권을 보호 하고 관리하는 기능을 제공하며, 안전 유통과 배포를 보장하는 도구이자 솔루션

구성요소
암호화(Encryption) : 컨텐츠/라이센스 암오화, 전자서명
인증(Authentication) : 라리센스 발급 및 사용의 기준이 되는 사용자 인증 기술
키 관리(Key Management) : 컨텐츠를 암호화한 키에 대한 저장 및 배포기술(Centralized, Enveloping)
저작권표현(Right Expression) : 라이센스의 내용 표현 기술
크래킹 방지(Tamper Resistance) : 크랙의 의한 컨텐츠 사용 방지 기술
애플리케이션 모니터링 도구
- 애플리케이션의 선능을 모니터링 하여 장애를 미리 예방하기 위하여 필요

도구와 종류
1. 애플리게이션 변경영향관리
2. 애플리케이션 성능관리
3. 애플리케이션 동적분석
4. 애플리케이션 정적분석
DRM(Digital Rights Management)
디지털 저작권 관리의 약자로, 디지털 콘텐츠 제공자의 권리와 이익을 안전하게 보호하며 불법복제를 막고 사용료 부과와 결제대행등 콘텐츠의 생성에서 유통.관리 까지를 일괄적으로 지원하는 기술이다. - 요약 > 디지털 콘텐츠 제공자의 권리와 이익을 보호하는 기술

DRM 시스템 구성 요소
구분 / 설명
콘텐트 제공자 / 콘텐츠를 제공하는 저작권자
콘텐트 분배자 / 쇼핑몰 등 으로써 암호화된 콘텐츠 제공
패키저(Packager) / 콘텐츠를 메타데이터와 함께 배포 가능한 단위로 묶는 기능
보안 컨테이너 / 원본을 안전하게 유통하기 위한 전자적 보안 장치
DRM컨트롤러 / 배포된 콘텐르의 이용권한을 통제
Clearing House(클리어링 하우스) / 키관리 및 라이센스 발급 관리

DRM의 핵심적 기술 요소
암호화, 키관리, 암호화 파일, 식별 기술, 저작권표현, 정책관리, 크랙방지, 인증, 인터페이스, 이벤트보고, 사용권한

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

국제 표준 제품 품질 특성

프로덕트 : ISO9126, ISO14598, ISO12119
프로세스 : ISO12207, CMM, SPICE, CMMI

ISO9126 → 사용자 관점에서의 SW품질특성의 표준화 작업 수행
ISO12207 → 소프트웨어 프로세스에 대한 표준화

CMM → 성숙도 5단계
제품소프트웨어 버전관리

S/W 버전관리 도구
 버전관리 필요성
   오류복구, 이전버전으로의 복구, 개발수정부분에 대한 전체 동기화 과정의 자동화, 소스 코드의 변경 사항 추적, 안정적인 대규모 수정 작업, 백업

버전관리 용어
구분 / 설명
REPOSITORY (저장소) / 관리대상의 모든 파일, 관련 버전, 변경 이력정보를 저장하는 공유 데이터 베이스
TRUNK / 주류, 프로젝트의 중심
BRANCH / 주류에서 파생된 프로젝트
CHECK OUT / 저장소에서 선택한 파일 또는 디렉토리를 현재 작업 환경으로 복사
CHECK IN, COMMIT / 작업 파일 또는 디렉토리의 변경 사항을 저장소에 새 버전으로 저장

버전 프로그램 종류
CVS, SVN, GIT
빌드 자동화 도구
 자동화 도구 툴 
ANT →  안전성이 좋고 , 문서화가 잘되어 있다.
MAVEN → 아주 적은 설정 만으로도 프로젝트를 빌드하고, 테스트를 실행하고, 품질 보고서 생성 할수 있다.
GRADLE → 기존의 ANT 와 MAVEN을 보완
JENKINS → 프로젝트표준 컴파일 환경에서의 컴파일 오류 검출
                자동화 테스트 수행 (CVS/SVN/GIT과 같은 버전관리시스템과 연동하여 코드 변경 감지)

애플리케이션 테스트 관리
애플리케이션 테스트케이스 설계
1. 테스트 케이스
소프트웨어가 목표하는 보장성을 만족할 수 있도록 최적의 테스트 케이스로 가능한 많은 결함을 발견할수 있어야한다.

테스트 케이스 작성 절차
참조문서수집 → 테스트케이스작성→ 내부검토→ 요구사항대비커버리지분석 → 승인

2.테스트 레벨
모듈시험 - 코딩이 끝난 후 설계의 최소 단위인 모듈에 초점을 두고 검사하는 단계
            - 화이트 검사 기법 적용
통합시험 - 단위검사가 끝난 모듈을을 하나로 결합하여 시스템으로 완성하는 과정에서의 검사
            - 모듈간의 인터페이스와 연관된 오류를 밝히기 위한 검사
            - 동시식(BIG-BANG), 하향식(TOP-DOWN), 상향식(BOTTOM - UP), 연쇄식(THREADS)등 
시스템 시험(성능테스트)
- 외부기능 테스트
- 내부기능 테스트
- 부피테스트
- 스트레스테스트
- 성능테스트
- 호환성테스트
- 신뢰성테스트
- 복구테스트
- 보수용이성테스트

인수시험
사용자측 관점에서 소프트웨어가 요구를 충족하는지를 평가
알파테스트 - 개발자위치에서 사용자 테스트
베타테스트 - 사용자의 환경에서 사용자가 테스트

3.테스트 시나리오
-테스트 할 수 있는 모든 기능을 말하는 것으로 테스트 조건 또는 테스트 가능성이라고 한다.
-테스트 절차 명세 
테스트 시나리오 작성 절차
요구사항 문서 리딩 → 각 요구사항에 대해 가능한 사용자 행동 및 목표 파악 → 
적절한 분석 후에 소프트웨어의 각 기능을 검증하는 다양한 테스트 시나리오 나열 → 
추적성 매트릭스 생성 : 가능한 모든 테스트 시나리오를 나열하면 각요구사항에 대한 테스트 시나리오가 있는지 확인위해 필요 → 생성된 시나리오 검토 

4.테스트 지식 체계(ISO 29119)
소픝트웨어 테스팅을 위한 국제 표준으로 검증 및 확인 활동 중에서 동적 테스팅에 대한 절차와 기법들을 다룬다.

구성 1. 개념및 정의 2. 테스트 프로세스 3. 테스트 문서화 4. 테스트 기법 5. 키워드 주도 테스팅

애플리케이션 통합 테스트
결함관리도구 - 결함을 추적하고 관리하는 활동을 결함 관리라고 한다.
- 결함 관리 시스템
- 버그 추적 시스템
- 이슈 관리 시스템

결함관리 상용도구
HP QC(Quality Center)
IBM Clear Quest
JIRA

결함관리 오픈소스 도구
bugzilla
Trac
Mantis

테스트 자동화 도구
테스트에 포함되는 여러 과정들을 자동적으로 지원하여 생산성 및 일관성을 향상 시킬수 있다.

자동화 도구
QTP - hp의 기능적 테스팅 툴이다ㅏ.
      - qtp는 종합적인 테스트 운영 툴인 quality center와 함께 사용될 수 있다.
Rational Robot - IBM의 툴이며, ERP애플리케이션과 마찬가지로 클라이언트/서버, 전자 상거래를 위한 회귀, 기능적 환경설정 테스트를 자동화하기 위해 사용된다.
Selenium - 오픈소스 웹 자동화 툴이며, 모든 종류의 웹 브라우저들을 지원한다.

3. 통합 테스트
단위검사가 끝난 모듈들을 하나로 결합하여 시스템으로 완성하는 과정에서의 검사이다.

동시식 방안(Big-Banf Approach, 비점진적 통합,차분 통합 검사)
- 단계적으로 통합하는 절차 없이 모든 모듈이 한꺼번에 결합되어 하나로 시험한다.
- 혼란스럽고, 결함의 원인 발견이 어려우며 통합기간이 훨씬 많이 소요되므로 바람직하지 않다.

하향식 통합
stub 필요 , 깊이우선 통합과 너비우선 통합, 점차적으로 위에서부터 아래로 이동
순서 **
1. 주 모듈을 드라이버로 사용하고, 주 모듈의 하위 모듈을들 스텁으로 대신한다.
2. 깊이 우선 또는 너비 우선의 등의 통합방식에 따라 하위 스텁들을 실제 모듈과 대체 한다.
3. 각 모듈이 통합 될때 마다 시험을 실시한다.
4. 시험이 통과할 때마다 또 다른 스텁이 실제 모듈로 대체된다.
5. 새로운 오류가 발생하지 않음을 보장하기 위새 회귀 시험을 실시한다.

상향식 통합
드라이버 필요, 점차적으로 아래부터 위로 이동
순서 **
1. 하위 모듈은 소프트웨어의 부수적 기능을 수행하는 클러스터(cluster)로 조합한다.
2. 각 클러스터의 시험을 위한 시험 사례 입출력을 조정하도록 드라이버를 개발한다.
3. 각 클러스터를 시험한다.
4. 드라이버를 제거하고 클러스터는 위로 이동하며 소프트웨어 구조를 상향식으로 만들어간다.
5. 최종 드라이버 대신 주프로그램을 대체시키고 전체적인 소프트웨어 구조를 완성한다.

회귀 시험(Regression Testing) 유지보수형 테스트
새로운 결함 발생의 가능성에 대비하여 이미 실시했던 시험 사례들의 전부 혹은 일부를 재실시


애플리케이션 성능 개선

알고리즘
컴퓨터로 문제를 풀기위한 단계적인 절차이며, 특정 작업을 수행하기 위한 명령어들의 집합

소스코드 품질 분석 도구
정적 분석도구 - 소스코드의 실행 없이 코드 자체만으로 분석
                   - cpp, pmd, checkstyle 등

동적 분석도구 - 프로그램을 실행하여 코드 분석
                   - Valgrind, Avalanche 등

코드최적화
동등한 의미를 가지면서 실행시간이나 메모리를 줄이는것
코드 최적화 규칙 - 느슨한 결합, 컴파일러의 버전과 종류 고려            

인터페이스 구현
내부나 외부의 모듈간의 연계기능
목록 송신, 전달, 수신

데이터 표준확인
EAI(Enterprise Application Integration, 기업 내외부 정보시스템 통합)
-기업의 내부 및 외부 애플리케이션 사이의 통합을 위해 제공되는 프로세스, 기술 및 툴의 집합
EAI구성요소
구성요소/설명
EAI Platform / -데이터 전송을 보장하는 메시지 큐과 트랜잭션 미들웨어 기능 수행
                  -유연성이 있고, 대규모 사용자 환경까지 사용할 수 있는 확장성 보장
Application Adaptor / -다양한 패키지 어플리케이션 및 기업에서 자체적으로 개발한 어플리케이션을 신속하고 재사용성이 높은 인테페이스 지원
                              - DB, CRM, ERP, DW등 어플리케이션을 연결하는 어댑터
Broker(브로커) / - 시스템 상호간데이터가 전송될 때, 데이터 포맷과 코드를 변환하는 솔루션
                      - 일종의 Mediator & Wrapper 기능 수행
Business Workflow / - 미리 정의된 기업의 비즈니스 workflow에 따라 업무 처리해주는 기능

주요 기능
1.비즈니스 프로세스 관리기능
2. 데이터 브로커 기능
3. APP 접근 기능
4. 데이터 접근 기능
5. 플랫폼 기능

EAI유형
구분 / 설명
point-to-point / 1:1방식으로 애플리케이션 통합 수행
Hub & Spoke / 모든데이터가 허브를 통해 전송 
                     데이터 전송이 보장되며, 유지보수 비용 절감
메세징 버스 / 데이터를 전송하는데 버스를 이용함으로 병목현상 발생가능
                   대량의 데이터 교환에 적합
하이브리드 / Hub & Spoke 방식과 메세징 버스 방식의 통합
                 유연한 통합 작업 가능




인터페이스 구현 검증
1. 설계산출물 - 인터페이스 명세서와 인터페이스 단위 및 통합 테스트 설계서 이다.
인터페이스 구현 검증 도구

xUnit - Java(Junit), C++(Cppunit), .Net(Nunit) 등 다양한 언어를 지원하는 단위테스트 프레임워크
STAF - 서비스 호출, 컴포넌트 재사용 등 다양한 환경 지원하는 테스트 프레임워크
FitNesse - 웹기반 테스트 케이스 설계/실행/결과확인 등을 지원하는 테스트 프레임워크
NATF - NHN테스트 자동화 프레임워크 이며, STAF와 FitNesse를 통합
Selenium - 다양한 브라우저 지원 및 개발언어를 지원하는 웹 애플리케이션 테스트 프레임 워크
Watir - Ruby기반 웹 어플리케이션 테스트 프레임 워크
728x90