정보처리기사/소프트웨어 개발

소프트웨어 개발 3장 제품 소프트웨어 패키징 요약 1)패키징, 릴리즈노트, 형상관리, SVN명령어

차간단 2022. 4. 22. 18:06
반응형

소프트웨어 패키징의 개요

- 실행 파일을 묶어 배포용 설치 파을을 만듦

- 사용자 중심으로 진행

- 모듈화 하여 일반 배포 형태로 패키징

 

패키징 고려사항

- 사용자의 운영체제, CPU, 메모리 등에 필요한 최소 환경 정의

- UI 는 시각적인 자료와 함께 메뉴얼과 일치시켜 패키징

- 소프트웨어는 하드웨어와 함께 관리될수 있도록 Managed Service 형태로 제공

- 패키징 변경 및 개선에 대한 관리를 항상 고려

 

패키징 작업 순서

 

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

 

- 애자일 기법(짧은 개발 주길르 반복)하는 경우에는 보통 2~4주 내에서 지정하며 각 주기가 끝날 때마다 패키징을 수행

- 주기별로 패키징한 결과물은 테스트 서버에 배포

- 온라인 배포 : 별도로 마련한 운영 서버에 설치 및 사용 매뉴얼과 함께 배포 파일 등록

- 오프라인 배포 : CD-ROM, DBD, USB등을 통해

 

릴리즈 노트의 개요

- 릴리즈 노트 : 개발 과정에서 정의된 릴리즈 정보를 고객에게 공유하기 위한 문서

*릴리즈 : 개발이 완성된 소프트웨어를 배포하는 것

- 테스트 진행 방법에 대한 결과가 소프트웨어 사양에 대한 개발팀의 정확한 준수 여부 파악

- 소프트웨어의 버전 관리 및 릴리즈 정보를 체계적으로 관리

- 소프트웨어 초기 배포, 출시 후 개선 사항을 적용한 추가 배포 시 제공

 

릴리즈 노트 초기 버전 작성 시 고려사항

- 정확하고 완전한 정보를 기반으로 개발팀에서 직접 현재 시제로 작성

- 신규코드, 빌드 등의 이력이 정확하게 관리되어 변경 또는 개선된 항목에 대한 이력 정보들도 작성

 

릴리즈 노트 추가 버전 작성 시 고려사항

- 테스트 과정에서 베타버전이 출시되거나 긴급 버그 수정, 업그레이드, 사용자 요청등의 특수한 상황의 경우 작성

- 긴급 버그 수정 시 수정하는 경우 릴리즈 버전을 출시하고 그 번호를 포함한 모든 내용을 수정된 내용에 담음

- 요구사항에 의해 추가 혹은 수정된 경우 자체 기능 향상과는 다른 별도의 릴리즈 버전으로 출시하고 작성

 

릴리즈 노트 작성 순서

 

모듈 식별 > 릴리즈 정보 확인 > 릴리즈 노트 개요 작성 > 영향도 체크 > 정식 릴리즈 노트 작성 > 추가개선사항 식별

 

저작권의 개요

- 창작자가 가지는 배타적 독점적 권리로 타인의 침해를 받지 않을 고유한 권한

- 컴퓨터 프로그램처럼 복제하기 쉬운 저작물에 대해 저작권을 보호하는 방법을 저작권 보호 기술이라 함

 

디지털 저작권 관리 (DIgital Right Management)의 개요

- 저작권자가 배포한 디지털 콘텐츠가 저작권자가 의도한 용도로만 사용되도록 생성, 유통, 이용까지 전 과정에 걸쳐 사용되는 디지털 콘텐츠 관리 및 보호 기술

- 크기가 작은 경우 사용자가 콘텐츠를 요청하는 시점에 실시간 패키징 수행

- 크기가 큰 경우 미리 패키징을 수행 후 배포

- 종량제 방식을 적용한 소프트웨어의 경우 서비스의 실제 사용량을 측정하여 이용한 만큼 이용 부과

 

디지털 자작권 관리 흐름도

디지털 저작권 관리 흐름도

- 클리어링 하우스 : 저작권에 대한 사용 권한, 라이센스 발급, 사용량에 따른 결제 관리 등 수행

- 패키저 : 콘텐츠를 메타 데이터와 함께 배포 가능한 형태로 묶어 암호화하는 프로그램

- 콘텐츠 분배자 : 암호화된 콘텐츠를 유통

- 콘텐츠 소비자 : 콘텐츠를 구매해서 사용

- DRM 컨트롤러 : 배포된 콘텐츠의 이용 권한을 통제하는 프로그램

- 보안 컨테이너 : 콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안 장치

 

디지털 저작권 관리의 기술 요소

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

 

소프트웨어 설치 매뉴얼의 개요

- 개발 초기에서부터 적용된 기준이나 사용자가 소프트웨어를 설치하는 과정에 필요한 내용을 기록한 문서

- 설치 시작부터 완료까지의 과정을 순서대로 설명

 

서문

- 문서 이력, 설치 매뉴얼의 주석, 설치 도구의 구성, 설치 환경 체크 항목 기술

- 설치 매뉴얼의 주석 : 주의 사항과 참고 사항 기술

- 설치 환경 체크 항목 : 사용자 환경, 응용 프로그램, 업그레이드 버전, 백업 폴드 확인

 

기본사항

- 소프트웨어 개요, 설치 관련 파일, 설치 아이콘, 프로그램 삭제, 관련 추가 정보 설명

 

설치 매뉴얼 작성 방법

- 사용자가 설치 과정을 이해하기 쉽게 설치 화면을 누락없이 캡쳐하여 순서대로 설명

- 설치 화면 및 UI, 설치 이상 메세지, 설치 완료 및 결과, 설치시 점검사항, Network 환경 및 보안, 고객지원 방법, FAQ, 준수정보 , 제한보증에 대해 기술

 

설치 메뉴얼 작성순서

 

기능 식별 > UI 분류 > 설치/백업 파일 확인 > 삭제 절차 확인 > 이상케이스 확인 > 최종 매뉴얼 작성

 

소프트웨어 패키징 형상 관리

- 형상관리는 소프트웨어의 변경 사항을 관리하기 위한 활동

 

형상 관리의 중요성

- 지속적으로 변경사항을 체계적으로 관리 및 추적할 수 있음

- 발견된 버그나 수정 사항을 추적

- 무젤제한 변경 방지

 

형상 관리 기능

- 형상 식별 : 대상에 이름과 관리 번호를 부여하고 계층 구조로 구분하여 수정 및 추적이 용이하도록 하는 작업

- 버전 제어 : 소프트웨어 유지 보수 과정에서 생성된 다른 버전의 형상 항목을 관리하고 특정 절차와 도구를 결합하는 작업

- 형상 통제 : 식별된 형상 항목에 대한 변경요구를 검토하여 현재의 기준선이 잘 반영될 수 있도록 하는 작업

- 형상 검사 : 기준선의 무결성을 평가하기 위해 확인, 검증, 검열과정을 통해 공식적으로 승인하는 작업

- 형상 기록 : 형상의 식별, 통제, 감사 작업의 결과를 기록, 관리하고 보고서를 작성하는 작업

 

소프트웨어 버전 등록 관련 주요 용어

저장소(Repository) : 형상에 대한 정보들이 저장되어 있는 곳

가져오기 : 아무것도 없는 저장소에 처음 파일 복사

체크아웃 : 저장소에서 소스 파일, 버전 관리를 위한 파일을 받아옴

체크인 : 체크아웃으로 받아온 파일을 수정 후 저장소에 새로운 버전으로 갱신

커밋 : 체크인 수행시 이전에 갱신된 내용이 있는 경우 충돌을 알리고 diff 도구를 이용해 수정한 후 갱신

동기화 : 저장소에 있는 최신 버전을 동기화

 

소프트웨어버전 등록 과정

가져오기 > 인출 > 예치 > 동기화 > 차이

 

소프트웨어 버전 관리 도구

 

공유폴더 방식

- 버전 관리 자료가 로컬 컴퓨터의 공유 폴더에 저장 되어 관리

 

클라이언트/서버 방식

- 버전 관리 자료가 서버에 저장되어 관리

- 서버의 자료를 자신의 PC로 복사하여 작업 후 변경내용을 서버에 반영

- 모든 버전 관리는 서버에서 수행

 

분산저장소 방식

- 버전 관리 자료가 하나의 원격 저장소와 분산된 PC의 로컬 저장소에 함께 저장되어 관리

- 원격 저장소의 자료를 자신의 로컬 저장소로 복사하여 작업 후 변경 내용을 로컬 저장소에서 버전 관리 후 이를 원격 저장소에 반영

 

SVN(Subversion)

- 아파치 소프트웨어 재단에서 2000년에 발표

- 클라이언트/서버 구조

- 모든 작업은 trunk 디렉토리에서 , 추가작업은 branches 디렉토리 안에 별도의 디렉토리를 만들어 작업 후 trunk 디렉토리와 병함

- 커밋할 때 마다 커밋의 버전인 리비전이 1씩 증가

- 서버는 주로 유닉스에서 사용

 

SVN명령어

add 새로운 파일이나 디렉토리를 관리 대상으로 지정
commit add한 소스파일을 서버의 소스파일에 적용
update 서버의 최신 commit 이력을 클라이언트 소스에 적용
checkout 서버에서 버전 관리 정보와 소스 파일을 받아옴
import 아무것도 없는 서버의 저장소에 맨 처음 소스파일을 저장
export 버전 관리 정보 빼고 소스 파일만 서버에서 받아옴
info 지정된 파일에 대한 정보를 표시
diff 지정된 파일이나 경로에 대해 이전 리버전과의 차이를 표시
merge 다른 디렉토리에서 작업된 버전 관리 내역을 기본 개발 작업과 병행

Git

- 리누스 토발즈가 2005년에 개발

- 분산 저장소 방식

- 버전 관리가 지역 저장소에서 진행되어 버전관리가 신속하게 처리되고, 원격 저장소나 네트워크에 문제가 있어도 작업 가능

- 브랜치를 이용하여 기본 버전 관리 틀에 영향을 주지 않으면서 다양한 형태의 테스팅 가능

- 파일의 변화와 스냅샷으로 저장하고 이전 스냅샷의 포인터를 가져 버전의 흐름 파악 가능

 

GIT 명령어

add 작업 내역을 스테이징 영역에 추가하여 버전 관리 대상으로 지정
branch 작업 내역을 지역 저장소에 저장
checkout 작업 내역을 지역 저장소에 저장
merge 두 브랜치 병함
init 지역 저장소 생성
remote add 원격 저장소에 연결
push 로컬 저장소의 변경 내용을 원격 저장소에 반영
fetch 원격 저장소의 변경 이력만 지역 저장소에 반영
clone 원격저장소의 전체 내용을 지역 저장소로 복제
fork 지정한 원격 저장소의 내용을 자신의 원격 저장소로 복제

빌드 자동화 도구의 개념

- 소스 코드를 컴파일한 후 여러 개의 모듈로 묶어 실행 파일로 만드는 과정을 포함하여 테스트 및 배포를 자동화하는 도구

 

Jenkins

- JAVA 기반의 오픈소스

- 서블릿 컨테이너에서 실행되는 서버 기반 도구

- 형상관리도구와 연동 가능

- Web GUI 제공으로 사용이 쉬움

- 여러대의 컴퓨터를 이용한 분산 빌드나 테스트 가능

 

Gradle

- Groovy를 기반으로 한 오픈 소스 형태의 자동화 도구

- 안드로이드 앱 개발 환경에 사용

- JAVA C/C++ Python 등의 언어도 빌드가능

- Groovy를 사용해서 만든 DSL을 스크립트 언어로 사용

- 실행할 처리 명령들을 모아 테스크로 만든 후 태스크 단위로 실행

- 이전의 태스크를 재사용하거나 다른 시스템의 태스크를 공유하여 빌드의 속도를 향상시킬수 있음

 

 

반응형