일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 재택치료
- 플러터
- 수제비 2022
- 확진
- 얘들아 잘 지내니
- 개강해짐
- 정보처리기사2022
- 다들 안잊어서
- 스프링 MVC
- 생일축하해 나 자신
- 자가격리
- 대학생
- AWS
- N-Queen
- 2022 정보처리기사
- pem키 분실
- 아싸의 생일
- 대외활동
- 교육봉사
- 다음에 또 만나자
- 뽀모도로 타이머
- 지독한 컨셉충
- 수제비2022 정리
- 다행이야...ㅎ
- CRUDS
- 교수님 과제 이제 그만..
- FLUTTER
- 정보처리기사 2022
- 레이튼 교수와 이상한 마을
- 모바일 청첩장
- Today
- Total
Rei’s Tech diary
Chapter 3. 제품 소프트웨어 패키징 본문
[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++ 등과 같은 여러가지 언어 지원
'정보처리기사 > [2] 소프트웨어 개발' 카테고리의 다른 글
Chapter 5. 인터페이스 구현 (0) | 2022.03.13 |
---|---|
Chapter 4. 애플리케이션 테스트 케이스 관리 (0) | 2022.03.12 |
Chapter 2. 통합 구현 (0) | 2022.03.08 |
Chapter 1. 데이터 입출력 구현 (0) | 2022.03.08 |