소프트웨어 패키징
소프트웨어 패키징의 개요
- 소프트웨어 패키징이란 모듈별로 생성한 실행 파일들을 묶어 배포용 설치 파일을 만드는 것을 말한다
- 개발자가 아니라 사용자를 중심으로 진행한다
- 사용자를 중심으로 진행되는 작업이므로 사용자의 편의성 및 실행 환경을 우선적으로 고려해야한다
패키징 시 고려사항
- 사용자의 시스템 환경, 즉 운영체제(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)로 만든 후 테스크 단위로 실행한다
- 이전에 사용했던 테스크를 재사용하거나 다른 시스템의 테스크를 공유할 수 있는 빌드 캐시 기능을 지원하므로 빌드의 속도를 향상시킬 수 있다.
'기타 > 정처기' 카테고리의 다른 글
정보처리기사 실기 용어 정리 자료 (0) | 2020.12.31 |
---|---|
정보처리기사 실기 시나공 10장 응용 SW 기초 기술 활용 (0) | 2020.12.31 |
정보처리기사 실기 시나공 9장 소프트웨어 개발 보안 구축 (0) | 2020.12.31 |
정보처리기사 실기 시나공 8장 SQL 응용 (0) | 2020.12.31 |
정보처리기사 실기 시나공 7장 애플리케이션 테스트관리 (0) | 2020.12.31 |