릴리즈 노트
1) 정의
- 조직의 최종 사용자인 고객과 잘 정리된 릴리즈 정보를 공유하는 문서
- 상세 서비스를 포함하여 회사가 제공하는 제품을 만들어 수정, 변경 또는 개선하는
일련의 작업들이며, 릴리즈 정보들이 이러한 문서를 통해 제공된다
- 이 정보들은 철저하게 테스트를 진행하고, 개발 팀에서 제공하는 사양에 대해 최종 승인된 후
문서를 통해 배포된다
2) 릴리스 노트 작성 항목
Header | 문서 이름(릴리즈 노트 이름), 제품 이름, 제품 번호, 릴리즈 날짜, 참고 날짜, 노트 버전 등 |
개요 | 제품 및 변경에 대한 간략하고 전반적인 개요 |
목적 | 릴리즈 버전의 새로운 기능 목록과 릴리즈 노트의 목적에 대한 간략한 개요 버그 수정 및 새로운 기능 기술 |
이슈 요약 | 버그의 간단한 설명 또는 릴리즈 추가 항목 요약 |
재현 항목 | 버그 발견에 따른 재현 단계 기술 |
수정/개선 내용 | 수정/개선의 간단한 설명 기술 |
사용자 영향도 | 버전 변경에 따른 최종 사용자 기준의 기능 및 응용 프로그램상의 영향도 기술 |
SW 지원 영향도 | 버전 변경에 따른 SW의 지원 프로세스 및 영향도 기술 |
노트 | SW 및 HW Install 항목, 제품, 문서를 포함한 업그레이드 항목 메모 |
면책 조항 | 회사 및 표준 제품과 관련된 메시지 프리웨어, 불법 복제 방지, 중목 등 참조에 대한 고지사항 |
연락 정보 | 사용자 지원 및 문의 관련한 연락처 정보 |
패키징 도구 구성요소
구성요소 | 설명 |
암호화 Encryption | 콘텐츠 및 라이선스를 암호화하고, 전자 서명을 할 수 있는 기술 PKI, Symmetric/Asymmetric Encryption, Digital Signature |
키 관리 Key Management | 콘텐츠를 암호화한 키에 대한 저장 및 배포 기술 Centralized, Enveloping |
암호화 파일 생성 Packager | 콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술 Pre-packaging, On-the-fly Packaging |
식별 기술 Identification | 콘텐츠에 대한 식별 체계 표현 기술 DOI, URI |
디지털 저작권 관리 (DRM)의 기술 요소 ⭐⭐⭐
구성요소 | 설명 |
저작권 표현 Right Expression |
라이선스의 내용 표현 기술 XrML/MPGE-21 REL, ODRL |
정책 관리 Policy Management |
라이선스 발급 및 사용에 대한 정책표현 및 관리기술 XML, Contents Management System |
크랙 방지 Tamper Resistance |
크랙에 의한 콘텐츠 사용 방지 기술 Code Obfuscation, Kernel Debuger Detection, Module Certification Secure DB, Secure Time Management, Encryption |
인증 Authentication |
라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술 User/Device Authentication, SSO, Digital Certificate |
저장권 보호 측면의 패키징도구 활용
1) 저작권 관리의 흐름
- 콘텐츠 제공자, 분배자, 소비자 간의 패키징 배포 및 관리의 주체를 중앙의 클리어링 하우스에서
키 관리 및 라이선스 발급 관리
2) 저작권 관리 구성 요소
구성요소 | 설명 |
콘텐츠 제공자 Contents Provider |
콘텐츠를 제공하는 저작권자 |
콘텐츠 분배자 Contents Distributor |
쇼핑몰 등으로써 암호화된 콘텐츠 제공 |
패키저 Packager |
콘텐츠를 메타 데이터와 함께 배포 가능한 단위로 묶는 기능 |
보안 컨테이너 | 원본을 안전하게 유통하기 위한 전자적 보안 장치 |
DRM 컨트롤 | 배포된 콘텐츠의 이용 권한을 통제 |
클리어링 하우스 Clearing House |
키 관리 및 라이선스 발급 관 |
제품 소프트웨어의 메뉴얼 작성
1) 제품 소프트웨어의 메뉴얼
- 제품 소프트웨어 개발단계부터 적용한 기준이나 패키징 이후 설치 및 사용자 측면의 주요 내용
등을 문서로 기록한 것
- 사용자 중심의 기능 및 방법을 나타낸 설명서와 안내서
2) 설치 메뉴얼 작성의 기본 사항
- 설치 메뉴얼은 개발자의 기준이 아닌 사용자의 기준으로 작성
- 최초 설치 실행부터 완료까지 순차적으로 진행
- 각 단계별 메시지 및 해당 화면을 순서대로 전부 캡쳐 하여 설명
- 설치 중간에 이상 발생 시 해당 메시지 및 에러에 대한 내용을 분류하여 설명
주요 국제 표준화 기구
1) ISO 국제표준화기구
- 설립 : 1947년, 비정부기구 (NGO)
- 역할 : 지적, 과학, 기술, 경제 등 일반 분야의 국제표준 제정, 보급
2) IEC 국제전기기술위원회
- 설립 : 1906년, 비정부기구 (NGO)
- 역할 : 전기전자 분야의 국제표준 제정, 보급
3) ITU 국제전기통신연합
- 설립 : 1865년, UN산하 전문기구
- 역할 : 유무선 통신, 전파, 방송, 위성주파수 등에 대한 기술기준 및 표준의 개발, 보급과
국제협력 수행
국제표준 : 소프트웨어 품질 관점
품질 표준/인증 | 설명 |
ISO/IEC 9126 | 품질 특성과 측정 기준 제시 기능성, 신뢰성, 사용성, 효율성, 유지성, 보수성, 이식성 평가 방법 없음 |
ISO/IEC 14598 | 소프트웨어 제품평가 표준개요, 측정계획관리, 개발자, 획득자, 평가자, 평가모델 |
ISO/IEC 12119 | 정보기술, 패키지 소프트웨어에 대한 품질 요구사항 및 시험을 위한 국제 표준 제품 설명서, 사용자 문서, 실행 프로그램 |
ISO/IEC 25000 | 소프트웨어 품질 평가 모델인 ISO/IEC 9126와 소프트웨어 평가 절차 모델 ISO/IEC 14598, ISO/IEC 12119을 통합 |
Good S/W | 정보통신기술협화산하 S/W 시험 센터 주관 |
소프트웨어 품질 특성 (ISO/IEC 9126)
특성 | 설명 |
기능성 | 명시된 요구와 내재된 욕구를 만족하는 기능 (하위 특성 : 적합성, 상호 운용성, 보안성, 정확성, 준수성) |
신뢰성 | 규정된 성능 수준 유지 및 오류 방지 (하위 특성 : 고장 허용성, 회복성, 성숙도, 준수성) |
사용성 | 사용자에 의해 이해, 학습 ,선호 (하위 특성 : 학습성, 운영성, 친밀성, 준수성) |
효율성 | 주어진 자원을 사용하여 요구된 성능제공 (하위 특성 : 반응 시간, 지원 특성, 준수성) |
유지보수성 | 운영환경 및 요구사항, 기능적 사양에 따른 소프트웨어 수정, 개선 (하위 특성 : 분석성, 변경성, 안정성, 테스트 용이성, 준수성) |
이식성 | 다양한 환경에서 운영 가능 (하위 특성 : 적응성, 설치성, 공존성, 대체성, 준수성) |
제품 소프트웨어 버전관리
1) 버전 관리
- 제품 소프트웨어 버전 관리는 SW 개발과 관련하여 코드와 라이브러리, 관련 문서 등
시간의 변화에 따른 변경을 관리하는 전체 활동을 의미
- 동일한 소스 코드에 대한 여러 버전 관리
- 팀 단위로 개발 중인 소스 코드나, 설계도 등의 디지털 문서를 관리
- 문서의 변경 사항들에 숫자나 문자로 이뤄진 "버전"을 부여해서 구분
- 버전을 통해 변경된 시간, 변경된 사항, 변경 작업을 행한자를 파악할 수 있다
2) 버전 관리 도구 유형
유형 | 설명 |
공유 폴더 방식 RCS, SCCS |
- 매일 개발 오나료 파일은 약속된 위치의 공유 폴더에 복사 - 담당자 한 명이 매일 공유 폴더의 파일을 자기 PC로 복사하고 컴파일하여 에러 확인과 정상 동작 여 부 확인 - 정상 동작일 경우 다음 날 각 개발자들이 동작 여부 확인 |
클라이언트 / 서버방식 CVS, SVN |
- 중앙에 버전 관리 시스템이 항시 동작 - 개발자들의 현재 작업 내용과 이전 작업내용 축적 용이 - 서로 다른 개발자가 같은 파일을 작업했을 때 경고 출력 - GUI 툴을 이용 모니터링 가능 |
분산 저장소 방식 Git, Bitkeeper 등 |
- 로컬 저장소와 원격저장소 구조 - 중앙의 저장소에서 로컬에 복사(clone)한 순간 개발자 자신만의 로컬 저장소에 생성 - 개발 완료한 파일 수정 이후 로컬 저장소에 커밋한 이후 다시 원격 저장소에 반영하는 방식 |
3) 현업에서 쓰이는 다양한 버전 관리 도구별 특징
도구 | 설명 |
CVS Concurrent Version System |
- 서버와 클라이언트로 구성되어 다수의 인원이 동시에 범용적인 운영체제로 접근 가능하여 버전 관리를 가능케 한다 - Client가 이클립스에 내장되어 있다 |
SVN Subversion |
- GNU의 버전 관리 시스템으로 CVS의 장점은 이어받고 단점은 개선하여 2000년에 발표되었다. - 사실상 업계 표준으로 사용되고 있으며 SVN으로 불리고 있다 |
RCS Revision Control System |
- CVS와 달리 소스파일의 수정을 한 사람만으로 제한하여 다수의 사람이 파일의 수정을 동시에 할 수 없도록 파일을 잠금하는 방식으로 버전 컨트롤을 수행한다 |
Bitkeeper | - SVN과 비슷한 중앙 통제 방식의 버전 컨트롤 툴로서 대규모 프로젝트에서 빠른 속도를 내도록 개발 되었다 |
Git | - 기존 리눅스 커널의 버전 컨트롤을 하는 Bitkeeper를 대체하기 위해서 나온 새로운 버전 컨트롤로 현재의 리눅스는 이것을 통해 버전 컨트롤이 되고 있다 - Git는 속도에 중점을 둔 분산형 버전 관리 시스템(DVCS)이며, 대형 프로젝트에서 효과적이고 실제로 용이하다 - Git는 SVN과 다르게 Commit은 로컬 저장소에서 이루어지고 push라는 동작으로 원격 저장소에 반영된다 - 받을 때도 Pull 또는 Fetch로 서버에서 변경된 내역을 받아 올 수 있다 |
Clear Case | - IBM에서 제작되었다 - 복수 서버, 복수 클라이언트 구조이며 서버가 부족할 때 필요한 서버를 하나씩 추가하여 확장성을 기할 수 있다 |
빌드 자동화 도구
1) 정의
- 빌드란 소프트웨어를 생성, 테스트, 검사하여 배포하기 위한 모든 것
- 소스코드 파일들을 실행할 수 있는 소프트웨어로 변환하는 과정에 필요한 도구
도구 | 설명 |
Ant | - 아파치 소프트웨어 재단에서 개발한 소프트웨어 - XML 기반의 빌드 스크립트를 사용하며 자유도와 유연성이 높다 |
Maven | - Ant의 대안으로 개발됨 - 자동으로 필요한 라이브러리 파일을 불러온다 |
Gradle (그래들) | - 기존의 Ant와 Maven을 보완하여 개발된 빌드 도구이다 - Task는 작업의 최소 단위이며 태스크 단위로 실행한다 - Groovy를 기반으로 하며 안드로이드 스튜디오의 공식 빌드 시스템 |
Jenkins (젠킨스) | - 자바 기반의 오픈소스, 가장 많이 활용되는 빌드 자동화 도구 - 소프트웨어 개발 시 지속적 통합 서비스를 제공하는 툴 |
정리하기
1. 릴리즈 노드
- 정리된 릴리즈 정보를 공유하는 문서
- Header, 개요, 목적, 이슈 요약, 재련 항목, 수정/개선 내용, 사용자 영향도, SW 지원 영향도, 노트, 면책 조항, 연락 정보
2. 패키징 도구 구성요소
- 암호화(Encryption), 키 관리(Key Management), 암호화 파일 생성(Packager), 식별 기술(Identification)
3. 디지털 저작권 관리(DRM)의 기술 요소
- 저작권 표현(Right Expression), 정책 관리(Policy Management), 크랙 방지(Tamper Resistance),
인증(Authentication)
4. 저작권 보호 측면의 패키징도구 활용
- 콘텐츠 제공자, 분배자, 소비자 간의 키 관리 및 라이선스 발급 관리
- 구성 요소 : 콘텐츠 제공자(Contents Provider), 콘텐츠 분배자(Contents Distributor), 패키저(Packager),
보안컨테이너, DRM 컨트롤러, 클리어링 하우스(Clearing House)
5. 제품 소프트웨어의 메뉴얼 작성
- 사용자 중심의 기능 및 방법을 나탄내 설명서와 안내서
- 최초 설치 실행부터 완료까지 순차적으로 진행
6. 주요 국제 표준화 기구
- ISO (국제표준화기구), IEC (국제전기기술위원회), ITU (국제전기통신연합)
7. 국제표준 : 소프트웨어 품질 관점
- ISO/IEC 9126, ISO/IEC 14598, ISO/IEC 12119, ISO/IEC 25000, Good S/W
8. 소프트웨어 품질 특성 (ISO/IEC 9126)
- 기능성, 신뢰성, 사용성, 효율성, 유지 보수성, 이식성
9. 제품 소프트웨어 버전관리
- 도구 유형 : 공유 폴더 방식 (RCS, SCCS), 클라이언트/서버방식 (CVS, SVN),
분산 저장소 방식 (Git, Bitkeeper, Clear Case 등)
10. 빌드 자동화 도구
- Ant, Maven, Gradle(그래들), Jenkins(젠킨스)
'정보처리기사 > 2과 소프트웨어 개발' 카테고리의 다른 글
5. 인터페이스 구현 (0) | 2023.09.23 |
---|---|
4. 애플리케이션 테스트 관리 (0) | 2023.09.22 |
2. 통합 구현 (0) | 2023.09.20 |
1. 데이터 입/출력 구현 (0) | 2023.09.19 |