소프트웨어 패키징
소프트웨어 패키징이란 개발이 완료된 제품 소프트웨어를 고객에게 전달하기 위한 형태로 패키징하고 설치와 사용에 필요한 환경 및 절차 등 전체 내용을 포괄하는 매뉴얼을 작성하는 것이다. 여기서 말하는 매뉴얼이란 소프트웨어의 개발 단계에서부터 적용 기준이나 패키징 이후 설치 및 사용자 측면의 주요 내용을 문서로 기록한 것으로 사용자 중심으로 기술한 기능 및 방법을 나타낸 안내서라고 볼 수 있다. 제품 소프트웨어에 대한 패치 개발과 업그레이드를 위해 버전 관리도 수행한다. 버전 관리는 기본적으로 작성된 패키지의 수정 내용을 관리하고 소프트웨어의 변화를 시간 흐름에 따라 기록하여 특정 시점의 버전을 다시 불러올 수 있도록 관리하는 체계를 의미한다. 제품 소프트웨어는 뚜렷하게 드러나는 적용상의 특성이 있는데, 우선 개발자가 아닌 사용자 중심으로 진행된다. 신규 또는 수정된 개발 소스를 구별하고 이를 모듈화하여 상용 제품으로 패키징하는 것이다. 소프트웨어 모듈화를 이해하고 빌드하는 기법을 통해서 패키징을 성공적으로 수행할 수 있다. 소프트웨어 설계에서 기능 단위로 분해하고 재사용과 공유가 가능한 수준으로 만들어진 단위를 모듈이라 한다. 또 소프트웨어의 성능을 향상하고 시스템의 디버깅, 통합 등을 용이하도록 하는 설계기법을 모듈화라고 한다. 모듈화를 응용하면 무궁무진한 장점이 있는데 우선 프로그램을 효율적으로 관리할 수 있고 성능을 향상할 수 있다. 즉, 소프트웨어 전반에 걸친 이해도를 높일 수 있고 복잡성을 감소시킨다. 기능의 분리가 가능하므로 인터페이스가 단순하며 오류의 파급 효과를 최소화 할 수 있다는 것도 큰 장점이다. 모듈이 재사용이 가능하므로, 개발 단계에서 가장 많은 시간이 소요되는 유지 보수 단계가 한층 수월해진다. 따라서 소프트웨어 패키징에서는 모듈의 개념을 정확하게 적용하고 이에 맞는 기능 단위로 패키징하는 것이 필요하다. 소프트웨어 빌드(Softwatr Build)를 통해서 개발 소스 코드를 실행 할 수 있는 소프트웨어의 단위로 변환할 수 있다. 이를 도와주는 것을 소프트웨어 빌드 도구이다. 소프트웨어 빌드는 소스 코드 파일이 실행 코드로 변환되는 컴파일 과정을 핵심으로 수행되며, 빌드에 따른 결과물에 대한 상세 확인이 필요하다. 그러려면 소프트웨어 빌드 시스템의 기본 개념을 알고, 빌드의 실행 단위 컴파일 등에 대한 사전 확인이 필요하다. 소프트웨어 빌드 도구를 활용하여 컴파일 이외에도 소프트웨어의 완성을 위해 다양한 작업을 수행할 수 있다. 고객의 편의성을 위해 수정 이력을 확인하고 이를 버전 관리와 릴리즈 노트 등을 통해 지속해서 관리한다. 또한 사용자의 소프트웨어 실행 환경을 이해하고 범용 환경에서 사용이 가능하도록 일반적인 배포 형태로 분류하여 패키징이 진행된다.
소프트웨어 패키징 작업의 이해
앞서 설명했듯, 소프트웨어 패키징은 사용자를 위해 진행되는 작업으로서, 사용자의 편의와 실행환경을 우선하여 고려하여 진행하여야 한다. 여기서 말하는 사용자 환경은 OS부터 시작하여 시스템 사양 및 사용자의 사용 방법까지 상세하게 분류하여 미리 실행환경을 정의한다. 시스템 사양은 OS, CPU 메모리 등의 수행 최소 환경을 정의한다. 만약 여러 가지 실행환경이 도출되면 해당 경우에 맞는 배포본을 또다시 분류하여 패키징 작업을 여러 번 수행 할 수도 있다. 사용자가 직관적으로 확인할 수 있는 UI(User Interface)를 제공하고, 매뉴얼과 일치하는지 확인하면서 작업을 진행한다. 또한, 제품 소프트웨어는 하드웨어와 함께 통합될 수 있도록 Managed Service(매니지드 서비스) 형태로 제공하는 것이 좋다. Managed Service란 IT 자원이나 서비스 운영과 관리를 제삼자를 통해 대신 수행하도록 하는 것으로, 사용자와 네트워크 시스템을 24시간 모니터링하고 오류가 발생하면 즉시 수정하는 등 체계적인 운영관리와 유지보수를 하는 것을 말한다.마지막으로 사용자의 편의성을 위해 안정적인 배포가 가장 중요한 요소라고 할 수 있다. 다양한 사용자군의 요구 사항을 제대로 반영하기 위해서 항상 패키징의 수정 사항 및 개선 관리를 고려하면서 패키징을 배포해야 한다.
'소프트웨어 공학' 카테고리의 다른 글
미들웨어(Middleware)의 정의 및 종류 (0) | 2021.11.18 |
---|---|
릴리즈 노트 작성 시 고려사항과 작성 순서 (0) | 2021.11.18 |
자료구조(Data Structure)의 개념과 특징 및 이점 (0) | 2021.11.17 |
소프트웨어 버전 관리의 개념과 버전 관리 도구의 종류 (0) | 2021.11.17 |
OSI 참조 모델(Open Systems Interconnection Reference Model)의 정의와 계층 기능 (0) | 2021.11.17 |
댓글