정보처리기사/part02.소프트웨어 개발
3. 제품 소프트웨어 패키징
kyunge_ev
2024. 6. 17. 22:09
✅ 제품 소프트웨어 패키징
1. 애플리케이션 패키징
(1) 패키징
- 개발 완료된 제품 소프트웨어를 고객에게 전달하기 위한 형태로 패키징하고, 설치와 사용에 필요한 제반 절차 및 환경 등 전체 내용을 포함하는 매뉴얼을 작성하여, 제품 소프트웨어에 대한 패치 개발과 업그레이드를 위해 버전 관리를 수행할 수 있다.
(2) 릴리즈 노트
- 소프트웨어 제품과 함께 배포되는데, 이 문서들에는 제품의 주요 변경 사항이 담겨 있다.
📌 릴리즈 노트 구성 항목
구분 | 내용 |
헤더(Header) | 문서이름, 제품 이름, 릴리즈 번호, 출시일, 노트 날짜, 노트 버전 등 |
개요 | 제품 및 변경에 대한 간략한 개요 |
목적 | 버그 픽스와 새로운 기능 목록 |
이슈 요약 | 버그 수정이나 개선 상항에 대한 짧은 설명 |
재현 단계 | 버그 발생을 재현하기 위한 절차 |
해결책(Solution) | 버그 수정을 위한 수정/개선 사항의 간단한 설명 |
최종 사용자 영향 | 버전 변경에 따른 최종 사용자 기준의 기능 및 응용 프로그램상의 영향도 기술 |
SW 지원 영향도 | 버전 변경에 따른 SW 지원 프로세스 및 영향도 기술 |
참고 | 소프트웨어나 하드웨어의 설치, 업그레이드, 제품 문서화에 관한 참고사항(문서화 업데이트 포함) |
면책 | - 회사 및 표준 제품 관련 메시지 - 프리웨어, 불법 복제 금지 등 참조에 대한 고지 사항 |
연락처 | 사용자 지원 및 문의 관련 연락처 정보 |
💡 소프트웨어 패키징
- 신규 및 변경 개발 소스를 식별하고 이를 모듈화하여 상용제품으로 패키징한다.
- 고객의 편의성을 위해 메뉴얼 및 버전관리를 지속적으로 한다.
- 범용 환경에서 사용이 가능하도록 일반적인 배포 형태로 패키징이 진행된다.
- 사용자 중심으로 진행한다.
2. 애플리케이션 배포 도구
- 배포를 위한 패키징 시에 디지털 콘텐츠의 지적 재산권을 보호하고 관리하는 기능을 제공하며, 안전한 유통과 배포를 보장하는 도구이자 솔루션이다.
- 암호화/보안
- 이기종 간의 연동
- 지속적 배포
- 사용자 편의성
- 애플리케이션 배포 도구의 구성요소
- 암호화
- 인증
- 키 관리
- 저작권 표현
- 크랙 방지
3. 애플리케이션 모니터링 도구
(1) 애플리케이션 모니터링 도구의 특징
- 애플리케이션 모니터링 도구는 애플리케이션의 성능을 모니터링하여 장애를 미리 예방하기 위하여 필요하다.
4. DRM
(1) DRM(Digital Rights Management)의 개요
- 디지털 저작권 관리의 약자로, 디지털 콘텐츠 제공자의 권리와 이익을 안전하게 보호하며 불법 복제를 막고 사용료 부과와 결제 대행 등 콘텐츠의 생성에서 유통/관리까지를 일괄적으로 지원하는 기술
(2) DRM 시스템 구성요
콘텐츠 제공자 (Contents Provider) |
콘텐츠를 제공하는 저작권자 |
콘텐츠 분배자 (Contents Distributor) |
암호화된 콘텐츠 제공 |
패키저 (Packager) |
콘텐츠를 메타 데이터와 함께 배포 가능한 단위로 묶는 기능 |
보안 컨테이너 | 원본을 안전하게 유통하기 위한 전자적 보안장치 |
DRM 컨트롤러 | 배포된 콘텐츠의 이용 권한을 통제 |
클리어링 하우스 (Clearing House) |
키 관리 및 라이선스 발급 관리 |
(3) DRM의 핵심적 기술 요소
암호화(Encrtption)키 관리(Key Management)암호화 파일 생성(Packager)식별 기술(Identification)저작권 표현(Right Expression)정책 관리(Policy managment)크랙 방지(Tamper Resistance)인증(Authentication)인터페이스(Interface)이벤트 보고(Event Reporting)사용 권한(Permission)
구분 | 내용 |
암호화 (Encrtption) |
콘텐츠 및 라이선스를 암호화하고, 전자 서명을 할 수 있는 기술 |
키 관리 (Key Management) |
콘텐츠를 암호화한 키에 대한 저장 및 배포 기술 |
암호화 파일 생성 (Packager) |
콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술 |
식별 기술 (Identification) |
콘텐츠에 대한 식별 체계 표현 기술 |
저작권 표현 (Right Expression) |
라이선스의 내용 표현 기술 |
정책 관리 (Policy managment) |
라이선스 발급 및 사용에 대한 정책 표현 및 관리 기술 |
크랙 방지 (Tamper Resistance) |
크랙(데이터 변조 방지)에 의한 콘텐츠 사용방지 기술 |
인증 (Authentication) |
라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술 |
인터페이스 (Interface) |
상이한 DRM 플랫폼 간의 상호 호환성 인터페이스 및 인증 기술 |
이벤트 보고 (Event Reporting) |
콘텐츠의 사용이 적절하게 이루어지고 있는지 모니터링하는 기술, 불법 유통이 의심되었을 때 이동 경로 추적에 활용 |
사용 권한 (Permission) |
콘텐츠의 사요에 대한 권한을 관리하느 기술 요소 |
✅ 제품 소프트웨어 매뉴얼 작성
1. 제품 소프트웨어 매뉴얼 작성
(1) 제품 소프트웨어 매뉴얼의 개요
- 사용자에게 제품의 권장사항, 제품 설명, 설치법, 사용법 외의 부록을 첨부하여 제품 사용에 따른 이해와 만족도를 높인다.
- 시스템 문서
- 시스템 자체와 그 세부 구성을 설명하는 문서를 나타낸다.
- 요구사항 문서, 설계 결정, 아키텍처 설명, 프로그램 소스 코드 및 도움말 가이드 등을 포함한다.
- 사용자 설명서
- 주로 소프트웨어 제품 최종 사용자와 시스템 관리자를 위해 작성된 메뉴얼이 수록되어 있다.
- 사용자 설명서에는 튜토리얼, 사용자 가이드, 문제 해결 메뉴얼, 설치 및 참조 메뉴얼이 포함된다.
(2) 설치 매뉴얼
- 설치 매뉴얼은 개발자 기준이 아닌 사용자 중심으로 작성한다.
2. 국제 표준 제품 품질 특성
(1) ISO(International Organization for Standardization)
(2) ISO 9000
- ISO에서 제정한 품질 경영과 품질 보증에 관한 국제 규격
(3) ISO/IEC
- ISO/IEC 9126
- 품질의 특성 및 거도에 대한 표준화를 말한다.
- 사용자 관점에서의 소프트웨어 품질 특성의 표준화 작업을 수행
📌 ISO/IEC 9126 구성 항목
- 기능성
- 신뢰성
- 사용성
- 효율성
- 유지보수성
- 이식성
- ISO/IEC 12207
- ISO/IEC 12119
(4) CMM(Capability Maturity Model, 역량 성숙도 모형)
- 소프트웨어 조직이 높은 품질의 소프트웨어를 일관성 있고, 예측 가능하게 생산할 수 있는지 능력을 정량화하는 시도
💡 소프트웨어 공학의 기본 원칙
- 지속적인 검증 시행
- 품질 높은 소프트웨어 상품 개발
- 결과에 대한 명확한 기록 유지
(5) SPICE(Software Process Improvement and Capability dEtermination)
(6) CMMI(Capability Maturity Model Integration, 역량 성숙도 모델 통합)
✅ 제품 소프트웨어 버전 관리
1. 소프트웨어 버전 관리 도구
(2) 소프트웨어 버전 관리 용어
구분 | 내용 |
Repository리포지토리 | 관리 대상의 모든 파일, 관련 버전, 변경 이력 정보를 저장하는 공유 데이터베이스 - Local Repository : 현재 개발 환경에서의 파일 저장소 - Remote Repository : 서버상의 파일 저장소 |
Trunk | 주류, 프로젝트의 중심 |
Branch | 주류에서 파생된 프로젝트, 개발 라인 - Master Branch : 메인 개발 라인 |
Tag | 특정 시점의 프로젝트 전체를 복사 및 보관 |
Revision | - 저장소에 저장된 파일의 버전 - 새롭게 저장소에 커밋할 경우, 해당 파일의 개정 번호 증가 |
Check Out | - 저장소에서 선택한 파일 또는 디렉터리를 현재 작업 환경으로 복사 - 디렉터리의 경우, 포함된 파일 및 하위 디렉터리 모두 체크아웃 - 버전 관리를 위한 파일이 포함됨(저장소와의 연결을 위함) |
Check In, Commit | 작업 파일 또는 디렉터리의 변경 사항을 저장소에 새 버전으로 저장 |
Conflict | - 동일한 파일에 대한 변경 사항 확인 - 충돌이 발견될 경우, 해결이 완료되어야 커밋 가능 |
Import | (버전 관리되고 있지 않은) 로컬 디렉터리의 파일을 처음으로 저장소에 저장 |
Export | Check Out과 달리, 버전 관리 파일을 제외한 소스 파일만을 가져옴 |
Change log, History | 수정 기록 |
Update, Sync | 동기화, 저장소에 있는 최신 버전의 파일 또는 디렉터리 가져옴 |
Fork | - 하나의 소프트웨어 소스 코드를 통째로 복사하여 독립적인 새로운 소프트웨어 개발 - 허용되는 라이선스를 따라야함 |
(3) 소프트웨어 버전 관리 도구
분산 저장소 방식 | - 버전 관리 자료가 원격 저장소와 로컬 저장소에 함께 저장되어 관리된다. - 종류 : Git |
공유 폴더 방식 | - 버전 관리 자료가 로컬 저장소의 공유 폴더에 저장되어 관리되는 방식 |
클라이언트/서버 방식 | - 버전 관리 자료가 서버에 저장되 관리되는 방식이다. |
(4) 버전 프로그램 종류
구분 | 내용 |
CVS (Concurrent Version System) |
- 서버와 클라이언트로 구성되어 다수의 인원이 동시에 범용적인 운영체제로 접근 가능하여 버전 관리를 가능하게 한다. - Client가 이클리스에 내장되어 있다. |
SVN (Subversion) |
GNU의 버전 관리 시스템으로 CVS의 장점은 이어받고 단점은 개선하여 2000년에 발표되었다. 사실상 업계 표준으로 사용되고 있다. |
RCS (Revision Control System) |
CVS와 달리 소스파일의 수정을 한사람만으로 제한하여 다수의 사람이 파일의 수정을 동시에 할 수 없도록 파일을 잠금하는 방식으로 버전 컨트롤을 수행한다. |
Bitkeeper | SVN과 비슷한 중앙 통제 방식의 버전컨트롤 툴로서 대규모 프로젝트에서 빠른 속도를 내도록 개발되었다. |
Git | - 기존 리눅스 커널의 버전 컨트롤을 하는 Bitkeeper을 대체하기 위해서 나온 새로운 버전 컨트롤로 현재의 리누기스는 이것을 통해 버전 컨트롤이 되고 있다. Git는 속도에 중점을 둔 분산형 버전 관리 시스템(DVCS)이며, 대형 프로젝트에서 효과적이고 실제로 유용하다. - Git은 SVN과 다르게 Commit은 로컬 저장소에서 이루어지고 Push라는 동작으로 원격 저장소에 반영된다. (로컬 저장소에서 작업이 이루어져 매우 빠른 응답을 받을 수 있다.) - 받을 때도 Pull 또는 Fetch로 서버에서 변경된 내역을 받아 올수 있다. |
Clear Case | - IBM에서 제작되었다. - 복수 서버, 복수 클라이언트 구조이며 서버가 부족할 때 필요한 서버를 하나씩 추가 하여 확장석을 기할 수 있다. |
2. 빌드 자동화 도구
(1) 빌드 자동화 도구의 개요
- 빌드 단계에서는 Compile, Testing, Inspection, Deploy 등의 과정이 포함될 수 있다.
- 빌드를 포함하여 테스트 및 배포 자동화 도구
- 빌드 : 소스코드를 컴파일 한 후 실행 파일로 만드는 과정
(2) 빌드 자동화 도구
- ANT
- Maven
- Gradle
- Jenkins
- 초창기 hudson이라는 이름을 가졌지만 오라클과 문제로 인해 이름을 변경하였다.
- 프로젝트 표준 컴파일 환경에서의 컴파일 오류를 검출한다.
- 자동화 테스트를 수행한다.