정보처리기사 실기 요점정리

12장. 제품 소프트웨어 패키징

▶ 수험서 : 2021 시나공 정보처리기사 실기

※ 시나공 교재를 토대로 작성하였으며 [ ] 안에 번호는 교재의 섹션입니다.

※ 부족한 내용은 구글링 및 수제비 카페를 참고하여 작성하였습니다.

 

 

 

[191] 소프트웨어 패키징

- 소프트웨어 패키징 : 모듈별로 생성한 실행 파일들을 묶어 배포용 설치 파일을 만드는 것, 사용자 중심으로 진행


- 패키징 작업 순서 : 기능 식별 → 모듈화 → 빌드 진행 → 사용자 환경 분석 → 패키징 및 적용 시험 → 패키징 변경 개선 → 배포
- 빌드 : 소스 코드 파일들을 컴퓨터에서 실행할 수 있는 제품 소프트웨어로 변환하는 과정 또는 결과물
- 배포용 파일 확장자 : msi, apk, dmg, jar

 


[192] 릴리즈 노트 작성

- 릴리즈 노트 : 소프트웨어 개발 과정에서 정리된 릴리즈 정보를 고객과 공유하기 위한 문서
- 작성 항목 : Header, 개요, 목적, 문제 요약, 재현 항목, 수정/개선 내용, 사용자 영향도, SW 지원 영향도, 노트, 면책 조항, 연락처
  * Header 작성 항목 : 릴리즈 노트 이름, 소프트웨어 이름, 릴리즈 버전, 릴리즈 날짜, 릴리즈 노트 날짜, 릴리즈 노트 버전 등

 

 

[193] 디지털 저작권 관리 DRM

- 저작권 : 창작자가 가지는 배타적 독점적 권리로 타인의 침해를 받지 않을 고유한 권한이다.
- 디지털 저작권 관리 : 저작권자가 배포한 디지털 콘텐츠가 의도한 용도로만 사용되도록 하는 디지털 콘텐츠 관리 및 보호 기술이다.
- 디지털 저작권 관리의 기술 요소 : 암호화, 키 관리, 암호화 파일 생성, 식별 기술, 저작권 표현, 정책 관리, 크랙 방지, 인증


- 디지털 저작권 관리의 구성 요소


  * 클리어링 하우스 : 저작권에 대한 사용 권한, 라이선스 발급, 암호화된 키 관리, 사용량에 따른 결제 관리 등을 수행하는 곳
  * 콘텐츠 제공자 : 콘텐츠를 제공하는 저작권자
  * 패키저 : 콘텐츠를 메타 데이터와 함께 배포 가능한 형태로 묶어 암호화하는 프로그램
  * 콘텐츠 분배자 : 암호화된 콘텐츠를 유통하는 곳이나 사람
  * 콘텐츠 소비자 : 콘텐츠를 구매해서 사용하는 주체
  * DRM컨트롤러 : 배포된 콘텐츠의 이용 권한을 통제하는 프로그램
  * 보안 컨테이너 : 콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안 장치

 

 

[194] 소프트웨어 설치 매뉴얼 작성

- 소프트웨어 설치 매뉴얼 : 개발 초기부터 적용된 기준이나 사용자가 소프트웨어를 설치하는 과정에 필요한 내용을 기록한 설명서
                                        사용자 기준으로 작성, 설치 전 과정을 빠짐없이 순서대로 설명, 오류 메시지 및 예외 상황을 분류해서 설명

 


[195] 소프트웨어 사용자 매뉴얼 작성

- 소프트웨어 사용자 매뉴얼 : 사용자가 소프트웨어를 사용하는 과정에서 필요한 내용을 문서로 기록한 설명서와 안내서
                                            컴포넌트 단위로 작성, 컴포넌트 명세서와 컴포넌트 구현 설계서를 토대로 작성
  * 컴포넌트 : 독립적인 업무 또는 기능을 수행하는 단위이며 실행 코드 기반으로 작성된 모듈
  * 컴포넌트 명세서 : 컴포넌트의 개요 및 내부 클래스의 동작, 외부와의 통신 명세 등을 정의한 문서
  * 컴포넌트 설계서 : 컴포넌트 구현에 필요한 컴포넌트 구조도, 컴포넌트 목록, 컴포넌트 명세, 인터페이스 명세로 구성된 설계서

 

 

[196] 소프트웨어 버전 등록

- 형상 관리 : 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동


- 형상 관리 기능
  * 형상 식별 : 형상 관리 대상에 이름과 관리 번호를 부여하고 계층 구조로 구분하여 수정 및 추적이 용이하도록 하는 작업
  * 버전 제어 : 업그레이드나 유지보수 과정에서 생성된 형상 항목을 관리하고 이를 위해 특정 절차와 도구를 결합시키는 작업
  * 형상 통제 : 식별된 형상 항목에 대한 변경 요구를 검토하면 현재의 기준선이 잘 반영될 수 있도록 조정하는 작업
  * 형상 감사 : 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업
  * 형상 기록 : 형상의 식별, 통제, 감사 작업의 결과를 기록, 관리하고 보고서를 작성하는 작업


- 저장소(Repository) : 최신 버전의 파일들과 변경 내역에 대한 정보들이 저장되어 있는 곳
- 가져오기(Import) : 버전 관리가 되고 있지 않은 아무것도 없는 저장소에 처음으로 파일을 복사함
- 체크아웃(Check-Out) : 프로그램을 수정하기 위해 저장소에서 파일을 받아옴
- 체크잇(Check-In) : 체크아웃 한 파일의 수정을 완료한 후 저장소의 파일을 새로운 버전으로 갱신함
- 커밋(Commit) : 체크인을 수행할 때 이전에 갱신된 내용이 있는 경우에는 충돌을 알리고 diff 도구를 이용해 수정한 후 갱신을 완료함
  * diff 도구 : 비교 대상이 되는 파일들의 소스 코드를 비교하여 서로 다른 부분을 찾아 표시해주는 도구
- 동기화(Update) : 저장소에 있는 최신 버전으로 자신의 작업 공간을 동기화함


- 소프트웨어 버전 등록 과정 : 가져오기(Import) → 인출(Check-out) → 예치(Commit) → 동기화(Update) → 차이(Diff)

 


[197] 소프트웨어 버전 관리 도구

- 공유 폴더 방식 : 버전 관리 자료가 지역 컴퓨터의 공유 폴더에 저장되어 관리 되는 방식

  * 종류 : SCCS, RCS, PVCS, QVCS

 

- 클라이언트/서버 방식 : 버전 관리 자료가 서버에 저장되어 관리 되는 방식
  * 종류 : CVS, SVN(Subversion), SVSNT, Clear Case, CMVC, Perforce
  * CVS : 공동 개발을 편리하게 작업할 수 있도록 각종 소스의 버전 관리를 도와주는 시스템


- 분산 저장소 방식 : 버전 관리 자료가 하나의 원격 저장소와 분산된 개발자 PC의 지역 저장소에 함께 저장되어 관리되는 방식
  * 종류 : Git, GNU arch, DCVS, Bazzar, Mercurial, TeamWare, Bitkeeper, Plastic SCM


Subversion(SVN) : CVS를 개선한 것으로 아파치 소프트웨어 재단에서 발표, 서버에는 최신 버전의 파일들과 변경 사항 관리, 오픈 소스
- add : 새로운 파일이나 디렉터리를 버전 관리 대상으로 등록
- commit : 버전 관리 대상으로 등록된 클라이언트의 소스파일을 서버의 소스파일에 적용함
- update : 서버의 최신 커밋 이력을 클라이언트의 소스 파일에 적용함
- checkout : 버전 관리 정보와 소스 파일을 서버에서 클라이언트로 받아옴
- lock/unlock : 서버의 소스 파일이나 디렉터리를 잠그거나 해제
- import : 아무것도 없는 서버의 저장소에 맨 처음 소스 파일을 저장하는 명령어
- export : 버전 관리에 대한 정보를 제외한 순수한 소스 파일만을 서버에서 받아옴
- info : 지정한 파일에 대한 위치나 마지막 수정 일자 등에 대한 정보를 표시함
- diff : 지정된 파일이나 경로에 대해 이전 리비전과의 차이를 표시함
- merge : 다른 디렉터리에서 작업된 버전 관리 내역을 기본 개발 작업과 병합함


Git : 지역 저장소와 원격 저장소가 존재, 지역 저장소에서 버전 관리 처리, 원격 저장소나 네트워크에 문제가 있어도 작업 가능
- add : 작업 내역을 지역 저장소에 저장하기 위해 스테이징 영역에 추가함 (--all 옵션 : 모든 파일 추가)
- commit : 작업 내역을 지역 저장소에 저장함
- branch : 새로운 브랜치를 생성한, 최초로 커밋을 하면 마스터 브랜치가 생성됨 (-d 옵션 : 브랜치 삭제)
- checkout : HEAD포일터를 지정한 브랜치로 이동
- merge : 지정한 브랜치의 변경 내역을 현재 HEAD 포인터가 가리키는 브랜치에 반영함으로써 두 브랜치를 병합함
- init : 지역 저장소를 생성함
- remote add : 원격 저장소에 연결함
- push : 로컬 저장소의 변경 내역을 원격 저장소에 반영함
- fetch : 원격 저장소의 변경 이력만을 지역 저장소로 가져와 반영함
- clone : 원격 저장소의 전체 내용을 지역 저장소로 복제함
- fork : 지정한 원격 저장소의 내용을 자신의 원격 저장소로 복제함

 

 

[198] Git 명령어 활용

 

1. 계정 설정
    $ git config --global user.name “honggildong” : 이름 등록
    $ git config --global user.email “hong@korea.co.kr” : 이메일 등록


2. 지역 저장소 만들기
    $ cd hong : hong 폴더로 이동
    $ git init : 현재 위치에 지역 저장소 생성


3. 변경 내역을 지역 저장소에 저장하기
    $ git add --all : 변경 내용이 있는 파일을 모두 스테이징 영역에 추가
    $ git commit –m “커밋 메시지1” : 작업 내역을 지역 저장소에 저장하면서 메시지를 부여


4. 병합 기능 사용하기
    $ git branch new_test : 새로운 브랜치 생성
    $ git checkout new_test : 포인터를 해당 브랜치로 이동
    $ git add Test02.java : 파일을 스테이징 영역에 추가
    $ git commit –m “커밋 메시지2” : new_test 브랜치에서 커밋 수행
    $ git checkout master : 포인터를 마스터 브랜치로 이동
    $ git merge new_test : new_test 브랜치의 커밋 내역을 마스터 브랜치와 병합
    $ git branch --d new_test : new_test 브랜치 제거


5. 지역 저장소의 버전 관리 내역을 원격 저장소에 저장하기
    $ git remote add abc http://github.com/hong/test.git : 원격 저장소의 위치의 별칭을 abc로 지정
    $ git push abc master : 마스터 브랜치의 변경 내역을 원격 저장소 abc에 저장

 

 

[199] 빌드 자동화 도구

- 빌드 자동화 도구 : 빌드를 포함하여 테스트 및 배포를 자동화하는 도구 - Ant, Make, Maven, Gradle, Jenkins


- Jenkins : Java 기반의 오픈 소스 형태로, 서블릿 컨테이너에서 실행되는 서버 기반 도구, 가장 많이 사용, 친숙한 Web GUI 제공
  * 서블릿 컨테이너 : 클라이언트 요청을 처리하기 위해 서버 측에서 실행되는 작은 프로그램인 서블릿을 실행하고 생명주기 관리


- Gradle : Groovy를 기반으로 한 오픈 소스 형태의 자동화 도구, 안드로이드 앱 개발 환경에서 사용, DSL을 스크립트 언어로 사용
  * Groovy : 자바에 Python, Ruby, Smalltalk 등의 장점을 결합한 동적 객체 지향 프로그래밍 언어
  * DSL : 영역이나 용도에 맞게 기능을 구성한 언어, 웹페이지 영역에 특화되어 사용하는 HTML과 같이 특정한 도메인