Chapter 03. 제품 소프트웨어 패키징
1. 제품 소프트웨어 패키징
(1) 애플리케이션 패키징
애플리케이션 패키징 개념
애플리케이션 패키징은 개발이 완료된 제품 소프트웨어를 배포하고 설치할 수 있도록 고객에게 전달하기 위한 형태로 제작하고, 설치와 사용에 필요한 제반 내용을 포함하는 매뉴얼을 작성하는 활동이다.
사용자 관점에서의 패키징 고려사항 = 환유관변
고려사항 | 설명 |
사용자 시스템 환경 정의 | 사용자의 시스템 환경인 운영체제, CPU, 메모리 등의 수행을 위한 최소 환경을 정의 |
UI 제공 | 사용자가 직관적으로 확인할 수 있는 UI를 제공하고, 매뉴얼과 일치시켜 패키징 작업 수행 |
관리 서비스 형태로 제공 | 애플리케이션은 하드웨어와 함께 통합 적용할 수 있도록, 패키징을 관리 서비스 형태로 제공 |
패키징의 변경 및 개선 관리 고려 | 다양한 사용자의 요구사항을 반영하기 위해 패키징의 변경 및 개선 관리를 고려하여 패키징 배포 |
애플리케이션 패키징 프로세스
기능 식별 > 모듈화 > 빌드 진행 > 사용자 환경 분석 > 패키징 적용 시험 > 패키징 변경 개선
(2) 애플리케이션 배포 도구
애플리케이션 배포 도구 개념
애플리케이션 배포 도구는 배포를 위한 패키징 시에 디지털 콘텐츠의 지적재산권을 보호하고 관리하는 기능을 제공하며, 안전한 유통과 배포를 보장하는 도구이자 솔루션이다.
애플리케이션 배포 도구의 기술요소 = 암키식저 파정크인
기술요소 | 설명 |
암호화 | 공개 키 기반 구조(PKI), 대칭 및 비대칭 암호화, 전자서명 |
키 관리 | 콘텐츠를 암호화한 키에 대한 저장 및 배포 기술(중앙 집중형, 분산형) |
식별 기술 | 콘텐츠에 대한 식별 체계 표현 기술 |
저작권 표현 | 라이선스의 내용 표현 기술 |
암호화 파일 생성 | 콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술 |
정책 관리 | 라이선스 발급 및 사용에 대한 정책표현 및 관리 기술 |
크랙 방지 | 크랙에 의한 콘텐츠 사용 방지 기술 |
인증 | 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술 |
애플리케이션 배포 도구 세부 기술
세부 기술 | 설명 |
공개키 기반 구조(PKI) | 공개키 암호 방식 기반으로 디지털 인증서를 활용하는 소프트웨어, 하드웨어 등을 총칭하는 암호 기술 |
대칭 및 비대칭 암호화 | 대칭 암호화는 암호화와 해독을 위해 동일한 키를 사용하는 암호화 방식 비대칭 암호화는 데이터를 암호화할 때와 이를 해독할 때 서로 다른 키를 사용하는 방식 |
전자서명 | 서명자를 확인하고 서명자가 당해 전자문서에 서명했다는 사실을 나타내기 위해 특정 전자문서에 첨부되거나 논리적으로 결합된 전자적 형태의 정보 |
DOI (Digital Object Identifier) |
디지털 저작물에 특정한 번호를 부여하는 일종의 바코드 시스템 |
URI (Uniform Resource Identifier) |
인터넷에 있는 자원을 나타내는 유일한 주소 |
XrML (eXtensible Right Markup Language) |
디지털 콘텐츠/웹 서비스 권리 조건을 표현한 XML 기반의 마크업 언어 |
MPEG-21 | 멀티미디어 관련 요소 기술들이 통일된 형태로 상호 운용성을 보장하는 멀티미디어 표준 규격 |
XML(eXtensible Markup Language) | XML은 W3C에서 개발된 다른 특수한 목적을 갖는 마크업 언어를 만드는 데 사용하도록 권장하는 다목적 마크업 언어 |
CMS(Contents Management System) | 콘텐츠 관리시스템은 다양한 미디어 포맷에 따라 각종 콘텐츠를 작성, 수집, 관리, 배급하는 콘텐츠 생산에서 활용, 폐기까지 전 공급 과정을 관리하는 기술 |
코드 난독화 | 역공학을 통한 공격을 막기 위해서 프로그램의 소스 코드를 알아보기 힘든 형태로 바꾸는 기술 |
Secure DB | 커널 암호화 방식으로 데이터베이스 파일을 직접 암호화하고, 접근 제어와 감사 기록 기능이 추가된 데이터베이스 보안 강화 기술 |
SSO (Single Sign On) |
한 번의 시스템 인증을 통하여 여러 정보시스템에 재인증 절차 없이 접근할 수 있는 통합 로그인 기술 |
애플리케이션 배포 도구를 활용한 배포 프로세스
빌드 내용 식별 > 패키징 도구 식별 > DRM 흐름을 확인하여 패키징 수행 > 패키징 도구 설치 > 배포 작업 > 정상 배포 확인
애플리케이션 배포 도구 활용 시 고려사항 = 암이복최
고려 사항 | 설명 |
암호화/보안 | 패키징 시 사용자에게 배포되는 소프트웨어임을 감안하여 반드시 내부 콘텐츠에 대한 암호화 및 보안 고려 |
이기종 연동 | 패키징 도구를 활용하여 여러 가지 이기종 콘텐츠 및 단말기 간 DRM 연동 고려 |
복잡성 및 비효율성 문제 | 사용자의 입장에서 불편해질 수 있는 문제를 고려하여, 최대한 효율적으로 적용될 수 있도록 함 |
최적합 암호화 알고리즘 적용 | 암호화 알고리즘이 여러 가지 종류가 있는데, 제품 소프트웨어의 종류에 맞는 알고리즘을 선택하여 배포 시 범용성에 지장이 없도록 고려 |
(3) 애플리케이션 모니터링 도구
애플리케이션 모니터링 도구 개념
애플리케이션 모니터링 도구는 제품 소프트웨어를 사용자 환경에 설치한 후 기능 및 성능, 운영 현황을 모니터링하여 제품을 최적화하기 위한 도구이다.
애플리케이션 모니터링 도구의 기능
기능 | 설명 | 도구 |
변경 관리 | 애플리케이션 간의 종속관계를 모니터링 애플리케이션의 변경이 있을 경우 변경의 영향도 파악에 활용 |
ChangeMiner |
성능 관리 | 애플리케이션 서버로 유입되는 트랜잭션 수량, 처리시간, 응답시간 등을 모니터링 | Jeniffer, Nmon |
정적 분석 | 소스 코드의 잠재적인 문제 발견 가능 코딩 규칙 오류 발견 |
PMD, Cppcheck |
동적 분석 | 프로그램에 대한 결합 및 취약점 동적 분석 도구 메모리 및 오류 문제 발견 |
Avalanche, Valgrind |
(4) DRM
DRM(Digital Rights Management)의 개념
DRM은 디지털 콘텐츠에 대한 권리 정보를 지정하고 암호화 기술을 이용하여 허가된 사용자의 허가된 권한 범위 내에서 콘텐츠의 이용이 가능하도록 통제하는 기술이다.
DRM의 특징
거래 투명성
사용 규칙 제공
자유로운 상거래 제공
DRM 구성요소 = 제콘패 클 소컨보
구분 | 구성요소 | 설명 |
콘텐츠 제공자 (DRM Server) |
DRM 콘텐츠 | 서비스하고자 하는 암호회된 콘텐츠, 메타데이터를 패키징하여 구성된 콘텐츠 |
패키지(Packager) | 암호화된 콘텐츠, 콘텐츠 관련 메타 데이터, 클리어링 하우스에서 부여받은 콘텐츠 사용정보를 암호화한 콘텐츠로 변환하는 도구 | |
클리어링 하우스 (Clearing House) |
콘텐츠 정책 | 라이선스 발급여부를 결정하는 정책에 대한 부합 여부 확인 |
콘텐츠 라이선스 | 클리어링 하우스에 의해서 사용자에게 전달되는 콘텐츠의 권리 인증 | |
콘텐츠 관리정보 | 콘텐츠를 사용하고자 하는 사용자 정보 및 사용하고자하는 콘텐츠에 대한 정보 | |
콘텐츠 사용정보 | DRM 콘텐츠의 사용자 권한 및 그 권한에 따른 콘텐츠 정책에 대한 정보 | |
콘텐츠 소비자 (DRM Client) |
DRM 컨트롤러 | 배포된 디지털 콘텐츠의 이용 권한을 통제 |
보안 컨테이너 | 원본 콘텐츠를 안전하게 유통하기 위한 전자적 보안장치 |
DRM의 기술요소 = 암키식저 파정크인
기술요소 | 설명 |
암호화 | 공개 키 기반 구조(PKI), 대칭 및 비대칭 암호화, 전자서명 |
키 관리 | 콘텐츠를 암호화한 키에 대한 저장 및 배포 기술(중앙 집중형, 분산형) |
식별 기술 | 콘텐츠에 대한 식별 체계 표현 기술 |
저작권 표현 | 라이선스의 내용 표현 기술 |
암호화 파일 생성 | 콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술 |
정책 관리 | 라이선스 발급 및 사용에 대한 정책표현 및 관리 기술 |
크랙 방지 | 크랙에 의한 콘텐츠 사용 방지 기술 |
인증 | 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술 |
2. 제품 소프트웨어 매뉴얼 작성
(1) 제품 소프트웨어 매뉴얼 작성
제품 스포트웨어 매뉴얼 개념
제품 소프트웨어의 매뉴얼은 제품 소프트웨어 개발 단계부터 적용한 기준이나 패키징 이후 설치 및 사용자 측면의 주요 내용 등을 문서로 기록한 것이다.
제품 소프트웨어 설치 매뉴얼
제품 소프트웨어 설치 매뉴얼은 사용자가 제품을 구매한 후 최초 설치 시 참조하는 매뉴얼이다.
제품 소프트웨어 설치 환경 체크 항목
사용자 환경
응용 프로그램
업그레이드 버전
백업 폴더 확인
제품 소프트웨어 사용자 매뉴얼 작성 항목
목차 및 개요
문서 이력 정보
사용자 매뉴얼 주석
기록항목
기본사항
고객 지원 방법 및 FAQ
준수 정보 & 제한 보증
(2) 국제 표준 제품 품질 특성
특제 표준 제품 품질 특성 개념
국제 표준 제품 품질 특성은 제품에 대하여 명확하게 정의된 특성을 의미하며, 품질을 평가하는 기준 항목이다.
① 국제 제품 품질 표준
품질 표준 | 설명 |
ISO/IEC 9126 | ISO/IEC 9126의 품질 모델은 소프트웨어 품질을 측정하고, 평가하기 위해서 소프트웨어의 품질요소와 특성을 정의 |
ISO/IEC 14598 | 소프트웨어 제품 평가 프로세스 및 평가 모듈을 제공 |
ISO/IEC 12119 | 소프트웨어 패키지 제품에 대한 품질 요구사항 및 테스트 국제 표준 |
ISO/IEC 25000 | 개발 공정 각 단계에서 산출되는 제품이 요구사항을 만족하는지 검증하기 위해 품질 측정 및 평가를 위한 모델 |
② ISO/IEC 9126의 소프트웨어 품질 특성 = 기신사효유이
기능성
신뢰성
사용성
효율성
유지보수성
이식성
③ ISO/IEC 14598의 소프트웨어 품질 특성 = 반재공객
반복성
재현성
공정성
객관성
국제 프로세스 품질 표준
품질 표준 | 설명 | 세부 사항 |
ISO/IEC 9001 | 설계/개발, 생산, 설치 및 서비스 과정에 대한 품질 보증 모델 | ISO 9000-3 |
ISO/IEC 12207 | 소프트웨어의 획득, 공급, 개발, 운영, 유지보수를 체계적으로 관리하기 위한 소프트웨어 생명주기 단계별 필요 프로세스를 규정한 국제표준 | 기본/지원/조직 프로세스 |
ISO/IEC 15504(SPICE) | 소프트웨어 프로세스를 평가하고 개선함으로써 품질 및 생산성을 높이고자 하는 국제표준 | 수행단계 구분 (불완전>수행>관리>확립>예측>최적화) |
CMMi | 기존 CMM 모델을 통합하고 ISO15504를 준수하는 소프트웨어 개발 능력/성숙도 평가 및 프로세스 개선 활동의 지속적인 품질 개선 모델 | 프로세스 영역 목표 실행 공통특징 |
소프트웨어 품질 평가 통합 모델, ISO/IEC 25000
ISO/IEC 25000 구성요소 = 관모측요평
표준번호 | 구성요소 |
2500n | 품질 관리 |
2501n | 품질 모델 |
2502n | 품질 측정 |
2503n | 품질 요구 |
2504n | 품질 평가 |
소프트웨어 공학의 기본원칙
소프트웨어 개념
소프트웨어는 하드웨어를 동작시켜 사용자가 작업을 편리하게 수행하도록 하는 프로그램 및 자료 구조이다.
소프트웨어 공학의 원칙 및 관련 법칙
구분 | 설명 |
원칙 | 현대적인 프로그래밍 기술을 계속적으로 적용 개발된 소프트웨어의 품질이 유지되도록 지속적 검증 수행 소프트웨어 개발 관련 사항 및 결과에 대한 명확한 기록 유지 |
관련 법칙 | 브룩스의 법칙(Brooks' Law) : "지체되는 소프트웨어 개발 프로젝트에 인력을 추가하는 것은 개발을 늦출 뿐이다."라고 주장한 법칙 파레토 법칙(Pareto Principle) : 80 대 20 법칙 롱테일 법칙(Long Tail) : 파레토 법칙의 반대 이론 |
3. 제품 소프트웨어 버전 관리
(1) 소프트웨어 버전 관리 도구
소프트웨어 버전 관리 도구 개념
소프트웨어 버전 관리 도구는 형상 관리 지침을 활용하여 제품 소프트웨어의 신규 개발, 변경, 개선과 관련된 수정 사항을 관리하는 도구이다.
소프트웨어 버전 관리 도구 유형 = 공클분
버전 관리 도구 유형 | 설명 |
공유 폴더 방식 (RCS, SCCS) |
매일 개발 완료 파일은 약속된 위치의 공유 폴더에 복사하는 방식 |
클라이언트/서버 방식 (CVS, SVN) |
중앙에 버전 관리 시스템을 항시 동작시킴 |
분산 저장소 방식 (Git, Bitkeeper) |
로컬 저장소와 원격 저장소로 분리된 구조 |
소프트웨어 버전 관리 도구 사용 시 유의사항
버전에 대한 쉬운 정보 접근성
불필요한 사용자에 대한 접근 제어
동일 프로젝트에 대한 동시 사용성
빠른 오류 복구
(2) 빌드 자동화 도구
빌드 자동화 도구 개념
빌드란 소프트웨어를 생성하고 테스트하고 검사하여 배포하기 위해 수행하는 행위의 집합이다.
빌드 자동화 도구란 제품 소프트웨어 실행파일 생성을 자동화하기 위해서 저장소에 있는 소스를 자동으로 읽어서 빌드한 후 테스트하고 검사하여 실행파일을 만드는 도구이다.
① 필드 자동화 구성요소 = CS 빌테커인
구성요소 | 설명 | 도구 |
CI(Continuous Integration) 서버 | 빌드 프로세스를 관리하는 서버 | Jenkins Hudson |
SCM (Source Code management) |
소스 코드 형상 관리 시스템 소스 코드의 개정과 백업 절차를 자동화하여 오류 수정 과정을 도와줄 수 있는 시스템 |
SVN Git |
빌드 도구 (Build Tool) |
컴파일, 테스트, 정적분석 등을 통해 동작 가능한 소프트웨어 생성 | Ant Maven |
테스트 도구 (Test Tool) |
작성된 테스트 코드에 따라 자동으로 테스트를 수행하주는 도구로, 빌드 도구의 스크립트에서 실행 | Junit Selenium |
테스트 커버리지 도구 (Test Coverage Tool) |
테스트 코드가 대상 소스 코드에 대해 어느 정도 커버하는지 분석하는 도구 | Emma |
인스펙션 도구 (Inspection Tool) |
프로그램을 실행하지 않고 소스 코드 자체로 품질을 판단할 수 있는 정적 분석 도구 | CheckStyle Cppcheck |
② 빌드 자동화 도구의 기능
코드 컴파일
컴포넌트 패키징
파일 조작
개발 테스트 실행
버전 관리 도구 통합
문서 생성
배포 기능
코드 품질 분석
③ 빌드 자동화 도구 사례
젠킨스(Jenkins)
젠킨스는 자바 기반의 오픈소스로 가장 많이 활용되는 빌드 자동화 도구이고, 지속적 통합관리(CI : Continuous Integration)를 가능하게 한다.
젠킨스의 특징
특징 | 설명 |
쉬운 설치 | java -jar. jenkins.war 명령어면 설치 가능 |
친숙한 웹 GUI | 웹 기반 그래픽 사용자 인터페이스(GUI)를 통해 쉽게 전체적인 설정 변경 가능 |
저장소 부하 감소 | 버전 관리 도구에서 빌드에 사용될 목록만 따로 추출하여 변경 생성할 수 있는 기능 제공 |
최근 빌드 제공 | 최근 빌드 또는 최근 성공한 빌드 내역에 대한 링크 제공 |
실시간 피드백 | RSS, 이메일을 통해 실시간으로 빌드 실패 내역에 대해 통지를 받아서 빌드 결과 확인 가능 |
분산 빌드 | 여러 대의 컴퓨터를 통해 분산 빌드나 테스트 가능 |
3rd Party 플러그인을 통한 확장 | Jenkins가 지원하길 바라는 툴이나 프로세스가 있다면 본인이 직접 만들 수 있음 |
그래들(Gradle)
그래들은 안드로이드 앱을 만드는 데 필요한 안드로이드 스튜디오의 공식 빌드 자동화 시스템이다.
https://book.naver.com/bookdb/book_detail.nhn?bid=15910265
수제비 정보처리기사 필기
NCS 모듈제작에 참여한 경험을 기반으로, 다양한 모듈에서 시험 출제 빈도를 분석하여 출제 비중이 높은 내용 위주로 구성했다. 출제 비중이 낮고 이해하기 어려운 개념들은 과감하게 제외함으
book.naver.com
Ps. 오늘은 또 많네 후훗!!
'IT 자격증 > 정보처리기사' 카테고리의 다른 글
정보처리기사 필기 2주차 Day-5 정리 (0) | 2021.07.20 |
---|---|
정보처리기사 필기 2주차 Day-4 정리 (0) | 2021.07.18 |
정보처리기사 필기 2주차 Day-2 정리 (0) | 2021.07.16 |
정보처리기사 필기 2주차 Day-1 정리 (0) | 2021.07.15 |
정보처리기사 필기 1주차 Day-4 정리 (0) | 2021.07.13 |