정보처리기사/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

  1. ISO/IEC 9126
  • 품질의 특성 및 거도에 대한 표준화를 말한다.
  • 사용자 관점에서의 소프트웨어 품질 특성의 표준화 작업을 수행

📌 ISO/IEC 9126 구성 항목

  • 기능성
  • 신뢰성
  • 사용성
  • 효율성
  • 유지보수성
  • 이식성
  1. ISO/IEC 12207
  2. 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이라는 이름을 가졌지만 오라클과 문제로 인해 이름을 변경하였다.
    • 프로젝트 표준 컴파일 환경에서의 컴파일 오류를 검출한다.
    • 자동화 테스트를 수행한다.