본문 바로가기
  • Always Awake
정보처리기사/2과목

[정보처리기사 필기] 제품 소프트웨어 패키징

by NerdyBoy 2022. 2. 11.

목차

소프트웨어 패키징

릴리즈 노트 작성

디지털 저작권 관리(DRM)

소프트웨어 설치 매뉴얼 작성

소프트웨어 사용자 매뉴얼 작성

소프트웨어 버전 등록

소프트웨어 버전 관리 도구

빌드 자동화 도구

출처


 

소프트웨어 패키징

모듈별로 생성한 실행 파일들을 묶어 배포용 설치 파일을 만드는 것

 

1. 패키징 시 고려사항

  • 사용자의 시스템 환경, 즉 운영체제(OS), CPU, 메모리 등에 필요한 최소 환경을 정의
  • UI(User Interface)는 사용자가 눈으로 직접 확인할 수 있도록 시각적인 자료와 함께 제공하고 매뉴얼과 일치시켜 패키징
  • 하드웨어와 함께 관리될 수 있도록 Managed Service 형태로 제공하는것이 좋다
  • 내부 콘텐츠에대한 암호화 및 보안 고려
  • 여러 콘텐츠 및 단말기 간 DRM(디지털 저작권 관리) 연동 고려
  • 복잡성 및 비효율성 고려
  • 소프트웨어 종류에 적합한 암호화 알고리즘 적용

Managed Service : 소프트웨어를 24시간 모니터링하여 문제 발생시 바로 점검하는 등 체계적인 운영 관리와 유지 보수를 수행하는 서비스

 

 

2. 패키징 작업 순서

  • 패키징 주기는 개발 기법에 따라 달라짐. 각 주기 끝날 대마다 패키징 수행
  • 결과물은 테스트 서버에 배포
  • 최종 패키징 결과물은 온라인 또는 오프라인으로 배포
  • 온라인 배포 : 별도로 마련한 운영 서버에 설치 및 사용 매뉴얼과 함께 배포 파일을 등록하여 고객이 직접 다운받아 사용할 수 있도록 한다
  • 오프라인 배포 : CD-ROM 이나 DVD, USB 등에 설치 및 사용 매뉴얼과 함께 배포 파일을 담는다

순서

기능 식별 - 모듈화 - 빌드 진행 - 사용자 환경 분석 - 패키징 및 적용 시험 - 패키징 변경 개선 - 배포

 


릴리즈 노트 작성

 

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

 

1. 릴리즈 노트 초기 버전 작성 시 고려사항

  • 정확하고 완전한 정보를 기반으로 개발팀에서 직접 현재 시제로 작성
  • 신규 소스, 빌드 등의 이력이 정확하게 관리되어 변경 또는 개선된 항목에 대한 이력 정보들도 작성되어야 한다.

 

2. 릴리즈 노트 추가 버전 작성 시 고려사항

베타 버전이 출시되거나 긴급한 버그 수정, 업그레이드와 같은 자체기능 향상, 사용자 요청 등의 특수한 상황이 발생하는 경우

  • 긴급 수정하는 경우 버그 버전을 포함 모든 수정된 내용을 담아 노트 작성
  • 기능 업그레이드를 완료한 경우 릴리즈 버전 출시하고 릴리즈 노트
  • 사용자로부터 접수된 요구사항에의해 추가나 수정된 경우 별도의 릴리즈 버전 출시 후 릴리즈 노트 작성

 

3. 릴리즈 노트 작성 순서

  1. 모듈 식별 : 모듈 빌드 수행 후 릴리즈 노트에 작성될 내용 확인
  2. 릴리즈 정보 확인 : 노트 이름, 소프트웨어 이름, 릴리즈 버전, 릴리즈 날짜, 노트 날짜, 노트 버전 등 
  3. 릴리즈 노트 개요 작성 : 소프트웨어 및 변경사항 전체에 대한 간략한 내용 작성
  4. 영향도 체크 : 다른 소프트 웨어나 기능을 사용하는데 미칠 수 있는 영향
  5. 정식 릴리즈 노트 작성
  6. 추가 개선 항목 식별

 


 

디지털 저작권 관리(DRM)

 

1. 저작권

저작권이란 저작물에 대하여 창작자가 가지는 배타적 독점적 권리로 타인의 침해를 받지 않을 고유한 권한이다.

컴퓨터 프로그램들과 같이 복제하기 쉬운 저작물에 대해 불법 복제 및 배포 등을 막기 위한 기술적인 방법을 통칭해 저작권 보호 기술 이라고한다.

 

 

2. 디지털 저작권 관리(DRM; Digital Right Management) 개요

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

 

  • 아날로그의 경우에는 디지털로 변환한 후 패키저(Packager)에 의해 DRM 패키징을 수행
  • 크기가 작은경우 실시간 패키징 수행, 큰 경우 미리 패키징을 수행한 후 배포
  • 패키징 수행 시 콘텐츠에 암호화된 저작권자 서명이 포함되고 라이선스 정보가 클리어링 하우스(Clearing House) 에 등록된다.
  • 종량제 방식을 적용한 경우 클리어링 하우스를 통해 사용량 측정하여 요금 부과

클리어링 하우스(Clearing House) : 디지털 저작권 라이선스의 중개 및 발급 수행하는 곳. 결재도 수행

 

 

3. 디지털 저작권 관리의 흐름 및 구성 요소

 

디지털 저작권 관리 흐름도[1]

  • 콘텐츠 제공자(Contents Provider) : 콘텐츠를 제공하는 저작권자
  • 콘텐츠 분배자(Contents Distributer) : 암호화된 콘텐츠를 유통하는 곳이나 사람
  • 콘텐츠 소비자(Customer) : 콘텐츠를 구매해서 사용하는 주체
  • 패키저(Packager) : 콘텐츠를 메타 데이터와 함께 배포 가능한 형태로 묶어 암호화 하는 프로그램
  • DRM 컨트롤러 : 이용 권한을 통제하는 프로그램
  • 보안 컨테이너(Security Container) :  콘텐츠의 원본을 안전하게 유통하기 위한 전자적 보안 장치

 

4. 디지털 저작권 관리의 기술 요소

 

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

 

 


 

소프트웨어 설치 매뉴얼 작성

개발 초기에서부터 적용된 기준이나 사용자가 소프트웨어를 설치하는 과정에 필요한 내용을 기록한 설명서와 안내서

  • 사용자 기준 작성
  • 전 과정 빠짐없이 순서대로 설명
  • 예외 상황에 관한 내용을 별도로 분류하여 설명
  • 매뉴얼 개요에는 주요 특징, 구성과 설치 방법, 순서 등의 내용 기술

 

1. 서문

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

  • 문서이력 : 버전, 작성자, 작성일, 검토자, 일시, 검수인
  • 설치 매뉴얼 주석 : 주의 사항과 참고사항
  • 설치 도구의 구성 : exe, dll, ini, chm 등의 설치 관련 파일, log 폴더 설명
  • 설치 환경 체크 항목 : 사용자 환경, 응용 프로그램, 업그레이드 버전, 백업 폴더 확인 

 

2. 기본 사항

소프트웨어와 관련하여 기본적으로 설명되어야 할 항목. 다음과 같다

항목 설명
소프트웨어 개요 소프트웨어의 주요기능 및 UI
UI 화면 상 버튼, 프레임 등 그림으로 설명
설치 관련 파일 소프트웨어 설치에 필요한 파일 설명
exe, ini, log 등
설치 아이콘(Installation) 설치 아이콘 설명
프로그램 삭제 삭제 방법 설명
관련 추가 정보 소프트웨어 이외의 관련 설치 프로그램 정보
제작사 등의 정보 기술

 

3. 설치 매뉴얼 작성 방법

설치화면을 누락없이 캡처하고 순서대로 상세히 설명

  • 설치화면 UI, 설치 이상 메시지, 설치 완료 및 결과, FAQ, 설치 시 점검 사항, Network 환경 및 보안, 고객 지원 방법, 준수 정보 및 제한 보증에 대한 내용 기술

작성 순서

  1. 기능 식별 : 개발 목적과 주요 기능을 흐름 순으로 정리
  2. UI 분류 : 작성 순서대로 분류
  3. 설치 파일 / 백업 파일 확인 : 개별적인 기능 확인하여 기록
  4. Uninstall 절차 확인 : 직접 삭제 수행 하면서 단계별로 자세히 기록
  5. 이상 Case 확인 : 다양한 Case 만들어 확인하고 해당 Case에 대한 대처법 기록
  6. 최종 매뉴얼 적용 : 설치 완료된 화면과 메시지 캡처하여 추가, 완성된 매뉴얼 검토하고 고객지원 내용 기록

 


 

소프트웨어 사용자 매뉴얼 작성

 

사용자가 소프트웨어를 사용하는 과정에서 필요한 내용을 문서로 기록한 설명서와 안내서

  • 사용자가 소프트웨어 사용에 필요한 절차, 환경 등의 제반사항 모두 포함하도록 작성
  • 오류에 대한 패치나 기능에 대한 업그레이드 위해 매뉴얼 버전 관리
  • 개별적으로 동작이 가능한 컴포넌트 단위로 매뉴얼 작성
  • 개요에는 소프트웨어의 주요 특징, 매뉴얼의 구성과 실행 방법, 사용법, 항목별 점검 기준, 항목별 설정 방법 등에 대한 내용을 기술한다.

 

1. 서문

서문에는 문서이력, 사용자 매뉴얼의 주석, 기록 보관을 위해 필요한 내용 기술

  • 문서 이력 : 버전, 작성자, 작성일, 검토자, 일시, 검수인 
  • 사용자 매뉴얼의 주석 : 주의사항과 참고사항 기술
  • 기록 보관 내용 : 소프트웨어 등록 정보 기술. 등록 시 필요한 정보는 명칭, 모델명, 문서 번호, 제품 번호, 구입 날짜 등이다.

 

2. 기본사항

소프트웨어와 관련하여 기본적으로 설명되어야 할 항목

 

항목 설명
소프트웨어 개요 소프트웨어의 주요기능 및 UI
UI 화면 상 버튼, 프레임 등 그림으로 설명
소프트웨어 사용 환경 사용을 위한 최소 환경 설명
CPU, 메모리, 운영체제 등
최초 구동에 대한 설명
프로그램 충돌이나 개인정보, 보안 등에관한 주의사항
소프트웨어 관리 소프트웨어의 사용 종료 및 관리 등에 관한 내용 설명
모델, 버전별 특징 버전별로 UI 및 기능의 차이점 간략하게 
기능, 인터페이스의 특징 제품의 기능과 인터페이스의 특징 간략하게
소프트웨어 구동 환경 개발에 사용한 언어 및 호환 가능한 운영체제 설명
설치 후 구동하기까지의 과정을 운영체제별 설명

 

 

3. 사용자 매뉴얼 작성 방법

  • 사용자 화면 및 UI, 주요 기능 분류, 응용 프로그램 및 설정, 장치 연동, Network 환경, Profile 안내, 고객 지원 방법, 준수 정보 및 제한 보증

작성 순서

  1. 작성 지침 정의 : 사용자 환경에 필요한 정보를 제공할 수 있는 형태
  2. 사용자 매뉴얼 구성 요소 정의 : 소프트웨어 기능, 구성 객체 목록, 객체별 메소드, 메소드의 파라미터, 실제 사용 예, 사용자 환경 셋팅 방법 등
  3. 구성 요소별 내용 작성 
  4. 사용자 매뉴얼 검토

 


 

소프트웨어 버전 등록

 

1. 소프트웨어 패키징의 형상 관리

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

  • 소프트웨어 변경의 원인을 알아내고 제어, 적절히 변경되고 있는지 확인하여 해당 담당자에게 통보
  • 소프트웨어 개발의 전단계에 적용되는 활동이며, 유지보수 단계에서도 수행
  • 소프트웨어 개발의 전체 비용을 줄이고, 개발 과정의 여러 방해 요인이 최소화 되도록 보증하는 것을 목표로 함
  • 관리 항목에는 소스코드 뿐만아니라 프로젝트 계획, 분석서, 설계서, 프로그램 테스트 케이스 등 포함
  • 가시성과 추적성을 보장함으로써 소프트웨어의 생산성과 품질을 높일 수 있다.
  • Git, CVS, Subversion 등

 

2. 형상관리의 중요성

  • 지속적인 소프트웨어의 변경사항을 체계적으로 추적하고 통제 가능
  • 가시성과 추적성을 보장한다.
  • 배포본을 효율적으로 관리할 수 있다.
  • 여러명의 개발자가 소프트웨어를 동시 개발할 수 있다.

 

3. 형상 관리 기능

품질 보증을 위한 중요한 요소로서 다음과 같은 기능을 수행한다.

  • 형상 식별 : 형상관리 대상에 이름과 관리번호 부여, 계층(Tree) 구조로 구분하여 수정 및 추적이 용이 하도록
  • 버전 제어 : 소프트웨어 업그레이드나 유지 보수 과정에서 생성된 다른 버전의 형상 항목을 관리하고, 이를 위해 특정 절차의 도구(Tool)을 결합 시키는 작업
  • 형상 통제(변경 관리) : 변경 요구를 검토하여 현재의 기준선(Base Line)이 잘 반영될 수 있도록 하는 작업
  • 형상 감사 : 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 승인하는 작업
  • 형상 기록(상태 보고) : 형상의 식별, 통제, 감사 작업의 결과를 기록/관리 하고 보고서 작성

기준선(Base Line) : 정식으로 검토되고 합의된 명세서나 제품으로, 소프트웨어 개발 시 소프트웨어 변경을 적절히 제어할 수 있도록 도와줌

 

 

4. 소프트웨어의 버전 등록 관련 주요 기능

항목 설명
저장소(Repository) 최신 버전의 파일들과 변경 내역에 대한 정보들이 저장 되어있는 곳
가져오기(Import) 버전 관리가 되지 않은 아무것도 없는 저장소에 처음으로 파일 복사 수행
체크아웃(Check-Out) 프로그램 수정 위해 저장소에서 파일 받아옴
소스 파일과 함께 버전 관리를 위한 파일도 받아옴
체크인(Check-In) 체크아웃 한 파일의 수정을 완료한 후 저장소의 파일을 새로운 버전으로 갱신
커밋(Commit) 체크인을 수행할 때 이전에 갱신된 내용이 있는 경우에는 충돌을 알리고 diff 도구를 이용해 수정한 후 갱신을 완료한다.
동기화(Update) 저장소에 있는 최신 버전으로 자신의 작업 공간을 동기화 한다.

diff 도구 : 비교 대상이 되는 파일들의 내용을 비교하여 서로 다른 부분을 찾아 표시 해주는 도구

 

5. 소프트웨어 버전 등록 과정

  1. 가져오기(import) : 개발자가 저장소에 신규로 파일 추가
  2. 인출(Check-Out) : 수정 작업을 진행할 개발자가 저장소에 추가된 파일을 자신의 작업공간으로 호출
  3. 예치(Commit) : 인출한 파일을 수정한 후 설명을 붙여 저장소에 예치
  4. 동기화(Update) : 커밋 후 새로운 개발자가 작업 공간 동기화
  5. 차이(Diff) : 기록을 확인하면서 변경된 파일의 차이를 확인

 


 

소프트웨어 버전 관리 도구

 

1. 공유 폴더 방식

  • 버전 관리 자료가 로컬 컴퓨터의 공유 폴더에 저장되어 관리되는 방식
  • 공유 폴더의 파일을 자기 PC로 복사한 후 컴파일 하여 이상 유무를 확인
  • 파일 변경 사항을 데이터베이스에 기록
  • SCCS, RCS, PVCS, QVCS 등

 

2. 클라이언트/서버 방식

  • 버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리되는 방식
  • 서버의 자료를 개발자별로 자신의 PC로 복사하여 작업 후 변경내용 반영
  • 버전관리는 모두 서버에서 
  • 서버에 문제가 생기면, 복구전까지 협업 및 버전관리 작업 중단
  • CVS, SVN(Subversion), CVSNT, Clear Case, CMVC, Perforce 등

서브버전(SVN; Subversion)

CVS를 개선한 것으로, 아파치 소프트웨어 재단에서 2000년에 발표

  • 클라이언트/서버 구조로, 서버(저장소, Repository)에는 최신 버전의 파일들과 변경 내역이 관리
  • 작업 후 변경 내용을 서버에 커밋
  • 커밋 시 마다 리비전(Revision) 1씩 증가(처음 저장소 만들면 0)
  • 파일이나 디렉터리 이름 변경, 이동 가능

 

3. 분산 저장소 방식

  • 버전 관리 자료가 하나의 원격 저장소와 분산된 개발자 PC의 로컬 저장소에 함께 저장되어 관리되는 방식
  • 개발자별로 원격 저장소의 자료를 자신의 로컬 저장소로 복사하여 작업후 변경내용 로컬 저장소에서 우선 반영한 다음 이를 원격 저장소에 반영
  • 로컬 저장소에서 버전 관리 가능하므로 원격 저장소에 문제가 생겨도 로컬저장소의 자료를 이용하여 작업 가능
  • Git, GNU arch, DCVS, Bazaar, Mercurial, TeamWare, Bitkeeper, Plastic SCM 등

Git(깃)

  • 리누스 토발즈(Linus Torvalds)가 2005년 리눅스 커널 개발에 사용할 관리 도구로 개발한 이후 주니오 하마노(Junio Hamano)에 의해 유지 보수되고 있다.
  • Git은 분산버전 관리 시스템으로 2개의 저장소, 즉 로컬 저장소와 원격 저장소가 존재한다.
  • 브랜치를 이용하면 기본 버전 관리 틀에 영향을 주지 않으면서 다양한 형태의 기능 테스팅이 가능하다.
  • 파일 변화를 스냅샷(Snapshot)으로 저장하는데, 이는 이전 스냅샷의 포인터를 가지므로 버전흐름을 파악할 수 있다.

스냅샷(Snapshot) : 스냅샷은 영문자와 숫자가 혼합된 40자리 문자열로 표시된다.

 

 


 

빌드 자동화 도구

 

빌드란 소스코드 파일들을 컴파일한 후 여러 개의 모듈을 묶어 실행 파일로 만드는 과정이며, 이런 빌드를 포함하여 테스트 및 배포를 자동화 하는 도구를 빌드 자동화 도구라고 한다.

 

1. 대표적인 빌드 자동화 도구

빌드 자동화 도구에는 Ant, Make, Maven, Gradle, Jenkins 등이 있으며, GradleJenkins 가 가장 대표적이다

 

Jenkins

  • JAVA 기반의 오픈 소스 형태로, 가장 많이 사용되는 빌드 자동화 도구이다.
  • 서블릿 컨테이너 에서 실행되는 서버 기반 도구이다.
  • SVN, Git 등 대부분의 형상 관리 도구와 연동이 가능하다.
  • 친숙한 Web GUI 제공으로 사용이 쉽다.
  • 여러 대의 컴퓨터를 이용한 분산 빌드나 테스트가 가능하다.

서블릿 컨테이너 : 클라이언트 요청을 처리해 주기 위해 서버측에서 실행되는 작은 프로그램(Server Side Applet)인 서블릿 을 실행하고 생명주기를 관리하는 역할

Jenkins 실행화면 [2]

 

Gradle

  • Groovy를 기반으로 한 오픈 소스 형태의 자동화 도구로, 안드로이드 앱 개발 환경에서 사용
  • 안드로이드 뿐만 아니라 플러그인을 설정하면, JAVA, C/C++, Python 등의 언어도 빌드 가능
  • Groovy를 사용하여 만든 DSL(Domain Specific Language)을 스크립트 언어로 사용한다
  • 실행할 처리 명령들을 모아 태스크로 만든 후 태스크 단위로 실행한다.
  • 이전에 사용했던 태스크를 재사용하거나 다른 시스템의 태스크를 공유할 수 있는 빌드 캐시 기능을 지원한다.

 

Gradle 빌드화면[3]

 


출처

자료 참고: 

시나공 정보처리기사 필기 2022를 참고하여 작성되었습니다

표지

[1]  https://lipcoder.tistory.com/297

[2] https://www.bearpooh.com/50

[3]https://stanleykou.tistory.com/entry/4-Gradle%EB%A1%9C-%EC%9E%90%EB%B0%94-%EB%B9%8C%EB%93%9C%ED%95%98%EA%B8%B0

댓글