소프트웨어 패키징
- 모듈별로 생성한 실행 파일들을 묶어 배포용 설치 파일을 만드는 것
패키징 작업 순서
- 기능 식별
- 모듈화
- 빌드 진행
- 사용자 환경 분석
- 패키징 및 적용 시험
- 패키징 변경 개선
- 배포
릴리즈 노트(Release Note)
- 소프트웨어 개발 과정에서 정리된 릴리즈 정보를 고객과 공유하기 위한 문서
릴리즈 노트 작성 항목
- Header(머릿말)
- 개요
- 목적
- 문제 요약
- 재현 항목
- 수정/개선 내용
- 사용자 영향도
- SW 지원 영향도
- 노트
- 면책 조항
- 연락처
릴리즈 노트 작성 순서
- 모듈 식별
- 릴리즈 정보 확인
- 릴리즈 노트 개요 작성
- 영향도 체크
- 정식 릴리즈 노트 작성
- 추가 개선 항목 식별
디지털 저작권 관리(DRM; Digital Right Management)
-
저작권자가 배포한 디지털 콘텐츠가 저작권자가 의도한 용도로만 사용되도록 하는 디지털 콘텐츠 관리 및 보호 기술
-
저작권: 창작가가 가지는 배타적 독점적 권리로, 타인의 침해를 받지 않을 고유한 권한
디지털 저작권 관리의 흐름 및 구성 요소
클리어링 하우스(Clearing House)
- 저작권에 대한 사용 권한, 라이선스 발급, 암호화된 키 관리 등을 수행하는 곳
콘텐츠 제공자(Contents Provider)
패키저(Packager)
- 콘텐츠를 메타 데이터와 함께 배포 가능한 형태로 묶어 암호화하는 프로그램
콘텐츠 분배자(Contents Distributor)
콘텐츠 소비자(Customer)
DRM 컨트롤러(DRM Controller)
- 배포된 콘텐츠의 이용 권한을 통제하는 프로그램
보안 컨테이너(Security Container)
- 콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안 장치
디지털 저작권 관리의 기술 요소
- 암호화(Encryption)
- 키 관리(Key Management)
- 암호화 파일 생성(Packager)
- 식별 기술(Identification)
- 저작권 표현(Right Expression)
- 정책 관리(Policy Management)
- 크랙 방지(Tamper Resistance)
- 인증(Authentication)
소프트웨어 설치 매뉴얼
- 개발 초기에서부터 적용된 기준이나 사용자가 소프트웨어를 설치하는 과정에 필요한 내용을 기록한 설명서와 안내서
설치 매뉴얼 작성 순서
- 기능 식별
- UI 분류
- 설치 파일 / 백업 파일 확인
- Uninstall 절차 확인
- 이상 Case 확인
- 최종 매뉴얼 적용
소프트웨어 사용자 매뉴얼 작성
- 사용자가 소프트웨어를 사용하는 과정에서 필요한 내용을 문서로 기록한 설명서와 안내서
- 사용자 매뉴얼은 컴포넌트 명세서와 컴포넌트 구현 설계서를 토대로 작성
사용자 매뉴얼 작성 순서
- 기능 식별
- 사용자 화면 분류
- 사용자 환경 파일 확인
- 초기화 절차 확인
- 이상 Case 확인
- 최종 매뉴얼 적용
소프트웨어 버전 등록
소프트웨어 패키징의 형상 관리
- 형상 관리(SCM; Software Configuration Management)는 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동
형상 관리 기능
형상 식별
- 형상 관리 대상에 이름과 관리 번호를 부여하고, 계층(Tree) 구조로 구분하여 수정 및 추적이 용이하도록 하는 작업
버전 제어
- 소프트웨어 업그레이드나 유지 보수 과정에서 생성된 다른 버전의 형상 항목을 관리
형상 통제
- 식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준선(Base Line)이 잘 반영될 수 있도록 조정하는 작업
형상 감사
- 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업
형상 기록
- 형상의 식별, 통제, 감사 작업의 결과를 기록-관리하고 보고서를 작성
소프트웨어의 버전 등록 관련 주요 기능
저장소(Repository)
- 최신 버전의 파일들과 변경 내역에 대한 정보들이 저장되어 있는 곳
가져오기(Import)
- 버전 관리가 되고 있지 않은 아무것도 없는 저장소(Repository)에 처음으로 파일을 복사함
체크아웃(Check-Out)
- 프로그램을 수정하기 위해 저장소(Repository)에서 파일을 받아옴
체크인(Check-In)
- 체크아웃 한 파일의 수정을 완료한 후 저장소(Repository)의 파일을 새로운 버전으로 갱신
커밋(Commit)
- 체크인을 수행할 때 이전에 갱신된 내용이 있는 경우에는 충돌(Conflict)을 알리고 diff 도구를 이용해 수정한 후 갱신을 완료
동기화(Update)
- 저장소에 있는 최신 버전으로 자신의 작업 공간을 동기화
소프트웨어 버전 등록 과정
- 가져오기(Import)
- 인출(Check-Out)
- 예치(Commit)
- 동기화(Update)
- 차이(Diff)
소프트웨어 버전 관리 도구
공유 폴더 방식
- 버전 관리 자료가 지역 컴퓨터의 공유 폴더에 저장되어 관리되는 방식
- 종류: SCCS, RCS, PVCS, QVCS 등
클라이언트/서버 방식
- 버전 관리 자료가 서버에 저장되어 관리되는 방식
- 종류: CVS, SVN(Subversion), CVSNT, Clear Case, CMVC, Perforce 등
분산 저장소 방식
-
버전 관리 자료가 하나의 원격 저장소와 분산된 개발자 PC의 지역 저장소에 함께 저장되어 관리되는 방식
-
종류: Git, GNU arch, DCVS, Bazaar, Mercurial, TeamWare, Bitkeeper, Plastic SCM 등
Subversion(서브버전, SVN)
- Subversion은 CVS를 개선한 것으로, 아파치 소프트웨어 재단에서 2000년에 발표
- 클라이언트/서버 구조로, 서버(저장소, Repository)에는 최신 버전의 파일들과 변경 사항이 관리
- 소스가 오픈되어 있어 무료로 사용
Subversion의 주요 명령어
add
- 새로운 파일이나 디렉터리를 버전 관리 대상으로 등록
commit
- 버전 관리 대상으로 등록된 클라이언트의 소스 파일을 서버의 소스 파일에 적용
update
- 서버의 최신 commit 이력을 클라이언트의 소스 파일에 적용
checkout
- 버전 관리 정보와 소스 파일을 서버에서 클라이언트로 받아옴
lock/unlock
- 서버의 소스 파일이나 디렉터리를 잠그거나 해제
import
- 아무것도 없는 서버의 저장소에 맨 처음 소스 파일을 저장하는 명령
export
- 버전 관리에 대한 정보를 제외한 순수한 소스 파일만을 서버에서 받아옴
info
- 지정한 파일에 대한 위치나 마지막 수정 일자 등에 대한 정보를 표시
diff
- 지정된 파일이나 경로에 대해 이전 리비전과의 차이를 표시
merge
- 다른 디렉터리에서 작업된 버전 관리 내역을 기본 개발 작업과 병행
Git(깃)
- 분산 버전 관리 시스템으로 2개의 저장소, 즉 지역 저장소와 원격 저장소가 존재
add
- 작업 내역을 지역 저장소에 저장하기 위해 스테이징 영역(Staging Area)에 추가함
commit
branch
checkout
merge
- 지정한 브랜치의 변경 내역을 현재 HEAD 포인터가 가리키는 브랜치에 반영함으로써 두 브랜치를 병합함
init
remote add
push
- 로컬 저장소의 변경 내역을 원격 저장소에 반영
fetch
- 원격 저장소의 변경 이력만을 지역 저장소로 가져와 반영
clone
- 원격 저장소의 전체 내용을 지역 저장소로 복제
Git(깃) 명령어 활용
계정 설정하기
- Git을 통해 버전을 관리하려면 먼저 사용자 이름과 사용자 이메일을 등록하여 계정을 설정
git config --global user.name "Minseol"
git config --global user.email "illyasviel@kakao.com"
지역 저장소 만들기
git init
변경 내역을 지역 저장소에 저장하기
git add --all // 파일 중 변경 내용이 있는 파일만 모두 스테이징 영역에 추가
git commit -m "첫 번째 커밋 작업 완료" // 작업 내역을 지역 저장소에 저장하면서 "첫 번째 커밋 작업 완료"라는 메시지를 부여
병합(Merge) 기능 사용하기
git branch new_test // 새로운 브랜치를 생성
// 가장 최근의 commit을 가리키는 포인터를 현재 작업중인 마스터 브랜치에서 new_test 브랜치로 이동
git checkout new_test
git add new_file.txt // 새로운 파일을 스테이징 영역에 추가
git commit -m "두번째 커밋 완료"
git checkout master
git merge new_test // new_test 브랜치의 커밋 내역을 마스터 브랜치에 반영
git branch --d new_test // new_test 브랜치를 제거
지역 저장소의 버전 관리 내역을 원격 저장소에 저장하기
git remote add minseol
// 사용자가 mikinano이고 저장소 이름이 minseol_test인 원격 저장소의 별명을 minseol로 지정
https://github.com/mikinano/minseol_test.git
git push minseol master // 원격 저장소(minseol)에 마스터 브랜치의 내용을 반영
빌드 자동화 도구
- 빌드를 포함하여 테스트 및 배포를 자동화하는 도구
- 빌드 자동화 도구에는 Ant, Make, Maven, Gradle, Jenkins 등이 있으며, 이중 Jenkins와 Gradle이 가장 대표적
Jenkins
- Java 기반의 오픈 소스 형태로, 서블릿 컨테이너에서 실행되는 서버 기반 도구
- SVN, Git 등 대부분의 형상 관리 도구와 연동이 가능
- 친숙한 Web GUI 제공으로 사용이 쉽다.
Gradle
- Groovy를 기반으로 한 오픈 소스 형태의 자동화 도구
- 안드로이드 앱 개발 환경에서 사용