정보처리기사 실기 공부log - 20201007

2020. 10. 7. 21:57컴퓨터언어

728x90
반응형

 

소프트웨어 패키징 

모듈별로 생성한 실행 파일들을 묶어 배포용 설치 파일을 만드는 것 

 

소프트웨어 패키징 시 고려사항 

사용자의 시스템 환경, 즉 운영체제, CPU, 메모리 등에 필요한 최소 환경을 정의한다. 

UI는 사용자가 눈으로 직접 확인할 수 있도록 시각적인 자료와 함께 제공하고 매뉴얼과 일치시켜 패키징한다. 

단순히 패키징하여 배포하는 것으로 끝나는 것이 아니라, 하드웨어와 함께 관리될 수 있도록 Managed Service 형태로 제공하는 것이 좋다. 

고객의 편의성을 고려한 안정적인 배포가 중요하다. 

다양한 사용자의 요구사항을 반영할 수 있도록 패키징의 변경 및 개선에 대한 관리를 항상 고려한다. 

 

모듈화 Modularity 

소프트웨어의 성능을 향상시키거나 시스템의 수정 및 재사용, 유지 관리 등이 용이하도록 시스템을 각 기능별로 나누는 것 

 

Managed Service 

고객이 사용 중인 소프트웨어를 24시간 모니터링하면서 문제 발생 시 현장에 바로 출동하여 필요한 점검을 수행하는 등의 체계적인 운영 관리와 유지 보수를 수행하는 서비스 

 

패키징 작업 순서 

기능 식별 : 작성된 코드의 기능을 확인한다. 

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

빌드 진행 : 모듈 단위별로 실행파일을 만든다. 

사용자 환경 분석 : 웹, 모바일, PC 등 소프트웨어가 사용될 환경이나 운영체제, CPU, RAM 등의 최소 운영 환경을 정의한다. 

패키징 및 적용 시험 : 빌드된 실행 파일들을 정의된 환경에 맞게 배포용 파일 형식으로 패키징한다. 정의된 환경과 동일한 환경에서 패키징 결과를 테스팅한 후 소프트웨어에 대한 불편사항을 사용자 입장에서 확인한다. 

패키징 변경 개선 : 확인된 불편사항을 반영하기 위한 패키징의 변경 및 개선을 진행한다. 

배포 : 배포 수행 시 오류가 발생하면 해당 개발자에게 전달하여 수정을 요청한다. 

*jar : java 응용 소프트웨어나 라이브러리를 배포하기 위한 패키지 형식 

*war : java Servlet, java Class, xml 및 웹 애플리케이션 서비스를 제공하기 위한 패키지 형식 

*ear : jar와 war를 묶어 하나의 애플리케이션 서비스를 제공할 수 있는 패키지 형식 

 

릴리즈 노트 

개발 과정에서 정리된 릴리즈 정보를 소프트웨어의 최종 사용자인 고객과 공유하기 위한 문서 

 

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

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

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

 

머릿말, 개요, 목적, 문제 요약, 재현 항목, 사용자 영향도, SW 지원 영향도, 노트, 면책 조항, 연락처 

재현 항목 : 버그 발견에 대한 과정 설명 

 

릴리즈 노트 추가 버전 작성 이유 

테스트 과정에서 베타 버전 출시, 긴급한 버그 수정, 업그레이드와 같은 자체 기능 향상, 사용자 요청 등 

 

릴리즈 노트 작성 순서 

모듈 식별 : 모듈별 빌드 수행 후 릴리즈 노트에 작성될 내용들을 확인한다. 

릴리즈 정보 확인 : 릴리즈 노트 이름, 소프트웨어 이름, 릴리즈 버전, 릴리즈 날짜, 노트 날짜, 노트 버전 등 확인 

릴리즈 노트 개요 작성 : 소프트웨어 및 변경사항 전체에 대한 간략한 내용 작성 

영향도 체크 : 버그나 이슈 관련 내용 또는 해당 릴리즈 버전에서의 기능 변화가 다른 소프트웨어나 기능을 사용하는 데 미칠 수 있는 영향에 대해 기술한다. 

정식 릴리즈 노트 작성 : Header(머릿말), 개요, 영향도 체크 항목을 포함하여 정식 릴리즈 노트에 작성될 기본 사항들을 작성한다. 

추가 개선 항목 식별 : 추가 버전 릴리즈 노트 작성이 필요한 경우 추가 릴리즈 노트 작성 

 

디지털 저작권 관리 DRM Digital Right Management 

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

 

클리어링 하우스 Clearing House : 저작권에 대한 사용 권한, 라이선스 발급, 사용량에 따른 결제 관리 등을 수행하는 곳 

콘텐츠 제공자 Contents Provider : 콘텐츠를 제공하는 저작권자. 클리어링 하우스에 라이선스를 등록함. 콘텐츠 분배자에게 콘텐츠 등록함. 

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

콘텐츠 분배자 Contents Distributor : 암호화된 콘텐츠를 유통하는 곳이나 사람. 콘텐츠 소비자로부터 받은 라이선스 요청을 클리어링 하우스에게 함. 콘텐츠 소비자에게 다운로드 제공. 

콘텐츠 소비자 Customer : 콘텐츠를 구매해서 사용하는 주체. 콘텐츠 분배자에게 라이선스 요청. 요금은 클리어링 하우스에게 지불. 

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

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

 

*메타 데이터 Meta Data : 데이터에 대한 속성 정보 등을 설명하기 위한 데이터 

 

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

암호화 Encryption : 콘텐츠 및 라이선스를 암호화하고 전자 서명을 할 수 있는 기술 

키 관리 Key Management : 콘텐츠를 암호화한 키에 대한 저장 및 분배 기술  

암호화 파일 생성 Packager : 콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술 

식별 기술 Identification : 콘텐츠에 대한 식별 체계 표현 기술 

저작권 표현 Right Expression : 라이선스의 내용 표현 기술 

정책 관리 Policy Management : 라이선스 발급  사용에 대한 정책 표현  관리 기술 

크랙 방지 Tamper Resistance : 크랙에 의한 콘텐츠 사용 방지 기술 

인증 Authentication : 라이선스 발급  사용의 기준이 되는 사용자 인증 기술 

 

*전자 서명 Digital Signature 

전자 문서의 변경 여부를 확인할 수 있도록 작성자의 고유 정보를 암호화하여 문서에 포함하는 기술 

 

소프트웨어 사용자 매뉴얼 

사용자가 소프트웨어를 사용하는 과정에서 필요한 내용을 문서로 기록한 설명서와 안내서 

개별적으로 동작이 가능한 컴포넌트 단위로 작성 

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

 

*컴포넌트 : 독립적인 업무 또는 기능을 수행하는 단위이며, 실행 코드 기반으로 작성된 모듈 

*모듈 : 하나의 기능이 한 개의 파일로 구현된 형태 

*모듈화 :  

소프트웨어의 성능을 향상시키거나 시스템의 수정 및 재사용, 유지관리 등이 용이하도록 시스템의 기능들을 모듈 단위로 분해하는 것 

 

 

컴포넌트 명세서 : 컴포넌트의 개요 및 내부 클래스의 동작, 외부와의 통신 명세 등을 정의한 문서 

컴포넌트 구현 설계서 : 컴포넌트 구현에 필요한 컴포넌트 구조도, 컴포넌트 목록, 컴포넌트 명세, 인터페이스 명세로 구성된 설계서 

 

소프트웨어 사용자 매뉴얼 작성 순서 

기능 식별 -> 사용자 화면 분류 -> 사용자 환경 파일 확인 -> 초기화 절차 확인 -> 이상 Case 확인 -> 최종 매뉴얼 적용 

 

소프트웨어 설치 매뉴얼 작성 순서 

기능 식별 -> UI 분류 -> 설치 파일 / 백업 파일 확인 -> Uninstall 절차 확인 -> 이상 Case 확인 -> 최종 매뉴얼 적용 

 

형상 관리 SCM Software Configuration Management 

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

 

형상 관리 기능 

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

버전 제어 : 소프트웨어 업그레이드나 유지 보수 과정에서 생성된 다른 버전의 형상 항목을 관리하고, 이를 위해 특정 절차와 도구(Tool) 결합시키는 작업이다. 

형상 통제 

형상 감사 

형상 기록(상태 보고) 

 

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

저장소 Repository : 최신 버전의 파일들과 변경 내역에 대한 정보들이 저장되어 있는 곳 

가져오기 Import : 버전 관리가 되고 있지 않은 아무것도 없는 저장소(Repository)에 처음으로 파일을 복사한다. 

체크아웃 Check-Out : 프로그램을 수정하기 위해 저장소에서 파일을 받아온다. 소스 파일과 함께 버전 관리를 위한 파일들도 받아온다. 

체크인 Check-In : 체크아웃 한 파일의 수정을 완료한 후 저장소의 파일을 새로운 버전으로 갱신한다. 

커밋 Commit : 체크인을 수행할 때 이전에 갱신된 내용이 있는 경우에는 충돌(Conflict)을 알리고 Diff 도구를 이용해 수정한 후 갱신을 완료한다. 

동기화 Update : 저장소의 최신 버전으로 자신의 작업 공간을 동기화한다. 

 

소프트웨어 버전 등록 과정 

가져오기 Import -> 인출 Check-Out -> 예치 Commit -> 동기화 Update -> 차이 Diff 

 

공유 폴더 방식 

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

SCCS, RCS, PVCS, QVCS 

 

클라이언트/서버 방식 

버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리되는 방식 

CVS, SVN, CVSNT, Clear Case, CMVC, Perforce 

 

분산 저장소 방식 

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

Git, Mercurial, Bitkeeper 

 

빌드 

소스 코드 파일들을 컴파일한 후 여러 개의 모듈을 묶어 실행 파일로 만드는 과정 

 

빌드 자동화 도구 

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

 

애자일 환경에서는 하나의 작업이 마무리될 때마다 모듈 단위로 나눠서 개발된 코드들이 “지속적 통합"됨 

 

Ant, Maven, Gradle, Jenkins 

 

Jenkins 

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

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

SVN, Git 등 대부분의 형상 관리 도구와 연동이 가능하다. 

친숙한 Web GUI 제공으로 사용이 쉽다. 

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

 

*서블릿 Server Side Applet 

클라이언트의 요청을 처리해주기 위해 서버 측에서 실행되는 작은 프로그램 

 

*서블릿 컨테이너 

서블릿을 실행하고 서블릿의 생명주기를 관리하는 역할을 하는 것 

 

Gradle 

Groovy를 기반으로 오픈 소스 형태의 자동화 도구로, 안드로이드 앱 개발 환경에서 사용된다. 

 

*Groovy 

Java에 Python, Ruby, Smalltalk 등의 장점을 결합한 동적 객체 지향 프로그래밍 언어 

 

DSL Domain Specific Language 

웹페이지 영역에 특화되어 사용되는 HTML과 같이 특정한 도메인(영역, 용도)에 맞게 기능을 구성한 언어 

728x90
반응형