6 분 소요

2020 시나공 정보처리기사 필기책 참고

주의! 중요도가 낮은 항목(C)은 제외

1. 소프트웨어 패키징 – B

- 소프트웨어 패키징의 개요

  • 모듈별로 생성한 실행 파일들을 묶어 배포용 설치 파일을 만드는 것
  • 사용자를 중심으로 진행
  • 모듈화하여 패키징
  • 일반적인 배포 형태로 패키징
  • 사용자의 편의성 및 실행 환경을 우선적으로 고려

- 패키징 시 고려사항

  • 사용자의 시스템 환경에 필요한 최소 환경을 정의
  • UI는 눈으로 직접 확인할 수 있도록 시각적인 자료와 함께 제공하고 매뉴얼과 일치
  • 하드웨어와 함께 관리될 수 있도록 Managed Service 형태로 제공
  • 편의성을 고려한 안정적인 배포가 중요
  • 패키징의 변경 및 개선에 대한 관리를 항상 고려

- 패키징 작업 순서

  • 애자일 기법의 경우 2~4주 내에서 지정하며, 각 주기가 끝날 때마다 패키징 수행
  • 주기별로 패키징한 결과물은 테스트 서버에 배포
  • 최종 패키징한 결과물은 사용할 수 있도록 온라인 또는 오프라인으로 배포
  • 기능 식별 -> 모듈화 -> 빌드 -> 사용자 환경 분석 -> 패키징 및 적용시험 -> 패키징 변경 개선 -> 배포


2. 릴리즈 노트 작성 – B

- 릴리즈 노트의 개요

  • 릴리즈 정보를 소프트웨어의 최종 사용자인 고객과 공유하기 위한 문서
  • 테스트 진행 방법에 대한 결과와 S/W 사양에 대한 개발팀의 정확한 준수 여부 확인 가능
  • 전체 기능, 서비스의 내용, 개선 사항 등을 사용자와 공유
  • 버전 관리나 릴리즈 정보를 체계적으로 관리
  • 초기 배포 시 또는 출시 후 개선 사항을 적용한 추가 배포 시에 제공
  • 포함된 기능이나 사용 환경에 대한 내용을 확인
  • 개선된 작업이 있을 때마다 관련 내용을 릴리즈 노트에 담아 제공
  • 철저한 테스트를 거친 것, 사양에 대한 최종 승인을 얻은 후 문서화 되어 제공

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

  • 정확하고 완전한 정보를 기반으로 개발팀에서 직접 현재 시제로 작성
  • 변경 또는 개선된 항목에 대한 이력 정보들도 작성
  • 표준 형식은 없음

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

  • 특수한 상황이 발생하는 경우 릴리즈 노트를 추가로 작성
  • 모든 수정된 내용을 담아 릴리즈 노트를 작성
  • 기능 업그레이드를 완료한 경우에는 릴리즈 버전을 출시하고 릴리즈 노트를 작성
  • 요구사항에 의해 추가나 수정된 경우 별도의 릴리즈 버전으로 출시하고 릴리즈 노트 작성

- 릴리즈 노트 작성 순서

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


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

  • 저작권이란 창작자가 가지는 배타적 독점적 권리로 타인의 침해를 받지 않을 고유한 권한
  • 복제하기 쉬운 저작물에 대해 이를 막기 위한 기술적인 방법을 통칭해 저작권 보호 기술이라 함

- 디지털 저작권 관리(DRM; Digital Right Management)의 개요

  • 디지털 콘텐츠 관리 및 보호 기술
  • 원본 콘텐츠가 아날로그인 경우 디지털로 변환한 후 패키저로 DRM 패키징 수행
  • 크기가 작은 경우 실시간 패키징 수행, 크기가 큰 경우 미리 패키징 수행 후 배포
  • 패키징을 수행하면 암호화된 전자서명이 포함되고 라이선스 정보가 클리어링 하우스에 등록
  • 콘텐츠를 사용하기 위해 사용자 인증과 콘텐츠 사용 권한 소유 여부를 확인
  • 종량제 방식을 적용한 경우 실제 사용량을 측정하여 이용한 만큼의 요금 부과

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

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

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

  • 암호화(Encryption) : 콘텐츠를 암호화하고 전자 서명을 할 수 있는 기술
  • 키 관리(Key Management) : 콘텐츠를 암호화한 키에 대한 저장 및 분배 기술
  • 암호화 파일 생성(Packager) : 콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술
  • 식별 기술(Identification) : 콘텐츠에 대한 식별 체계 표현 기술
  • 저작권 표현(Right Expression) : 라이선스의 내용 표현 기술
  • 정책 관리(Policy Management) : 라이선스 발급 및 사용에 대한 정책 표현 및 관리 기술
  • 크랙 방지(Tamper Resistance) : 크랙에 의한 콘텐츠 사용 방지 기술
  • 인증(Authentication) : 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술


4. 소프트웨어 버전 등록 – B

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

  • 형상관리(SCM)는 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동
  • S/W 변경의 원인을 알아내고 제어, 적절히 변경되고 있는지 확인하며 해당 담당자에게 통보
  • S/W 개발의 전 단계에 적용되는 활동. 유지보수 단계에서도 수행
  • S/W 개발의 전체 비용을 줄이고, 방해 요인이 최소화되도록 보증

- 형상 관리의 중요성

  • 변경 사항을 체계적으로 추적하고 통제할 수 있음
  • 무절제한 변경을 방지할 수 있음
  • 발견된 버그나 수정 사항을 추적할 수 있음
  • S/W는 형태가 없어 가시성이 결핍되므로 진행 정도를 확인하기 위한 기준으로 사용

- 형상 관리 기능

  • 형상 식별 : 이름과 관리 번호를 부여, Tree 구조로 구분하여 수정 및 추적이 용이하도록 함
  • 버전 제어 : 다른 버전의 형상 항목을 관리, 특정 절차와 도구를 결합
  • 형상 통제 : 변경 요구를 검토하여 현재의 기준선이 잘 반영될 수 있도록 조정
  • 형상 감사 : 기준선의 무결성을 평가하기 위해 공식적으로 승인하는 작업
  • 형상 기록 : 결과를 기록, 관리하고 보고서를 작성하는 작업

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

  • Repository : 최신 버전의 파일들과 변경 내역에 대한 정보들이 저장
  • Import : 아무것도 없는 저장소에 처음으로 파일을 복사
  • Check-Out : 저장소에서 파일을 받아옴. 버전관리를 위한 파일들도 받아옴
  • Check-In : 수정을 완료한 후 저장소의 파일을 새로운 버전으로 갱신
  • Commit : 충돌을 알리고 diff 도구를 이용해 수정한 후 갱신을 완료
  • Update : 저장소에 있는 최신 버전으로 자신의 작업 공간을 동기화

- 소프트웨어 버전 등록 과정

  • Import -> Check-Out -> Commit -> Update -> Diff


5. 소프트웨어 버전 관리 도구 – A

- 공유 폴더 방식

  • 로컬 컴퓨터의 공유 폴더에 저장되어 관리
  • 약속된 공유 폴더에 매일 복사
  • 담당자는 파일을 자기 PC로 복사한 후 컴파일 하여 이상 유무를 확인
  • 파일 오류가 확인되면, 개발자에게 수정 의뢰
  • 이상 없으면 개발자들이 동작 여부 다시 확인
  • 파일의 변경 사항을 DB에 기록하여 관리
  • SCCS, RCS, PVCS, QVCS

- 클라이언트/서버 방식

  • 버전 관리 자료가 중앙 시스템에 저장되어 관리되는 방식
  • 서버의 자료를 PC로 복사하여 작업한 후 변경된 내용을 서버에 반영
  • 모든 버전 관리는 서버에서 수행
  • 하나의 파일을 서로 다른 개발자가 작업할 경우 경고 메시지 출력
  • 서버에 문제가 생기면 협업 및 버전 관리 작업 중단
  • CVS, SVN(Subversion), CVSNT, Clear Case, CMVC, Perforce

@ Subversion(서브버전, SVN)

  • CVS를 개선한 것
  • 서버에는 최신 버전의 파일들과 변경 내역이 관리
  • 서버의 자료를 클라이언트로 복사해와 작업한 후 변경 내용을 서버에 반영
  • 모든 개발 작업은 trunk 디렉터리에서 수행
  • 추가 작업은 branches 디렉터리 안에 별도의 디렉터리 만들어 작업
  • 완료후 trunk 디렉터리와 병합
  • 커밋 할 때마다 리비전이 1씩 증가
  • 서버는 주로 유닉스 사용
  • 소스가 오픈되어 있어 무료로 사용 가능
  • CVS의 단점이었던 파일이나 디렉터리의 이름 변경, 이동 등이 가능

- 분산 저장소 방식

  • 하나의 원격 저장소와 분산된 개발자 PC의 로컬 저장소에 함께 저장되어 관리
  • 작업한 후 변경된 내용을 로컬에서 우선 반영한 후, 이를 원격 저장소에 반영
  • 원격 저장소에 문제가 생겨도 로컬 저장소의 자료를 이용하여 작업할 수 있음

@ Git

  • 로컬 저장소와 원격 저장소 존재
  • 로컬 저장소는 실제 개발을 진행하는 장소로, 버전 관리가 수행
  • 원격 저장소는 버전을 공동 관리하는 곳
  • 버전 관리가 신속하게 처리되고, 원격 저장소나 네트워크에 문제가 있어도 작업 가능
  • branch를 이용하면 기본 버전 관리 틀에 영향을 주지 않으면서 다양한 형태의 기능 테스팅 가능
  • 파일의 변화를 스냅샷으로 저장. 스냅샷은 이전 스냅샷의 포인터를 가지므로 버전의 흐름 파악 가능


6. 빌드 자동화 도구 – B

- 빌드 자동화 도구의 개념

  • 빌드란 소스 코드 파일들을 컴파일한 후 여러 개의 모듈을 묶어 실행 파일로 만드는 과정
  • 빌드 자동화 도구는 빌드를 포함하여 테스트 및 배포를 자동화하는 도구
  • 애자일 환경같은 지속적인 통합 개발 환경에서 유용하게 활용

- Jenkins

  • Jenkins는 Java 기반의 오픈소스 형태, 가장 많이 사용되는 빌드 자동화 도구
  • 서블릿 컨테이너에서 실행되는 서버 기반 도구
  • SVN, Git 등 대부분의 형상 관리 도구와 연동이 가능
  • 친숙한 Web GUI 제공으로 사용이 쉬움
  • 여러 대의 컴퓨터를 이용한 분산 빌드나 테스트가 가능

- Gradle

  • Groovy를 기반으로 한 오픈 소스 형태의 자동화 도구. 안드로이드 앱 개발 환경에서 사용
  • 플러그인을 설정하면 Java, C/C++, Python 등의 언어도 빌드 가능
  • Groovy를 사용해서 만든 DSL(Domain Specific Language)을 스크립트 언어로 사용
  • 실행할 처리 명령을 모아 Task로 만든 후 Task 단위로 실행
  • Task를 재사용하거나 공유할 수 있는 빌드 캐시 기능을 지원해 빌드의 속도를 향상시킬 수 있음

태그:

카테고리:

업데이트:

댓글남기기