[소프트웨어개발] 3. 제품 소프트웨어 패키징

제품 소프트웨어 패키징

  • 개념:
    • 개발이 완료된 소프트웨어를 고객에게 인도학 위해 패키징하고,
    • 설치 메뉴얼, 사용 메뉴얼 등을 작성하는 등 일련의 배포용 설치 파일을 만드는 작업
    • 사용자의 다양한 환경에서 설치할 수 있도록 함
  • 주의사항
    • 전체 내용을 포함
    • 사용자 중심으로 진행
    • 모듈화, 버전 관리 및 릴리즈 노트를 관리
  • 패키징 시 고려사항
    • 운영체제와 호환성, 애플리케이션 크기, 보안, 앱 스토어 정책, UI/UX, 앱 업데이트,
    • 어플리케이션 테스트, 문서화, 배포, 라이선스, 앱 마케팅, 유지보수

패키징 프로세스

기능 식별 → 모듈화 → 빌드 진행 → 사용자 환경 분석 → 패키지 적용 시험 → 패키징 변경 개선

  • 기능 식별
    • 입출력 데이터, 데이터 흐름 식별
    • 기능 단위 및 출력에 대해 상세히 정의
  • 모듈화
    • 모듈 간 결합도와 응집도를 분석
    • 기능 단위 및 서비스 단위를 모듈별로 분류
  • 빌드 진행
    • 정상 적인 빌드되는 기능 단위 및 서비스를 분류
  • 사용자 환경 분석
    • 최소 사용자 환경 사정을 정의
  • 패키지 적용 시험
    • 실 사용자 환경에서의 패키징 적용 테스트
  • 패키징 변경 개선
    • 개선 버전을 다시 패키징

제품 소프트웨어의 패키징 도구

  • 패키징 시에 지식재산권을 보호하고 관리하는 기능을 제공하는 도구
  • 소프트웨어의 안전한 유통 및 배포를 도와주는 솔루션
  • 권한 제어 기술, 패키징 기술, 라이선스 관리, 권한 통제 기술
  • 고려사항
    • 내부 콘텐츠에 대한 암호화
    • 적절한 암호화 알고리즘 적용
    • DRM 연동 고려
    • 복잡성 및 비효율성 문제를 고려
패키징 도구의 구성 요소 설명
암호화(Encryption) 라이선스 암호화, 전자서명을 할 수 있는 기술
키 관리(Key Management) 암호화한 키에 대한 저장 및 배포 기술
암호화 파일 생성(Packager) 콘텐츠를 암호화 된 콘텐츠로 생성하기 위한 기술
식별 기술(Identification) DOI, URI
저작권 표현(Right Expression) XrML, MPEG-21, REL, ODRL
정책 관리(Policy Management) XML
크랙 방지(Tamper Resistance) Secure DB
인증(Authentication) 라이선스 발 급 및 사용의 기준이 되는 사용자 인증 기술, SSO, Digital Certificate

*DOI: 디지털 콘텐츠를 고유하게 식별하는 번호, URL과는 달리 콘텐츠의 위치와는 관계없이 콘텐츠의 내용을 기반으로 생성

*URI: 인터넷에서 리소스를 식별하는 일반적인 방법을 제공하는 식별자 (URL의 상위개념)

REL(Rights Expression Language)

  • XML 기반의 디지털 콘텐츠의 권한관리를 위해 사용되는 언어
  • DRM(디지털 권한 관리 시스템)에서 사용

ODRL(Open Digital Rights Language)

  • XML 기반의 저작권 관리를 위한 권한 표현 언어

SSO(Single Sign-On)

  • 로그인할 때 발생하는 번거로움을 줄이기 위한 인증 방식
  • 네이버 로그인, 구글 로그인

디지털 인증서(Digital Certificate)

  • 공인된 제 3자 인증 기관이 발행하는 전자 문서
  • 디지털 서명과 함께 사용됨

모니터링 도구와 협업 도구

애플리케이션 모니터링 도구(APM : Application Performance Management)

  • 성능과 서비스 이용성을 감시하고 관리
  • 목적: 부하량, 접속자 파악, 장애 진단, 통계, 분석 등
  • 대표적인 APM 도구
    • SCOUTER : DB 모니터링
    • Jennifer : 전 생애주기 단계 동안 성능을 모니터링
기능 도구 기능 설명
Change-Minder 변경 관리 변경 관리, 영향 분석, 품질 관리 등의 기능
Jennifer 성능 관리 트랜잭션 수향, 처리 시간, 응답 시간 등을 모니터링
JenniferNmon 성능 관리 리눅스 서버 자원에 대한 모니터링 도구
PMD 정적 분석 Java로 작성된 소스코드의 잠재적인 문제와 코딩 규칙 오류를 발견
Cppcheck 정적 분석 C/C++ 소스코드에 대한 잠재적 문제 발견
Valgrid 동적 분석 C/C++ 기반 프로그램에 대한 메모리 및 스레드 문제 발견
Avalanche 동적 분석 Valgrid + STP 를 기반으로 구현, 심각한 소프트웨어 에러와 취약점을 발견
  • APM제공 기능
    • 애플리케이션 모니터링
      • 성능 모니터링
    • 사용자 모니터링
      • 사용자 로그를 분석, 발생시킨 이벤트 추적
    • 성능 최적화
    • 장애 대응

협업 도구

  • 개발 과정에서 이해관계자 간의 지속적 이견 조율을 수행하기 위한 도구
  • 분류: 문서 공유, 소스 공유, 아이티어 공유, 디자인 공유, 일정 관리, 프로젝트 관리, 마인드 맵
대표적인 협업 도구 설명
버전관리 시스템 Git, SVN
이슈 트래커 Jira, Trello
채팅 도구 Slack, Microsoft Teams
코드 리뷰 도구 Gerrit, Crucible
CI/CD 도구 자동화된 테스트 수행 도구, Jenkins, CircleCI

제품 소프트웨어 저작권 보호

DRM (Digital Rights Management)

  • 개념
    • 디지털 콘텐츠의 생성~실제 사용자까지 모든 유통과정에 걸쳐 콘텐츠를 안전하게 관리 및 보호하고 허가된 사용자 만이 접근할 수 있도록 제한하는 기술
    • 무한 복제가 가능하고 원본과 복사본이 동일하게 배포될 가능성이 커 이를 방지하기위한 기술적인 방법
  • 기술적 요구사항
    • 지속적 보호 : 무결성, 비밀성, 강인성
    • 이용 편리성 : DRM 컨트롤러를 통해 설치 프로그램 최소화 및 자동설치
    • 유연성 : 다른 응용시스템과 연동
    • 통합의 용이성 : 완전히 독립된 시스템 → 도메인 별로 존재하는 애플리케이션 또는 시스템과의 연동이 필요
  • DRM 특성
    • 거래 투명성, 사용 규칙 제공
    • 자유로운 상거래 제공
DRM 기술 요소 ⭐ 설명 방식
암호화(Encryption) 암호화, 전자서명을 할 수 있는 기술 PKI
키 관리(Key Management) 암호화된 키에 대한 저장, 분배  
암호화 파일 생성(Packager) 콘텐츠를 암호화하기 위해 생성된 기술  
식별 기술(Identification) 콘텐츠에 대한 식별 체계 표현 기술 DOI, URI
저작권 표현(Right Expression) 라이선스의 내용 표현 기술 ODRL, REL
정책 관리(Policy Management) 라이선스 발급 및 사용에 대한 정책 표현, 관리 기술 XML
크랙 방지(Tamper Resistance) 크랙에 의한 콘텐츠 사용 방지 기술 SSO, 디지털 인증, ID/PW
인증(Authentication) 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술  
인터페이스(Interface) 다른 DRM플랫폼 간의 상호호환성, 인터페이스 및 인증기술 IPMP
이벤트 보고(Event Reporting) 모니터링 기술  
사용권한(Permission) 콘텐츠의 사용에 대한 권한을 관리하는 기술 요소 퍼미션(렌더, 트랜스포트, 데리버티브)

DRM의 유통 과정과 구성⭐

Untitled

DRM 구성 설명
콘텐츠 제공자
(Contents Provider)
콘텐츠를 제공하는 저작권자
콘텐츠 분배자
(Contents Distributor)
배포하는 기업이나 단체, DRM 시스템 구축, 암호화된 콘텐츠를 인증된 사용자에게 배포
패키저
(Packager)
콘텐츠를 메타 데이터와 함께 배포할 수 있는 단위로 묶는 기능
보안 컨테이너
(Security Container)
원본을 안전하게 유통하려는 전자적 보안 장치
DRM Controller 배포된 콘텐츠의 이용 권한을 통제
Clearing House 키 관리 및 라이선스 발급 관리, 제 3의 운영 주체, 저작권료의 정산 및 분배가 이루어짐
계약서 관리, 정산 시스템 구축, 자금 관리 등의 기능을 제공

DRM 정책

  • Permission 유형
    • Render Permission
      • 사용자에게 콘텐츠가 표현되고 이용되는 권리 형태를 정의
      • 디지털 콘텐츠를 재생하는 권한
    • Transport Permission
      • 사용자들 간에 권리 교환이 이루어지는 권리 형태를 정의
      • copy, move, loan
    • Derivative Permission
      • 콘텐츠의 추출 변형이 가능한 변환
      • extract, embed, edit
  • 사용 조건
    • Period : 사용기간 설정
    • Count : 문서 사용 횟수 설정
    • Domian : 특정한 사용자 또는 특정 지역에서만 이용할 수 있도록 제한
  • 권한 통제
  • 변경 방지
  • 탬퍼링 유형
    • 소프트웨어 크래킹 기술을 이용한 시도
    • 시간 및 데이터의 조작을 통한 시도
    • 위장 모듈을 이용한 시도
  • *탬퍼링 : 악의적인 공격자가 디지털 콘텐츠를 변조하려는 것
  • 인증
    • ID/패스워드
    • 디지털 인증서
    • 이메일 인증
    • SSO
    • 생체 인식

소프트웨어 매뉴얼

  • 제품 소프트웨어 개발 단계부터 적용한 기주이나 패키징 이후 설치와 사용자 측면의 주요 내용 등을 기록한 문서
  • 구분: 설치 매뉴얼, 사용자 메뉴얼

소프트웨어 설치 매뉴얼

  • 실사용자가 제품을 최초 설치 시 참조하는 매뉴얼
  • 예외 상황에 관련 내용을 별도로 구분하여 설명
  • 전 과정을 빠짐없이 순서대로 설명
  • 사용자 기준
  • 목차, 개요, 기본 사항 등
  • 구성:
    • 목차 및 개요, 문서 이력 정보, 설치 매뉴얼 주석(주의 사항, 참고사항), 설치 도구의 구성, 설치 위치 지정
  1. 기능 식별
  2. UI 분류
  3. 설치 파일/백업 파일 확인
  4. Uninstall 절차
  5. 이상 Case 확인
  6. 최종 매뉴얼 적용

소프트웨어 사용자 매뉴얼

  • 소프트웨어 사용 방법을 기술
  • 패키지의 기능, 패키지의 인터페이스, 포함하고 있는 메소드 등의 설명이 포함
  • 사용자 매뉴얼 구성
    • 사용자 화면 및 UI : 주의사항, 참고사항
    • 주요 기능 분류
    • 응용 프로그램/설정 : 제품 실행 시 영향을 받거나 주는 소프트웨어에 대해 설명, 사전에 실행해야한 소프트웨어가 있다면 설명
    • 장치 연동 : Embedded관련 제품일 경우 연동 장치에는 무엇이 있는지 설명
    • Network 환경
    • Profile 설명
    • 고객 지원 방법
    • 준수 정보 및 제한 보증

Untitled 1

릴리즈 노트 작성하기

Release Note

  • 애플리케이션 최종 사용자인 고객에게 제공하는 잘 정리된 배포 정보 문서
  • 현재 시제로 개발팀에서 직접 작성
  • 작성 항목
    • 헤더 : 문서명, 제품명, 배포 버전 번호, 릴리즈 날짜, 참고 날짜, 문서(릴리즈 노트) 버전 등
    • 개요, 목적
    • 이슈 요약 : 버그의 간단한 설명과 개선사항
    • 재현 항목 : 버그 발생 재현
    • 수정 및 개선 내용
    • 최종 사용자 영향도, 노트, 면책 조항, 연락정보
  • 릴리즈 노트 작성 순서
    • 모듈 식별 → 릴리즈 정보 확인 → 릴리즈 노트 개요 작성 → 영향도 체크(버그 설명 및 재현 테스트)
      → 정식 릴리즈 노트 작성 → 추가 개선 항목 식별
  • 릴리즈 노트 작성 시 주의 사항
    • 명확한 제목, 구체적인 내용, 사용자 중심의 작성, 문제 해결 방법 제공 버전 정보 포함, 참고 문서 제공, 재배포 가능 여부 명시, 최신 정보 제공

소프트웨어 품질 관리

  • 효과
    • 고객 만족도 향상, 개발 비용 절감, 소프트웨어의 안정성 확보, 유지보수성 향상
  • 주의 사항
    • 품질요구사항, 개발 프로세스 관리, 코드 검토, 테스트 계획 수립, 자동화된 테스트

소프트웨어 품질 관련 국제 표준

🔎 ISO/IEC 9126

  • 소프트웨어 품질 특성과 척도에 관한 지침
  • 기능적 하위 특성
    • 적절성, 정확성, 상호운용성, 보안성, 준수성

🔎 ISO/IEC 12119

  • ISO/IEC 9126의 품질 모델을 따름
  • 품질 요구사항 및 테스트를 위한 국제 표준

🔎 ISO/IEC 25000

  • 품질 평가를 위함
  • ISO/IEC 9126 + ISO/IEC 14598
  • 2500n, 2501n, 2502n, 2503n, 2504n 의 다섯가지 분야와 확장 분야인 2505n이 있음
    • 2501n (9126-2, 품질 모형) : 품질 모델 및 품질 사용
    • 2503n (9126-3, 품질 측정) : 매트릭을 통한 측정 방법 제시

🔎 ISO/IEC 12270

  • 일관적이고 체계적인 프레임워크를 제공하기 위한 생명주기 프로세스 국제 표준
  • 구분 : 획득 프로세스, 공급 프로세스, 개발 프로세스, 운영 프로세스, 유지보수
항목 ISO/IEC 9126 ISO/IEC 12119 ISO/IEC 25000 ISO/IEC 12207
대상 소프트웨어 품질 소프트웨어 검증 및 검사 소프트웨어 제품 품질 소프트웨어 개발 프로세스
구성요소 6가지 특성
(기능성, 신뢰성, 사용성, 효율성, 유지보수성, 이식성)
5가지 검증 활동
(계획, 사양, 설계, 검사, 확인)
5가지 모델
(SQuaRE, SQuaRE-TM, SQuaRE-IT, SQuaRE-ME, SQuaRE-RM)
소프트웨어 개발 생명주기 프로세스
목적 소프트웨어 품질 향상을 위한 평가모델 제공 소프트웨어 검증 및 검사를 위한 표준 지침 제공 소프트웨어 제품 품질 평가를 위한 모델 제공 소프트웨어 개발 프로세스 표준화 및 개발 품질 향상
평가방법 특성별 품질 요구사항 평가 검증 및 검사 활동에 대한 지침 제공 소프트웨어 품질 특성 평가 소프트웨어 개발 생명주기 모델 적용
대상 평가자 개발자, 테스터, 사용자 검증 및 검사 담당자, 품질 보증 담당자 품질 평가자, 테스터, 검증 담당자, 사용자 소프트웨어 개발자, 관리자, 품질 보증 담당자

🔎 ISO/IEC 15504 (SPICE) ⭐

  • 소프트웨어 프로세스를 평가 및 개선하는 국제 표준
  • ISO/IEC 12270의 단점을 해결
    • SPICE 모델의 레벨
      • 레벨 5 : 최적(Optimizing) 단계
      • 레벨 4 : 예측(Predictable) 단계
      • 레벨 3 : 확립(Established) 단계
      • 레벨 2 : 관리(Managed) 단계
      • 레벨 1 : 수행(Performed) 단계
      • 레벨 0 : 불완전(Incomplete) 단계

소프트웨어 품질 목표(Software Quality and Goals)⭐

  • 운영 특성
    • 정확성 : 사용자 요구기능 충족
    • 신뢰성 : 오류 없이 수행
    • 사용 용이성 : 사용자가 쉽게 사용
    • 효율성 : 성능과 자원 소요 정도
    • 무결성 : 자료의 변경을 제어하는 정도
  • 변경 수용 특성
    • 이식성 : 다양한 환경에서도 운용할 수 있도록쉽게 수정될수 있음
    • 상호운용성 : 다른 소프트웨어와 정보를 교환할 수 있는 정도
    • 재사용성
    • 유지보수성 : 소프트웨어 진화가 가능한 정도
    • 유연성 : 얼마만큼 쉽게 수정할 수 있는가의 정도
    • 시험 역량 : 프로그램을 테스트할 수 있는 정도

품질 측정 시 관점 별 분류

품질의 세부 속성들은 관계자의 관점에 따라 다름

  • 사용자 관점 : 제품의 신뢰성, 효율성, 사용 용이성, 간결성 등
  • 개발자 관점 : 검증 가능성, 유지보수성, 이식성, 무결성, 사용성 등
  • 프로젝트 관리자 관점 : 프로세스의 생산성과 제어 용이성 등