반응형

대표 이미지 제품 소프트웨어 패키징

 

소프트웨어 패키징

 

1. 소프트웨어 패키징의 개요

-. 모듈별로 생성한 실행 파일들을 묶어 배포용 설치 파일을 만드는 것을 말한다. 사용자를 중심으로 진행하며, 소스코드는 향후 관리를 고려하여 모듈화 하여 패킹 한다.

 

2. 패키징 시 고려사항

-. 사용자의 시스템 환경(OS, CPU, 메모리 등)에 필요한 최소 환경을 정의하며, 사용자에게 배포되는 소프트웨어이므로 내부 콘텐츠에 대한 암호화 및 보안을 고려한다.

 

3. 패키징 작업 순서

-. 짧은 개발 주기를 반복하는 애자일 기법인 경우에는 보통 2~4주 내에서 지정하며, 각 주기가 끝날 때마다 패키징을 수행한다. 패키징의 순서는 다음과 같다.

기능 식별
-. 작성된 코드의 기능을 확인한다.
모듈화
-. 확인된 기능 단위로 코드를 분류한다.
빌드 진행
-. 모듈 단위별로 실행 파일을 만든다.
사용자 환경 분석
-. , 모바일, PC 등 소프트웨어가 사용될 환경이나 OS, CPU, RAM 등의 최소 운영 환경을 정의한다.
패키징 및 적용 시험
-. 빌드된 실행 파일들을 정의된 환경에 맞게 배포용 k일 형식으로 패키징 하며, 정의된 환경에서 패키징 결과를 테스팅한 후 소프트웨어에 대한 불편사항을 사용자에게 확인한다.
패키징 변경 개선
-. 확인된 불편 사항을 반영하기 위한 패키징의 변경 및 개선을 진행한다.
배포 -. 배포 수정 시 오류가 발생하면 해당 개발자에게 전달하여 수정을 요청한다.

 


 

디지털 저작권 관리(DRM)

 

1. 디지털 저작권 권리(DRM, Digital Right Management)의 개요

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

-. 패키징을 수행하면 콘텐츠에는 암호화된 저작권자의 전자서명이 포함되고 저작권자가 설정한 라이선스 정보가 클리어링 하우스(Clearing House)에 등록된다.

 

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

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

-. 클리어링 하우스(Clearing House) : 저작권에 대한 사용 권한, 라이선스 발급, 암호화된 키 관리, 사용량에 따른 결제 관리 등을 수행하는 곳

-. 패키저(Packager) : 콘텐츠를 메타 데이터와 함께 배포 가능한 형태로 묶어 암호화 하는 프로그램

-. 콘텐츠 분배자(Contents Distributor) : 암호화된 콘텐츠를 유통하는 곳이나 사람

-. DRM 컨트롤러(DRM Controller) : 배포된 콘텐츠의 이용 권한을 통제하는 프로그램

-. 보안 컨테이너(Security Container) : 콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안 장치

 

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

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

 


 

소프트웨어 버전 등록

 

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

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

-. 관리 항목에는 소스 코드 뿐만 아니라 프로젝트 계획, 분석서, 설계서, 프로그램, 테스트케이스 등이 포함된다.

-. 형상관리를 통해 가시성과 추적성을 보장함으로써 소프트웨어의 생산성과 품질을 높일 수 있다.

-. 소프트웨어는 형태가 없어 가시성이 결핍되므로 형상관리를 함으로써, 진행 정도를 확인하기 위한 기준으로 사용될 수 있다.

 

2. 형상 관리 기능

-. 형상 관리는 품질 보증을 위한 중요한 요소로서 다음과 같은 기능을 수행한다.

 

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

-. 저장소(Repository) : 최신 버전의 파일들과 변경 내역에 대한 정보들이 저장되어 있는 곳

-. 가져오기(Import) : 버전 관리가 되고 있지 않은 아무것도 없는 저장소(Repository)에 처음으로 파일을 복사 한다.

-. 체크아웃(Check-Out) : 프로그램을 수정하기 위해 저장소에서 파일을 받아온다. (소스 파일과 함께 버전 관리를 위한 파일들도 같이 받아 온다.)

-. 체크인(Check-In) : 체크아웃 한 파일의 수정을 완료한 후 저장소(Repository)의 파일을 새로운 버전으로 갱신한다.

-. 커밋(Commit) : 체크인을 수행할 때 이전에 갱신된 내용이 있는 경우에는 충돌(Conflict)을 알리고 Diff도구를 이용해 수정한 후 갱신을 완료한다.

 

4. 소프트웨어의 버전 등록 순서

 


 

소프트웨어 버전 관리 도구

 

1. 공유 폴더 방식

-. 버전 관리 자료가 로컬 컴퓨터의 공유 폴더에 저장되어 관리되는 방식

 

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

-. 버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리되는 방식으로, 서버의 자료를 개발자가 자신의 PC(클라이언트)로 복사하여 작업한 후 변경된 내용을 서버에 반영한다.

-. 모든 버전 관리는 서버에서 수행되며 대표적인 예로 SVN이 있다.

 

1) Subversion(서브 버전, SVN)

-. 모든 개발 작업은 trunk 디렉터리에서 수행되며, 추가 작업은 branches 디렉토리 안에 별도의 디렉토리를 만들어 작업을 완료한 후 trunk 디렉토리와 병합(Merge)한다. 커밋(Commit)할 때마다 리비전(Revision)1씩 증가한다.

-. Trunk : 몸통, 줄기 라는 의미로 개발 과정에서 가장 중심이 되는 디렉토리.

-. Branches : 가지, 부문이라는 의미로, 메인 개발 과정과는 별도로 새로운 기능의 테스트와 같이 추가적인 작업을 수행하기 위한 디렉토리.

Subversion을 이용한 버전 관리  예시

 

3. 분산 저장소 방식

-. 버전 관리 자료가 하나의 원격 저장소와 분산된 개발자 PC의 로컬 저장소에 함께 저장되어 관리되는 방식으로, 개발자 별로 원격 저장소의 자료를 자신의 로컬 저장소로 복사하여 작업한 후 변경된 내용을 로컬 저장소에서 우선 반영(버전 관리)한 다음 이를 원격 저장소에 반영 한다.

-. 로컬 저장소에서 버전 관리가 가능하므로 원격 저장소에 문제가 생겨도 로컬 저장소의 자료를 이용하여 작업할 수 있다.

-. 대표적인 예로 Git이 있다.

1) Git()

-. 브랜치를 이용하면 기본 버전 관리 틀에 영향을 주지 않으면서 다양한 형태의 기능 테스팅이 가능한 형상관리 툴.

-. 파일의 변화를 스냅샷(Snapshot, 스냅샷은 영문자와 숫자가 혼합된 40자리 문자열)으로 저장하는데, 스냅샷은 이전 스냅샷의 포인터를 가지므로 버전의 흐름을 파악할 수 있다.

-. Git의 주요 명령어는 다음과 같다.

add : 작업 내역을 지역 저장소에 저장하기 위해 스테이징 영역(Staging Area)에 추가 한다.

Commit : 작업 내역을 지역 저장소에 저장한다.

branch : 새로운 브랜치를 생성하는 명령어. 최초로 commit을 하면 master 브랜치가 생성된다.

checkout : 지정한 브랜치로 이동하는 명령어. 현재 작업중인 브랜치는 HEAD 포인터가 가리키는데, checkout 명령을 통해 HEAD 포인터를 지정한 브랜치로 이동시킨다.

merge : 지정한 브랜치의 변경 내역을 현재 HEAD 포인터가 가리키는 브랜치에 반영함으로써 두 브랜치를 병합한다.

init : 지역 저장소를 생성한다

push : 로컬 저장소의 변경 내역을 원격 저장소에 반영한다.

Git을 이용한 버전 관리 예시

 


 

빌드 자동화 도구

 

1. 빌드 자동화 도구의 개념

-. 빌드를 포함하여 테스트 및 배포를 자동화 하는 도구를 빌드 자동화 도구라고 한다. 애자일 환경에서는 하나의 작업이 마무리될 때마다 모듈 단위로 나눠서 개발된 코드들이 지속적으로 통합되는데, 이러한 지속적인 통합(Continuous Integration)개발 환경에서 빌드 자동화 도구는 유용하게 활용된다. (Jenkins Gardle이 대표적)

 

1) Jenkins

-. JAVA 기반의 오픈소스 형태로, 가장 많이 사용되는 빌드 자동화 도구이다. SVN, Git등 대부분의 형상 관리 도구와 연동이 가능하며 Web GUI를 제공한다.

2) Gardle

-. 안드로이드 앱 개발 환경에서 사용된다. 안드로이드 뿐만 아니라 플러그인을 설정하면, JAVA, C/C++, Python 등의 언어도 빌드가 가능하다. Gardle은 실행할 처리 명령들을 모아 Task로 만든 후 Task 단위로 실행한다.

-. 이전에 사용했던 태스크를 재사용하거나 다른 시스템의 태스크를 공유할 수 있는 빌드 캐시 기능을 지원하므로 빌드의 속도를 향상시킬 수 있다.

반응형

+ Recent posts