기타/정처기

정보처리기사 실기 시나공 11장 제품 소프트웨어 패키징

TheWing 2020. 12. 31. 18:22

소프트웨어 패키징

소프트웨어 패키징의 개요

  • 소프트웨어 패키징이란 모듈별로 생성한 실행 파일들을 묶어 배포용 설치 파일을 만드는 것을 말한다
    • 개발자가 아니라 사용자를 중심으로 진행한다
    • 사용자를 중심으로 진행되는 작업이므로 사용자의 편의성 및 실행 환경을 우선적으로 고려해야한다

패키징 시 고려사항

  • 사용자의 시스템 환경, 즉 운영체제(OS), CPU, 메모리 등에 필요한 최소 환경을 정의
  • UI(User Interface)는 사용자가 눈으로 직접 확인할 수 있도록 시각적인 자료와 함게 제공하고 메뉴얼을 일치 시켜 패키징한다.

패키징 작업 순서

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

릴리즈 노트 작성

릴리즈 노트(Release Note)의 개요

  • 릴리즈 노트는 개발 과정에서 정리된 릴리즈 정보를 소프트웨어의 최종 사용자인 고객과 공유하기 위한 문서이다.
    • 릴리즈 노트를 통해 테스트 진행 방법에 대한 결과와 소프트웨어 사양에 대한 개발팀의 정확한 준수 여부를 확인할 수 있다.

릴리즈 노트 작성 순서

  • 모듈 식별
  • 릴리즈 정보 확인
  • 릴리즈 노트 개요 작성
  • 영향도 체크
  • 정식 릴리즈 노트 작성
  • 추가 개선 항목 식별

디지털 저작권 관리(DRM)

저작권의 개요

  • 저작권이란 소설, 시 , 논문, 강연, 연술, 음악, 무용, 회화, 서예, 건축물, 사진, 영상, 컴퓨터프로그램 저작물 등에 대하여 창작자가 가지는 배타적 독점권 권리로 타인의 침해를 받지 않을 고유한 권한이다.

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

  • 디지털 저작권 관리는 저작권자가 배포한 디지털 콘텐츠가 저작권자가 의도한 용도로만 사용되도록 디지털 콘텐츠의 생성, 유통, 이용까지의 전 과정에 걸쳐 사용되는 디지털 콘텐츠 관리 및 보호 기술이다
    • 원본 콘텐츠가 아날로그인 경우에는 디지털로 변환한 후 패키저(Packager)에 의해 DRM 패키징을 수행한다
    • 패키징을 수행하면 콘텐츠에는 암호화된 저작권자의 전자서명이 포함되고 저작권자가 설정한 라이선스 정보가 클리어링 하우스(Clearing House) 에 등록된다.

디지털 저작권 관리의 흐름도

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

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

 

소프트웨어 버전 등록

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

  • 형상 관리(SCM; Software Configuration Management)는 소프트웨어의 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동이다.
    • 소프트웨어 변경의 원인을 알아내고 제어하며, 적절히 변경되고 있는지 확인하여 해당 담당자에게 통보한다.
    • 형상 관리는 소프트웨어 개발의 전 단계에 적용되는 활동이며, 유지보수 단계에서도 수행된다.
    • 형상 관리는 소프트웨어 개발의 전체 비용을 줄이고, 개발 과정의 여러 방해 요인이 최소화 되도록 보증하는 것을 목적으로 한다.

형상 관리의 중요성

  • 지속적인 소프트웨어의 변경 사항을 체계적으로 추적하고 통제할 수 있다.
  • 제품 소프트웨어에 대한 무절제한 변경을 방지할 수 있다.
  • 제품 소프트웨어에서 발견된 버그나 수정 사항을 추적할 수 있다.
  • 소프트웨어는 형태가 없어 가시성이 결핍되므로 진행 정도를 확인하기 위한 기준으로 사용될 수 있다.

소프트웨어 버전 등록 과정

  • 가져오기(Import)
  • 인출(Check-Out)
  • 예치(Commit)
  • 동기화(Update)
  • 차이(Diff)

소프트웨어 버전 관리 도구

공유 폴더 방식

  • 공유 폴더 방식은 버전 관리 자료가 로컬 컴퓨터의 공유 폴더에 저장되어 관리 되는 방식
    • 개발자들은 개발이 완료된 파일을 약속된 공유 폴더에 매일 복사한다
    • 담당자는 공유 폴더의 파일을 자기 PC로 복사한 후 컴파일하여 이상 유무를 확인한다

클라이언트/서버 방식

  • 클라이언트/서버 방식은 버전 관리가 자료가 중앙 시스템(서버)에 저장되어 관리되는 방식
    • 서버의 자료를 개발자 별로 자신의 PC(클라이언트)로 복사하여 작업한 후 변경된 내용을 서버에 반영한다
    • 모든 버전 관리는 서버에서 수행된다
    • 종류에는 CVS, SVN(Subversion), CVSNT, Clear Case, CMVC, Perforce

분산 저장소 방식

  • 분산 저장소 방식은 버전 관리 자료가 하나의 원격 저장소와 분산된 개발자 PC의 로컬 저장소에 함께 저장되어 관리되는 방식
    • 개발자별로 원격 저장소의 자료를 자신의 로컬 저장소로 복사하여 작업한 후 변경된 내용을 로컬 저장소에 우선 반영(버전 관리) 한 다음 이를 원격 저장소에 반영한다
    • 종류에는 Git, GNU arch, DCVS, Bazaar, Mercurial 등이 있다

Subversion(서브버전, SVN)

  • Subversion은 CVS를 개선한 것으로, 아파치 소프트웨어 재단에서 2000년에 발표하였따.
    • 클라이언트/서버 구조로 , 서버(저장소, Repository)에는 최신 버전의 파일들과 변경 내역이 관리된다.
    • 서버의 자료를 클라이언트로 복사해와 작업한 후 변경 내용을 서버에 반영(Commit)한다
    • 커밋(Commit)할 때마다 리비전(Revision)이 1 씩 증가한다
    • 소스가 오픈되어 있어 무료로 사용할 수 있다.
    • CVS의 단점이었던 파일이나 디렉터리의 이름 변경, 이동 등이 가능하다

Git(깃)

  • Git은 리누스 토발즈(Linus Torvalds)가 2005년 리눅스 커널 개발에 사용할 관리 도구로 개발한 후 주니어 하마노(Junio Hamano)에 의해 유지보수 되고 있다
    • Git은 분산 버전 관리 시스템으로 2개의 저장소, 즉 지역(로컬) 저장소와 원격저장소가 존재한다
    • 지역 저장소는 개발자들이 실제 개발을 진행하는 장소로, 버전 관리가 수행된다
    • 원격 저장소는 여러 사람들이 협업을 위해 버전을 공동 관리하는 곳으로, 자신의 버전 관리 내역을 반영하거나 다른 개발자의 변경 내용을 가져올 때 사용한다.

빌드 자동화 도구

빌드 자동화 도구의 개념

  • 빌드란 소스 코드 파일들을 컴파일 한 후 여러 개의 모듈을 묶어 실행 파일로 만드는 과정이며, 이러한 빌드를 포함하여 테스트 및 배포를 자동화하는 도구를 빌드 자동화 도구라고한다
    • 빌드 자동화 도구에는 Ant,Jenkins, Maven,Gradle 등이 있으며 Jenkins와 Gradle이 대표적이다

Jenkins

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

Gradle

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