1. 애플리케이션 패키징
1. 애플리케이션 패키징(Application Pakaging) 개념
- 개발이 완료된 제품 소프트웨어를 배포하고 설치할 수 있도록 고객에게 전달하기 위한 형태로 제작하고, 설치와 사용에 필요한 제반 내용을 포함하는 메뉴얼을 작성하는 활동
2. 애플리케이션 패키징 특징
- 애플리케이션 패키징은 사용자 중심으로 진행되고, 신규 및 변경 개발 소스를 식별하며, 이를 모듈화하여 상용 제품으로 패키징 한다.
- 고객의 편의성을 위해, 신규/변경 이력을 확인하고, 이를 버전 관리 및 릴리즈 노트를 통해 지속적으로 관리한다.
- 사용자의 실행 환경을 이해하고, 범용 환경에서 사용이 가능하도록 일반적인 배포 형태로 분류하여 패키징이 진행된다.
3. 애플리케이션 패키징 고려사항
1. 사용자 실행 환경의 이해
- 고객 편의성을 위해 사용자 실행 환경을 우선 고려하여 패키징을 진행한다.
- OS부터 시작하여 실행 환경, 시스템 사양 및 고객의 사용 방법까지 상세 분류하여 실행 환경을 사전 정의 한다.
- 만약 여러 가지 실행 환경이 나오게 된다면 해당 경우에 맞는 배포본을 분류하여 패키징 작업을 여러 번 수행 할 수 도 있다.
2. 사용자 관점에서의 패키징 고려사항
- 사용자 편의성을 위해 사용자 환경을 확인항 여러 가지 케이스를 사전에 고려한다.
[사용자 관점에서의 패키징 고려사항]
1. 사용자 시스템 환경 정의
- 사용자의 시스템 환경인 운영체제, CPU, 메모리 등의 수행을 위한 최소 환경을 정의
2. UI 제공
- 사용자가 직관적으로 확인할 수 있는 UI를 제공하고, 매뉴얼과 일치시켜 패키징 작업 수행
3. 관리 서비스 형태로 제공
- 애플리케이션은 하드웨어와 함께 통합 적용할 수 있도록, 패키징을 관리 서비스 형태로 제공
4. 패키징의 변경 및 개선 관리 고려
- 다양한 사용자의 요구사항을 반영하기 위해 패키징의 변경 및 개선 관리를 고려하여 패키징 배포
4.애플리케이션 패키징 프로세스
1.기능식별
- 입출력 데이터 식별
- 전체적인 기능 정의 및 데이터 흐름 식별
- 기능 단위 및 출력에 대한 상세 정의
2. 모듈화
- 모듈로 분류할 수 있는 기능 및 서비스 단위 분류
- 기능의 공유와 재활용 분류
- 모듈 간 결합도와 응집도 식별
cf : 모듈화(Modularity)
- 소프트웨어 개발에 있어 기능을 분할하고 추상화하여 소프트웨어의 성능을 향상시키고 유지보수를 효과적으로 구현하기 위한 기법
cf : 결합도(Coupling)
- 소프트웨어 구조에서 모듈 간 연관성을 측정하는 척도이다(낮을 수록 좋음)
cf : 응집도(Cohesion)
- 모듈의 독립성을 나타내는 개념으로 하나의 모듈 내부 처리 요소들 간에 기능적 연관도를 측정하는 척도이다(높을 수록 좋음)
3. 빌드 진행
- 신규 개발 소스 및 컴파일 결과물 준비
- 정상 기능 단위 및 서비스 분류
- 빌드 도구 확인 및 정상 수행
- 컴파일 외의 도구의 다양한 기능 확인
4. 사용자 환경 분석
- 최소 사용자 환경 사전 정의
- 모듈 단위의 사용자 환경 테스트 수행
5. 패키지 적용 시험
- 사용자 환경에서의 패키징 적용 시험
- UI 및 시스템 상의 편의성 체크
6. 패키징 변경 개선
- 패키징 적용 시 변경점 도출
- 최소 사용자 환경에서 서비스 가능한 수준의 개선
- 개선 버전의 재배포
5. 애플리케이션 패키징 릴리즈 노태
1. 애플리케이션 패키징 릴리즈 노트 개념
- 애플리케이션 최종 사용자인 고객과 잘 정리된 배포 정보를 공유하는 문서이다.
- 애플리케이션 릴리즈 노트에는 상세 서비스를 포함하여 수정/변경 또는 개선되는 정보에 대한 사항이 제공 된다.
2. 애플리케이션 패키징 릴리즈 노트 작성 항목
- 릴리즈 노트는 애플리케이션 최종 사용자에게 전댜ㅏㄹ되는 제품에 대한 공유 정보이다.
[애플리케이션 패키징 릴리즈 노트 작성 항목]
- 문서 이름(릴리스 노트 이름), 제품 이름, 버전 번호, 릴리즈 날짜, 참고 날짜, 노트 버전 등
2. 개요
3. 목적
- 릴리스 버전의 새로운 기능 목록과 릴리스 노트의 목적에 대한 개요, 버그 수정 및 새로운 기능 기술
4. 이슈 요약
- 버그의 간단한 설명 또는 릴리즈 추가 항목 요약
5. 재현 항목
6. 수정/개선 내용
7. 사용자 영향도
- 버전 변경에 따른 최종 사용자 기준의 기능 및 응용 프로그램상의 영향도 기술
8. 노트
- 소프트웨어 및 하드웨어 설치 항목, 제품, 문서를 포함한 업그레이드 항목 기술
9. 면책 조항
- 회사 및 표준 제품과 관련된 메시지, 프리웨어 및 불법 복제 방지, 중복 등 참조에 대한 고지사항
10. 연략 정보
3. 애플리케이션 패키징 릴리즈 노트 작성 프로세스
1. 모듈식별
- 릴리즈 노트 작성을 위한 모듈 및 빌드 정리
- 입출력 데이터, 전체적인 기능 정의, 데이터 흐름 정리
- 기능 단위 및 출력에 대한 상세 정의
2. 릴리즈 정보 확인
- 문서 이름(릴리즈 노트 이름), 제품 이름 정보 확인
- 버전 번호, 릴리즈 날짜 확인
- 참고 날짜, 노트 버전 확인
3. 릴리즈 노트 개요 작성
- 제품 및 변경에 대한 간략한 전반적인 개요 작성
- 개발 소스의 빌드에 따른 결과물 기록
- 버전 및 형상 관리에 대한 전박적인 노트(Note) 기록
4. 영향도 체크
- 버그의 간단한 설명 또는 릴리즈 추가 항목 기술
- 버그 발견을 위한 재현 테스트 및 재현 환경을 기록
- 소프트웨어 및 사용자 입장에서의 영향도 파악
5. 정식 릴리즈 노트 작성
- 릴리즈 정보, 헤더(Header) 및 개요 등 기본사항 기술
- 정식 버전을 기준으로 릴리즈 노트 개요 작성
- 이슈, 버그 등 개선 내용 기술
6. 추가 개선 항목 식별
- 추가 개선에 대한 베타 버전을 이용 테스트 수행
- 테스트 중 발생한 긴급 버그 수정
- 추가 기능 향상을 위해 작은 기능 수정
- 사용자 요청에 따른 추가 개선
2. 애플리케이션 배포 도구 구성요소
[애플리케이션 배포 도구 구성요소]
1. 암호화
- 콘텐츠 및 라이선스를 암호화하고, 전자서명을 할 수 있는 기술
2. 키 관리
- 콘텐츠를 암호화한 키에 대한 저장 및 배포 기술(중앙 집중형, 분산형)
3. 식별 기술
4. 저작권 표현
5. 암호화 파일 생성
- 콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술
6. 정책 관리
- 라이선스 발급 및 사용에 대한 정책표현 및 관리 기술
7. 크랙 방지
- 크랙에 의한 콘텐츠 사용 방지 기술
cf : 크랙(Crack)
- 소프트웨어를 수정하여 소프트웨어 복사 방지나 소프트웨어 조작 보호등을 비활성화 하거나 재거하는 일이다.
8. 인증
- 라이선스 발급 및 사용자의 기준이 되는 사용자 인증 기술
2. 애플리케이션 배포 도구 세부기술
1. 공개 키 기반 구조(PK)
- 공개키 암호 방식 기반으로 디지털 인증서를 활용하는 소프트웨어, 하드웨어, 사용자, 정책 및 제도 등을 총칭하는 암호 기술
2. 대칭 및 비대칭 암호화
- 대칭 암호화는 암호화와 해독을 위해 동일한 키를 사용하는 암호화 방식
- 비대칭 암호화는 데이터를 암호화할 때와 이를 해독할 때 서로 다른 키를 사용하는 방식
3. 전자서명
- 서명자를 확인하고 서명자가 당해 전자문서에 서명했다는 사실을 나타내기 위해 특정 전자문서에 첨부되거나 논리적으로 결합된 전자적 형태의 정보
4. DOI(Digital Object Identifier)
- 디지털 저작물에 특정한 번호를 부여하는 일종의 바코드 시스템
- 디지털 저작물의 저작권 보호 및 정확한 위치 추적이 가능한 시스템
6. XrML(eXtensible Right Markup Language)
- 디지털 콘텐츠/ 웹 서비스 권리 조건을 표현한, XML 기반의 마크업 언어
cf: 마크업 언어(Markup Language)
- 태그는 원래 텍스트완는 별도로 원고의 교정부호와 주석을 표현하기 위한 수단이었으나 용도가 점차 확장되어 문서의 구조를 표현하는 역할을 하게 되었고, 이러한 태그 방법의 체계가 마크업 언어
7. MPEG-21
- 멀티미디어 관련 요소 기술들이 통일된 형태로 상호 운용성을 보장하는 멀티미디어 표준 규격
8. XML(eXtensible Markup Langauge)
- XML은 W3C에서 개발된 다른 특수한 목적을 갖는 마크업 언어를 만드는데 사용하도록 권장하는 다목적 마크업 언어
9. CMS(Contents Management System)
- 콘텐츠 관리시스템은 다양한 미디어 포맷에 따라 각종 콘텐츠를 작성, 수집, 관리, 배급하는 콘텐츠 생산에서 활용, 폐기까지 전 공급 과정을 관리하는 기술
10. 코드 난독화
- 역공학을 통한 공격을 막기 위해서 프로그램의 소스 코드를 알아보기 힘든 형태로 바꾸는 기술
cf: 역공학(Reverse Engineering)
- 기존 개발된 시스템의 기술적인 원리를 시스템의 코드나 데이터등의 구조분석을 통해도출해 내는 작업
11. Secure DB
- 커널 암호화 방식으로 데이터베이스 파일을 직접 암호화하고, 접근 제어와 감사 기록 기능이 추가된 데이터베이스 보안 강화 기술
12. SSO(Single Sign On)
- 한 번의 시스템 인증을 통하여 여러 정보시스템에 재인증 절차 없이 접근할 수 있는 통합 로그인 기술
3. 애플리케이션 배포 도구를 활용한 배포 프로세스
1. 빌드 내용 식별
- 릴리즈 노트 작성을 위한 모듈 및 빌드 정의
- 입출력 데이터, 전체적인 기능 정의, 데이터 흐름 정리
- 기능 단위 및 출력에 대한 상세 정의
2. 패키징 도구 식별
- 패키징 도구의 사전 선택
- 암호/보안 기능 확인
3. DRM 흐름을 확인하여 패키징 수행
- 콘텐츠 분배자, 배포자, 소비자 간 DRM 흐름 확인
- 패키징 수행 시 키 관리, 보안 개념 확인하며 수행
4. 패키징 도구 설치
- 환경에 맞게 패키징 도구 설치 작업 진행
- 패키징 도구 설치 완료 후 정상 작동 확인
5. 배포 작업
- 패키징 도구 설치 이후 제품 소프트웨어의 배포 작업을 진행
- 배포 후 최종 패키징 완료 확인
6. 정상 배포 확인
- 암호화/보안 기능 적용 확인
- 제품 소프트웨어 배포본 기준으로 암호화/보안 기능 체크리스트 확인
4. 애플리케이션 배포 도구 활용 시 고려사항
1. 암호화/보안
- 패키징 시 사용자에게 배포되는 소프트웨어임을 감안하여 반드시 내부 콘텐츠에 대한 암호화 및 보안 고려
2. 이기종 연동
- 패키징 도구를 활용하여 여러 가지 이기종 콘텐츠 및 단말기 간 DRM 연동 고려
3. 복잡성 및 비효율성 문제
- 패키징 도구를 고려하면 사용자의 입장에서 불편해질 수 있는 문제를 고려하여, 최대한 효율적으로 적용될 수 있도록 함
4. 최적합 암호화 알고리즘 적용
- 암호화 알고리즘이 여러 가지 종류가 있는데, 제품 소프트웨어의 종류에 맞는 알고리즘을 선택하여 배포 시 범용성에 지장이 없도록 고려
3. 애플리케이션 모니터링 도구
1. 애플리케이션 모니터링 도구 개념
- 애플리케이션 모니터링 도구는 제품 소프트웨어를 사용자 환경에 설치한 후 기능 및 성능, 운영 현황을 모니터링하여 제품을 최적화하기 위한 도구
2. 애플리케이션 모니터링 도구의 기능
- 애플리케이션 모니터링 도구는 변경 관리, 성능 관리 및 정적 분석 등의 기능을 수행 한다.
[애플리케이션 모니터링 도구의 기능]
1. 애플리케이션 변경 관리
- 애플리케이션 간의 종속관계를 모니터링
- 애플리케이션의 변경이 있을 경우 변경의 영향도 파악에 활용
- ChangeMiner
2. 애플리케이션 성능 관리
- 애플리케이션 서버로 유입되는 트랜잭션 수량, 처리시산, 응답시간 등을 모니터링
- Jeniffer,Nmon
3. 애플리케이션 정적 분석
- 소스 코드의 잠재적인 문제 발견 가능
- 코딩 규칙 오류 발견
- PMD, Cppcheck
4. 애플리케이션 동적 분석
- 프로그램에 대한 결함 및 취약점 동적 분석 도구
- 메모리 및 오류 문제 발결
- Avalanche, Valgrind
3. 애플리케이션 모니터링 도구활용에 따른 효과
- 애플리케이션 모니터링 도구 활용에 따라서 서비스 가용성, 서비스 성능, 장애인지/리소스 측정, 근본 원인을 분석할 수 있다.
1. 서비스 가용성
- 모니터링 자동화 및 관련 데이터 생성
- 시스템에 의한 서비스 모니터링
2. 서비스 성능
- 24시간 대상 애플리케이션 측정
- 다양한 서비스 대상 측정
- 시스템에 의한 객관적 측정
3. 장애인지/리소스 측정
- 서비스 24시간 모니터링
- 가용성 데이터 및 관련 자료 생성
- 성능 저하 발생시 자동 열람 가능
4. 근본 원인 분석
- 사용자 입장에서 원인 분석
- 사용자 영역(End-to-End) 분석으로 누구나 공감
- 문제 분석을 위한 시간의 획기적 단축
- 문제 분석 후 객관적인 원인 분석 자료 제공
4. DRM
1. DRM(Digital Rights Management)의 개념
- DRM은 디지털 콘텐츠에 대한 권리정보를 지정하고 암호화 기술을 이용하여 허가된 사용자의 허가된 권한 범위 내에서 콘텐츠의 이용이 가능하도록 통제하는 기술
2. DRM의 특정
1. 거래 투명성
- 저작권자와 콘텐츠 유통업자 사이의 거래구조 투명성 제공
2. 사용규칙 제공
- 사용가능 횟수, 유효기간, 사용 환경 등을 정의 가능
- 다양한 비즈니스 모델 구성 및 콘텐츠 소비 형태 통제 제공
3. 자유로운 상거래 제공
- 이메일, 디지털 미디어, 네트워크 등을 통한 자유로운 상거래 제공
- 허가 받은 사용자는 별도의 비밀키를 이용하여 대상 콘텐츠를 복호화하고 허가된 권한으로 사용 가능
3. DRM 구성
- DRM은 콘텐츠 제공자와 콘텐츠 소비자, 클리어링 하우스로 구성된다.
- 콘텐츠 분배자는 제공자로부터 콘텐츠를 받아서 소비자에게 유통 시킨다.
[콘텐츠 제공자(DRM Server)]
1. DRM 콘텐츠
- 서비스 하고자 하는 암호화된 콘텐츠, 콘텐츠와 관련되 메타 데이터, 콘텐츠 사용정보를 패키징하여 구성된 콘텐츠
cf : 메타 데이터(Meta Data)
- 자료 그 자체가 아닌 자료의 속성 등을 설명하는 데이터이다.
2. 패키저(Packager)
- 암호화된 콘텐츠, 콘텐츠 관련 메타 데이터, 클리어링 하우스에서 부여받은 콘텐츠 사용정보를 암호화한 콘텐츠로 변환하는 도구
[클리어링 하우스(Clearing House)]
1. 콘텐츠 정책
- 라이선스 발급여부를 결정하는 정책에 대한 부합 여부 확인
- 적절한 사용 권한을 부여하는 역할 수행
2. 콘텐츠 라이선스
- 클리어링 하우스에 의해서 사용자에게 전달되는 콘텐츠의 권리 인증
- 콘텐츠에 대한 사용 조건 및 허가 정보를 포함
3. 콘텐츠 관리정보
- 콘텐츠를 사용하고자 하는 사용자 정보 및 사용하고자 하는 콘텐츠에 대한 정보
4. 콘텐츠 사용정보
- DRM 콘텐츠의 사용자 권한 및 그 권한에 따른 콘텐츠 정책에 대한 정보
[콘텐츠 소비자(DRM Client)]
1. DRM 컨트롤러
- 배포된 디지털 콘텐츠의 이용 권한을 통제
- 원본 콘텐츠를 안전하게 유통하기 위한 전자적 보안 장치
4.DRM의 기술요소
1. 접속 제어
- 권한이 없는 사용자의 콘텐츠 접근 자체를 막는 것
2. 사용 제어
- 정당한 권한이 없는 사용자의 콘텐츠 사용을 막는 것
3. 내용 제어
- 워터마킹 등의 기술을 이용하여 콘텐츠 자체에 은닉된 소유권 및 불법복제 제어정보 등을 삽입
cf : 워터마킹(Watermarking)
- 디지털 콘텐츠에 저작권자 정보를 삽입하여, 불법 복제 시 워터마크를 추출, 원 소유자를 증명하는 콘텐츠 보호기술이다.
5. 모바일 DRM
- 무선 디지털 콘텐츠 유통시장에서 콘텐츠 및 지적 재산권을 보호하는 기술이다.
- 스마트폰 OS(안드로이드, IOS)에 의존적이다.
- 콘텐츠의 다운로드, 권리 개체에 따른 콘텐츠의 사용제어, 콘텐츠의 권리 개체관리 등의 기능을 한다.