제품 소프트웨어 패키징
- 소프트웨어 패키징
- 모듈별로 생성한 실행 파일들을 묶어 배포용 설치 파일을 만드는 것
- 사용자 중심으로 진행
- 소스 코드는 향후 관리를 고려하여 모듈화하여 패키징 함
- 패키징 작업 순서 - 기능 식별 -> 모듈화 -> 빌드 진행 -> 사용자 환경 분석 -> 패키징 및 적용 시험 -> 패키징 변경 개선 -> 배포
- 릴리즈 노트 작성 항목
- 릴리즈 노트 - 소프트웨어 재발 과정에서 정리된 릴리즈 정보를 최종 사용자인 고객과 공유하기 위한 문서
- Header - 릴리즈 노트 이름, 소프트웨어 이름, 릴리즈 버전, 릴리즈 날짜, 릴리즈 노트 날짜, 릴리즈 노트 버전 등
- 개요 - 소프트웨어 및 변경사항 전체에 대한 간략한 내용
- 목적 - 해당 릴리즈 버전에서의 새로운 기능이나 수정된 기능의 목록과 릴리즈 노트의 목적에 대한 간략한 개요
- 문제 요약 - 수정된 버그에 대한 간략한 설명 또는 릴리즈 추가 항목에 대한 요약
- 재현 항목 - 버그 발견에 대한 과정 설명
- 수정/개선 내용 - 버그를 수정/개선한 내용을 간단히 설명
- 사용자 영행도 - 사용자가 다른 기능들을 사용하는데 있어 해당 릴리즈 버전에서의 기능 변화가 미칠 수 있는 영향에 대한 설명
- SW 지원 영향도 - 해당 릴리즈 버전에서의 기능 변화가 다른 응용 프로그램들을 지원하는 프로세스에 미칠 수 있는 영향에 대한 설명
- 노트 - SW/HW 설치 항목, 업그레이드, 소프트웨어 문서화에 대한 참고 항목
- 면책 조항 - 회사 및 소프트웨어와 관련하여 참조할 사항
- 연락처 - 사용자 지원 및 문의 응대를 위한 연락처 정보
- 저작권
- 저작물 등에 대하여 창작자가 가지는 배타적 독점적 권리, 타인의 침해를 받지 않을 고유한 권한
- 디지털 저작권 관리
- 저작권자가 배포한 디지털 콘텐츠가 저작권자가 의도한 용도로만 사용되도록 디지털 콘텐츠의 생성, 유통, 이용까지의 전 과정에 걸쳐 사용되는 디지털 콘텐츠 관리 및 보호 기술
- 원본 콘텐츠가 아날로그인 경우, 디지털로 변환한 후 패키저로 DRM 패키징을 수행함
- 패키징을 수행하면 콘텐츠에는 암호화된 저작권자의 전자서명이 포함되고 저작권자가 설정한 라이선스 정보가 클리어링 하우스에 등록됨
- 디지털 저작권 관리의 구성 요소
- 클리어링 하우스 - 저작권에 대한 사용 권한, 라이선스 발급, 암호화된 키 관리, 사용량에 따른 결제 관리 등을 수행하는 곳
- 콘텐츠 제공자 - 콘텐츠를 제공하는 저작권자
- 패키저 - 콘텐츠를 메타 데이터와 함께 배포 가능한 형태로 묶어 암호화하는 프로그램
- 콘텐츠 분배자 - 암호화된 콘텐츠를 유통하는 곳이나 사람
- 콘텐츠 소비자 - 콘텐츠를 구매해서 사용하는 주체
- DRM 컨트롤러 - 배포된 콘텐츠의 이용권한을 통제하는 프로그램
- 보안 컨테이너 - 콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안 장치
- 디지털 저작권 관리의 기술 요소
- 암호화 - 콘텐츠 및 라이선스를 암호화하고 전자 서명을 할 수 있는 기술
- 키 관리 - 콘텐츠를 암호화한 키에 대한 저장 및 분배 기술
- 암호화 파일 생성 - 콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술
- 식별 기술 - 콘텐츠에 대한 식별 체계 표현 기술
- 저작권 표현 - 라이선스의 내용 표현 기술
- 정책 관리 - 라이선스 발급 및 사용에 대한 정책 표현 및 관리 기술
- 크랙 방지 - 크랙에 의한 콘텐츠 사용 방지 기술
- 인증 - 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술
- 소프트웨어 설치 매뉴얼
- 개발 초기에서부터 적용된 표준이나 사용자가 소프트웨어를 설치하는 과정에 필요한 내용을 기록한 설명서와 안내서
- 사용자 기준으로 작성
- 설치 시작부터 완료할 때까지의 전 과정을 빠짐없이 순서대로 설명함
- 설치 과정에서 표시될 수 있는 오류 메시지 및 예외 상황에 관한 내용을 별도로 분류하여 설명함
- 소프트웨어 사용자 매뉴얼
- 사용자가 소프트웨어를 사용하는 과정에서 필요한 내용을 문서로 기록한 설명서와 안내서
- 사용자가 소프트웨어 사용에 필요한 절차, 환경 등의 제반사항이 모두 포함되도록 작성함
- 소프트웨어 배포 후 발생될 수 있는 오류에 대한 패치나 기능에 대한 업그레이드를 위해 매뉴얼의 버전을 관리함
- 개별적으로 동작이 가능한 컴포넌트 단위로 매뉴얼을 작성함
- 컴포넌트 명세서와 컴포넌트 구현 설계서를 토대로 작성함
- 소프트웨어 패키징의 형상 관리
- 형상 관리 - 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동
- 소프트웨어 개발의 전 단계에 적용된 활동, 유지보수 단계에서도 수행됨
- 소프트웨어 개발의 전체 비용을 줄임, 개발 과정의 여러 방해 요인이 최소화되도록 보증하는 것을 목적으로 함
- 형상 관리 기능
- 형상 식별 - 형상 관리 대상에 이름과 관리 번호를 부여하고, 계층 구조로 구분하여 수정 및 추적이 용이하도록 하는 작업
- 버전 제어 - 소프트웨어 업그레이드나 유지 보수 과정에서 생성된 다른 버전의 형상 항목을 관리하고, 이를 위해 특정 절치와 도구를 결합시키는 작업
- 형상 통제 - 식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준선이 잘 반영될 수 있도록 조정하는 작업
- 형상 감사 - 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업
- 형상 기록 - 형상의 식별, 통제, 감사 작업의 결과를 기록.관리하고 보고서를 작성하는 작업
- 소프트웨어의 버전 등록 관련 주요 기능
- 저장소 - 최신 버전의 파일들과 변경 내역에 대한 정보들이 저장되어 있는 곳
- 가져오기 - 버전 관리가 되고 있지 않은 아무것도 없는 저장소에 처음으로 파일을 복사함
- 체크아웃 - 프로그램을 수정하기 위해 저장소에서 파일을 받아옴
- 체크인 - 체크아웃 한 파일의 수정을 완료한 후 저장소의 파일을 새로운 버전으로 갱신함
- 커밋 - 체크인을 수행할 때 이전에 갱신된 내용이 있는 경우에는 충돌을 알리고 diff 도구를 이용해 수정한 후 갱신을 완료함
- 동기화 - 저장소에 있는 최신 버전으로 자신의 작업 공간을 동기화함
- 소프트웨어 버전 관리 도구 - 공유 폴더 방식
- 버전 관리 자료가 지역 컴퓨터의 공유 폴더에 저장되어 관리 되는 방식
- 파일을 잘못 복사하거나 다른 위치로 복사하는 것에 대비하기 위해 파일의 변경 사항을 데이터베이스에 기록하여 관리함
- 종류 - SCCS, RCS, PVCS, QVCS 등
- 소프트웨어 버전 관리 도구 - 클라이언트/서버 방식
- 버전 관리 자료가 서버에 저장되어 관리 되는 방식
- 서버에 문제가 생기면 서버가 복구되기 전까지 다른 개발자와의 협업 및 버전 관리 작업은 중단됨
- 종류 - CVS, SVN, CVSNT, Clear Case, CMVC, Perforce 등
- 소프트웨어 버전 관리 도구 - 분산 저장소 방식
- 버전 관리 자료가 하나의 원격 저장소와 분산된 개발자 PC의 지역 저장소에 함께 저장되어 관리되는 방식
- 지역 저장소에서 버전 관리가 가능하므로 원격 저장소에 문제가 생겨도 지역 저장소의 자료를 이용하여 작업할 수 있음
- 종류 - Git, GNU arch, DCVS, Bazaar, Mercurial, TeamWare, Bitkeeper, Plastic SCM 등
- Subversion
- CVS를 개선한 것, 2000년 아파치 소프트웨어 재단에서 발표
- 클라이언트/서버 구조로, 서버에는 최신 버전의 파일들과 변경 사항이 관리됨
- 소스가 오픈되어 무료 사용 가능
- CVS의 단점이었던 파일이나 디렉터리의 이름 변경, 이동 등이 가능함
- Subversion의 주요 명령어
- add - 새로운 파일이나 디렉터리를 버전 관리 대상으로 등록함
- commit - 버전 관리 대상으로 등록된 클라이언트의 소스 파일을 서버의 소스 파일에 적용함
- update - 서버의 최신 commit 이력을 클라이언트의 소스 파일에 적용함
- checkout - 버전 관리 정보와 소스 파일을 서버에서 클라이언트로 받아옴
- lock/unlock - 서버의 소스 파일이나 디렉터리를 잠그거나 해제함
- import - 아무것도 없는 서버의 저장소에 맨 처음 소스 파일을 저장하는 명령어, 한 번 사용하면 다시 사용하지 않음
- export - 버전 관리에 대한 정보를 제외한 순수한 소스 파일만을 서버에서 받아옴
- into - 지정한 파일에 대한 위치나 마지막 수정 일자 등에 대한 정보를 표시함
- diff - 지정된 파일이나 경로에 대해 이전 리버전과의 차이를 표시함
- merge - 다른 디렉터리에서 작업된 버전관리 내역을 기본 개발 작업과 방합함
- Git
- 2005년 리누스 토발즈가 리눅스 커널 개발에 사용할 관리도구로 개발한 이후 주니오 하마노에 의해 유지 보수되고 있음
- 분산 버전 관리 시스템으로 2개의 저장소, 즉 지역 저장소와 원격 저장소가 존재함
- 버전 관리가 지역 저장소에서 진행되므로 버전 관리가 신속하게 처리되고, 원격 저장소나 네트워크에 문제가 있어도 작업이 가능함
- Git의 주요 명령어
- add - 작업 내역을 지역 저장소에 저장하기 위해 스테이징 영역에 추가함
- commit - 작업 내역을 지역 저장소에 저장함
- branch - 새로운 브랜치를 생성하며, 최초로 commit을 하면 마스터 브런치가 생성됨
- checkout - 지정한 브랜치로 이동함
- merge - 지정한 브랜치의 변경 내역을 현재 HEAD 포인터가 가리키는 브랜치에 반영함으로써 두 브랜치를 병합함
- init - 지역 저장소를 생성함
- remote add - 원격 저장소에 연결함
- push - 로컬 저장소의 변경 내역을 원격 저장소에 반영함
- fetch - 원격 저장소의 변경 이력만을 지역 저장소로 가져와 반영함
- done - 원격 저장소의 전체 내용을 지역 저장소로 복제함
- 빌드 자동화 도구
- 빌드를 포함하여 테스트 및 배포를 자동화 하는 도구
- 애자일과 같은 지속적인 통합 개발 환경에서 유용하게 활용됨
- 빌드 자동화 도구 종류 - Jenkins, Gradle, Ant, Maven, Make 등
- Jenkins
- JAVA 기반의 오픈 소스 형태로, 서블릿 컨테이너에서 실행되는 서버 기반 도구
- 가장 많이 사용되는 빌드 자동화 도구
- SVN, Git 등 대부분의 형상 관리 도구와 연동 가능
- 친숙한 Web GUI 제공, 사용이 쉬움
- Gradle
- Groovy를 기반으로 한 오픈 소스 형태의 자동화 도구
- 안드로이드 앱 개발 환경에서 사용됨
- 플러그인 설정시 JAVA, C/C++, Python 등의 언어도 빌드 가능
- Groovy를 사용해서 만든 DSL을 스크립트 언어로 사용함
- Ant
- 아파치 소프트웨어 재단에서 개발한 자동화 도구
- 자바 프로젝트의 공식적인 빌드 도구
- 정해진 규칙이나 표준이 없는 것이 특징
- Maven
- 아파치 소프트웨어 재단에서 Ant의 대안으로 개발한 자동화 도구
- 의존성을 설정하여 라이브러리를 관리함
- 규칙이나 표준이 존재하여 예외 사항만 기록함
댓글남기기