Rei’s Tech diary

Chapter 3. 제품 소프트웨어 패키징 본문

정보처리기사/[2] 소프트웨어 개발

Chapter 3. 제품 소프트웨어 패키징

Reiger 2022. 3. 10. 23:18

[1] 제품 소프트웨어 패키징

#. 애플리케이션 패키징(Application Packaging)

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

 

#. 사용자 관점에서 패키징 고려사항

고려사항 설명
사용자 시스템
환경 정의
사용자의 시스템 환경인 운영체제, CPU, 메모리 등의 수행을 위한 최소 환경을 정의
UI 제공 사용자가 직관적으로 확인할 수 있는 UI를 제공하고, 메뉴얼과 일치시켜 패키징 작업 수행
관리 서비스 형태로 제공 애플리케이션은 하드웨어와 함꼐 통합 적용할 수 있도록, 패키징을 관리 서비스 형태로 제공
패키징의 변경 및 개선 관리 고려 다양한 사용자의 요구사항을 반영하기 위해 패키징의 변경 및 개선 관리를 고려하여 패키징 배포

 

#. 애플리케이션 배포 도구의 기술요소

기술요소 설명
암호화 콘텐츠 및 라이선스를 암호화하고, 전자서명을 할 수 있는 기술
키 관리 콘텐츠를 암호화한 키에 대한 저장 및 배포 기술
식별 기술 콘텐츠에 대한 식별 체계 표현 기술
저작권 표현 라이선스의 내용 표현 기술
암호화 파일 생성 콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술
정책 관리 라이선스 발급 및 사용에 대한 정책표현 및 관리 기술
크랙 방지 크랙에 의한 콘텐츠 사용 방지 기술
인증 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술

 

#. 애플리케이션 배포 도구 세부 기술

세부 기술 설명
공개키 기반 구조
(PK)
공개키 암호 방식 기반으로 디지털 인증서를 활용하는 소프트웨어, 하드웨어, 사용자, 정책 및 제도 등을 총칭하는 암호 기술
대칭 및 비대칭 암호화 대칭 암호화 : 암호화와 해독을 위해 동일한 키를 사용
비대칭 암호화 : 데이터를 암호화/해독할 때 서로 다른 키 사용
전자서명 서명자를 확인하고 서명자가 당해 전자문서에 서명했다는 사실을 나타내기 위해 특정 전자문서에 첨부되거나 논리적으로 결합된 전자적 형태의 정보
DOI
(Digital Object Identifier)
디지털 저작물에 특정한 번호를 부여하는 일종의 바코드 시스템
디지털 저작물의 저작권 보호 및 정확한 위치 추적이 가능한 시스템
URI
(Uniform Resource Identifier)
인터넷에 있는 자원을 나타내는 유일한 주소
XrML
(eXtensible Right Markup Language)
디지털 콘텐츠 / 웹 서비스 권리 조건을 표현한, XML 기반의 마크업 언어
MPEG-21 멀티미디어 관련 요소 기술들이 통일된 형태로 상호 운용성을 보장하는 멀티미디어 표준 규격
XML
(eXtensible Markup Language)
W3C에서 개발된 다른 특수헌 목적을 갖는 마크업언어를 만드는 데 사용하도록 권장된 다목적 마크업 언어
CMS
(Contents Management System)
콘텐츠 관리시스템은 다양한 미디어 포맷에 따라 각종 콘텐츠를 작성, 수집, 관리, 배급하는 콘텐츠 생산에서 활용, 폐기까지 전 공급 과정을 관리하는 기술
코드 난독화 역공학을 통한 공격을 막기 위해서 프로그램의 소스 코드를 알아보기 힘든 형태로 바꾸는 기술
Secure DB 커널 암호화 방식으로 데이터베이스 파일을 직접 암호화하고, 접근 제어와 감사 기록 기능이 추가된 데이터베이스 보안 강화 기술
SSO
(Single Sign On)
한 번 시스템 인증을 통하여 여러 정보시스템에 재인증 절차 없이 접근할 수 있는 통합 로그인 기술

 

#. 제품 소프트웨어 패키징 도구 활용 시 고려사항

- 암호화/보안

- 이기종 연동

- 복잡성 및 비효율성 문제

- 최적합 암호화 알고리즘 적용

 

#. DRM (Digital Rights Management)

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

 

 

#. DRM 구성 요소

구성요소 설명
콘텐츠 제공자
(Contents Provider)
콘텐츠를 제공하는 저작권자
콘텐츠 소비자
(Contents Customer)
콘텐츠를 구매해서 사용하는 주체
콘텐츠 분배자
(Contents Distributor)
암호화된 콘텐츠를 유통하는 곳이나 사람
클리어링 하우스
(Clearing House)
저작권에 대한 사용 권한, 라이선스 발급, 사용량에 따른 관리 등을 수행하는 곳
키 관리 및 라이선스 발급 관리
콘텐츠 권한 정책, 라이선스 관리 수행
DRM 콘텐츠
(DRM Contenst)
서비스 하고자 하는 암호화된 콘텐츠, 콘텐츠와 관련된 메타 데이터, 콘텐츠 사용정보를 패키징하여 구성된 콘텐츠
패키저
(Packager)
콘텐츠를 메타 데이터와 함께 배포 가능한 단위를 묶는 도구
DRM 컨트롤러
(DRM Controller)
배포된 디지털 콘텐츠의 이용 권한을 통제
보안 컨테이너
(Security Container)
원본 콘텐츠를 안전하게 유통하기 위한 전자적 보안 장치

 

#. DRM 기술 요소

기술요소 설명
암호화 콘텐츠 및 라이선스를 암호화하고, 전자서명을 할 수 있는 기술
예) 공개 키 기반 구조(PKI), 대칭 및 비대칭 암호화, 전자서명
키 관리 콘텐츠를 암호화한 키에 대한 저장 및 배포 기술
식별 기술 콘텐츠에 대한 식별 체계 표현 기술
예) DOI, URI
저작권 표현 라이선스의 내용 표현 기술
예) XrML/MPEG-21
암호화 파일 생성 콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술
정책 관리 라이선스 발급 및 사용에 대한 정책표현 및 관리 기술
예) XML, 콘텐츠 관리 시스템
크랙 방지 크랙에 의한 콘텐츠 사용 방지 기술
예) 난독화, Secure DB
인증 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술
예) 사용자/장비 인증, SSO

[2] 제품 소프트웨어 매뉴얼 작성

#. 제품 소프트웨어 설치 매뉴얼 구성 요소

- 제품 소프트웨어 개요

- 설치 관련 파일

- 설치 절차

- 설치 아이콘

- 삭제 방법

- 설치 버전 및 작성자

- 고객 지원 방법 및 FAQ

- 준수 정보 & 제한 보증

 

#. 국제 제품 품질 표준

품질 표준 설명
ISO/IEC 9126 - ISO/IEC 9126의 품질 모델은 소프트웨어 품질을 측정하고 평가하기 위해서 소프트웨어의 품질요소와 특성을 정의
ISO/IEC 14598 - 소프트웨어 제품 평가 프로세스 및 평가 모듈 제공
- 패키지 소프트웨어와 SI 개발 소프트웨어에 있어서 개발과정 또는 개발이 완료된 제품의 품질에 대한 평가 표준과 프로세스를 제공
ISO/IEC 12119 - 소프트웨어 패키지 제품에 대한 품질 요구사항 및 테스트 국제 표준
ISO/IEC 250000 - ISO/IEC 9126, ISO/IEC 14598, ISO/IEC 12119를 통합하고, ISO/IEC 15288을 참고한 소프트웨어 제품 품질에 대한 국제표준

#. ISO/IEC 9126의 소프트웨어 품질 특성 ★

품질 표준 설명 부특성
기능성
(Functionability)
명시된 요구와 내제된 요구를 만족하는 기능을 제공하는 소프트웨어 제품의 능력 적합성, 정확성, 상호운용성, 보안성, 준수성
신뢰성
(Reliability)
- 명시된 조건에서 사용될 때 성능 수준을 - 유지할 수 있는 소프트웨어 제품의 능력
옳고 일관된 결과를 얻기 위하여 요구된 기능을 수행할 수 있는 정도
- 주어진 시간 동안 주어진 기능을 오류 없이 수행하는 정도
성숙성, 결합 허용성, 회복성, 준수성
사용성
(Usability)
사용자에 의해 이해되고, 학습되고, 사용되고, 선호될 수 있는 능력 이해성, 학습성, 운용성, 친밀성, 준수성
효율성
(Efficiency)
사용되는 자원의 양에 따라 요구된 성능을 제공하는 능력 시간 반응성, 지원 효율성, 준수성
유지보수성
(Maintainability)
제품이 변경되는 능력
소프트웨어 수정, 개선, 개작 등
분석성, 변경성, 안정성, 시험성, 준수성
이식성
(Portability)
하나 이상의 하드웨어 환경에서 운용되기 위해 쉽게 수정될 수 있는 능력 적응성, 설치성, 공존성, 대체성, 준수성

#. ISO/IEC 14598의 소프트웨어 품질 특성

- 반복성

- 재현성

- 공정성

- 객관성

 

#. 소프트웨어 공학 (Software Engineering)

- 소프트웨어 공학은 소프트웨어의 개발, 운용, 유지보수 및 파기에 대한 체계적인 접근 방법

- 소프트웨어 공학은 신뢰성 있는 소프트웨어를 경제적인 비용으로 획득하기 위해 공학적 원리를 정립하고 이를 이용하는 방법

- 소프트웨어 공학은 소프트웨어 위기를 극복하기 위한 방안으로 연구된 학문임.

 

#. 소프트웨어 공학 원칙

- 현대적인 프로그래밍 기술을 계속적으로 사용

- 개발된 소프트웨어의 품질이 유지되도록 지속적 검증 수행

- 소프트웨어 개발 관련 사항 및 결과에 대한 명확한 기록 유지

 

#. 공학적으로 잘된 소프트웨어

- 유지보수 용이

- 높은 신뢰성

- 충분한 테스팅

 

#. 소프트웨어 공학 법칙

법칙 설명
브룩스의 법칙
(Brook's Law)
"지체되는 소프트웨어 개발 프로젝트에 인력을 추가하는 것은 개발을 늦출 뿐이다"
파레토 법칙
(Pareto Principle)
= 80대 20 법칙
전체 결과의 80%가 전체 원인의 20%에서 일어나는 현상을 나타낸 법칙
롱테일 법칙
(Long Tail)
사소해 보이는 80%의 다수가 소수의 20%의 핵심보다도 뛰어난 가치를 창출해낸다는 법칙
(파레토 법칙의 반대 법칙)

 

[3] 제품 소프트웨어 버전 관리

#. 소프트웨어 버전 관리 도구

- 소프트웨어 버전 관리 도구는 형상 관리 지침을 활용하여 베품 소프트웨어의 신규 개발, 개선과 관련된 수정 사항을 관리하는 도구이다.

제품 소프트웨어 버전 관리는 소프트웨어 개발과 관련하여 코드와 라이브러리, 관련 문서 등 시간의 변화에 따른 변경을 관리하는 전체 활동을 의미한다.

 

#. 소프트웨어 버전 관리 유형

1) 공유 폴더 방식

- 매일 개발 완료 파일은 약속된 위치의 공유 폴더에 복사하는 방식

- 담당자 한 명이 매일 공유 폴더의 파일을 자기 PC로 복사하고 컴파일하여 에러 확인과 정상 동작 여부 확인

- 도구) RCS

 

2) 클라이언트/서버 방식- 버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리되는 방식- 개발자들의 현재 작업 내용과 이전 작업내용 축적에 용이- 도구) CVS, SVN, Clear Case

 

3) 분산 저장소 방식- 로컬 저장소와 원격 저장소로 분리된 구조- 중앙의 저장소에서 로컬에 복사(Clone)한 순간 개발자 자신만의 로컬 저장소에 생성- 도구) Git, Bitkeeper

 

#. 소프트웨어 버전 관리 도구별 특징1) CVS- 가장 오래된 형상 관리 도구 중의 하나로서 중앙 집중형 서버 저장소를 두고 클라이언트가 접속해서 버전 관리를 실행하는 도구2) SVN- CVS와 같은 중앙 집중형 클라이언트-서버 방식이나, CVS의 단점을 보완해 널리 사용되고 있는 도구3) Git- Git은 중앙 집중형 방식이 아닌 분산형 방식으로 각 PC 스스로 완전한 저장소가 구성되며, 필요에 따라 중앙 집중형 방식으로도 운영

 

#. 소프트웨어 버전 관리 도구 사용 시 유의사항- 버전에 대한 쉬운 정보 접근성- 불필요한 사용자에 대한 접근 제어- 동일 프로젝트에 대한 동시 사용성- 빠른 오류 복구

 

#. 빌드 자동화 구성요소1) CI (Continuos Integration) 서버- 빌드 프로세스를 관리하는 서버- 도구) Jenkins, Hudson

 

2) SCM (Source Code Management)
- 소스 코드 형상 관리 시스템- 소스 코드의 개정과 백업 절차를 자동화하려 오류 수정 과정을 도와줄 수 있는 시스템- 여러 사람이 같은 프로젝트에 참여할 경우, 각자 수정 부분은 자동으로 동기화- 도구) SVN, Git

 

3) 빌드 도구- 컴파일, 테스트, 정적분석 등을 통해 동작 가능한 소프트웨어 생성- 도구)  Ant, Maven

 

4) 테스트 도구- 작성된 테스트 코드에 따라 자동으로 테스트를 수행해주는 도구- 도구) Junit, Selenium

 

5) 테스트 커버리지 도구- 테스트 코드가 대상 소스 코드에 대해 어느정도 커버하는지 분석하는 도구- 도구) Emma

 

6) 인스펙션 도구- 프로그램을 실행하지 않고, 소스 코드 자체로 품질을 판단할 수 있는 정적 분석 도구- 코딩 표준 준수 검사, 코드 메트릭 측정, 중복 코드 검사, 코드 인스펙션 검사- 도구) CheckStyle, Cppcheck

 

#. 빌드 자동화 도구의 기능- 코드 컴파일- 컴포넌트 패키징- 파일 조작- 개발 테스트 실행- 버전 관리 도구 통합- 문서 생성- 배포 기능- 코드 품질 분석

 

#. 빌드 자동화 도구 사례

 

가) 젠킨스(Jenkins)- 젠킨스는 자바(Java)  기반의 오픈소스로 가장 많이 활용되는 빌드 자동화 도구이고, 지속적 통합관리(CI)를 가능하게 한다.- 서블릿 컨테이너 서버 기반으로 구동되는 시스템이며, CVS, SVN, Git 등 다양한 버전 관리 도구를 지원한다.

 

나) 그래들(Gradle)- 그래들은 그루비와 유사한 도메인 언어를 채용- 현재는 안드로이드 앱을 만드는 데 필요한 안드로이드 스튜디오의 공식 빌드 자동화 시스템이다.- 실행할 처리 명령들을 모아 태스크로 만든 후 태스크 단위로 실행- 자바(Java), 파이썬(Python), C/C++ 등과 같은 여러가지 언어 지원