본문 바로가기

정보처리기사/2과목 소프트웨어 개발

Part 3. 제품 소프트웨어 패키징(1) 23.01.26(목)

1. 제품 소프트웨어 패키징 제품 소프트웨어 패키징 애플리케이션 패키징

1) 애플리케이션 패키징(Application Packaging) 개념

애플리케이션 패키징은 개발이 완료된 제품 소프트웨어를 배포하고 설치할 수 있도록 고객에게 전달하기 위한 형태로 제작하고, 설치와 사용에 필요한 제반 내용을 포함하는 매뉴얼을 작성하는 활동이다.

 

2) 애플리케이션 패키징 특징

애플리케이션 패키징은 사용자 중심으로 진행되고, 신규 및 변경 개발 소스를 식별하며, 이를 모듈화하여 상용 제품으로 패키징한다.

고객의 편의성을 위해, 신규/변경 이력을 확인하고, 이를 버전 관리 및 릴리즈 노트를 통해 지속적으로 관리한다.

사용자의 실행 환경을 이해하고, 범용 환경에서 사용이 가능하도록 일반적인 배포 형태로 분류하여 패키징이 진행된다.

 

3) 애플리케이션 패키징 고려사항

(1) 사용자 실행 환경의 이해

고객 편의성을 위해 사용자 실행 환경을 우선 고려하여 패키징을 진행한다.

OS부터 시작하여 실행 환경, 시스템 사양 및 고객의 사용 방법까지 상세 분류하여 실행 환경을 사전 정의한다.

만약 여러 가지 실행 환경이 나오게 된다면 해당 경우에 맞는 배포본을 분류하여 패키징 작업을 여러 번 수행할 수도 있다.

 

(2)사용자 관점에서의 패키징 고려사항-환유관변

[1] 사용자 시스템 환경 정의

사용자의 시스템 환경인 운영체제, CPU, 메모리 등의 수행을 위한 최소 환경을 정의

 

[2] UI 제공

사용자가 직관적으로 확인할 수 있는 UI를 제공하고, 매뉴얼과 일치시켜 패키징 작업 수행

 

[3] 관리 서비스 형태로 제공

애플리케이션은 하드웨어와 함께 통합 적용할 수 있도록, 패키징을 관리 서비스 형태로 제공

 

[4] 패키징의 변경 및 개선 관리 고려

다양한 사용자의 요구사항을 반영하기 위해 패키징의 변경 및 개선 관리를 고려하여 패키징 배포

 

4) 애플리케이션 패키징 프로세스

(1) 기능 식별

입출력 데이터 식별

전체적인 기능 정의 및 데이터 흐름 식별

기능 단위 및 출력에 대한 상세 정의

 

(2) 모듈화

기능 및 서비스를 모듈 단위로 분류

기능의 공유와 재활용 분류

모듈 간 결합도응집도 식별

 

* 모듈화(Modularity)

소프트웨어 개발에 있어 기능을 분할하고 추상화하여 소프트웨어의 성능을 향상시키고 유지보수를 효과적으로 구현하기 위한 기법이다.

 

* 결합도(Coupling)

소프트웨어 구조에서 모듈 간 연관성을 측정하는 척도이다.(낮을 수록 좋음)

 

* 응집도(Cohesion)

모듈의 독립성을 나타내는 개념으로 하나의 모듈 내부 처리 요소들 간에 기능적 연관도를 측정하는 척도이다.(높을수록 좋음)

 

(3) 빌드 진행

신규 개발 소스 및 컴파일 결과물 준비

정상 기능 단위 및 서비스 분류

빌드 도구 확인 및 정상 수행

컴파일 이외 도구의 다양한 기능 확인

 

(4) 사용자 환경 분석

최소 사용자 환경 사전 정의

모듈 단위의 사용자 환경 테스트 수행

 

(5) 패키징 적용 시험

사용자 환경에서의 패키징 적용 시험

UI 및 시스템 상의 편의성 체크

 

(6) 패키징 변경 개선

패키징 적용 시 변경점 도출

최소 사용자 환경에서 서비스 가능한 수준의 개선

개선 버전의 재배포

 

2. 제품 소프트웨어 패키징 제품 소프트웨어 패키징 애플리케이션 배포 도구

1) 애플리케이션 배포 도구 개념

애플리케이션 배포 도구는 배포를 위한 패키징 시에 디지털 콘텐츠의 지적재산권을 보호하고 관리하는 기능을 제공하며, 안전한 유통과 배포를 보장하는 도구이자 솔루션이다.

 

2) 애플리케이션 배포 도구의 기술 요소 암키식저 파정크인

애플리케이션 배포 도구의 기술 요소는 DRM 기술요소와 동일하다.

 

(1) 암호화

콘텐츠 및 라이선스를 암호화하고, 전자서명을 할 수 있는 기술

ex) 공개 키 기반 구조(PKI), 대칭 및 비대칭 암호화, 전자서명

 

(2) 키관리

콘텐츠를 암호화한 키에 대한 저장 및 배포 기술(중앙 집중형, 분산형)

 

(3) 식별 기술

콘텐츠에 대한 식별 체계 표현 기술

ex) DOI, URI

 

(4) 저작권 표현

라이선스의 내용 표현 기술

ex) XrML/MPEG-21

 

(5) 암호화 파일 생성

콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술

 

(6) 정책 관리

라이선스 발급 및 사용에 대한 정책표현 및 관리 기술

ex) XML, 콘텐츠 관리 시스템(CMS)

 

(7) 크랙 방지

크랙에 의한 콘텐츠 사용 방지 기술

ex) 난독화, Secure DB

 

*크랙(Crack)

소프트웨어를 수정하여 소프트웨어 복사 방지나 소프트웨어 조작 보호 등을 비활성화하거나 제거하는 일이다.

 

(8) 인증

라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술

ex) 사용자/장비 인증, SSO

 

3) 애플리케이션 배포 도구 세부 기술

(1) 공개키 기반 구조(PKI)

공개키 암호 방식 기반으로 디지털 인증서를 활용하는 소프트웨어, 하드웨어, 사용자, 정책 및 제도 등을 총칭하는 암호 기술

 

(2) 대칭 및 비대칭 암호화

대칭 암호화는 암호화와 해독을 위해 동일한 키를 사용하는 암호화 방식

비대칭 암호화는 데이터를 암호화할 때와 이를 해독할 때 서로 다른 키를 사용하는 방식

 

(3) 전자서명

서명자를 확인하고 서명자가 당해 전자문서에 서명했다는 사실을 나타내기 위해 특정 전자문서에 첨부되거나 논리적으로 결합된 전자적 형태의 정보

 

(4) DOI(Digital Object Identifier)

디지털 저작물에 특정한 번호를 부여하는 일종의 바코드 시스템

디지털 저작물의 저작관 보호 및 정확한 위치 추적이 가능한 시스템

 

(5) URI(Uniform Resource Identifier)

인터넷에 있는 자원을 나타내는 유일한 주소

 

(6) XrML(eXtesible Right Markup Language)

디지털 콘텐츠 / 웹 서비스 권리 조건을 표현한, XML 기반의 마크업 언어

 

(7) MPEG-21

멀티미디어 관련 요소 기술들이 통일된 형태로 상호 운용성을 보장하는 멀티미디어 표준 규격

 

(8) XML(eXtensible Markup Language)

XMLW3C에서 개발된 다른 특수한 목적을 갖는 마크업 언어를 만드는 데 사용하도록 권장하는 다목적 마크업 언어

 

* 마크업 언어(Markup Language)

태그는 원래 텍스트와는 별도로 원고의 교정부호와 주석을 표현하기 위한 수단이었으나 용도가 점차 확장되어 문서의 구조를 표현하는 역할을 하게 되었고, 이러한 태그 방법의 체계가 마크업 언어이다.

 

(9) CMS(Contents Management System)

콘텐츠 관리 시스템은 다양한 미디어 포맷에 따라 각종 콘텐츠를 작성, 수집, 관리, 배급하는 콘텐츠 생산에서 활용, 폐기까지 전 공급 과정을 관리하는 기술

 

(10) 코드 난독화

역공학을 통한 공격을 막기 위해서 프로그램의 소스 코드를 알아보기 힘든 형태로 바꾸는 기술

 

* 역공학(Reverse Engineering)

기존 개발된 시스템의 기술적인 원리를 시스템의 코드나 데이터 등의 구조분석을 통해 도출해 내는 작업이다.

 

(11) Secure DB

커널 암호화 방식으로 데이터베이스 파일을 직접 암호화하고, 접근 제어와 감사 기록 기능이 ㅜ가된 데이터베이스 보안 강화 기술

 

(12) SSO(Single Sign On)

한 번의 시스템 인증을 통하여 여러 정보시스템에 재인증 절차 없이 접근할 수 있는 통합 로그인 기술

 

4) 애플리케이션 배포 도구를 활용한 배포 프로세스

(1) 빌드 내용 식별

릴리즈 노트 작성을 위한 모듈 및 빌드 정리

입출력 데이터, 전체적인 기능 정의, 데이터 흐름 정리

기능 단위 및 출력에 대한 상세 정의

 

(2) 패키징 도구 식별

패키징 도구의 사전 선택

암호.보안 기능 확인

 

(3) DRM 흐름을 확인하여 패키징 수행

콘텐츠 분배자, 배포자, 소비자 간 DRM 흐름 확인

패키징 수행 시 키 관리, 보안 개념 확인하며 수행

 

(4) 패키징 도구 설치

환경에 맞게 패키징 도구 설치 작업 진행

패키징 도구 설치 완료 후 정상 작동 확인

 

(5) 배포 작업

패키징 도구 설치 이후 제품 소프트웨어의 배포 작업을 진행

배포 후 최종 패키징 완료 확인

 

(6) 정상 배포 확인

암호화/보안 기능 적용 확인

제품 소프트웨어 배포본 기준으로 암호화/보안 기능 체크리스트 확인

 

5) 애플리케이션 배포 도구 활용 시 고려사항 암이복최

(1) 암호화/보안

패키징 시 사용자에게 배포되는 소프트웨어임을 감안하여 반드시 내부 콘텐츠에 대한 암호화 및 보안 고려

 

(2) 이기종 연동

패키징 도구를 활용하여 여러 가지 이기종 콘텐츠 및 단말기 간 DRM 연동 고려

 

(3) 복잡성 및 비효율성 문제

사용자의 입장에서 불편해질 수 있는 문제를 고려하여, 최대한 효율적으로 적용될 수 있도록 함

 

(4) 최적합 암호화 알고리즘 적용

암호화 알고리즘이 여러 가지 종류가 있는데, 제품 소프트웨어의 종류에 맞는 알고리즘을 선택하여 배포 시 범용성에 지장이 없도록 고려

 

3. 제품 소프트웨어 패키징 제품 소프트웨어 패키징 애플리케이션 모니터링 도구

1) 애플리케이션 모니터링 도구 개념

애플리케이션 모니터링 도구는 제품 소프트웨어를 사용자 환경에 설치한 후 기능 및 성능, 운영 현황을 모니터링하여 제품을 최적화하기 위한 도구이다.

 

2) 애플리케이션 모니터링 도구의 기능

(1) 애플리케이션 변경 관리

애플리케이션 간의 종속관계를 모니터링

애플리케이션의 변경이 있을 경우 변경의 영향도 파악에 활용

도구 : ChangeMinder

 

(2) 애플리케이션 성능 관리

애플리케이션 서버로 유입되는 트랜잭션 수량, 처리시간, 응답시간 등을 모니터링

도구 : Jeniffer, Nmon

 

(3) 애플리케이션 정적 분석

소스 코드의 잠재적인 문제 발견 가능

코딩 규칙 오류 발견

도구 : PMD, Cppcheck, Checkstyle, SonarQube

 

(4) 애플리케이션 동적 분석

프로그램에 대한 결함 및 취약점 동적 분석 도구

메모리 및 오류 문제 발견

도구 : Avalache, Vlagrind

 

4. 제품 소프트웨어 패키징 제품 소프트웨어 패키징 DRM

1) DRM(Digital Rights Management)의 개념

DRM은 디지털 콘텐츠에 대한 권리 정보를 지정하고 암호화 기술을 이용하여 허가된 사용자의 허가된 권한 범위 내에서 콘텐츠의 이용이 가능하도록 통제하는 기술이다.

 

2) DRM의 특징

(1) 거래 투명성

저작권자와 콘텐츠 유통업자 사이의 거래 구조 투명성 제공

 

(2) 사용규칙 제공

사용가능 횟수, 유효기간, 사용 환경 등을 정의 가능

다양한 비즈니스 모델 구성 및 콘텐츠 소비 형태 통제 제공

 

(3) 자유로운 상거래 제공

이메일, 디지털 미디어, 네트워크 등을 통한 자유로운 상거래 제공

허가 받은 사용자는 별도의 비밀키를 이용하여 대상 콘텐츠를 복호화하고 허가된 권한으로 사용 가능

 

3) DRM 구성 및 동작 방식

DRM은 콘텐츠 제공자와, 콘텐츠 소비자, 클리어링 하우스로 구성된다.

콘텐츠 분배자는 제공자로부터 콘텐츠를 받아서 소비자에게 유통시킨다.

 

(1) DRM 동작 방식

1-라이선스 등록

클리어링 하우스에 라이선스 등록을 하면서 동시에 유통시스템에 콘텐츠를 등록

 

2-라이선스 요청

콘텐츠 소비자가 유통시스템으로 라이선스 요청

 

3-라이선스 요청

유통시스템에서 클리어링 하우스를 통해서 라이선스를 요청

 

4-요금 지불

콘텐츠 소비자가 요금 지출

 

5-라이선스 발급

클리어링 하우스를 통해서 라이선스 발급

 

6-콘텐츠 다운로드

그 이후에 콘텐츠 소비자가 콘텐츠를 다운로드 받을 수 있음

 

(2) DRM 구성 요소

1-콘텐츠 제공자(Contents Provider)

콘텐츠를 제공하는 저작권자

 

2-콘텐츠 소비자(Contents Customer)

콘텐츠를 구매해서 사용하는 주체

 

3-콘텐츠 분배자(Contents Distributor)

암호화된 콘텐츠를 유통하는 곳이나 사람

 

4-클리어링 하우스(Clearing House)

저작권에 대한 사용 권한, 라이선스 발급, 사용량에 따른 관리 등을 수행하는 곳

키관리 및 라이선스 발급 관리

콘텐츠 권한 정책, 라이선스 관리를 수행

 

[1] 콘텐츠 권한 정책

라이선스 발급 여부를 결정하는 정책에 대한 부합 여부 확인

적절한 사용 권한을 부여하는 역할 수행

 

[2] 콘텐츠 라이선스

클리어링 하우스에 의해서 사용자에게 전달되는 콘텐츠의 권리 인증

콘텐츠에 대한 사용 조건 및 허가 정보를 포함

 

5-DRM 콘텐츠(DRM Contents)

서비스하고자 하는 암호화된 콘텐츠, 콘텐츠와 관련된 메타 데이터, 콘텐츠 사용정보를 패키징하여 구성된 콘텐츠

 

* 메타 데이터(Meta Data)

자료 그 자체가 아닌 자료의 속성 등을 설명하는 데이터이다.

 

6-패키저(Packager)

콘텐츠를 메타 데이터와 함게 배포 가능한 단위를 묶는 도구

 

7-DRM 컨트롤러(DRM Controller)

배포된 디지털 콘텐츠의 이용 권한을 통제

 

8-보안 컨테이너(Security Container)

원본 콘텐츠를 안전하게 유통하기 위한 전자적 보안 장치

 

4) DRM 기술요소

(1) 암호화

콘텐츠 및 라이선스를 암호화하고, 전자서명을 할 수 있는 기술

ex) 공개 키 기반 구조(PKI), 대칭 및 비대칭 암호화, 전자서명

 

(2) 키관리

콘텐츠를 암호화한 키에 대한 저장 및 배포 기술(중앙 집중형, 분산형)

 

(3) 식별 기술

콘텐츠에 대한 식별 체계 표현 기술

ex) DOI, URI

 

(4) 저작권 표현

라이선스의 내용 표현 기술

ex) XrML/MPEG-21

 

(5)암호화 파일 생성

콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술

 

(6) 정책 관리

라이선스 발급 및 사용에 대한 정책표현 및 관리 기술

ex) XML, 콘텐츠 관리 시스템(CMS)

 

(7) 크랙 방지

크랙에 의한 콘텐츠 사용 방지 기술

ex) 난독화, Secure DB

 

(8) 인증

라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술

ex) 사용자/장비 인증, SSO