본문 바로가기

정보처리기사

[정보처리기사] 필기 노트 - 제품 소프트웨어 패키징

  • 애플리케이션 패키징
    • 애플리케이션 패키징이란?
      • 개발자가 아니라 사용자를 중심으로 진행되며 고객 편의성 중심으로 개발이 완료된 소프트웨어를 고객에게 전달하기 위한 형태로 패키징함
      • 사용자를 중심으로 진행되며 사용자의 실행 환경을 이해하고 다양한 환경에서 사용이 가능하도록 일반적인 배포 형태로 분류하여 패키징함
    • 소프트웨어 패키징 시 고려사항
      • 사용자의 시스템 환경
      • UI는 사용자가 직관적으로 확인할 수 있도록 시각적인 자료와 함께 제공하고 매뉴얼과 일치시켜 패키징
      • Managed Service 형태로 제공
    • 소프트웨어 모듈의 이해
      • 모듈이란 소프트웨어의 설계에서 기능 단위로 분해하고 추상화되어 재사용 및 공유 가능한 수준으로 만들어진 단위
      • 모듈화란 소프트웨어의 성능을 향상시키거나 시스템의 디버깅, 시험, 통합 및 수정을 용이하도록 하는 소프트웨어 설계 기법
    • 패키징 작업 순서
      • 패키징 주기는 2~4주 내로 지정하는데, 각 주기가 끝날 때마다 패키징을 수행
      • 패키징 작업 순서
        • 기능 식별 -> 모듈화 -> 빌드 진행 -> 사용자 환경 분석 -> 패키징 적용 시험 -> 패키징 변경 개선 -> 배포
  • 릴리즈 노트 작성
    • 릴리즈 노트란?
      • 조직의 최종 사용자인 고객과 릴리즈 정보를 공유하는 문서이며 소프트웨어 제품과 함께 배포
    • 릴리즈 노트 작성시 고려사항
      • 초기 버전 작성시 고려사항
        • 현재 시제로 작성
        • 정확하고 완전한 정보를 기반으로 개발팀에서 작성
        • 릴리즈 노트 작성 항목으로 머리말, 개요, 목적, 문제 요약, 재현 항목, 수정/개선, 사용자 영향도, SW지원 영향도, 노트 면책 조항, 연락 정보 등으로 구성
      • 추가 버전 작성시 고려사항
        • 소프트웨어의 테스트 과정에서 베타 버전이 출시되거나 긴급한 버그 수정, 업그레이드와 같은 자체 기능 향상, 사용자 요청 등의 특수한 상황이 발생하는 경우 릴리즈 노트를 추가로 작성
      • 릴리즈 노트 작성 순서
        • 모듈 식별 -> 릴리즈 정보 확인 -> 릴리즈 노트 개요 작성 -> 영향도 체크 -> 정식 릴리즈 노트 작성 -> 추가 개선 항목 식별
  • 디지털 저작권 관리 (dRM)
    • 디지털 저작권 관리 (DRM) 이란?
      • 디지털 환경에서 콘텐츠를 만들어낸 이의 지적 재산권 보호와 그 창작물을 사용하고자 하는 사용자의 의무와 권리를 보호하기 위한 기술
    • 디지털 저작권 관리의 구성 요소
      • 클리어링 하우스: 저작권에 대한 사용권한, 라이선스 발급, 보안 키 관리
      • 콘텐츠 제공자: 콘텐츠를 제공하는 저작권자
      • 패키저: 콘텐츠를 메타 데이터와 함께 배포 가능한 형태로 묶어 암호화하는 프로그램
      • 콘텐츠 분배자: 암호화된 콘텐츠를 제공하는 자
      • 콘텐츠 소비자: 콘텐츠를 구매해서 사용하는 주체자
      • DRM 컨트롤러: 배포된 콘텐츠의 이용 권한 통제
      • 보안 켄테이너: 콘텐츠 원본을 안전하게 유통
    • 디지털 저작권 관리의 기술요소
      • 암호화(Encryption): 콘텐츠 및 라이선스를 암호화하고 전자 서명을 할 수 있는 기술
      • 키 관리(Key Management): 콘텐츠를 암호화한 키에 대한 저장 및 분배 기술
      • 암호화 파일 생성(Packager): 콘텐츠를 암호화된 컨텐츠로 생성하기 위한 기술
      • 식별 기술(Identification): 콘텐츠에 대한 식별 체계 표현 기술
      • 저작권 표현(Right Expression): 라이선스의 내용 표현 기술
      • 정책 관리(Policy Management): 라이선스 발급 및 사용에 대한 정책 표현 및 관리 기술
      • 크랙 방지(Tamper Resistance): 크랙에 의한 콘텐츠 사용 방지 기술
      • 인증(Authentication): 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술
  • 소프트웨어 설치 매뉴얼 작성
    • 소프트웨어 설치 매뉴얼이란
      • 제품 소프트웨어 매뉴얼은 설치 매뉴얼과 사용자 매뉴얼로 나뉨
      • 개발 초기부터 적용된 기준이나 패키징 이후 설치 및 사용자 측면의 주요 내용 등을 문서로 기록한 것
      • 사용자가 소프트웨어 설치하는 과정에서 기능 및 방법 등을 기록한 설명서와 안내서를 의미함
    • 설치 매뉴얼의 기본 사항
      • 개발자 중심이 아니라 사용자 중심으로 작성
      • 설치 시작부터 마칠 때까지의 모든 과정을 순차적으로 작성
      • 설치 매뉴얼에는 목차 및 개요, 서문, 기본 사항 등이 기본적으로 포함되어야 함
    • 소프트웨어 설치 매뉴얼의 작성 항목
      • 설치 매뉴얼에는 기본적인 개요 및 서문 이외에도 상세한 설치 항목에 대해서 순서대로 설명하는 것이 중요
      • 목차 및 개요: 매뉴얼 전체 내용을 순서대로 요약, 설치 매뉴얼의 주요 특징을 정리
      • 서문: 문서 이력 정보, 설치 매뉴얼의 주석, 설치 도구의 구성 등을 기술
      • 기본 사항: 소프트웨어 설치와 관련된 항목으로 소프트웨어 개요, 설치 관련 파일, 설치 아이콘, 프로그램 삭제, 관련 추가 정보 등의 구성 요소가 있음
    • 소프트웨어 설치 매뉴얼 작성 방법
      • 설치 화면을 캡쳐해서 순서대로 설명하여 사용자가 쉽게 설치할 수 있도록 구성
      • 설치 화면 및 UI, 설치 이상 메시지 설명, 설치 완료 및 결과, FAQ, 설치 시 점검 사항, 네트워크 환경 및 보안, 고객 지원 방법, 준수 정보 및 제한 보증 등을 포함
    • 소프트웨어 설치 매뉴얼 작성 순서
      • 기능 식별 -> UI분류 -> 설치 파일 / 백업 파일 확인 -> Uninstall 절차 확인 -> 이상 case 확인 -> 최종 매뉴얼 적용
  • 소프트웨어 사용자 매뉴얼 작성
    • 소프트웨어 사용자 매뉴얼이란?
      • 사용자 관점으로 진행되며 소프트웨어를 사용하는 과정에서 필요한 내용을 문서로 기록한 설명서와 안내서임
      • 소프트웨어 사용에 필요한 절차, 설치 환경 등의 내용이 모두 포함되도록 작성
    • 소프트웨어 사용자 매뉴얼 작성 항목
      • 목차 및 개요: 사용자 매뉴얼 전체의 내용을 순서대로 요약, 소프트웨어의 주요 특징에 대해 정리
      • 서문: 문서 이력 정보, 사용자 매뉴얼 주석
      • 기록 보관 내용: 소프트웨어를 사용하면서 필요한 기술 지원이나 추가 정보를 얻기 위한 소프트웨어 등록 정보 (소프트웨어 명칭, 모델명, 문서번호, 제품번호, 구입 날짜 등)를 기술
    • 기본 사항
      • 소프트웨어와 관련되어 기본적으로 설명될 항목 기술
      • 소프트웨어 개요, 소프트웨어 사용, 소프트웨어 관리, 모델 및 버전별 특징, 기능 및 인터페이스의 특징, 소프트웨어 구동 환경 등을 포함
    • 사용자 매뉴얼 작성 방법
      • 사용자가 사용 방법을 이해하기 쉽도록 다양한 상황별로 나누어 순서대로 상세히 설명
      • 사용자 화면 및 UI, 주요 기능 분류, 응용 프로그램 및 설정, 장치 연동, 네트워크 환경, 프로필 설명
      • 고객지원 방법, 준수 정보 및 제한 보증 등을 포함
    • 소프트웨어 사용자 매뉴얼 순서
      • 기능 식별 -> 사용자 화면 분류 -> 사용자 환경 파일 확인 -> 초기화 절차 확인 -> 이상 케이스 확인 -> 최종 매뉴얼 적용
  • 소프트웨어 버전 등록
    • 소프트웨어 버전 관리
      • 버전 관리의 목적은 기본적으로 작성된 패키지의 변경 내용을 관리
      • 버전 관리는 소프트웨어 개발의 전체 비용을 줄이고, 개발 과정의 여러 방해 요인이 최소화 되도록 보증하는 것을 목적으로 함
      • 버전 관리는 형상 관리라고도 하며, 소프트웨어와 관련된 모든 변경사항을 관리
    • 소프트웨어 버전 관리의 중요성
      • 버전 관리가 잘 되지 않으면 소프트웨어에 대한 무절제한 변경을 방지할 수 없으며 버전 관리가 잘되면 소프트웨어에서 발견된 오류나 수정 사항을 추적할 수 있음
    • 버전 관리 구조
      • 형상 식별: 형상 항목을 선정하여 형상 식별자를 부여하고, 선정된 형상 항목의 기능적, 물리적 형상 특성을 식별하여 기술하고 문서화 하는 활동
      • 형상 제어: 형상 항목의 버전과 변경에 대한 판단을 내리는 것
      • 형상 상태 보고: 형상 상태에 대한 필요한 정보를 수집하고 기록 및 유지하는 것
      • 형상 감사: 형상 항목이 요구사항에 맞도록 변경 되었는지 확인하는 것이며 기준선의 무결성을 보장하기 위해 형상 관리 활동의 수행을 확인하는 정기적인 검토 활동
    • 소프트웨어 버전 등록 과정
      • 가져오기(Import) -> 인출(Check Out) -> 예치(Commit) -> 동기화(Update) -> 차이(Diff)
  • 소프트웨어 버전 관리 도구
    • 방식에 따른 버전 관리 도구
      • 공유 폴더 방식
        • 버전 관리 자료가 로컬 컴퓨터의 공유 폴더에 저장되어 관리되는 방식
        • 매일 개발 완료된 파일은 지정된 위치의 공유 폴더에 복사
      • 클라이언트 / 서버 방식
        • 버전 관리 자료가 중앙 시스템인 서버에 저장되어 관리되는 방식
        • 개발자들의 현재 작업 내용과 이전 작업 내용을 저장하기 쉬움
        • 모든 버전 관리는 서버에서 수행
        • 서버에 문제가 생기면 서버가 복구되기 전까지 다른 개발자의 협업 및 버전 관리 작업은 중단됨
      • 분산 저장소 방식
        • 버전 관리 자료가 하나의 원격 저장소와 분산된 개발자 PC의 로컬 저장소에 함께 저장되어 관리되는 방식
        • 로컬 저장소와 원격 저장소의 구조로 구성
        • 로컬 저장소에서 버전 관리가 가능하므로 원격 저장소에 문제가 생겨도 로컬 저장소의 자료를  이용하여 작업할 수 있음
    • 구분에 따른 버전 관리 도구
      • 저장소 구분: 로컬형, 중앙 집권형, 분산형으로 나뉨
      • 소스 공개 유형: Open Source 툴과 상용 버전 관리 툴로 나뉨
    • 현업에서 쓰이는 버전 관리 도구
      • CVS
        • 무료 서버-클라이언트 버전 관리 시스템
        • 파일 전체를 저장하는 것이 아니라 변경 사항만을 저장함으로써 용량을 적게 차지하지만 속도가 상대적으로 느림
      • SVN
        • CVS의 단점을 보완하기 위해 만들었고 중앙 관리만을 지원하는 버전 관리 툴
        • 클라이언트 / 서버 구조로 서버에는 최신 버전의 파일들과 변경 내역을 관리
        • 다른 사용자의 커밋과 엉키지 않으며, 커밋 실패시 롤백 기능을 지원
        • 안정성에 있어서 CVS보다 상대적으로 떨어짐
      • Git
        • 분산형 버전 관리 시스템으로 로컬 저장소와 원격 저장소로 구성
        • 로컬 저장소는 개발자들이 실제 개발을 진행하는 곳으로 버전 관리가 수행됨
        • 원격 저장소는 협업을 위해 버전을 공동 관리하는 곳으로 다른 개발자의 변경 내용을 가져올 때 사용
        • 버전 관리가 로컬 저장소에서 진행되므로 처리 속도가 빠름
        • 중양 서버에 의존하지 않으므로 원격 저장소나 네트워크에 문제가 있어도 작업이 가능
  • 빌드 자동화 도구
    • 빌드 자동화 도구란?
      • 빌드란 소스 코드 파일들을 컴파일한 후 여러 개의 모듈을 묶어 실행 파일로 만드는 과정
      • 빌드 자동화 도구는 빌드를 포함하여 테스트 및 배포를 자동화하는 도구
    • 빌드 자동화 도구의 종류
      • Maven
        • 프로젝트에 필요한 모든 종속성을 리스트의 형태로 관리할 수 있도록 하는 방식
        • XML과 Repository를 가져올 수 있으며 jar와 class path를 선언만 하면 직접 다운로드 할 필요 없이 Repository에서 자동으로 필요한 라이브러리 파일을 불러올 수 있음
        • 라이브러리가 서로 종속할 경우 XML이 복잡해짐
      • Gradle
        • 처음 빌드 관리 툴을 사용할 때 많이 사용
        • JVM 기반의 빌드 도구로 maven의 단점을 보완한 최신 툴이며, 계속해서 많은 버전 업그레이드를 진행
        • 실행할 처리 명령들을 모아 태스크로 만든 후 태스크 단위로 실행
        • 멀티 프로젝트에 매우 적합하며, 빌드 속도는 다양한 시나리오 상에서 10~100배 정도 빠름
        • 이전에 사용했던 태스크를 재아요하거나 다른 시스템의 태스크를 공유할 수 있는 빌드 캐시 기능을 지원하므로 빌드의 속도를 향상 시킬 수 있음