정보처리기사/소프트웨어 개발
제품 소프트웨어 패키징 1
RangA
2023. 5. 17. 16:38
제품 소프트웨어 패키징
01. 제품 소프트웨어 패키징
1) 제품 소프트웨어 패키징의 개념
- 완료된 제품 소프트웨어를 고객에게 전달하기 위한 형태로 묶어내는 것
- 설치와 사용에 필요한 절차 및 환경 등 전반적인 내용을 포함하는 메뉴얼을 작성함
- 제품 소프트웨어에 대한 패치 개발과 갱신을 위한 버전 관리를 수행하는 능력
- 고객 편의성 및 사용자 실행 환경을 우선적으로 고려하여 진행함
- 제품 소프트웨어 메뉴얼 및 제품 소프트웨어 버전 관리를 포함함
2) 제품 소프트웨어 패키징의 특성
- 제품 소프트웨어는 개발자가 아닌 사용자 중심으로 진행됨
- 신규 소프트웨어 소스 및 변경 소프트웨어의 개발 소스를 식별함
- 식별 소스를 모듈화하여 상용 제품으로 패키징함
- 고객 편의성 중심으로 진행되며 고객의 편의성을 위해 신규 소프트웨어 작업의 이력이나 변경 소프트웨어 이력을 확인
- 버전 관리 및 릴리즈 노트를 통해 지속적으로 관리함
- 사용자의 실행 환경을 이해하고, 범용 환경에서 사용이 가능하도록 일반적인 배포 형태로 분류하여 패키징이 진행됨
3) 소프트웨어의 모듈 및 패키징
1. 소프트웨어의 모듈화
- 소프트웨어 설계에서 기능 단위로 분해하고 추상화되어 재사용 및 공유 가능한 수준으로 만들어진 단위를 모듈로 규정
- 소프트웨어의 성능을 향상시키거나 시스템의 디버깅, 테스트, 통합 및 수정을 용이하도록 하는 소프트웨어 설계 기법을 모듈화라고 함
- 제품 소프트웨어 패키징은 모듈들을 통해 수행함
- 최초 소스 개발 시 해당 모듈의 개념 및 모듈화를 통해 제품 소프트웨어 패키징을 가져감
- 소프트웨어의 모듈 및 모듈화를 이해하고 이를 빌드하는 기법을 통해 패키징을 성공적으로 수행함
2. 제품 소프트웨어의 모듈 및 패키징
- 제품 소프트웨어에서는 모듈의 개념을 정확하게 적용
- 제품 소프트웨어를 기능 단위로 패키징해야 배포 시 성능을 향상시킬 수 있음
- 배포 전 시험 및 수정 등의 작업 진행에서도 모든 것을 모듈 단위로 분류하여 작업을 진행함
4) 제품 소프트웨어 모듈 빌드 기법
- 소프트웨어 빌드(Build)
- 소스 코드 파일을 컴퓨터에서 실행할 수 있는 제품 소프트웨어의 단위로 변환하는 과정이나 결과물을 의미
- 소스 코드 파일이 실행 코드로 변환되는 컴파일 과정이 핵심으로 수행됨
- 빌드에 따른 결과물에 대한 상세 확인이 필요함
- 제품 소프트웨어를 위한 빌드 기법
- 빌드의 실행 단위 컴파일, 이를 위한 빌드 도구의 특징 및 사례들의 사전 확인이 필요함
- 빌드 도구는 이를 도와주는 유용한 유틸리티이며 이를 활용하여 컴파일 이외에도 완성을 위한 다양한 일을 할 수 있음
- 빌드 과정을 문서화하면 다양한 이력에 대한 관리가 가능
- 대표적인 도구들로는 Ant, Make, Maven, Gradle 등이 있음
02. 사용자 중심의 패키징
1) 사용자 실행 환경의 개념
- 고객 편의성을 위해 사용자 실행 환경을 우선 고려하여 패키징을 진행
- 사용자 환경은 운영체제부터 시작하여 실행 환경, 시스템 사양 및 고객의 사용 방법까지 상세 분류하여 실행 환경을 사전 정의함
- 여러 가지 실행 환경이 나오게 된다면 해당 경우에 맞는 배포본을 분류하여 패키징 작업을 여러 번 수행할 수도 있음
2) 사용자 관점에서의 패키징 고려사항
- 운영체제, 중앙 처리 장치, 메모리 등 수행에 필요한 최소 환경을 정의함
- 사용자가 이해할 수 있는 인터페이스를 제공
- 메뉴얼과 일치시켜 패키징 작업을 수행함
- 제품 소프트웨어는 하드웨어와 함께 통합 적용될 수 있도록 함
- 패키징은 Managed Service 형태로 제공하도록 함
- Managed Service
- 회사 내 컴퓨터 시스템과 네트워크 자원을 제 3자가 대신 운영, 관리해주는 서비스
- 고객의 컴퓨터 시스템과 네트워크를 24시간 모니터링하고 장애 및 오류가 발생하면 즉시 조치를 취하는 서비스
- Managed Service
- 제품 소프트웨어는 고객 편의성을 위헤 안정적 배포가 가장 중요함
- 다양한 사용자 그룹의 요구사항을 반영하기 위해 항상 패키징의 변경 및 개선 관리를 고려하여 패키징을 배포함
3) 사용자 중심의 패키징 작업 수행 순서
- 기능 식별
- 신규 개발 소스의 목적 및 기능을 식별
- 기능 수행을 위한 입출력 데이터 : 소스 기능을 통해 처리되는 int, char, float 등의 데이터
- 전체적인 기능 정의 및 데이터 흐름 : 소스 내부 메인 함수의 기능 식별, 관련 데이터의 흐름 및 출력 절차를 확인
- 함수 단위 및 출력에 대한 상세 정의 : 메인 함수 이외의 호출 함수를 정의하고 이에 대한 출력값을 식별
- 모듈화
- 모듈 단위 분류 및 모듈화를 순서에 맞게 진행
- 수행을 위한 기능 단위 및 서비스 분류 : 모듈로 분류할 수 있는 기능 및 서비스를 단위로 분류
- 패키징 개념에서의 기능의 공유와 재활용 분류 : 여러 번 호출되어지는 공유, 재활용 함수를 분류
- 모듈 간 결합도와 응집도 식별 : 모듈화를 위해 결합도와 응집도를 식별해 내고 모듈화 수행을 준비
- 빌드 진행
- 제품 소프트웨어의 빌드 도구를 활용한 빌드를 단위별로 진행
- 신규 개발 소스 및 컴파일 결과물 준비 : 빌드 진행을 위한 신규 소스 및 결과물을 준비
- 정상 기능 단위 및 서비스 분류 : 정상으로 빌드가 되는 기능 및 서비스를 사전에 분류
- 빌드 도구 확인 및 정상 수행 : 빌드 도구의 사전 선택 확인 및 빌드 도구를 통한 빌드를 수행
- 컴파일 이외의 도구의 다양한 기능 확인 : 컴파일 이외의 Editor, CI 등 관련 도구들에 대한 추가 학습 진행
- 사용자 환경 분석
- 고객 편의성을 위한 사용자의 요구사항 및 사용 환경을 사전에 분석
- 최소 사용자 환경 사전 정의 : 패키징 수행 시 실제 사용할 사용자의 사용자 환경을 사전에 정의
- 모듈 단위의 여러 가지 기능별 사용자 환경 테스트 : 수행한 모듈화의 결과에 따른 여러 가지 사용자 테스트를 수행
- 패키징 적용 시험
- 최종 패키징에 대해서 사용자 입장에서의 불편한 점을 체크
- 사용자 환경에서의 패키징 적용 시험 : 사용자 환경과 똑같은 상황으로 패키징을 적용하여 소프트웨어 적용 시험 수행
- 사용자 인터페이스 및 시스템상의 편의성 체크 : 소프트웨어가 사용자 인터페이스 및 시스템 환경과 맞지 않는 것이 있는지, 불편한 부분이 있는지 사전에 체크
- 패키징 변경 개선
- 사용자 입장을 반영하여 패키징에서의 변경 및 개선 진행
- 변경 부분을 정리 : 재 패키징을 대비해 변경 부분을 정리
- 개선 포인트 도출 : 현재 사용자 환경 내에서 가능한 최소 수준의 개선 포인트 도출
- 재배포 수행 : 도출된 변경 점을 기준으로 모듈, 빌드를 수정하고 재배포 수행