2과목 소프트웨어 개발 제품 소프트웨어 패키징 046 ~ 053

2024. 1. 23. 19:33
728x90

046. 소프트웨어 패키징

: 기능별로 생성한 실행 파일들을 묶어 배포용 설치 파일을 만드는 것. 

- 사용자를 중심으로 진행.

 

- 패키징 시 고려사항

  • 사용자 시스템 환경 (운영체제, CPU, 메모리 등에 필요한 최소 환경)
  • UI
  • Managed Service 형태로 제공
  • 내부 콘텐츠에 대한 암호화 및 보안 고려
  • 다른 여러 콘텐츠 및 단말기간 DRM 연동 고려
  • 암호화 알고리즘 적용

- 보통 2~4주 주기 끝날 때마다 패키징 수행.  > 테스트 서버에 배포. 

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

  • msi : Windows용 패키지 형식
  • dmg : MacOS용 패키지 형식
  • jar : java 응용 소프트웨어나 라이브러리를 배포하기 위한 패키지 형식
  • war : java Servlet, java Class, xml 및 웹 애플리케이션 서비스를 제공하기 위한 패키지 형식
  • ear : jar+war 하나의 애플리케이션 서비스 제공하기 위한 패키지 형식
  • apk : 안드로이드용 앱 패키지 형식
  • ipa : iOS용 앱 패키지 형식

 

047. 릴리즈 노트 작성

: 개발 과정에서 정리된 릴리즈 정보를 소프트웨어의 최종 사용자인 고객과 공유하기 위한 문서. 

- 전체 기능, 서비스 내용, 개선 사항 등 사용자와 공유. 

 

- 고려사항 초기버전

  • 정확하고 완전한 정보를 개발팀에서 직접 현재 시제로 작성
  • 신규소스, 빌드 등의 이력 정확하게 관리.
  • Header(머릿말), 개요, 목적, 문제 요약, 재현 항목, 수정/개선 내용, 사용자 영향도, SW 지원 영향도, 노트, 면책 조항, 연락처

- 고려사항 추가 버전

  • 버그 번호를 포함한 모든 수정된 내용을 담아 작성
  • 기능 업그레이드
  • 사용자로부터 접수된 요구사항은 자체 기능 향상과는 다른 별도의 릴리즈 버전으로 출시 

- 순서

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

 

 

048. 디지털 저작권 관리(DRM)

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

  • 원본 콘텐츠가 아날로그인 경우 : 디지털로 변환 후 패키저에 의해 DRM 패키징 수행
  • 크기가 작은 경우(음원, 문서) : 사용자가 요청하는 시점에서 실시간으로 패키징 수행
  • 크기가 큰 경우 : 미리 패키징을 수행한 후 배포
  • 패키징 수행하면 >> 암호화된 저작권자의 전자서명이 포함/ 저작권자가 설정한 라이선스 정보가 클리어링 하우스에 등록됨. >> 사용자가 사용하기 위해서는 사용자 인증과 콘텐츠 사용 권한 소유 여부를 확인받아야 함. 

 

- 구성요소/흐름

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

- 기술 요소

  • 암호화 : 암호화&전자서명
  • 키 관리 : 키 저장/분배
  • 암호화 파일 생성 : 암호화된 콘텐츠 생성
  • 식별 기술 : 식별 체계 표현 
  • 저작권 표현 : 라이선스 내용 표현 
  • 정책 관리 : 정책 표현 및 관리
  • 크랙 방지 : 크랙에 의한 콘텐츠 사용 방지
  • 인증 : 라이선스 발급 및 사용의 기준이 되는 사용자 인증.

 

049. 소프트웨어 설치 매뉴얼 작성 

: 사용자 기준으로 소프트웨어 설치 과정에 필요한 내용을 기록한 설명서와 안내서. 

 

1) 서문 : 문서 이력, 설치 매뉴얼의 주석(주의사항, 참고사항), 설치 도구의 구성, 설치 환경 체크 항목.

2) 기본 사항 : 소프트웨어 개요, 설치 관련 파일, 설치 아이콘, 프로그램 삭제, 관련 추가정보

3) 설치 매뉴얼 : 설치 화면 및 UI, 설치 이상 메시지, 설치완료 및 결과, FAQ, 설치시 점검 사항, Network 환경 및 보안, 고객지원 방법, 준수 정보 및 제한 보증 등 

 

- 순서 : 기능 식별 > UI 분류 > 설치파일/백업파일 확인 > Uninstall 절차 확인 > 이상 케이스 확인 > 최종 매뉴얼 적용.

 

050. 소프트웨어 사용자 매뉴얼 작성

: 사용자가 필요한 절차, 환경 등의 제반사항 모두 포함된 설명서/안내서

- 컴포넌트 명세서, 컴포넌트 구현 설계서를 토대로 작성. 

1) 서문 : 문서이력, 사용자 매뉴얼의 주석(주의/참고사항), 기록 보관 내용

2) 기본 사항 : 소프트웨어 개요, 소프트웨어 사용 환경, 소프트웨어 관리, 모델/버전별 특징, 기능/인터페이스 특징, 소프트웨어 구동 환경

3) 사용자 매뉴얼 : 사용자 화면 및 UI, 주요 기능 분류, 응용 프로그램 및 설정, 장치 연동, Network 환경, Profile 안내, 고객지원 방법, 준수 정보 및 제한 보증 등.

 

- 순서 : 작성 지침 정의 > 사용자 매뉴얼 구성 요소 정의 > 구성 요소별 내용 작성 > 사용자 매뉴얼 검토

 

051. 소프트웨어 버전 등록

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

- 도구 : Git, CVS, Subversion 등

- 중요성 : 변경 사항 추적&통제, 무절제한 변경 방지, 버그나 수정사항 추적, 가시성, 배포본 효율적 관리, 여러개발자가 동시에 개발가능.

- 기능 : 형상 식별/ 버전 제어 / 형상 통제(변경 관리)/ 형상 감사/ 형상 기록(상태보고)

- 소프트웨어 버전 등록 주요기능 : 저장소(Repository), 가져오기(Import), 체크아웃(Check-Out), 체크인(Check-In), 커밋(Commit), 동기화(Update)

- 과정 : Import 가져오기 > Check-Out 인출 > Commit 예치 > Update 동기화 > Diff 차이

 

052. 소프트웨어 버전 관리 도구

1) 공유 폴더 방식

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

(SCCS, RCS, PVCS, QVCS) / 파일 복사 오류에 대비하여 파일의 변경사항을 데이터베이스에 기록하여 관리. 

*RCS : 여러 개발자가 프로젝트 수행시 시간에 따른 파일 변화과정을 관리하는 소프트웨어 버전 관리 도구. (소스파일 동시 수정 방지, 변경 내용 추적 가능)

 

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

: 버전 관리 자료가 중앙시스템(서버)에 저장되어 관리되는 방식. 

(CVS, SVN, CVSNT, Clear Case, CMVC, Perforce) / 서버에 문제가 생기면 서버 복구전까지 다른 개발자와의 협업 및 버전 관리 작업 중단됨. 

 

2-1) Subversion(SVN) : CVS 개선한 것. 서버에는 최신 버전의 파일들과 변경 내역 관리.

- 모든 개발 작업은 trunk 디렉터리에서 수행. > 추가 작업은 branches 디렉터리 안에 별도 디렉터리를 만들어 작업 > trunk 디렉터리와 병합. 

- 커밋할 때마다 리비전 1씩 증가. 

- 파일이나 디렉터리 이름 변경, 이동 등이 가능. 

add 새로운 파일, 디렉터리 버전 관리 대상으로 등록
commit 클라이언트 소스파일을 > 서버의 소스파일에 적용
update 최신 commit 이력을 클라이언트 소스파일에 적용.
checkout 버전관리 정보와 소스파일을 서버>클라이언트로 받아옴
lock/unlock 서버 소스파일, 디렉터리 잠금/해제
import 서버의 저장소에 맨 처음 소스파일 저장하는 명령.
export 버전관리 정보 제외 순수한 소스파일만 서버에서 받아옴
info 지정파일의 위치 등 정보 표시
diff 지정 파일/경로에 대해 이전 리비전과 차이 표시
merge 버전 관리 내역을 기본 개발 작업과 병합.

 

3) 분산 저장소 방식

: 버전 관리 자료가 하나의 원격 저장소와 분산된 개발자 PC의 로컬 저장소에 함께 저장되어 관리되는 방식. 

(Git, GNU arch, DCVS, Bazaar, Mercurial, TeamWare, Bitkeeper, Plastic SCM)

 

3-1) Git : 2개의 저장소 지역(로컬) & 원격 저장소 존재. 

- 로컬 저장소 : 개발자가 실제 개발 진행, 버전 관리 수행

- 원격 저장소 : 협업을 위해 버전을 공동 관리하는 곳. 

- 브랜치 이용

- 파일의 변화를 스냅샷으로 저장. (이전 스냅샷의 포인터를 가지므로 버전의 흐름 파악 가능)

add 작업 내역을 로컬에 저장하기 위해 스테이징 영역에 추가.
- --all 옵션으로 모든 파일 스테이징에 추가 가능.
commit 작업 내역을 로컬에 저장
branch 새로운 브랜치 생성 
- 최초 커밋시 마스터 브랜치 생성.
- 커밋할 때마다 해당 브랜치는 가장 최근의 커밋한 내용을 가리키게 된다.
- -d 옵션으로 브랜치 삭제 가능
checkout 지정한 브랜치로 이동. (HEAD 포인터를 지정 브랜치로 이동)
merge 변경 내역을 현재 HEAD 포인터가 가리키는 브랜치에 반영함으로써 두 브랜치 병합
init 로컬 저장소 생성
remote add 원격 저장소에 연결
push 로컬 저장소 변경 내역을 원격 저장소에 반영
fetch 원격 저장소의 변경 이력만을 로컬로 가져와 반영.

 

053. 빌드 자동화 도구

빌드 : 소스 코드 파일들을 컴파일한 후 여러 개의 모듈을 묶어 실행 파일로 만드는 과정. 

빌드 자동화 도구 : 빌드를 포함하여 테스트 및 배포를 자동화하는 도구.

- 애자일 환경에서는 CI(Continuous Integration) - 하나의 작업이 마무리될 때마다 모듈 단위로 나눠서 개발된 코드들이 지속적으로 통합된다. 

ex. Ant, Make, Maven, Gradle, Jenkins 등.

 

1) Jenkins

: JAVA 기반의 오픈소스 형태. 

- 서블릿 컨테이너에서 실행되는 서버 기반 도구. 

- 여러 대의 컴퓨터를 이용한 분산 빌드나 테스트 가능.

 

2) Gradle

: Groovy를 기반으로 한 오픈 소스 형태. 안드로이드 앱 개발 환경에서 사용됨. + 플러그인 설정하면 언어도 빌드 가능. 

- DSL(Domain Specific Language)을 스크립트 언어로 사용. 

- 실행할 처리 명령들을 모아 태스크로 만든 후 태스크 단위로 실행. 

- 빌드 캐시 기능 지원 > 빌드 속도 향상. 

 

728x90

BELATED ARTICLES

more