-
[정보처리기사] 2장 소프트웨어 개발 : 3장. 소프트웨어 패키징정보처리기사 2022. 2. 28. 19:45728x90반응형
1. 소프트웨어 패키징
2. 릴리즈 노트 작성
3. 디지털 저작권 관리(DRM) ***
4. 소프트웨어 설치 매뉴얼 작성
5. 소프트웨어 사용자 매뉴얼 작성
6. 소프트웨어 버전 등록
7. 소프트웨어 버전 관리 도구 ***
8. 빌드 자동화 도구1. 소프트웨어 패키징
소프트웨어 패키징의 개요
- 모듈별로 생성한 실행 파일들을 묶어 배포용 설치 파일을 만드는 것
- 개발자가 아닌 사용자 중심으로 진행
- 소스 코드는 향후 관리를 고려하여 모듈화하여 패키징
- 사용자가 소프트웨어를 사용하게 될 환경을 이해하여, 다양한 환경에서 소프트웨어를 손쉽게 사용할 수 있도록 일반적인 배포 형태로 패키징
- 사용자 중심으로 진행되는 작업이므로 사용자의 편의성 및 실행 환경을 우선적으로 고려해야 함
패키징 시 고려사항
- 사용자의 시스템 환경, 즉 운영체제, CPU, 메모리 등에 필요한 최소 환경을 정의
- UI는 사용자가 눈으로 확인할 수 있도록 시작적인 자료와 함께 제공하고 매뉴얼과 일치시켜 패키징
- 소프트웨어는 단순히 패키징하여 배포하는 것으로 끝나는 것이 아니라 하드웨어와 함께 관리될 수 있도록 Managed Service 형태로 제공하는 것이 좋음
패키징 작업 순서
- 패키징 주기는 짧은 개발 주기를 반복하는 애자일 기법인 경우에는 보통 2~4주 내에서 지정하며, 각 주기가 끝날 때마다 패키징을 수행
- 주기별로 패키징한 결과물은 테스트 서버에 배포
- 온라인 배포: 별도로 마련한 운영 서버에 설치 및 사용 매뉴얼과 함께 배포 파일을 등록하여 고객이 직접 다운받아 사용할 수 있도록 함
- 오프라인 배포: CD-ROM이나 DVD, USB 등에 설치 및 사용 매뉴얼과 함께 배포 파일을 담음
1) 기능 식별: 작성된 코드의 기능을 확인
2) 모듈화: 확인된 기능 단위로 코드들을 분류
3) 빌드 진행: 모듈 단위별로 실행 파일을 만듦
4) 사용자 환경 분석: 웹, 모바일, PC 등 소프트웨어가 사용될 환경이나 운영체제, CPU, RAM 등의 최소 운영 환경을 정의
5) 패키징 및 적용 시험: 빌드된 실행 파일들을 정의된 환경에 맞게 배포용 파일 형식으로 패키징하고 정의된 환경과 동일한 환경에서 패키징 결과를 테스팅 한 후 소프트웨어에 대한 불편사항을 사용자 입장에서 확인
6) 패키징 변경 개선: 확인된 불편 사항을 반영하기 위한 패키징의 변경 및 개선 진행
7) 배포: 배포 수행 시 오류가 발생하면 해당 개발자에게 전달하여 수정 요청
2. 릴리즈 노트 작성
릴리즈 노트의 개요
- 개발 과정에서 정리된 릴리즈 정보를 소프트웨어의 최종 사용자인 고객과 공유하기 위한 문서
- 테스트 진행 방법에 대한 결과와 소프트웨어 사양에 대한 개발팀의 정확한 준수 여부를 확인할 수 있음
- 소프트웨어에 포함된 전체 기능, 서비스의 내용, 개선 사항 등을 사용자와 공유할 수 있음
- 소프트웨어 버전 관리나 릴리즈 정보를 체계적으로 관리할 수 있음
- 소프트웨어 초기 배포 시 또는 출시 후 개선 사항을 적용한 추가 배포 시에 제공
- 릴리즈 노트에 정리된 정보들은 철저한 테스트를 거친 것이며, 개발팀에서 제공하는 소프트웨어 사양에 대한 최종 승인을 얻은 후 문서화 되어 제공됨
릴리즈 노트 초기 버전 작성 시 고려사항
- 정확하고 완전한 정보를 바탕으로 개발팀에서 직접 현재 시제로 작성해야 함
- 신규 소스, 빌드 등의 이력이 정확하게 관리되어 변경 또는 개선된 항목에 대한 이력 정보들도 작성되어야 함
- 머릿말, 개요, 목적, 문제 요약, 재현 항목, 수정/개선 내용, 사용자 영향도, SW 지원 영향도, 노트, 면책 조항, 연락처
릴리즈 노트 추가 버전 작성 시 고려사항
- 소프트웨어 테스트 과정에서 베타 버전이 출시되거나 긴급한 버그 수정, 업그레이드와 같은 자체 기능 향상, 사용자 요청 등의 특수한 상황이 발생하는 경우 릴리즈 노트를 추가로 작성
- 중대한 오류가 발생하여 긴급하게 수정하는 경우에는 릴리즈 버전을 출시하고 버그 번호를 포함한 모든 수정된 내용을 담아 릴리즈 노트를 작성
- 소프트웨어에 대한 기능 업그레이드를 완료한 경우에는 릴리즈 버전을 출시하고 릴리즈 노트를 작성
- 사용자로부터 접수된 요구사항에 의해 추가나 수정된 경우에는 자체 기능 향상과는 다른 별도의 릴리즈 버전으로 출시하고 릴리즈 노트를 작성
릴리즈 노트 작성 순서
1) 모듈 식별: 모듈별 빌드 수행 후 릴리즈 노트에 작성될 내용들을 확인
2) 릴리즈 정보 확인; 릴리즈 노트 이름, 소프트웨어 이름, 릴리즈 버전, 릴리즈 날짜, 노트 날짜, 노트 버전 등을 확인
3) 릴리즈 노트 개요 작성: 소프트웨어 및 변경사항 전체에 대한 간략한 내용 작성
4) 영향도 체크: 버그나 이슈 관련 내용 또는 해당 릴리즈 버전에서의 기능 변화가 다른 소프트웨어나 기능을 사용하는데 미칠 수 있는 영향에 대해 기술
5) 정식 릴리즈 노트 작성: 헤더, 개요, 영향도 체크 항목을 포함하여 정식 릴리즈 노트에 작성될 기본 사항들을 작성
6) 추가 개선 항목 식별: 추가 버전 릴리즈 노트 작성이 필요한 경우 추가 릴리즈 노트를 작성
3. 디지털 저작권 관리(DRM) ***
저작권의 개요
- 소설, 시, 논문, 강연, 연술, 음악, 연극, 무용, 회화, 서예, 건축물, 사진, 영상, 지도, 도표, 컴퓨터 프로그램 저작물 등에 대하여 창작자가 가지는 배타적 독점적 권리로 타인의 침해를 받지 않을 고유한 권리
디지털 저작권 관리(DRM)의 개요
- 저작권자가 배포한 디지털 콘텐츠가 저작권자가 의도한 용도로만 사용되도록 디지털 콘텐츠의 생성, 유통, 이용까지의 전 과정에 걸쳐 사용되는 디지털 콘텐츠 관리 및 보호 기술
- 원본 콘텐츠가 아날로그인 경우에는 디지털로 변환한 후 패키저에 의해 DRM 패키징을 수행
- 콘텐츠의 크기에 따라 음원이나 문서와 같이 크기가 작은 경우에는 사용자가 콘텐츠를 요청하는 시점에서 실시간으로 패키징을 수행하고, 크기가 큰 경우에는 미리 패키징을 수행한 후 배포
- 패키징을 수행하면 콘텐츠에는 암호화된 저작권자의 전자서명이 포함되고 저작권자가 설정한 라이선스 정보가 클리어링 하우스에 등록됨
- 사용자가 콘텐츠를 사용하기 위해서는 클리어링 하우스에 등록된 라이선스 정보를 통해 사용자 인증과 콘텐츠 사용 권한 소유 여부를 확인받아야 함
- 종량제 방식을 적용한 소프트웨어의 경우 클리어링 하우스를 통해 서비스의 실제 사용량을 측정하여 이용한 만큼의 요금을 부과
디지털 저작권 관리의 흐름도
- 클리어링 하우스: 저작권에 대한 사용 권한, 라이선스 발급, 사용량에 따른 결제 관리를 수행하는 곳
- 콘텐츠 제공자: 콘텐츠를 제공하는 저작권자
- 패키저: 콘텐츠를 메타 데이터와 함께 배포 가능한 현태로 묶어 암호화하는 프로그램
- 콘텐츠 분배자: 암호화된 콘텐츠를 유통하는 곳이나 사람
- 콘텐츠 소비자: 콘텐츠를 구매해서 사용하는 주체
- DRM 컨트롤러: 배포된 콘텐츠의 이용 권한을 통제하는 프로그램
- 보안 컨테이너: 콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안 장치
디지털 저작권 관리의 기술 요소
- 암호화, 키 관리, 암호화 파일 생성, 식별 기술, 저작권 표현, 정책 관리, 크랙 방지, 인증
4. 소프트웨어 설치 매뉴얼 작성
소프트웨어 설치 매뉴얼의 개요
- 개발 초기에서부터 적용된 기준이나 사용자가 소프트웨어를 설치하는 과정에서 필요한 내용을 기록한 설명서와 안내서
- 사용자 기준으로 작성
- 설치 시작부터 완료할 때까지의 전 과정을 빠짐없이 순서대로 설명
- 설치 과정에서 표시될 수 있는 오류 메시지 및 예외 상황에 관한 내용을 별도로 분류하여 설명
- 소프트웨어 설치 매뉴얼에는 목차 및 개요, 서문, 기본 사항 등이 기본적으로 포함되어야 함
1) 목차
- 전체 설치 과정을 순서대로 요약한 후 관련 내용의 시작 페이지를 함께 기술
2) 개요
- 설치 매뉴얼의 주요 특징, 구성과 설치 방법, 순서 등의 내용 기술
3) 서문
- 문서 이력
- 설치 매뉴얼의 주석: 주의 사항, 참고 사항
- 설치 도구의 구성: 설치 관련 파일, 프로그램 실행 파일, log 폴더 설명
- 설치 환경 체크 항목: 사용자 환경, 응용 프로그램, 업그레이드 버전, 백업 폴더 확인
4) 기본 사항
- 소프트웨어의 개요, 설치 관련 파일, 설치 아이콘, 프로그램 삭제, 관련 추가 정보
5) 설치 매뉴얼 작성 방법
- 사용자가 설치 과정을 이해하기 쉽도록 설치 화면을 누락 없이 캡처하고 순서대로 상세히 설명
- 설치 화면 및 UI, 설치 이상 메시지 설명, 설치 완료 및 결과, FAQ, 설치 시 점검 사항, Network 환경 및 보안, 고객 지원 방법, 준수 정보 및 제한 보증
6) 설치 매뉴얼 작성 순서
5. 소프트웨어 사용자 매뉴얼 작성
소프트웨어 사용자 매뉴얼의 개요
- 사용자가 소프트웨어를 사용하는 과정에서 필요한 내용을 문서로 기록한 설명서와 안내서
- 사용자가 소프트웨어 사용에 필요한 절차, 환경 등에 대한 제한 사항이 모두 포함되도록 작성
- 소프트웨어 배포 후 발생될 수 있는 오류에 대한 패치나 기능에 대한 업그레이드를 위해 매뉴얼의 버전을 관리
- 개별적으로 동작이 가능한 컴포넌트 단위로 매뉴얼 작성
- 컴포넌트 명세서와 컴포넌트 구현 설계서를 토대로 작성
1) 목차
- 매뉴얼 전체 내용을 순서대로 요약한 후 관련 내용의 시작페이지를 함께 기술
2) 개요
- 소프트웨어의 주요 특징, 매뉴얼의 구성과 실행 방법, 사용법, 항목별 점검 기준, 항목별 설정 방법 등에 대한 내용을 기술
3) 서문
- 문서 이력, 사용자 매뉴얼의 주석, 기록 보관을 위해 필요한 내용 기술
4) 기본 사항
- 소프트웨어 개요, 소프트웨어 사용 환경, 소프트웨어 관리, 모델,버전별 특징, 기능,인터페이스의 특징, 소프트웨어 구동 환경
5) 사용자 매뉴얼 작성 방법
- 사용자가 사용 방법을 이해하기 쉽도록 상황별로 누락 없이 캡처하여 순서대로 상세히 설명
- 사용자 화면 및 UI, 주요 기능 및 분류, 응용 프로그램 및 설정, 장치 연동, Network 환경, Profile 안내, 고객 지원 방법, 준수 정보 및 제한 보증
6) 사용자 매뉴얼 작성 순서
6. 소프트웨어 버전 등록
소프트웨어 패키징의 형상 관리
- 소프트웨어의 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동
- 소프트웨어 변경의 원인을 알아내고 제어하며, 적절히 변경되고 있는지 확인하여 해당 담당자에게 통보
- 소프트웨어 개발의 전 단계에 적용되는 활동이며, 유지보수 단계에서도 수행됨
- 소프트웨어 개발의 전체 비용을 줄이고, 개발 과정의 여러 방해 요인이 최소화되도록 보증하는 것을 목적으로 함
형상 관리의 중요성
- 지속적인 소프트웨어 변경 사항을 체계적으로 추적하고 통제할 수 있음
- 제품 소프트웨어에 대한 무절제한 변경 방지
- 제품 소프트웨어에서 발견된 버그나 수정 사항을 추적할 수 있음
- 소프트웨어는 형태가 없어 가시성이 결핍되므로 진행 정도를 확인하기 위한 기준으로 사용될 수 있음
형상 관리 기능
- 형상 식별: 형상 관리 대상에 이름과 관리 번호를 부여하고, 트리 구조로 구분하여 수정 및 추적이 용이하도록 하는 작업
- 버전 제어: 소프트웨어 업그레이드나 유지 보수 과정에서 생성된 다른 버전의 형상 항목을 관리하고, 이를 위해 특정 절차와 도구를 결합시키는 작업
- 형상 통제: 식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준선이 잘 반영될 수 있도록 조정하는 작업
- 형상 감사: 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업
- 형상 기록: 형상의 식별, 통제, 감사 작업의 결과를 기록, 관리하고 보고서를 작성하는 작업
소프트웨어 버전 등록 관련 주요 용어
- 저장소: 최신 버전의 파일들과 변경 내역에 대한 정보들이 저장되어 있는 곳
- 가져오기: 버전 관리가 되고 있지 않은 아무것도 없는 저장소에 처음으로 파일을 복사
- 체크아웃: 프로그램을 수정하기 위해 저장소에서 파일을 받아오고, 소스 파일과 함께 버전 관리를 위한 파일들도 받아옴
- 체크인: 체크아웃 한 파일의 수정을 완료한 후 저장소의 파일을 새로운 버전으로 갱신
- 커밋: 체크인을 수행할 때 이전에 갱신된 내용이 있는 경우에는 충돌을 알리고 diff 도구를 이용해 수정한 후 갱신을 완료
- 동기화: 저장소에 있는 최신 버전으로 자신의 작업 공간을 동기화
소프트웨어 버전 등록 과정
Import -> Check-out -> Commit -> Update -> Diff
7. 소프트웨어 버전 관리 도구 ***
공유 폴더 방식
- 버전 관리 자료가 로컬 컴퓨터의 공유 폴더에 저장되어 관리되는 방식
- 개발자들은 개발이 완료된 파일을 약속된 공유 폴더에 매일 복사
- 담당자는 공유 폴더의 파일을 자기 PC로 복사한 후 컴파일 하여 이상 유무를 확인
- 이상 유무 확인 과정에서 파일의 오류가 확인되면, 해당 파일을 등록한 개발자에게 수정을 의뢰
- 파일에 이상이 없다면 다음날 각 개발자들이 동작 여부를 다시 확인
- 파일을 잘못 복사하거나 다른 위치로 복사하는 것에 대비하기 위해 파일의 변경사항을 데이터베이스에 기록하여 관리
클라이언트/서버 방식
- 버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리되는 방식
- 서버의 자료를 개발자별로 자신의 PC(클라이언트)로 복사하여 작업한 후 변경된 내용을 서버에 반영
- 모든 버전 관리는 서버에서 수행됨
- 하나의 파일을 서로 다른 개발자가 작업할 경우 경고 메시지를 출력
- 서버에 문제가 생기면, 서버가 복구되기 전까지 다른 개발자와의 협업 및 버전 관리 작업은 중단됨
분산 저장소 방식
- 버전 관리 자료가 하나의 원격 저장소와 분산된 개발자 PC의 로컬 저장소에 함께 저장되어 관리되는 방식
- 개발자별로 원격 저장소의 자료를 자신의 로컬 저장소로 복사하여 작업한 후 변경된 내용을 로컬 저장소에서 우선 반영한 다음 이를 원격 저장소에 반영
- 로컬 저장소에서 버전 관리가 가능하므로 원격 저장소에 문제가 생겨도 로컬 저장소의 자료를 이용하여 작업할 수 있음
Subversion(SVN)
- CVS를 개선한 것으로, 아파치 소프트웨어 재단에서 2000년에 발표
- 클라이언트/서버 구조로, 서버에는 최신 버전의 파일들과 변경 내역이 관리됨
- 서버의 자료를 클라이언트로 복사해와 작업한 후 변경 내용을 서버에 반영
- 모든 개발 작업은 trunk 디렉터리에서 수행되며, 추가 작업은 branches 디렉터리 안에 별도의 디렉터리를 만들어 작업을 완료한 후 trunk 디렉터리와 병합
- 커밋할 때마다 리비전이 1씩 증가
- 클라이언트는 대부분의 운영체제에서 사용되지만, 서버는 주로 유닉스를 사용
- 소스가 오픈되어 있어 무료로 사용 가능
- CVS의 단점이었던 파일이나 디렉터리의 이름 변경, 이동 등이 가능
주요 명령어
- add, commit, update, checkout, lock/unlock, import, export, info, diff, merge
Git
- 리누스 토발즈가 2005년 리눅스 커널 개발에 사용할 관리 도구로 개발한 이후 주니오 하마노에 의해 유지 보수되고 있음
- 분산 버전 관리 시스템으로 2개의 저장소, 즉 로컬 저장소와 원격 저장소가 존재
- 로컬 저장소는 개발자들이 실제 개발을 진행하는 장소로, 버전관리가 수행됨
- 원격 저장소는 여러 사람들이 협업을 위해 버전을 공동 관리하는 곳으로, 자신의 버전 관리 내역을 반영하거나 다른 개발자의 변경 내용을 가져올 때 사용
- 버전 관리가 로컬 저장소에서 진행되므로 버전 관리가 신속하게 처리되고, 원격 저장소나 네트워크에 문제가 있어도 작업 가능
- 브랜치를 이용하면 기존 버전 관리 틀에 영향을 주지 않으면서 다양한 형태의 기능 테스팅이 가능
- 파일의 변화를 스냅샷으로 저장하는데, 스냅샷은 이전 스냅샷의 포인터를 가지므로 버전의 흐름을 파악할 수 있음
주요 명령어
- add, commit, branch, checkout, merge, init, remote add, push, fetch, clone, fork
8. 빌드 자동화 도구
빌드 자동화 도구의 개념
- 빌드를 포함하여 테스트 및 배포를 자동화하는 도구
- 애자일 환경에서는 하나의 작업이 마무리될 때마다 모듈 단위로 나눠서 개발된 코드들이 지속적으로 통합되는데, 이러한 지속적인 통합 개발 환경에서 빌드 자동화 도구가 유용하게 활용됨
Jenkins
- JAVA 기반의 오픈 소스 형태로, 가장 많이 사용되는 빌드 자동화 도구
- 서블릿 컨테이너에서 실행되는 서버 기반 도구
- SVN, Git 등 대부분의 형상 관리 도구와 연동이 가능함
- 여러 대의 컴퓨터를 이용한 분산 빌드나 테스트가 가능함
Gradle
- Groovy를 기반으로 한 오픈 소스 형태의 자동화 도구로, 안드로이드 앱 개발 환경에서 사용됨
- 안드로이드 뿐만 아니라 플러그인을 설정하면, JAVA, C/C++, Python 등의 언어도 빌드가 가능함
- Groovy를 사용해서 만든 DSL을 스크립트 언어로 사용
- 실행할 처리 명령들을 모아 태스크로 만든 후 태스크 단위로 실행함
- 이전에 사용했던 태스크를 재사용하거나 다른 시스템의 태스크를 공유할 수 있는 빌드 캐시 기능을 지원하므로 빌드의 속도를 향상시킬 수 있음
LIST'정보처리기사' 카테고리의 다른 글
[정보처리기사] 2장 소프트웨어 개발 : 2장. 통합 구현 (0) 2022.02.28 [정보처리기사] 2과목 소프트웨어 개발 : 1장. 데이터 입출력 구현 (0) 2022.02.28 [정보처리기사] 3과목 데이터베이스 구축 : 5장. 데이터 전환 (0) 2022.02.25 [정보처리기사] 3과목 데이터베이스 구축 : 4장. SQL 활용 (0) 2022.02.25 [정보처리기사] 3과목 데이터베이스 구축 : 2장. 물리 데이터베이스 설계 (0) 2022.02.25