본문 바로가기

정보처리

소프트웨어 패키징

제품 소프트웨어 패키징에서 꼭 알아야 하는 키워드에 대해 설명드릴게요 

  • 소프트웨어 패키징 
  • 릴리즈 노트 
  • DRM
  • 소프트웨어 설치 매뉴얼 
  • 소프트웨어 사용자 매뉴얼 
  • 형상 관리 
  • Subversion
  • Git
  • Jenkins 
  • Gradle

소프트웨어 패키징이란 모듈별로 생성한 실행 파일들을 하나로 합쳐 설치 파일을 만드는 것을 말합니다. 

소프트웨어 패키징시 주의사항으로는 다음 두 가지가 중요합니다. 

  • 사용자 중심으로 패키징 
  • 소프트웨어의 유지 보수를 위해 모듈화 하여 패키징 진행

여기서 모듈화란 소프트웨어의 성능을 향상시키거나 시스템의 수정 및 재사용, 유지 관리 등이 용이하도록 시스템을 각 기능별로 나누는 것을 말합니다. 

 

패키징 순서

  1.  기능 식별 - 작성된 코드의 기능을 확인한다. 
  2.  모듈화 - 확인된 기능 단위로 코드들을 분류하는 작업
  3.  빌드 진행 - 모듈 단위별로 실행 파일을 만드는 작업
  4.  사용자 환경 분석 -소프트웨어 사용 환경 또는 CPU 운영체제 랩 등 최소 운영 환경을 조성한다. 
  5.  패키징 적용 시험 - 배포용 파일 형식으로 패키징 후 사용자 입장에서 확인하는 작업
  6.  패키징 변경 개선 - 확인된 불편 사항을 변경 및 개선 진행
  7.  배포 - 오류 발생시 개발자에게 전달하여 오류 수정한다. 

소프트웨어에 대한 정보를 릴리즈 노트라고 하는데요 

릴리즈 노트는 개발 과정에서 정리된 릴리즈 정보를 소프트웨어의 최종 사용자인 고객과 공유하기 위한 문서를 말합니다. 

릴리즈 노트를 통해서 테스트 진행 방법에 대한 결과와 소프트웨어 사양에 대한 개발팀의 정확한 준수 여부를 확인 가능하고 전체 기능 , 서비스 내용, 개선 사항 등을 사용자와 공유 가능합니다. 

 

릴리즈 노트 초기 버전 작성 시 고려해야 할 사항은 정확하고 완전한 정보를 기반으로 작성되어야 하고 신규 빌드 등 이력 관리가 명확하게 진행되어야 합니다.

 

Header(머리말) - 릴리즈 노트 이름, 소프트웨어 이름, 릴리즈 버전, 릴리즈 날짜

개요 - 소프트웨어 및 변경 사항 전체에 대한 간략한 내용

목적 - 해당 릴리즈 버전에서의 새로운 기능이나 수정된 기능의 목록과 목적에 대한 개요

문제 요약 - 버그에 대한 간략한 설명

재현 항목 -버그 발견에 대한 설명

수정/개선 내용 -수정 개선한 내용에 대한 설명

사용자 영향도 - 사용자가 다른 기능들을 사용하는 데 있어서 해당 릴리즈 버전에서의 기능 변화가 미칠 수 있는 영향에 대한 설명

SW 지원 영향도 - 해당 릴리즈 버전에서의 기능 변화가 다른 응용 프로그램들을 지원하는 프로세스에 미칠 수 있는 영향에 대한 설명

노트 - SW/HW 설치 항목, 업그레이드, 소프트웨어 문서화에 대한 참고 항목

면책 조항 - 회사 및 소프트웨어와 관련하여 참조할 사항

연락처 - 사용자 지원 및 문의 응대를 위한 연락처 정보 

 

릴리즈 노트는 일반적으로 모듈 식별, 릴리즈 정보 확인, 릴리즈 노트 개요 작성, 영향도 체크, 정식 릴리즈 노트 작성, 추가 개선 항목 식별 등의 순서로 진행되는 게 보편적입니다. 

 

다음으로는 디지털 저작권 관리 (Digital Right Management ;DRM)에 대해 알아볼 거예요 

디지털 저작권 관리는 저작권자가 배포한 디지털 콘텐츠가 저작권자가 의도한 용도로만 사용되도록 디지털 콘텐츠의 생성, 유통, 이용까지의 전 과정에 걸쳐 사용되는 디지털 콘테츠 관리 및 보호 기술을 말합니다. 

 

저작권의 개념에 대해 알아보았고요 다음으로 DRM에서 사용되는 용어들을 알아보겠습니다. 

  • 클리어링 하우스 : 저작권에 대한 사용 권한, 라이선스 발급 , 사용량에 따른 결제 관리 등을 수행하는 곳을 말합니다. 
  • 콘텐츠 제공자 : 말 그대로 콘텐츠를 제공하는 저작권자 
  • 패키저 : 콘텐츠를 메타 데이터와 함께 배포 가능한 형태로 묶어 암호화하는 프로그램 
  • 콘텐츠 분배자 : 암호화된 콘텐츠를 유통하는 곳이나 사람
  • 콘텐츠 소비자 : 콘텐츠를 구매하는 주체
  • DRM 컨트롤러 : 배포된 콘텐츠의 이용 권한을 통제하는 프로그램 
  • 보안 컨테이너 : 콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안 장치 

사용자가 소프트웨어를 구매하였으면 설치하는 과정에서 사용하는 설치 매뉴얼에 대해 알아보겠습니다. 

 

소프트웨어 설치 매뉴얼은 개발 초기부터 적용된 기준이나 사용자가 소프트웨어를 설치하는 과정에 필요한 내용을 기록한 설명서와 안내서입니다. 소프트웨어 설치 매뉴얼에는 목차 및 개요, 서문, 기본사항 등이 포함되어야 합니다. 

서문에서는 문서 이력, 설치 매뉴얼의 주석, 설치 도구의 구성, 설치 환경 체크 항목을 기술하여야 합니다. 

기본사항에서는 소프트웨어와 관련하여 기본적으로 설명되어야 할 항목에 대해 (소프트웨어 개요, 설치 관련 파일 , 설치 아이콘, 프로그램 삭제 방법, 관련 추가 정보) 등이 있어야 합니다. 

 

소프트웨어 설치 매뉴얼은 다음과 같은 순서로 작성되어야 합니다. 

  1. 기능 식별 -  개발 목적과 주요 기능을 흐름 순으로 정리하여 기록
  2. UI 분류 
  3. 설치 파일 / 백업 파일 확인
  4. Uninstall 절차 확인 
  5. 이상 Case 확인 
  6. 최종 매뉴얼 적용

소프트 웨어 설치 매뉴얼을 작성 완료 하였으면 다음으로는 소프트웨어 사용자 메뉴얼을 작성해야겠죠?
소프트웨어 사용자 매뉴얼은 사용자가 소프트웨어를 사용하는 과정에서 필요한 내용을 문서로 기록한 설명서와 안내서입니다. 

사용자 매뉴얼에서는 목차 및 개요, 서문 기본사항 등이 기본적으로 포함되어야 합니다. 

 

소프트웨어 사용자 매뉴얼은 다음과 같은 순서로 작성되어야 합니다. 

  1. 기능 식별 
  2. 사용자 화면 분류 - 사용자 화면을 메뉴별로 분류
  3. 사용자 환경 파일 확인  - 폴더 위치, 사용자 로그파일, 백업 파일 등의 개별적인 기능을 확인하여 기록
  4. 초기 절차 확인 - 프로그램을 사용하기 위한 초기화 절차를 확인하고 그 단계를 순서대로 기록한다. 
  5. 이상 case 확인 
  6. 최종 메뉴얼 적용

고객으로부터 소프트웨어에 대한 오류가 접수되면, 개발자는 해당 오류가 어느 단계에서 어떻게 적용되었는지 확인을 해야 문제를 파악할 수 있겠죠? 

지금부터는 오류 수정이나 제품의 지속적인 기능 향상을 위해서 소프트웨어의 변경 내역이 개발 단계에서부터 지속적으로 관리되어야 하는데 이를 형상 관리 또는 버전 관리라고 합니다. 

 

소프트웨어 형상 관리 (SCM;Software Configuration Management)는 소프트웨어의 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동입니다. 

형상 관리의 기능들은 형상 식별, 버전 제어, 형상 통제, 형상 감사, 형상 기록 등이 있습니다. 

형상 식별 - 형상 관리 대성에 이름과 관리 번호를 부여하고 계층 구조로 구분하여 수정 및 추적이 용이하도록 하는 작업을 말합니다. 

버전 제어 - 소프트웨어 업그레이드나 유지 보수 과정에서 생성된 다른 버전의 형상 항목을 관리 

형상 통제 - 식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준 선이 잘 반영될 수 있도록 조정하는 작업

형상 검사 - 무결성을 평가하기 위해서 검증 검열 과정을 통해 공식적으로 승인하는 작업 

형상 기록 - 형상의 식별, 통제 감사 작업의 결과를 기록 관리하는 작업

 

소프트웨어 버전 등록 과정은 다음과 같습니다. 

  1. 가져오기 (Iport)

  2. 인출 (Check -Out)

  3. 예치 (Commit)

  4. 동기화(Update)

  5. 차이 (Diff)

다음으로 알아볼 내용은 소프트웨어 버전 관리 도구의 종류와 빌드 자동화 도구의 종류에 대해 알아보겠습니다. 

소프트웨어 버전 관리 도구는 버전 관리 자료가 로컬 컴퓨터의 공유 폴더에 저장되어 관리도는 공유 폴더 방식, 서버에 저장되어 관리되는 클라이언트/서버 방식, 그리고 하나의 원격 저장소와 분산된 개발자 PC의 로컬 저장소에 함께 저장되어 관리되는 분산 저장 방식으로 분류됩니다. 

 

빌드 자동화 도구는 소스 코드 파일들을 컴파일한 후 여러 개의 모듈을 묶어 실행 파일로 만드는 과정을 빌드라고 하는데 이러한 빌드를 포함하여 테스트 및 배포를 자동화하는 도구를 빌드 자동화 도구라고 합니다. 대표적으로는 Jenkins와 Gradle 두 개가 있습니다. 

 

Jenkins는 JAVA 기반의 오픈 소스 형태로, 가장 많이 사용되는 빌드 자동화 도구입니다. 

  • 서블릿 컨테이너에서 실행되는 서버 기반 도구 
  • SVN, Git 등 대부분의 형상 관리 도구와 연동 가능
  • 친숙한 Web GUI 제공 
  • 여러 대 컴퓨터를 이용한 분산 빌드 가능 

Gradle 은 Groovy를 기반으로 한 오픈 소스 형태의 자동화 도구로, 안드로이드 앱 개발 환경에서 사용됩니다. 

  • 플러그인 설정하면 , JAVA, C/C++, Python 등의 언어도 빌드가 가능합니다. 
  • DSL을 스크립트 언어로 사용합니다. 
  • Gradle은 실행할 처리 명령들을 모아 태스크로 만든 후 태스크 단위로 실행합니다. 
  • 이전에 사용했던 태스크를 재사용 또는 공유 가능해서 빌드의 속도를 향상할 수 있는 장점이 있습니다. 

오늘은 소프트웨어의 패키징, 릴리즈 노트 작성, 디지털 저작권 관리, 소프트웨어 매뉴얼 (설치, 사용자), 버전 등에 대해 알아보았는데요 차근차근 공부하다 보면 그렇게 어려운 내용은 아닌 것 같아요 다음 시간에는 애플리 케이션 테스트 관리에 대해 공부해보겠습니다. 

'정보처리' 카테고리의 다른 글

인터페이스 구현  (0) 2020.05.27
애플리케이션 테스트 관리  (0) 2020.05.26
단위 모듈 구현과 테스트  (0) 2020.05.20
자료 구조에 대하여  (0) 2020.05.20
소프트웨어 아키텍처의 설계 과정  (0) 2020.05.13