12. 제품 소프트웨어 패키징
01. 제품 소프트웨어 패키징하기
1. 자용자 중심의 패키징 수행
a. 제품 소프트웨어 패키징(Product Software Packaging)의 개념
- 개발이 완료된 제품 소프트웨어를 고객에게 전달하기 위한 형태로 포장하는 과정
- 특성
- 젠체 내용을 포함: 설치와 사용에 필요한 과정 및 환경 등의 전체 내용을 포함하는 매뉴얼 작성
- 버전 관리/릴리즈 노트: 제품 소프트웨어에 대한 패치 개발과 업그레이드 수행, 고객의 편의성을 위해 신규/변경 이력을 확인하고 이를 버전 관리 및 릴리즈 노트를 통해 지속적으로 관리
- 고객 중심: 개발자가 아닌 사용자 중심(고객 편의성 중심으로 진행)
- 모듈화: 신규 및 변경 개발 소스를 식별하고, 이를 모듈화하여 상용 제품으로 패키징
b. 제품 소프트웨어 패키징을 위한 모듈 빌드
- 모듈들을 통해 수행되므로, 최초 소스 개발 시 해당 모듈 단위 및 모듈화를 통해 제품 소프트웨어 패키징을 수행
* 모듈 = 소프트웨어 설계에서 기능 단위로 분해하고 추상화되어 재사용 및 공유 가능한 수준으로 만들어진 단위
- 소프트웨어 모듈 및 패키징
- 모듈화: 모듈을 이용하여 소프트웨어의 성능을 향상시키거나 시스템의 디버깅, 시험, 통합 및 수정을 용이하도록 하는 모듈 중심의 소프트웨어 설계 기법
* 모듈 간 결합도를 최소화(Loose Coupling)하고 모듈 내 요소들 간의 응집도를 최대화(Strong Cohesion)하는 것이 중요- 장점
- 개발 편의성
- 프로그램 효율적 관리
- 전체적인 소프트웨어 이해의 용이성 증대
- 소프트웨어 시험, 통합, 수정 시 용이성 제공
- 모듈의 재사용 기능으로 개발과 유지보수가 용이
- 오류의 파급 효과 최소화
- 복잡성 감소
- 기능의 분리가 가능하고 인터페이스가 단순
- 복잡도 감소로 인한 성능 향상
- 개발 편의성
- 장점
- 제품 소프트웨어의 패키징: 기능 단위로 패키징하는 것이 필요, 모듈 단위로 분류하여 작업 진행
-
제품 소프트웨어 모듈 빌드 기법
-
사용자 중심의 패키징 작업
-
- 사용자 중심의 모듈 패키징 프로세스- 기능 식별
- 입출력 데이터 식별
- 전체적인 기능 정의 및 데이터 흐름 식별
- 기능 단위 및 출력에 대한 상세 정의
- 모듈화: 모듈 간 결합도와 응집도 식별
- 기능 및 서비스를 모듈 단위로 분류
- 기능의 공유와 재활용 분류
* 결합도 = 소프트웨어 구조에서 모듈 간 연관성을 측정하는 척도(낮을수록 좋음)
* 응집도 = 모듈의 독립성을 나타내는 개념, 모듈 내부 처리 요소들 간에 기능적 연관도를 측정하는 척도(높을수록 좋음)
- 빌드 진행
- 신규 개발 소스 및 컴파일 결과물 준비
- 정상 기능 단위 및 서비스 분류
- 빌드 도구 확인 및 정상 수행
- 컴파일 이외 도구의 다양한 기능 확인
- 사용자 환경 분석
- 최소 사용자 환경 사전 정의
- 모듈 단위의 사용자 환경 테스트 수행
- 패키징 적용 시험
- 사용자 환경에서의 패키징 적용 시험
- UI 및 시스템 상의 편의성 체크
- 패키징 변경 개선
- 패키징 적용 시 변경점 도출
- 최소 사용자 환경에서 서비스 가능한 수준의 개선
- 개선 버전의 재배포
- 기능 식별
2. 버전을 고려한 제품 릴리즈 노트 작성
a. 릴리즈 노트
- 최종 사용자인 고객에게 개발 과정에서 정리된 제품의 릴리즈 정보를 제공하는 문서(상세 서비스 정보, 제품의 수정, 변경, 개선하는 작업들에 대한 정보)
- 릴리즈 노트의 중요성
- 정보 제공
- 최종 배포된 노트에는 테스트 진행 과정, 결과, 개발팀의 제공 사양 준수 정도를 파악할 수 있음
- 사용자에게 더 자세하고 확실한 정보를 제공
- 기본적으로 전체적인 제품의 수행 기능 및 서비스의 변화를 공유 - 관리의 용이성
- 전체적인 버전 관리 및 릴리즈 정보를 체계적으로 관리
- 정보 제공
b. 릴리즈 노트 작성 시 고려 사항
- 현재 시제로 작성
- 이력을 명확하고 정확하게 제공
- 개발자와 테스터가 함께 협업
- 다음 항목에 대한 정보들이 릴리즈 노트를 통해 작성되어야 함
- 개발팀에서 직접 장성
- 릴리즈 노트 작성 항목(포함되어야 함)=> 설명을 보고 항목을 유추할 수 있는 정도까지 공부 필요
- 헤더: 문서 이름(노트 이름), 제품 이름, 버전 번호, 릴리즈 날짜, 참고 날짜, 노트 버전 등의 정보
- 개요: 제품 및 변경에 대한 간략한 전반적 개요
- 목적: 릴리즈 버전의 새로운 기능 목록과 릴리즈 노트의 목적에 대한 개요, 버그 수정 및 새로운 기능 기술
- 이슈 요약: 버그의 간단한 설명 또는 릴리즈 추가 항목 요약
- 재현 항목: 버그 발견에 따른 재현 단계 기술
- 수정・개선 내용: 수정・개선의 간단한 설명 기술
- 사용자 영향도: 버전 변경에 따른 최종 사용자 기준의 기능 및 응용 프로그램상의 영향도 기술
- 소프트웨어 지원 영향도: 버전 변경에 따른 소프트웨어의 지원 프로세스 및 영향도 기술
- 노트: 소프트웨어 및 하드웨어 설치 항목, 제품, 문서를 포함한 업그레이드 항목 메모
- 면책 조항: 회사 및 표준 제품과 관련된 메시지, 프리웨어 및 불법 복제 방지, 중복 등 참조에 대한 고지 사항
- 연락 정보: 사용자 지원 및 문의에 관련한 연락처 정보
- 릴리즈 노트 예외 케이스
- 테스트 단계에서의 베타 버전 출시
- 긴급 버그 수정 시
- 자체 기능 향상을 포함한 모든 추가 기능의 향상
- 사용자 요청에 따른 특이한 케이스 발생
c. 릴리즈 노트 작성 프로세스
- 모듈 식별
- 릴리즈 정보 확인
- 릴리즈 노트 개요 작성
- 영향도 체크
- 정식 릴리즈 노트 작성
- 추가 개선 항목 식별
3. 패키징 도구를 활용한 설치, 배포 수행
a. 제품 소프트웨어의 패키징 도구
- 제품 소프트웨어 패키징 도구의 개념
- 패키징 도구 활용 시 고려 사항
-
- 암호화/보안 고려
- 패키징 시 사용자에게 배포되는 소프트웨어임을 감안하여 반드시 내부 콘텐츠에 대한 암호화 및 보안을 고려
-
- 이기종 연동을 고려
- 패키징 도구를 활용하여 여러 가지 이기종 콘텐츠 및 단말기 간 DRM연동을 고려
-
- 사용자 편의성 고려
- 패키징 도구를 고려하면 사용자의 입장에서 불편해질 수 있는 문제를 고려하여, 최대한 효율적으로 적용
-
- 적합한 암호화 알고리즘을 적용
- 암호화 알고리즘이 여러 가지 종류가 있는데, 제품 소프트웨어의 종류에 맞는 알고리즘을 선택하여 배포 시 범용성에 지장이 없도록 고려
-
b. 제품 소프트웨어 저작권 보호의 이해와 필요성
- 저작권: 창작물인 저작물에 대한 배타적 독점적 권리로 타인의 침해를 받지 않은 고유한 권한
- 저작권 보호 기술의 개념
- 콘텐츠 및 컴퓨터 프로그램과 같이 복제가 용이한 저작물에 대해 불법 복제 및 배포 등을 막기 위한 기술적인 방법- 저작권 보호 기술의 특성
- 콘텐츠 복제 제한적 허용: 복제는 허용하나 사용자 확인을 거쳐 과금, 제품 소프트웨어 패키징 시에 사용자 확인에 대해 상용화 과금 정책 수립이 연계
- 종량제: 종량제 제품 소프트웨어의 경우 요금 부과는 클리어링 하우스를 통한 이용시간에 비례한 과금
-
- 암호화/보안 기능
- - 패키징 도구는 암호화/보안 등의 기능을 고려
- 패키징 제작자가 지정한 Business Rule과 암호가 함께 패키징되어 배포
- 저작권 보호 기술의 특성
- 저작권 보호 기술의 필요성
- 배포된 제품의 무한 복제가 가능하고 원본과 복사본이 동일하게 배포될 특성을 가지고 있는 소프트웨어에 대한 저작권 보호 기술이 필요
- 상용으로 배포되면 다양한 부가가치를 가질 수 있는 상품으로 바뀜에 따라 패키징 시에 원작자에 대한 권리 보호자가 우선적으로 필요
c. 저작권 보호 측면의 패키징 도구 활용
-
디지털 저작권 관리(DRM; Digital Right Management)
-
암호화/보안 기능 중심의 패키징 도구 기술 활용
- 패키징 도구 구성
암호화(Encryption)
- 일반 텍스트, 콘텐츠, 라이선스 등의 암호화 및 전자서명에 사용하는 기술
ex) 공개키 기반구조(PKI), 대칭 및 비대칭 암호화, 전자서명키 관리(Key Management)
- 콘텐츠를 암호화한 키에 대한 저장 및 배포 기술(중앙 집중형, 분산형)식별 기술(Identification)
- 콘텐츠에 대한 식별 처계 표현 기술
ex) DOI, URI저작권 표현(Right Expression)
- 라이선스의 내용 표현 기술
ex) XrML, MPEG-21암호화 파일 생성(Packager)
- 콘텐츠의 암호화를 통해 콘텐츠를 보호하는 기술
ex) Pre-packaging, On-the-fly Packaging정책 관리(Policy Management)
- 라이선스 발급 및 사용에 대한 정책표현 및 관리기술
ex) XML, 콘텐츠 관리 시스템(CMS)크랙 방지(Tamper Resistance)
- 크랙에 의한 콘텐츠 사용 방지 기술
ex) 난독화, Secure DB인증(Authentication)
- 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술
ex) 사용자/장비 인증, SSO - 패키징 도구 구성 세부 기술(출제 가능성 높음)
암호화
» - 공개키 기반 구조
»- 인증기관에서 공개키 암호 방식 기반의 전자 서명된 인증서를 발급받아 네트워크상에서 안전하게 비밀통신을 가능하도록 하는 기술
» - 대칭 및 비대칭 암호화
»- 대칭 암호화는 암호화와 복호화를 위해 동일한 키를 사용하는 암호화 방식
»- 비대칭 암호화는 데이터를 암호화할 때와 이를 복호화할 때 서로 다른 키를 사용하는 방식
»- 전자서명
»- 서명자를 확인하고 서명자가 해당 전자문서에 서명했다는 사실을 나타내기 위해 특정 전자문서에 첨부되거나 논리적으로 결합된 전자적 형태의 정보식별 기술
»- DOI(Digital Object Identifier)
»- 디지털 저작물의 저작권 보호 및 정확한 위치 추적을 위해 특정한 번호를 부여하는 일종의 바코드 시스템
»- URI(Uniform Resource Identifier)
»- 인터넷에 있는 자원을 고유하게 식별할 수 있도혹 나타내는 주소
»- URI = URL(Uniform Resource Location) + URN(Uniform Resource Name)저작권 표현
»- XrML(eXtensible Right Markup Language)
»- 디지털 콘텐츠/웹 서비스 권리 조건을 표현한, XML기반의 마크업 언어
»- MPEG-21
»- 멀티미디어 관련 요소 기술들이 통일된 형태로 상호 운용성을 보장하는 멀티미디어 표준 규격암호화 파일 생성
»- Pre-packaging
»- 콘텐츠를 등록하자마자 암호화하는 방법
»- On-the-fly Packaging
»- 사용자가 콘텐츠를 요청한 시점에 콘텐츠를 암호화하는 방법정책 관리
»- XML(eXtensible Markup Language)
» - 다른 특수한 목적을 갖는 마크업 언어를 만드는데 사용하는 다목적 언어
»- CMS(Contents Management System)
»- 다양한 미디어 포맷에 따라 각종 콘텐츠를 작성, 수집, 관리, 배급하는 콘텐츠 생산에서 활용, 폐기까지 전 공급 과정을 관리하는 기술크랙 방지
»- 코드 난독화(Code Obfuscation)
»- 역공학을 통한 공격을 막기 위해 프로그램의 소스 코드를 알아보기 힘든 형태로 바꾸는 기술
»- Secure DB
»- 커널 암호화 방식으로 데이터베이스 파일을 직접 암호화하고, 접근 제어와 감사 기록 기능이 추가된 데이터베이스 보안 강화 기술인증
»- SSO(Single Sign On)
»- 한 번의 시스템 인증을 통하여 여러 정보시스템에 재인증 절차 없이 접근할 수 있는 통합 로그인 기술
- 패키징 도구 구성
d. 애플리케이션 배포 도구를 활용한 배포 프로세스
- 빌드 내용 식별
- 릴리즈 노트 작성을 위한 모듈 및 빌드 정리
- 입출력 데이터, 전체적인 기능 정의, 데이터 흐름 정리
- 기능 단위 및 출력에 대한 상세 정의
- 패키징 도구 식별
- 패키징 도구의 사전 선택
- 암호/보안 기능 확인
- DRM 흐름을 확인하여 패키징 수행
- 콘텐츠 분배자, 배포자, 소비자 간 DRM 흐름 확인
- 패키징 수행 시 키 관리, 보안 개념 확인하며 수행
- 패키징 도구 설치
- 환경에 맞게 패키징 도구 설치 작업 진행
- 패키징 도구 설치 완료 후 정상 동작 확인
- 배포 작업
- 패키징 도구 설치 이후 제품 소프트웨어의 배포 작업을 진행
- 배포 후 최종 패키징 완료 확인
- 정상 배포 확인
- 암호화/보안 기능 적용 확인
- 제품 소프트웨어 배포본 기준으로 암호화/보안 기능 체크리스트 확인
02. 제품 소프트웨어 매뉴얼 작성 및 버전 등록
1. 제품 소프트웨어 매뉴얼 작성
책 한번 읽어보기
2. 제품 소프트 웨어 사용자 매뉴얼
a. 제품 소프트웨어 사용자 매뉴얼 개념
- 개념
- 사용자가 소프트웨어 사용에 필요한 내용, 제반 절차, 환경 등의 내용을 포함하는 문서
- 개발된 컴포넌트 사용 시에 알아야 할 내용을 기술하며 패키지의 기능, 패키지의 인터페이스. 포함하고 있는 메서드나 오퍼레이션과 메서드의 파라미터 등의 설명이 포함
b. 제품 소프트웨어 사용자 매뉴얼 작성 항목
- 사용자가 이해하기 쉽도록 화면을 캡처하여 구성하고, 주요 기능에 대해서 설명을 첨부
- 제품 소프트웨어 동작 시 함께 동작하는 애플리케이션이나 설치되어 충돌될 수 있는 프로그램에 대해 설명
- 목차 및 개요
- 매뉴얼 전체 내용을 순서대로 요약
- 제품 소프트웨어의 주요 특징 정리
- 사용자 매뉴얼에서의 구성과 실행 방법, 메뉴에 대한 설명을 비롯하여 사용법, 각 항목에 따른 점검 기준, 설정 방법 등에 대해 기술 - 문서 이력 정보
- 버전, 작성자, 작성일 등을 일자별로 기록
- 사용자 매뉴얼 주석
- 주의 사항: 사용자가 반드시 숙지해야 하는 중요한 정보의 주석 표시
- 참고 사항: 특별한 사용자 환경 및 상황에 대한 내용의 주석 표시
- 기록 항목
- 제품 명칭, 모델명 등의 기록항목이 있음
- 기본사항
- 제품 소프트웨어 기본사항에는 개요, 사용방법 및 관리 방법, 모델, 버전별 특징, 제품 소프트웨어 기능 및 인터페이스 특징, 구동환경 등이 있음
- 고객 지원 방법 및 FAQ
- 설치 관련하여 기술적인 지원이나 제품 서비스를 받을 수 있는 유선 및 이메일, 홈페이지 주소
- 설치 시 자주 발생하는 오류 및 처리 방법에 대한 요약 설명
- 준수 정보 & 제한 보증
- 시리얼 보존, 불법 사용 금지 등의 준수 사항 권고
- 저작권 정보 관련 사항 작성
c. 제품 소프트웨어 사용자 매뉴얼 작성 프로세스
- 단계
- 작성 지침 정의: 실제 사용자 환경에 필요한 정보를 제공할 수 있는 형태로 작성
- 사용자 매뉴얼 구성요소 정의: 소프트웨어의 기능, 구성 객체 목록, 파라미터, 실제 사용 예제 등
- 구성요소별 내용 작성
- 사용자 매뉴얼 검토: 개발된 제품의 기능을 제대로 설명하는지, 제품 사용 시 부족한 정보가 없는지 등을 검사
3. 제품 소프트웨어 매뉴얼의 배포용 미디어 제작
(문제 형태로 나오기 어려운 부분이라 함. 그냥 한번 읽어보기)
4. 제품 소프트웨어 버전 관리 도구 활용
표로 되어 있는 부분만 보기(그 외에는 문제 형태로 나오기 어렵다고 함)