제품 소프트웨어 패키징하기
1. 제품 소프트웨어 패키징의 개념
제품 소프트웨어 패키징은 개발이 완료된 제품 소프트웨어를 고객에게 전달하기 위한 형태로 패키징하고, 설치와 사용에 필요한 제반 절차 및 환경 등 전체 내용을 포함하는 메뉴얼을 작성하며, 제품 소프트웨어에 대한 패치 개발과 업그레이드를 위해 버전 관리를 수행하는 능력
2. 제품 소프트웨어 적용상의 특성
(1) 재품 소프트웨어는 개발자가 아닌 사용자 중심으로 진행
(2) 신규 및 변경 개발 소스를 식별하고, 이를 모듈화하여 상용 제픔으로 패키징
(3) 고객의 편의성을 위해, 신규/변경 이력을 확인하고, 이를 버전 관리 및 릴리즈 노트를 통해 지속적으로 관리해 감
(4) 사용자의 실행 환경을 이해하고, 범용 환경에서 사용이 가능하도록 일반적으로 배포 형태로 분류하여 패키징이 진행
3. 소프트웨어 모듈
(가) 모듈 및 모듈화
모듈 - 소프트웨어 설계에서 기능 단위로 분해하고 추상화하여 재사용 및 공유 가능한 수준으로 만들어진 단위
모듈화 - 소프트웨어의 성능을 향상시키거나 시스템이 디버깅, 시험, 통합 및 수정을 용이하도록 하는 소프트웨어 설계 기법
(나) 모듈화의 장점
- 프로그램의 효율적인 관리 및 성능 향상
- 전체적인 소프트웨어 이해의 용이성 증대 및 복잡성 감소
- 소프트웨어 시험, 통합, 수정시 용이성 제공 · 기능의 분리가 가능하고 인터페이스가 단순
- 오류의 파급 효과를 최소화
- 모듈의 재사용 기능으로 개발과 유지보수가 용이
(다) 모듈화의 목표
- 모듈 간 결합도의 최소화(Loose Coupling)
- 모듈 내 요소둘간의 응집도 최대화(Storing Cohesion)
4. 제품 소프트웨어를 위한 빌드 도구: Ant, Make, Maven, Gradle
빌드 자동화 도구
소스코드 파일들을 실행할 수 있는 소프트웨어로 변환하는 과정에 필요한 도구
| Ant | 어파치 소프트웨어 재단에서 개발한 소프트웨어 XML 기반의 필드 스크립트를 사용하여 자유도와 유연성이 높음 |
| Maven | Ant의 대안으로 개발 자동으로 필요한 라이브러리 파일을 불러옴 |
| Gradle(그래들) | Task는 작업의 최소단위이며 테스크 단위로 살행 Groovy를 기반으로 하며 안드로이드 스튜디오의 공식 빌드 시스템 |
| Jenkins(젠킨스) | 자바기반의 오픈소스, 가장 많이 활용되는 빌드 자동화 도구 소프트웨어 개발시 지속적 통합(continous integration) 서비스를 제공하는 틀 |
5. 사용자 중심의 패키징 작업 이해
1) 사용자 실행 환경의 이해
사용자 실행 환경을 우선 고려하여 패키징을 진행
사용자 환경 OS, 실행 환경, 시스템 사양 및 고객의 사용 방법
여러 가지 실행 환경이 나오게 된다면 해당 경우에 맞는 배포본을 분류하여 패키징 작업을 여러 번 수행할 수도 있음
2) 사용자 관점에서의 패키징 고려 사항
(1) 사용자의 시스템 환경 증, OS CPU 메모리 등의 수행 최소 환경을 정의
(2) 사용자가 직관적으로 확인할 수 있는 UI(User Interface)를 제공하고, 매뉴얼과 일치시켜 패키징 작업
(3) 제품 소프트웨어는 하드웨어와 함께 통합 적용될 수 있도록, 패키징은 Managed Service 형태로 제공되는 것이 좋음
(4) 다양한 사용자의 요구 사항을 반영하기 위해 항상 패키징의 변경 및 개선 관리를 고려하여 패키징 배포함.
| 제품 소프트웨어 패키징 |
| 개발이 완료된 제품 소프트웨어를 고객에게 전달하기 위한 형태로 패키징하고, 설치와 사용에 필요한 제반 절차 및 환경 등 전체 내용을 포함하는 매뉴얼을 작성하며, 제품 소프트웨어에 대한 패치 개발과 업그레이드를 위해 버전 관리를 수행하는 능력 |
| 제품 소프트웨어 매뉴얼 |
| 제품 소프트웨어 개발 단계부터의 적용 기준이나 패키징 이후 설치 및 사용자 측면의 주요 내용 등을 문서로 기록한 것이며, 사용자 중심의 기능 및 방법을 나타낸 설명서와 안내서 |
| 제품 소프트웨어 버전 관리 |
| 기본적으로 작성된 패키지의 변경 내용을 관리하고 SW의 변화를 시간에 따라 기록하며 특정 시점의 버전을 다시 꺼낼 수 있도록 관리하는 체계 |

버전을 고려한 제품 릴리즈 노트 작성
릴리즈 노트의 개념
릴리즈 노트는 조직의 최종 사용자의 고객과 잘 정리된 릴리즈 정보를 공유하는 문서
상세 서비스를 포함하여 회사가 제공하는 제품을 만들어 수정, 변경 또는 개선하는 일련의 작업들이며, 릴리즈 정보들이 이러한 문서를 통해 제공됨
이 정보들은 철저하게 테스트를 진행하고, 개발 팀에서 제공하는 사양에 대해 최종 승인된 후 문서를 통해 배포
릴리즈 노트의 필요성
(1) 릴리즈 노트에는 테스트 결과와 정보가 포함
(2) 사용자에게 보다 더 확실한 정보를 제공
(3) 전체적인 제품의 수행 기능 및 서비스의 변화를 공유함
(4) 전체적인 버전 관리 및 릴리즈 정보를 체계적으로 관리할 수 있음
릴리즈 노트 작성시 고려사항
릴리즈 노트는 개발 팀에서 Ownership을 가지고 직접 작성하여야 함
현재 시제로 작성 되어야 하며, 명확하고 정확하며 완전한 정보를 제공
신규 소스, 빌드 등을 배포 시부터 이력을 정확하게 관리하며 진행
개발자가 테스트가 함꼐 협업을 해야 하고 최초 및 변경, 개선 항목까지 연결되어 다음 항목애 대한 정보들이 릴리즈 노트를 통해 작성되어야 함
릴리즈 노트 작성 항목
| Header | 문서 이름(릴리즈 노트 이름), 제품 이름, 버전 번호, 릴리즈 날짜, 참고 날짜, 노트 버전 등 |
| 개요 | 제품 및 변경에 대한 간략한 전반적 개요 |
| 목적 | 릴리즈 버전의 새로운 기능 목록과 릴리스 노트의 목적에 대한 간략한 개요, 버그 수정 및 새로운 기능 기술 |
| 이슈 요약 | 버그의 간단한 설명 또는 릴리즈 추가 항목 요약 |
| 재현 항목 | 버그 발견에 따른 재현 단계 기술 |
| 수정/개선 내용 | 수정 / 개선의 간단한 설명 기술 |
| 사용자 영향도 | 버전 변경에 따른 최종 사용자 기준의 기능 및 응용 프로그램 상의 영향도 기술 |
| SW 지원 영향도 | 버전 변경에 따른 SW의 지원 프로세스 및 영향도 기술 |
| 노트 | SW 및 HW Install 항목, 제품, 문서를 포함한 업그레이드 항목 메모 |
| 면책 조항 | 회사 및 표준 제품과 관련된 메시지, 프리웨어, 불법 복제 방지, 중복 등 참조에 대한 고지 사항 |
| 연락 정보 | 사용자 지원 및 문의 관련한 연락처 정보 |
버전을 고려한 릴리즈 노트 작성 순서

패키징 도구를 활용한 설치, 배포 수행
1. 제품 소프트웨어 패키징 도구의 개념
배포를 위한 패키징 시에 디지터 콘텐츠의 지적 재산권을 보호하고 관리하는 기능을 제공하며, 안전한 유통과 배포를 보장하는 도구이자 솔루션
패키징 도구는 불법 복제로부터 디지털 콘텐츠의 지적 재산권을 보호해 주는 사용 권한 제어 기술, 패키징 기술, 라이선스 관리, 권한 통제 기술 등을 포함
2. 패키징 도구 활용 시 고려 사항
(1) 반드시 암호화/보안을 고려함
(2) 추가로 다양한 이기종 연동을 고려
(3) 사용자 편의성을 위한 복잡성 및 비효율성 문재를 고려
(4) 재품 소프트웨어의 종류에 적합한 암호화 알고리즘을 적용
패키징 도구를 활용한 설치, 배포 수행
1. 저작권의 이해
문학 학술 또는 예술의 범위에 속하는 창작물인 저작물에 배타적 독점적 권리로 타인의 침해를 받지 않을 고유한 권한
2. 저작권 보호 기술의 개념
콘텐츠 복재의 제한적 허용(복제는 허용, 사용자 확인 후 과금)
종량제 BM을 갖는 제품 소프트웨어의 경우 요금 부과는 Clearing House를 통한 이용 시간에 비례한 과금(중량제 실현)
패키징 도구는 암호화/보안 등의 기능을 고려함. 패키징 제작자가 지정한 Business Rule과 암호가 함께 Packaging되어 패포
3. 저작권 보호 기술의 필요성
배포된 제품 소프트웨어의 무한 복제가 가능하고 원본과 복사본이 동일하게 배포될 특성을 가짐.
제품 소프트웨어가 상용으로 배포되면 다양한 부가 가치를 가질 수 있는 상품으로 바뀜에 따라 패키징시에 원작자에 대한 권리 보호 우선 필요
저작권 보호 측면의 패키징도구 활용
저작권 관리 흐름 : 콘텐츠 제공자, 분배자, 소비자 간의 패키징 배포 및 관리의 주체를 중앙의 클리어링 하우스를 키 관리 및 라이선스 발급 관리

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

| 구성 요소 | 설명 |
| 저작권 표현 (Right Expression) |
라이선스의 내용 표현 기술 XrML/MPEG-21 |
| 정책 관리 (Policy management) |
라이선스 발급 및 사용애 대한 정책표현 및 관리기술 XML, Contents Management System |
| 크랙 방지 (Tamper Resistance) |
크랙에 대한 콘텐츠 사용 방지 기술 Code Obfuscation(코드 난독화) Secure DB |
| 인증 (Authentication) | 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술 SSO(Single Sign On), Digital Certificate |
'정보처리기사 실기 > 제품 소프트웨어 패키징' 카테고리의 다른 글
| 제품 소프트웨어 매뉴얼 작성 & 제품 소프트웨어 버전 등록 (1) | 2025.02.11 |
|---|