본문 바로가기
  • 개발 삽질 블로그
프로그래밍/개발지식

제품소프트웨어 패키징 - 제품 소프트웨어 패키징하기

by 갹둥 2024. 2. 14.

제품 소프트웨어 패키지

개발이 완료된 제품 소프트웨어를 고객에게 전달하기 위한 형태로 패키징하고 설치와 사용에 필요한 제반 절차 및 환경 등 전체 내용을 포함하는 메뉴얼을 작성하며 제품 소프트웨어에 대한 패치 개발과 업그레이드를 위해 버전관리를 수행하는 능력

 

1. 제품 소프트웨어 적용상의 특성

(1) 제품 소프트웨어는 개발자가 아닌 사용자 중심으로 진행된다.

(2) 신규 및 변경 개발 소스를 식별하고, 이를 모듈화하여 상용 제품으로 패키징한다.

(3) 고객의 편의성을 위해, 신규/변경 이력을 확인하고, 이를 버전 관리릴리즈 노트 를 통해 지속적으로 관리해 간다.

(4) 사용자의 실행 환경을 이해하고, 범용 환경에서 사용이 가능하도록 일반적인 배포 형태로 분류하여 패키징이 진행된다.

 

2. 소프트웨어 모듈

모듈화
소프트웨어 설계에서 기능 단위로 분해하고 추상화되어 재사용 및 공유 가능한 수준으로 만들어진 단위를 모듈로 규정하고, 소프트웨어 성능을 향상시키거나 시스템의 디버깅, 시험, 통합 및 수정을 용이하도록 하는 소프트웨어 설계 기법

 

장점: 모듈의 재사용으로 개발과 유지보수 용이, 프로그램의 효율적인 관리 및 성능 향상, 기능 분리가 가능하고 인터페이스가 단순해짐, 오류의 파급 효과를 최소화할 수 있음, 소프트웨어 테스트, 통합 수정이 용이해짐

 

-> 모듈 간 결합도의 최소화, 모듈 간 응집도 최대화

 

제품 소프트웨어에서는 모듈의 개념을 정확하게 이입하고, 이에 맞는 기능 단위 로 패키징하는 것이 필요함

 

3. 제품 소프트웨어 모듈 빌드 기법

소프트웨어 빌드
소스 코드 파일을 제품 소프트웨어 단위로 변환하는 과정, 컴파일 과정을 핵심으로 수행되며 빌드에 따른 결과물에 대한 상세 확인 필요

 

빌드 도구: Ant, Make, Maven, Gradle  etc.

 

4. 사용자 관점에서의 패키징 고려 사항

(1) 사용자의 시스템 환경 즉, OS CPU 메모리 등의 수행 최소 환경을 정의한다.

(2) 사용자가 직관적으로 확인할 수 있는 UI(User Interface)를 제공하고, 매뉴얼과 일치 시켜 패키징 작업한다.

(3) 제품 소프트웨어는 하드웨어와 함께 통합 적용될 수 있도록, 패키징은 Managed Service 형태로 제공되는 것이 좋다.

(4) 제품 소프트웨어는 고객 편의성을 위해 안정적 배포가 가장 중요하고, 다양한 사용자 군(群) 의 요구 사항을 반영하기 위해 항상 패키징의 변경 및 개선 관리를 고려하여 패키징 배포한다.

 


사용자 중심의 패키징 수행

1) 신규 개발 소스의 목적 및 기능을 식별

2) 모듈 단위 분류 및 모듈화를 순서에 맞게 진행

3) 빌드 도구를 이용하여 빌드를 단위별로 진행

4) 사용자의 요구사항 및 사용 환경 사전 분석

5) 최종 패키징에 대한 사용자 편의성 테스트

6) 테스트를 반영하여 변경 및 개선

 


버전을 고려한 제품 릴리즈 노트 작성

릴리즈 노트
조직의 최종 사용자인 고객과 잘 정리된 릴리즈 정보를 공유하는 문서, 상세 서비스, 수정 및 변경 이력, 테스트 결과와 정보 등의 릴리즈 정보들이 릴리즈 노트를 통해 제공됨

 

중요성: 테스트 결과와 정보가 포함됨, 사용자에게 보다 더 확실한 정보를 제공하고 전체적인 제품의 수행 기능 및 서비스의 변화를 공유함, 이를 통해 전체적인 버전 관리 및 릴리즈 정보를 체계적으로 관리할 수 있음

 

릴리즈 노트 작성 시 고려 사항

-현재 시제로 작성, 명확하고 정확하며 완전한 정보 제공

-신규 소스, 빌드 등을 배포 시부터 이력을 정확하게 관리하여 진행

 

릴리즈 노트 추가 작성 및 개선 사항 발생의 예외 케이스

(1) 테스트 단계에서의 베타 버전 출시: 자체에서 기준을 수립하여 현 베타 버전을 신규 소스로 하여 릴리즈를 할지, 예외 사항 으로 베타 버전에 대한 릴리즈 노트를 따로 만들지 사전에 정의해야 함

 

(2) 긴급 버그 수정: 보통 긴급히 버그가 수정되면 릴리즈 노트 작성을 놓치는 경우가 많다. 반드시 버그 번호를 포함한 모든 수정된 버그를 기술하여 릴리즈 노트에 추가한다.

 

(3) 자체 기능 향상을 포함한 모든 추가 기능의 향상: 정식으로 릴리즈 버전을 추가하고, 이에 따른 신규 릴리즈 노트를 작성한다. 업그레이드는 SW 및 HW에 대한 항목까지 포함된다.

 

(4) 사용자 요청에 따른 특이한 케이스 발생: 개발 팀 내부에서 허용되는 범위 내에서 요청이 접수될 경우 이를 자체 기능 향상과는 별도의 버전으로 새로 추가 하여 릴리즈 노트를 작성할 수 있다.

 

 

릴리즈 노트 작성 절차

1) 신규 패키징 제품의 모듈, 빌드 내용 식별

2) 패키징된 릴리즈 정보 확인

3) 빌드 내용에 따라 릴리즈 노트 개요 작성

4) 이슈, 버그 및 추가 영향도를 체크하여 기술

5) 정식 릴리즈 노트 작성

6) 추가 개선에 따른 추가 항목을 식별하여 릴리즈 노트 작성

 


패키징 도구를 활용한 설치, 배포 수행

제품 소프트웨어 패키징 도구
배포를 위한 패키징 시에 디지털 콘텐츠의 지적 재산권을 보호하고 관리하는 기능을 제공하며, 안전한 유통과 배포를 보장하는 도구이자 솔루션

 

저작권 관리 구성 요소

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

 

 

패키징 도구 구성 요소

  • 암호화(Encryption) - 콘텐츠 및 라이선스를 암호화하고, 전자 서명을 할 수 있는 기술
  • 키 관리 (Key Manangement) - 콘텐츠를 암호화한 키에 대한 저장 및 배포 기술 (Centralized, Enveloping)
  • 암호화 파일 생성 (Packager) - 콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술
  • 식별 기술 (Identification) - 콘텐츠에 대한 식별 체계 표현 기술
  • 저작권 표현 (Right Expression) - 라이선스의 내용 표현 기술 
  • 정책 관리 (Policy management) - 라이선스 발급 및 사용에 대한 정책표현 및 관리기술
  • 크랙 방지 (Tamper Resistance) - 크랙에 의한 콘텐츠 사용 방지 기술
  • 인증(Authentication) - 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술

 

패키징 도구를 활용한 설치. 배포 절차

'프로그래밍 > 개발지식' 카테고리의 다른 글

[JavaScript] Event 인터페이스  (0) 2023.11.10
[JavaScript]JS Function 함수  (0) 2023.10.04
[JavaScript]타입과 스코프  (0) 2023.09.27
API의 개념과 종류  (2) 2023.09.26
웹 스토리지(Web Storage), 쿠키(Cookie)  (0) 2023.07.29