2과목 소프트웨어 개발 제품 소프트웨어 패키징 046 ~ 053
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)을 스크립트 언어로 사용.
- 실행할 처리 명령들을 모아 태스크로 만든 후 태스크 단위로 실행.
- 빌드 캐시 기능 지원 > 빌드 속도 향상.
'Programming > 정처기' 카테고리의 다른 글
2과목 소프트웨어 개발 인터페이스 구현 066~ 075 (1) | 2024.01.25 |
---|---|
2과목 소프트웨어 개발 애플리케이션 테스트 관리 054 ~ 065 (2) | 2024.01.24 |
2과목 소프트웨어 개발 통합 구현 043 ~ 045 (1) | 2024.01.23 |
2과목 소프트웨어 개발 데이터 입/출력 구현 036 ~042 (1) | 2024.01.23 |
1과목 소프트웨어 설계 인터페이스 설계 029~035 (1) | 2024.01.22 |