Data Mavericks

필기 - 2. 소프트웨어 개발_ch3. 제품 소프트웨어 패키징 본문

자격증/정보처리기사

필기 - 2. 소프트웨어 개발_ch3. 제품 소프트웨어 패키징

권동동 2024. 7. 3. 21:31

1. 제품 소프트웨어 패키징

 

(1) 애플리케이션 패키징

 

1️⃣ 애플리케이션 패키징 개념

  • 개발이 완료된 제품 소프트웨어를 배포하고 설치할 수 있도록 고객에게 전달하기 위한 형태로 제작하고, 설치와 상용에 필요한 제반 내용을 포함하는 메뉴얼을 작성하는 활동

2️⃣ 애플리케이션 패키징 특징

  • 사용자 중심으로 진행
  • 신규 및 변경 개발 소스를 식별
  • 모듈화 하여 상용 제품으로 패키징
  • 사용자의 실행 환경을 이해하고, 범용 환경에서 사용이 가능하도록 일반적인 배포 형태로 분류하여 패키징이 진행

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

  • 사용자 실행 환경의 이해
    • 고객의 편의성을 위해 사용자 실행 환경을 우선 고려하여 패키징을 진행
  • 사용자 관점에서 패키징 고려사항
    • 사용자 시스템 환경 정의, UI 제공, 관리 서비스 형태로 제공, 패키징의 변경 및 개선 관리 고려

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

순서 프로세스 세부 활동
1 기능 식별 입출력 데이터 식별
2 모듈화 기능 및 서비스를 모듈 단위로 분류
3 빌드 진행 신규 개발 소스 및 컴파일 결과물 준비
4 사용자 환경 분석 최소 사용자 환경 사전 정의
5 패키징 적용 시험 사용자 환경에서의 패키징 적용 시험
6 패키징 변경 개선 패키징 적용 시 변경점 도출

 

5️⃣ 애플리케이션 패키징 릴리즈 노트

  • 애플리케이션 패키징 릴리즈 노트 개념
    • 애플리케이션 최종 사용자인 고객과 잘 정리된 배포 정보를 고유하는 문서
  • 애플리케이션 패키징 릴리즈 노트 작성 항목
    • 헤더, 개요, 목적, 이슈 요약, 재현 항목, 수정/개선 내용 등등
  • 애플리케이션 패키징 릴리즈 노트 작성 프로세스
    • 모듈 식별 -> 릴리즈 정보 확인 -> 릴리즈 노트 개요 작성 -> 영향도 체크 -> 정식 릴리즈 노트 작성 - 추가 개선 항목 식별

(2) 애플리케이션 배포 도구

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

  • 배포를 위한 패키징 시에 디지털 콘텐츠의 지적 재산권을 보호하고 관리하는 기능을 제공

2️⃣ 애플리케이션 배포 도구의 기술 요소

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

3️⃣ 애플리케이션 배포 도구 활용 시 고려사항

암이복최 - 암이 복지가 최고래

고려 사항 설명
암호화/보안 패키징 시 사용자에게 배포되는 소프트웨어임을 감안하여 반드시 내부 콘텐츠에 대한 암호화 및 보안 고려
이기종 연동 여러 가지 이기종 콘텐츠 및 단말기 간 DRM 연동 고려
복잡성 및 비효율성 문제 사용자의 입장에서 불편해질 수 있는 문제를 고려하여 최대한 효율적으로 적용될 수 있도록 함
최적합 암호화 알고리즘 적용 제품에 맞는 알고리즘을 선택하여 배포시 범용성에 지장이 없도록 고려

(3) 애플리케이션 모니터링 도구

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

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

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

  • 애플리케이션 변경 관리, 성능 관리, 정적 분석, 동적 분석의 기능을 수행

3️⃣ 애플리케이션 모니터링 도구 활용에 따른 효과

  • 서비스 가용, 서비스 성능, 장애 인지/리소스 측정, 근본 원인 분석

(4) DRM

1️⃣ DRM(Digital Rights Managements)의 개념

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

2️⃣ DRM의 특징

  • 거래 투명성, 사용규칙 제공, 자유로운 상거래 제공

3️⃣ DRM 구성요소

  • 콘텐츠 제공자와 콘텐츠 소비자, 클리어링 하우스로 구성
  • 콘텐츠 분배자는 제공자로부터 콘텐츠를 받아서 소비자에게 유통
  • 콘텐츠 제공자
  • 콘텐츠 소비자
  • 콘텐츠 분배자
  • 클리어링 하우스
  • DRM 콘텐츠
  • 패키저
  • DRM 컨트롤러
  • 보안 컨테이너

4️⃣ DRM의 기술요소

  • 암호화
  • 키 관리
  • 식별 기술
  • 저작권 표현
  • 암호화 파일 생성
  • 정책 관리
  • 크랙 방지
  • 인증

 

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

(1) 제품 소프트웨어 매뉴얼 작성

1️⃣ 제품 소프트웨어 매뉴얼 개념

  • 설치 메뉴얼과 사용자 매뉴얼이 있다

2️⃣ 설치 매뉴얼

  • 설치 매뉴얼 기본 작성 항목
    • 목차 및 개요
    • 문서 이력 정보
    • 설치 매뉴얼 주석
    • 설치 도구의 구성
    • 설치 위치 지정
  • 설치 매뉴얼 구성요소
    • 제품 소프트웨어 개요
    • 설치 관련 파일
    • 설치 절차
    • 설치 아이콘
    • 삭제 방법
    • 설치 버전 및 작성자
    • 고객 지원 방법 및 FAQ
    • 준수 정보 & 제한 보증
  • 설치 매뉴얼 작성 프로세스
    • 개요 및 기능 식별
    • UI 분류
    • 설치 파일 / 백업 파일 확인
    • 삭제 절차 확인
    • 이상 유형 확인
    • 최종 매뉴얼 적용

3️⃣ 사용자 매뉴얼

  • 사용자 매뉴얼 작성 항목
    • 목차 및 개요
    • 문서 이력 정보
    • 사용자 매뉴얼 주석
    • 기록항목
    • 기본 사항
    • 고객 지원 방법 및 FAQ
    • 준수 정보 & 제한 보증
  • 사용자 매뉴얼 작성 프로세스
    • 작성 지침 정의
    • 사용자 매뉴얼 구성요소 정의
    • 구성요소별 내용 작성
    • 사용자 매뉴얼 검토

(2)국제 표준 제품 품질 특성

1️⃣ 국제 표줌 제품 품질 특성 개념

  • 품질을 평가하는 기준 항목
  • ISO/IEC, ITU-T, IEEE
  • 제품 품질 표준과 프로세스 품질 표준으로 나눔

2️⃣ 제품 품질 표준

IT 제품에 대해 기능성, 신뢰성 등을 평가하는 기준이 되는 국제 표준

  • ISO/IEC
    • 기능성, 신뢰성, 사용성, 효율성, 유지보수성, 이식성
    • 반복성, 재현성, 공정성, 객관성
    • 품질 관리, 품질 모델, 품질 측정, 품질 요구, 품질 평가

3️⃣ 소프트웨어 공학의 기본원칙

  • 소프트웨어 개념
    • 하드웨어를 동작시켜 사용자가 작업을 편리하게 수행하도록 하는 프로그램 및 자료 구조
  • 소프트웨어 위기
    • 소프트웨어가 하드웨어 개발 속도를 따라가지 못해서 생김
  • 소프트웨어 공학
    • 소프트웨어의 개발, 운용, 유지보수 및 ㅊ파기에 대한 체계적인 접근 방법
    • 신뢰성 있는 소프트웨어를 경제적인 비용으로 획득하기 위해 공학적 원리를  정립하고 이를 이용하는 방법
    • 소프트웨어 위기를 극복하기 위한 방한으로 연구된 학문
  • 소프트웨어 공학 원칙
    • 현대적인  프로그래밍 기술을 계속적으로 적용
    • 개발된 소프트웨어의 품질이 유지되도록 지속적 검증 수행
    • 소프트웨어 개발 관련 사항 및 결과에 대한 명확한 기록 유지
  • 공학적으로 잘된 소프트웨어 특성
    • 유지보수 용이
    • 높은 신뢰성
    • 충분한 테스팅
  • 소프트웨어 공학 관련 법칙
    • 브룩스의 법칙 - 지체되는 소프트웨어 개발 프로젝트에 인력을 추가하는 것은 개발을 늦출 뿐이다
    • 파레토 법칙 - 전체 결과의 80%가 전체 원인 20%에서 일어나는 현상
    • 롱테일 - 파레토 반대 법칙

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

(1) 소프트웨어 버전 관리 도구

1️⃣ 소프트웨어 버전 관리 도구 개념

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

2️⃣ 소프트웨어 버전 관리 도구 유형

버전 관리 도구 유형 설명 도구
공유 폴더 방식 매일 개발 완료 파일은 약속된 위치의 공유 폴더에 복사하는 방식 RCS
클라이언트/서버 방식 버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리되는 방식 CVS, SVN
분산 저장소 방식 로컬 저장소와 원격 저장소로 분리되어 관리되는 방식 Git

3️⃣ 소프트웨어 버전 관리 도구 종류

  • CVS, SVN, Git

4️⃣ 소프트웨어 버전 관리 도구 사용 시 유의사항

유의사항 설명
버전에 대한 쉬운 정보 접근성 형상 관리 지침에 의거 버전에 대한 정보를 언제든지 접근할 수 있어야 함
불필요한 사용자에 대한 접근 제어 제품 소프트웨어 개발자, 배포자 이외에 불필요한 사용자가 소스를 수정할 수 없도록 해야 함
동일 프로젝트에 대한 동시 사용성 동일한 프로젝트에 대해서 여러 개발자가 동시에 개발할 수 있어야함
빠른 오류 복구  에러 발생 시 최대한 빠른 시간 내에 복구가 가능해야 함

 

(2) 빌드 자동화 도구

1️⃣ 빌드 자동화 도구 개념

  • 빌드는 소프트웨어를 생성하고 테스트하고 검사하여 배포하기 위해 수행하는 행위의 집합
  • 빌드 자동화 도구는 제품 소프트웨어 실행파일 생성을 자동화하기 위해서 저장소에 있는 소스를 자동으로 읽어서 빌드한 후 테스트하고 검사하여 실행파일을 만드는 도구
  • 빌드 잗동화 도구는 지속적인 통합과도 연관

2️⃣ 빌드 자동화 프로세스 및 주요 구성요소

  • 빌드 자동화 프로세스
    • 컴파일 -> 패키징  -> 단위테스트  -> 정적분석  -> 리포팅  -> 배포  -> 최종빌드
  • 빌드 자동화 구성요소
    • CI - 빌드 프로세스를 관리하는 서버
    • SCM - 소스 코드 형상 관리 시스템
    • 빌드 도구 - 컴파일, 테스트, 정적분석 등을 통해 동작 가능한 소프트웨어 생성
    • 테스트 도구 - 작성된 테스트 코드에 따라 자동으로 테스트를 수행해주는 도구
    • 테스트 커버리지 도구 - 테스트 코드가 대상 소스코드에 대해 어느 정도 커버하는지 분석하는 도구
    • 인스팩션 도구 - 프로그램을 실행하지 않고 소스 코드 자체로 품질을 판단 할 수 있는 정적 분석 도구
  • 빌드 자동화 도구의 기능
    • 코드 컴파일 - 테스트를 포함한 소스 코드 컴파일
    • 컴포넌트 패키징 - 배포할 수 있는 컴포넌트를 묶는 작업
    • 파일 조작 - 파일과 디렉토리를 만들고, 복사 및 지우는 작업
    • 개발 테스트 실행 - 자동화된 테스트 진행
    • 버전 관리 도구 통합 - 버전 관리 시스템 지원
    • 문서 생성 - API 문서 생성
    • 배포 기능 - 테스트 서버 배포 지원
    • 코드 품질 분석 - 자동화된 검사 도구를 통한 코드 품질 분석
  • 빌드 자동화 도구 사례
  • 젠킨스
    • 자바 기반의 오픈소스
    • 서블릿 컨테이너 서버 기반으로 구동되는 시스템
    • CVS,SVN,Git 지원
    • 특징
      • 쉬운 설치, 친숙한 웹 GUI, 저장소 부하 감소, 최근 빌드 제공, 실시간 피드백, 분산 빌드, 3rd Party 플러그인을 통한 확장
  • 그래들
    • 그래들은 그루비와 유사한 도메인 언어를 채용
    • Java, C, 파이썬 지원