정보처리기사 필기

정보처리기사 2과목 소프트웨어 개발 - 3장 제품 소프트웨어 패키징

E_ONION 2020. 6. 3. 01:48

1. 소프트웨어 패키징 :모듈별로 생성한 실행 파일들을 묶어 배포용 설치 파일 만드는 것

- 사용자 중심, 소스코드는 모듈화하여 패키징, 손쉽게 사용하기 위해 배포 형태로 패키징, 사용자의 편의성 및 실행 환경 우선 고려

고려 사항

- 사용자의 시스템 환경에 필요한 최소 환경을 정의

- UI는 시각적인 자료와 함께 제공하고 매뉴얼 일치시켜 패키징

- SW는 HW와 함께 관리될 수 있도록 Managed Service 형태로 제공

- 고객의 편의성을 고려한 안정적인 배포가 중요, 요구 사항 반영할 수 있도록 개선에 대한 관리를 항상 고려

● 패키징 작업 순서

- 각 주기 날 때마다 패키징, 주기별로 패키징한 결과물은 테스트 서버에 배포, 온라인 or 오프라인으로 배포

① 기능 식별

② 모듈화 : 확인된 기능 단위로 코드들을 분류

③ 빌드 진행 : 모듈 단위별로 실행파일 만듦

④ 사용자 환경 분석 : 최소 운영 환경 정의

⑤ 패키징 및 적용 시험 : 배포용 파일 형식으로 패키징, 테스팅 후 불편사항 사용자 입장서 확인

⑥ 패키징 변경 개선

⑦ 배포

2. 릴리즈 노트 작성 : 개발 과정에서 정리된 릴리즈 정보를 SW의 최종 사용자인 고객과 공유하기 위한 문서

- 테스트 진행 방법에 대한 결과와 SW 사양에 대한 개발팀의 정확한 준수 여부 확인 가능

- SW의 버전 관리나 릴리즈 정보를 체계적으로 관리 가능

- 초기 배포 시 or 출시 후 개선사항을 적용한 추가 배포 시 제공

        └ SW 기능이나 사용 환경에 대한 내용 확인 가능

- 최종 승인 얻은 후 문서화되어 제공, 개선된 작업 기록

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

- 정확, 완전 정보 기반으로 개발팀에서 직접 현재 시재로 작성해야 함

- 변경, 개선된 항목에 대한 이력 정보들도 작성해야 함

- 항목: Header, 개요, 목적, 문제 요약, 재현 항목, 수정/개선 내용, 사용자 영향도, SW 지원 영향도, 노트, 면책 조항, 연락처

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

- 베타 버전 출시, 긴급 버그 수정, 자체 기능 향상, 사용자 요청 등 특수한 상황 발생 시 추가 작성

- 중대한 오류 발생하여 긴급 수정하는 경우 : 릴리즈 버전 출시하고 버그 번호 포함한 모든 수정된 내 담아 릴리즈 노트 작성

- 기능 업그레이드 완료 경우 : 릴리즈 버전 출시하고 릴리즈 노트 작성

- 사용자 요구 사항에 의해 추가나 수정된 경우 : 자체 기능 향상과는 별도의 릴리즈 버전 출시하고 릴리즈 노트 작성

릴리즈 노트 작성 순서

① 모듈 식별

② 릴리즈 정보 확인

③ 릴리즈 노트 개요 작성

④ 영향도 체크

⑤ 정식 릴리즈 노트 작성

⑥ 추가 개선 항목 식별

3. 디지털 저작권 관리(DRM)

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

DRM : 디지털 콘텐츠의 생성, 유통, 이용까지의 전 과정에 걸쳐 사용되는 디지털 콘텐츠 관리 및 보호 기술

- 아날로그 => 디지털로 변환 후 패키저에 의해 DRM 패키징 수행

- 크기 작은 경우 실시간 패키징 수행, 크기 큰 경우 미리 패키징 수행 후 배포

- 패키징 수행 시 저작권자의 전자서명이 포함되고, 저작권자가 설정한 라이선스 정보가 클리어링 하우스에 등록됨

- 사용자 콘텐츠 사용 위해서는 클리어링 하우스에 등록된 라이선스 정보를 통해 인증과 콘텐츠 사용 권한 여부 확인받아야 함

- 종량제 방식 적용 SW => 클리어링 하우스 통해 실제 사용량 측정하여 요금 부과

디지털 저작권 관리의 흐름도

DRM의 흐름도

- 클리어링 하우스 : 결제 관리 등을 수행하는 곳

- 콘텐츠 제공자

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

- 콘텐츠 분배자 : 유통하는 곳이나 사람

- 콘텐츠 소비자 : 콘텐츠 구매해서 사용하는 주체

- DRM 컨트롤러 : 이용 권한 통제하는 프로그램

- 보안 컨테이너 : 안전하게 유통하기 위한 보안 장치

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

- 암호화(전자 서명), 키 관리, 암호화 파일 생성(Pakager), 식별 기술, 저작권 표현(내용 기술), 정책 관리, 크랙 방지, 인증

4. 소프트웨어 설치 매뉴얼 작성 : SW 설치 과정에 필요한 내용을 기록한 설명서와 안내서

- 사용자 기준 작성, 빠짐없이 순서대로 설명, 모두 캡처하여 설명

- 오류 메시지 및 예외 상황 내용 별도로 분류하여 설명

- 목차에 전체 설치 과정 순서대로 요약한 후 관련 내용 시작 페이지 함께 기술

설치 매뉴얼 작성 순서

① 기능 식별

② UI 분류

③ 설치 파일 / 백업 파일 확인

④ Uninstall 절차 확인

⑤ 이상 case 확인

⑥ 최종 매뉴얼 작성

5. 소프트웨어 사용자 매뉴얼 작성 : 사용자가 SW를 사용하는 과정에서 필요한 내용을 문서로 기록한 설명서와 안내서

- SW 사용에 필요한 절차, 환경 등의 제반 사항이 모두 포함되도록 작성

- 오류에 대한 패치나 기능에 대한 업그레이드를 위해 버전을 관리

- 개별적 동작이 가능한 컴포넌트 단위로 매뉴얼 작성

- 컴포넌트 명세서, 컴포넌트 구현 설계서를 토대로 작성

- Profile : SW 구동에 필요한 환경을 점검하는 파일

사용자 매뉴얼 작성 순서

① 기능 식별

② 사용자 화면 분류

③ 사용자 환경 파일 확인

④ 초기화 절차 확인

⑤ 이상 Case 확인

⑥ 최종 매뉴얼 적용

6. 소프트웨어 버전 등록

SW 패키징의 형상 관리 : SW의 변경 사항을 관리하기 위해 개발된 일련의 활동

- 전 단계에 적용, 유지 보수 단계에서도 수행

- 개발 전체 비용 줄이고, 개발 과정의 여러 방해 요인 최소화 목적

형상 관리의 중요성

- 체계적으로 추적 통제능, 무절제한 변경 방지, SW는 형태가 없어 가시성이 결여되므로 진행 정도 확인 가능

형상 관리 기능

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

- 버전 제어 : 다른 버전 형상 항목 관리, 특정 절차와 도구를 결합 시키는 작업

- 형상 통제(변경 관리) : 현재의 기준 선이 잘 반영될 수 있도록 조정하는 작업

- 형상 감사 : 기준선의 무결성 평가 위해 확인, 검증, 검열을 통해 승인하는 작업

- 형상 기록(상태 보고) : 기록 및 관리하고 보고서를 작성하는 작업

SW의 버전 등록 관련 주요 용어

- 저장소, 가져오기(Import, 복사), 체크아웃(파일 받아옴), 체크인(갱신), 커밋(충돌 알리고 수정 후 갱신 완료),

동기화(Update)

SW 버전 등록 과정

① 가져오기

② 인출(Check-Out)

③ 예치(commit)

④ 동기화

⑤ 차이(Diff) : 이전 파일과 변경된 파일 차이 확인

7. 소프트웨어 버전 관리 도구

공유 폴더 방식 : 공유 폴더에 저장되어 관리되는 방식

- 개발자들이 약속된 공유 폴더에 매일 복사

- 자기 PC로 복사 후 컴파일 하여 이상 유무 확인

- 오류 발생 시 해당 파일 등록 개발자에 수정 의뢰

- 파일 이상 없으면 다음날 각 개발자들이 다시 확인, 데이터베이스에 기록하여 관리

- SCCS, RCS, PVCS, QVCS

클라이언트 / 서버 방식 : 버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리되는 방식

- 개발자 자신 PC로 복사 => 작업 => 변경된 내용 서버에 반영, 모든 버전 관리 서버에서 수행

- 하나의 파일을 서로 다른 개발자가 작업 시 경고 메시지 출력

- 서버 문제 시 복구 전까지 다른 개발자와의 협업 및 버전 관리 작업 중단

- CVS, SVN(Subversion), CVSTN, Clear Case, CMVC, Perforce

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

- 개발자별로 원격 저장소 자료를 자신의 로컬 저장소에 복사하여 작업 후 변경 내용 로컬 저장소우선 반영원격 저장소에 반영

- 로컬 저장소에서 버전 관리 가능하므로 원격 저장소 문제 생겨도 작업 가능

- Git, GNU arch, DCVS, Bazaar, Mercurial, TeamWare, Bitkeeper, Plastic SCM

Subversion(서브 버전, SVN) : CVS 개선한 것, 아파치 소프트웨어 재단에서 2000녀에 발표

- 클라이언트/서버 구조로 서버(저장소)에는 최신 버전의 파일들과 변경 내역이 관리

- 모든 개발 작업 trunk 디렉터리에서 수행, 추가 작업 = branches 디렉터리에 별도 디렉터리 만들어 작업 후 trunk와 병합

- 커밋 할 때마다 리비전이 1씩 증가(번호 달리 표시), 클라이언트는 대부분의 운영체제에서 사용 가능 / 서버는 주로 유닉스 사용

- 소스 오픈되어 무료 사용 가능, CVS 단점인 이름 변경, 이동 등이 가능

- 명령어 : add(등록), commit(서버에 적용), update(클라이언트에 적용), import(서버에 맨 첨 소스파일 저장, 한 번 사용 가능)

export(버전 관리 제외 순수한 소스파일만 받아옴)

Git

- 브랜치 이용 시 다양한 형태의 기능 테스팅 가능

- 파일 변화 스냅샷으로 저장, 스냅샷은 버전 흐름 파악 가능

- commit(저장), branch(새로운 브랜치 생성), checkout(지정한 브랜치로 이동)

- 이전 파일과의 차이 => 영문자와 숫자가 혼합된 40자리 문자열로 표시

┌ push : 로컬 저장소의 변경 내역을 원격 저장소에 반영

└ fetch : 원격 저장소의 변경 이력만을 로컬 저장소에 반영

┌ fork : 지정한 원격 저장소의 내용을 자신의 원격 저장소 복제

└ clone : 원격 저장소의 전체 내용을 로컬 저장소에 복제

8. 빌드 자동화 도구 : 빌드 포함하여 테스트 및 배포를 자동화하는 도구

- 지속적인 통합 개발 환경에서 빌드 자동화 도구는 유용하게 활용

Jenkins : JAVA 기반의 오픈 소스 형태, 가장 많이 사용되는 빌드 자동화 도구

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

- SVN, Git 등 대부분 형상 관리 도구와 연동 가능

- 친숙한 Web GUI 제공으로 사용 쉬움

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

Gradle : Groovy 기반 오픈 소스 형태, 안드로이드 앱 개발 환경에서 사용

- 안드로이드뿐만 아니라 플러그인 설정 시 JAVA, C/C++, Python 등의 언어로도 빌드 가능

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

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

- 이전 사용 태스크 재사용하거나 다른 시스템의 태스크 공유 가능한 빌드 캐시 기능 지원하므로 빌드의 속도 향상시킴