KR101092373B1 - 소프트웨어 패키지의 생성 및 설치를 위한 시스템 및 방법 - Google Patents

소프트웨어 패키지의 생성 및 설치를 위한 시스템 및 방법 Download PDF

Info

Publication number
KR101092373B1
KR101092373B1 KR1020100001169A KR20100001169A KR101092373B1 KR 101092373 B1 KR101092373 B1 KR 101092373B1 KR 1020100001169 A KR1020100001169 A KR 1020100001169A KR 20100001169 A KR20100001169 A KR 20100001169A KR 101092373 B1 KR101092373 B1 KR 101092373B1
Authority
KR
South Korea
Prior art keywords
code
software package
intermediate language
processing means
converting
Prior art date
Application number
KR1020100001169A
Other languages
English (en)
Other versions
KR20110080772A (ko
Inventor
김수현
남현우
Original Assignee
한국과학기술연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국과학기술연구원 filed Critical 한국과학기술연구원
Priority to KR1020100001169A priority Critical patent/KR101092373B1/ko
Publication of KR20110080772A publication Critical patent/KR20110080772A/ko
Application granted granted Critical
Publication of KR101092373B1 publication Critical patent/KR101092373B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Abstract

소프트웨어 패키지 설치 시스템은, 설치될 소프트웨어에 대응되는 중간 언어 코드 및 변환 코드를 포함하는 소프트웨어 패키지를 생성하는 소프트웨어 패키지 생성 모듈; 처리 수단을 포함하며, 상기 소프트웨어 패키지를 수신하여 소프트웨어가 설치되는 플랫폼; 및 상기 변환 코드를 이용하여 상기 중간 언어 코드를 상기 처리 수단에 대응되는 실행파일로 변환하는 소프트웨어 패키지 설치 모듈을 포함할 수 있다. 상기 소프트웨어 패키지는 CPU 독립적인 중간 언어 코드의 형태로 배포되어 설치 시점에 플랫폼의 CPU에 맞는 실행파일로 변환되므로 다양한 CPU를 지원할 수 있다.

Description

소프트웨어 패키지의 생성 및 설치를 위한 시스템 및 방법{SYSTEM AND METHOD FOR GENERATING SOFTWARE PACKAGE AND INSTALLING THE SAME}
실시예들은 소프트웨어 패키지의 생성 및 설치를 위한 시스템 및 방법과, 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체에 관한 것이다.
패키지(package)라는 것은 사용자가 쉽게 소프트웨어의 설치와 설정 작업들을 할 수 있도록 제공되는 설치 파일을 말하며, 소프트웨어에 대한 정보와 설정 내용 및 실행파일 등을 포함한다. 실행파일이란 소프트웨어를 실행시키기 위한 코드 및 데이터 헤더(data header) 정보들을 담고 있는 파일을 말하며 운영체제에 따라 COFF(Common Object File Format), PE(Portable Executable), ELF(Executable and Linkable Format)와 같은 포맷을 사용하고 있다. 코드는 CPU가 이해할 수 있는 기계어를 말하며 컴파일(compile) 시에 C 또는 C++ 등과 같은 상위 레벨 소스 코드(source code)로부터 생성된다.
마이크로소프트(Microsoft) 사의 윈도우(Windows) 계열 운영체제는 인스톨 실드(Install shield) 또는 NSIS(Nullsoft Scriptable Install System)와 같은 패키징 도구들을 이용한다. 일반적으로 "setup.exe" 등의 명칭을 갖는 단일 실행파일 형태로 소프트웨어 패키지의 설치 파일을 배포하고 있다. 사용자는 설치 파일들을 웹 페이지(web page)에서 다운로드(download) 받거나 자기 디스크, 광학 디스크 또는 USB(Universal Serial Bus) 저장소 등의 저장 매체를 사용하여 복사하는 등의 방법으로 구하게 된다. 사용자가 설치 파일을 실행한 후 설치 GUI(Graphic User Interface) 화면을 사용하여 설치될 장소 및/또는 세부 옵션 등을 설정한 후 최종적으로 설치 버튼을 클릭하게 되면 패키지는 자동으로 소프트웨어의 설치를 진행한다.
이와 유사하게 리눅스(Linux) 운영체제에서는 DEB 또는 RPM과 같은 패키지 포맷을 사용하여 소프트웨어를 배포한다. 사용자들은 DEB 또는 RPM 등으로 패키징된 소프트웨어 패키지들을 윈도우에서와 마찬가지로 다운로드 받거나 복사하는 등의 방법으로 구할 수 있다. 그러나 윈도우와 달리 리눅스 운영체제에서는 설치 도구를 이용하여 패키지를 설치한다. 설치 도구들은 패키지의 의존성 검사나 관련 설정들을 쉽게 할 수 있도록 도와주게 된다. 일반적으로, 배포되는 패키지들의 파일명 형식은 RPM 이나 DEB 모두 "package-1.0.0-i386.rpm" 또는 "package-1.0.0-arm.deb" 등과 같이 파일명에 "패키지 이름-버전(version)-지원하는 CPU"를 명시하게 된다.
이처럼 현재까지는 리눅스 운영체제를 지원하는 소프트웨어의 컴파일 기법 및 패키징 기법으로는 특정 CPU에 한정된 패키지만을 제작할 수 있었다. 따라서 하나의 패키지는 하나의 CPU에서 한정하여 사용될 수 있으며, 다양한 CPU를 지원하기 위해서는 CPU에 따라 패키지 파일들이 개별적으로 제작되어 배포되고 관리되어야 하는 비용이 발생하였다.
본 발명의 일 측면에 따르면, 하나의 소프트웨어 패키지를 이용하여 다양한 CPU를 지원할 수 있는 소프트웨어 패키지의 설치 시스템 및 방법을 제공할 수 있다.
본 발명의 다른 측면에 따르면, 특정 CPU에 의존적이지 않은 중간 언어 코드가 포함된 소프트웨어 패키지를 생성할 수 있는 소프트웨어 패키지 생성 모듈 및 방법을 제공할 수 있다.
본 발명의 또 다른 측면에 따르면, 상기 소프트웨어 패키지를 해당 CPU에 대응되는 실행파일로 변환하여 소프트웨어를 설치할 수 있는 소프트웨어 패키지 설치 모듈 및 방법을 제공할 수 있다.
일 실시예에 따른 소프트웨어 패키지 설치 시스템은, 설치될 소프트웨어에 대응되는 중간 언어 코드 및 변환 코드를 포함하는 소프트웨어 패키지를 생성하는 소프트웨어 패키지 생성 모듈; 처리 수단을 포함하며, 상기 소프트웨어 패키지를 수신하여 소프트웨어가 설치되는 플랫폼; 및 상기 변환 코드를 이용하여 상기 중간 언어 코드를 상기 처리 수단에 대응되는 실행파일로 변환하는 소프트웨어 패키지 설치 모듈을 포함할 수 있다.
일 실시예에 따른 소프트웨어 패키지 생성 모듈은, 소프트웨어의 소스 코드를 중간 언어 코드로 변환하는 변환부; 및 상기 중간 언어 코드 및 상기 중간 언어 코드를 하나 이상의 유형의 실행파일로 변환하기 위한 변환 코드를 포함하는 소프트웨어 패키지를 생성하는 패키징부를 포함할 수 있다.
일 실시예에 따른 소프트웨어 패키지 설치 모듈은, 처리 수단을 포함하는 플랫폼에 소프트웨어 패키지를 설치하기 위한 소프트웨어 패키지 설치 모듈로서, 설치될 소프트웨어에 대응되는 중간 언어 코드 및 변환 코드를 포함하는 소프트웨어 패키지를 전달받고, 상기 변환 코드를 이용하여 상기 중간 언어 코드를 상기 처리 수단에 대응되는 어셈블러 코드로 변환하는 변환부; 및 상기 어셈블러 코드를 상기 처리 수단에 대응되는 실행파일로 변환하는 어셈블러부를 포함할 수 있다.
일 실시예에 따른 소프트웨어 패키지의 설치 방법은, 설치될 소프트웨어에 대응되는 중간 언어 코드 및 상기 중간 언어 코드를 하나 이상의 유형의 실행파일로 변환하기 위한 변환 코드를 포함하는 소프트웨어 패키지를 생성하는 단계; 처리 수단을 포함하는 플랫폼에 상기 소프트웨어 패키지를 전달하는 단계; 및 상기 플랫폼에서 상기 변환 코드를 이용하여 상기 중간 언어 코드를 상기 처리 수단에 대응되는 실행파일로 변환하는 단계를 포함할 수 있다.
일 실시예에 따른 소프트웨어 패키지의 생성 방법은, 소프트웨어의 소스 코드를 중간 언어 코드로 변환하는 단계; 및 상기 중간 언어 코드 및 상기 중간 언어 코드를 하나 이상의 유형의 실행파일로 변환하기 위한 변환 코드를 포함하는 소프트웨어 패키지를 생성하는 단계를 포함할 수 있다.
일 실시예에 따른 소프트웨어 패키지의 설치 방법은, 처리 수단을 포함하는 플랫폼에서, 소프트웨어에 대응되는 중간 언어 코드 및 변환 코드를 포함하는 소프트웨어 패키지를 수신하는 단계; 상기 변환 코드를 이용하여 상기 중간 언어 코드를 상기 처리 수단에 대응되는 어셈블러 코드로 변환하는 단계; 및 상기 어셈블러 코드를 상기 처리 수단에 대응되는 실행파일로 변환하는 단계를 포함할 수 있다.
본 발명의 일 측면에 따르면, 소프트웨어 패키지를 특정 CPU에 의존적이지 않은 중간 언어 코드를 이용하여 배포할 수 있으므로 CPU의 종류별로 각각 패키지를 제작할 필요가 없으며 동일한 설치 방법을 제공할 수 있는 이점이 있다. 또한, 상기 소프트웨어 패키지는 종래 기술에 따른 소프트웨어 패키지의 형태와 호환성이 있으므로 개발자 및/또는 사용자의 추가적인 학습 과정을 필요로 하지 않고 이용이 가능하다.
도 1은 일 실시예에 따른 소프트웨어 패키지 설치 시스템의 구성을 도시한 개략적인 블록도이다.
도 2는 일 실시예에 따른 소프트웨어 패키지 생성 모듈에서 생성되는 소프트웨어 패키지의 구성을 도시한 개략도이다.
도 3은 일 실시예에 따른 소프트웨어 패키지 생성 모듈에서 생성되는 소프트웨어 패키지의 스크립트 파일 및 이에 대한 동작 설명을 도시한 도면이다.
도 4는 일 실시예에 따른 소프트웨어 패키지 설치 방법을 도시한 순서도이다.
이하에서는, 도면을 참조하여 실시예를 구체적으로 설명한다. 그러나, 본 발명이 하기 실시예에 의하여 제한되는 것은 아니다.
도 1은 일 실시예에 따른 소프트웨어 패키지 설치 시스템의 구성을 도시한 개략적인 블록도이다. 도 1을 참조하면, 소프트웨어 패키지 설치 시스템은 소프트웨어 패키지 생성 모듈(10), 소프트웨어 패키지가 설치될 플랫폼(platform)(20) 및 소프트웨어 패키지 설치 모듈(22)을 포함할 수 있다.
본 명세서에 기술된 실시예는 전적으로 하드웨어이거나, 부분적으로 하드웨어이고 부분적으로 소프트웨어이거나, 또는 전적으로 소프트웨어인 측면을 가질 수 있다. 본 명세서에서 "수단", "장치", "모듈" 또는 "시스템" 등은 하드웨어, 하드웨어와 소프트웨어의 조합, 또는 소프트웨어 등 컴퓨터 관련 엔티티(entity)를 지칭한다. 예를 들어, 본 명세서에서 모듈은 실행중인 프로세스, 프로세서, 객체(object), 실행파일(executable), 실행 스레드(thread of execution), 프로그램, 및/또는 컴퓨터일 수 있으나, 이에 제한되는 것은 아니다. 예를 들어, 컴퓨터에서 실행중인 애플리케이션(application) 및 컴퓨터의 양쪽이 모두 본 명세서의 모듈에 해당할 수 있다.
소프트웨어 패키지 생성 모듈(10)은 플랫폼(20)과 별개의 장치로 구성될 수 있다. 예컨대, 소프트웨어 패키지 생성 모듈(10)은 소프트웨어 개발자 측의 컴퓨터 및/또는 컴퓨터상에서 구동되는 애플리케이션일 수 있으며, 플랫폼(20)은 사용자 측의 컴퓨터 및/또는 컴퓨터상에서 구동되는 애플리케이션일 수 있다. 소프트웨어 패키지 설치 모듈(22)은 플랫폼(20)에서 구동되는 애플리케이션으로 구현될 수도 있으나, 반드시 이에 한정되는 것은 아니며 플랫폼(20)과 통신하는 독립된 장치로 구성될 수도 있다.
패키지 생성 모듈(10)은 변환부(101) 및 패키징부(packaging unit)(102)를 포함할 수 있다. 변환부(101)는, 설치하고자 하는 소프트웨어의 소스 코드를 CPU 등의 처리 수단(processing means)에 대해 독립적인 중간 언어(intermediate language) 코드로 변환하기 위한 장치 및/또는 애플리케이션일 수 있다. 이는 C 또는 C++ 등 상위 레벨 언어로 작성된 소프트웨어의 소스 코드를 IR(Intermediate Representation) 파일로 컴파일(compile)하는 것에 의하여 수행될 수 있다.
본 명세서에서 IR 파일은 가상머신(Virtual Machine; VM)의 명령어로 작성된 이미지 파일일 수 있다. 가상머신이란 실제 장치의 물리적 구성과 구별되는 가상의 컴퓨터 규격을 의미하며, 크게 프로세스(process) 가상머신 및 시스템 가상머신으로 구분할 수 있다.
프로세스 가상머신으로는 JVM(Java Virtual Machine) 또는 CLR(Common Language Runtime) 등이 있다. 프로세스 가상머신은 여러 플랫폼에서 동일한 방식으로 실행하고자 하는 프로그램을 지원하기 위하여 하드웨어 및/또는 운영체제에 독립적인 프로그래밍 환경을 제공할 수 있다. 즉, Java 또는 C#으로 작성되어 컴파일된 코드들을 가상머신이 동적으로 해석하여 실행할 수 있다. 이와 유사하게 LLVM(Low Level Virtual Machine)은 모든 프로그래밍 언어에 컴파일, 링크(link), 런타임(runtime) 등 각 시점에 프로그램을 설계된 컴파일러 기반의 가상머신 규격으로, 독립적인 명령어 집합을 가지고 있으며 다양한 CPU 코드를 생성할 수 있다.
시스템 가상머신이란, 하드웨어 가상머신이라고도 지칭하며, 각 운영체제를 실행하는 가상머신 사이의 기초가 되는 물리적인 컴퓨터를 다중화시킬 수 있다. 이와 같은 가상화를 제공하는 소프트웨어를 VMM(Virtual Machine Monitor) 또는 "하이퍼바이저(Hypervisor)라고 하며, 이를 이용하여 하나의 물리적인 컴퓨터에서 복수 개의 운영체제를 운영할 수 있다. VMware, Virtual PC, Xen 등이 이에 해당된다.
변환부(101)는, 전술한 가상머신 또는 본 명세서에 기재되지 않은 다른 적당한 가상머신 규격에 맞추어 소스 코드로부터 중간 언어 코드를 생성하기 위한 가상머신 컴파일러(VM compiler)로서, 제1 컴파일러를 포함할 수 있다. 컴파일 결과 생성된 IR 파일은 특정 CPU에 의존적이지 않으며 가상머신 규격에 따라서만 생성되며, 타겟 플랫폼(20)에서 소프트웨어 패키지의 설치 시에 해당 플랫폼(20)의 처리 수단(21)의 종류에 따라 다양한 코드로 변환될 수 있다.
패키징부(102)는, 변환부(101)에서 변환된 중간 언어 코드에, 이를 임의의 CPU에 대응되는 실행파일로 변환하기 위한 변환 코드를 더하여 소프트웨어 패키지를 생성할 수 있다. 변환 코드는 변환부(101)에서 생성된 IR 파일을 변환하기 위한 스크립트(script) 파일의 형태일 수도 있다.
도 2는 일 실시예에 따른 소프트웨어 패키지 생성 모듈(10)에서 생성되는 소프트웨어 패키지의 구성을 도시한 개략도이다. 도 2를 참조하면, 소프트웨어 패키지는 중간 언어 코드로 된 IR 파일 및 IR 파일을 CPU에 대응되는 실행파일로 변환하기 위한 스크립트 파일과, 헤더(header), 설정(configuration) 파일 등의 정보를 더 포함하여 구성될 수 있다. 소프트웨어 패키지에는 도시된 것 외에도 소프트웨어의 설치에 필요한 다른 적당한 정보가 더 포함될 수도 있다.
도 3은 일 실시예에 따른 소프트웨어 패키지 생성 모듈(10)에서 생성되는 소프트웨어 패키지에서 스크립트 파일 및 이에 대한 동작 설명을 기재한 도면이다. 도 3을 참조하면, 스크립트 파일이 실행되면 실행중인 플랫폼의 CPU의 정보를 획득하며, 획득된 CPU의 종류(예컨대, x86, ARM, PPC 등)에 따라 중간 언어 코드를 어셈블러(assembler) 코드 및 실행파일로 변환할 것을 지시하도록 구성될 수 있다. 도 3에 도시된 스크립트 파일은 단지 예시적인 것으로서, 가상머신의 규격 등에 따라 스크립트 파일은 다른 상이한 형태로 작성될 수도 있다.
이상과 같이 생성된 소프트웨어 패키지는 CPU에 의존적이지 않은 가상머신의 규격에 따라서만 생성될 수 있다. 따라서 리눅스(Linux) 운영 체제에서 사용될 수 있는 소프트웨어 패키지 파일을 예로 들 경우, 종래 기술에 따른 패키지와 달리 지원하는 CPU를 파일명에 명시할 필요가 없다. 예컨대, 일 실시예에 따라 생성된 소프트웨어 패키지의 파일명은 "package_name-1.0.0-all.rpm" 또는 "package_name-1.0.0-all.deb" 등과 같이 "패키지 이름-버전(version)-지원하는 CPU"의 형식을 취하되, 지원하는 CPU 란에는 모든 형태의 CPU를 의미하는 "all"이 기재될 수 있다. 또는 CPU 란에 임의의 CPU를 의미하는 "any"가 기재될 수도 있다.
전술한 소프트웨어 패키지의 파일명 형식은 단지 예시적인 것으로서, 일 실시예에 따라 생성된 소프트웨어 패키지는 본 명세서에 기재된 것과 상이한 다른 형식의 파일명을 가질 수도 있으며 이는 여전히 본 발명의 범위에 포함된다.
이상과 같이 구성된 소프트웨어 패키지는, 설치할 프로그램의 중간 언어 코드를 포함하도록 종래의 소프트웨어 패키지의 포맷을 확장시킨 구조로 되어 있다. 따라서, 사용자 측에서는 종래의 소프트웨어 패키지를 설치하기 위해 사용되는 것과 동일한 인터페이스(예컨대, 설치 도구 등)를 이용하여 일 실시예에 따른 소프트웨어 패키지에 접근(access)할 수 있으며, 추가적인 학습 과정을 필요로 하지 않고 이용이 가능하다.
소프트웨어 패키지 생성 모듈(10)에 의하여 생성된 CPU 독립적인 소프트웨어 패키지는 유선 및/또는 무선의 송수신 수단(미도시)에 의하여 소프트웨어를 설치할 타겟 플랫폼(20)에 전달될 수 있다. 예를 들어, 사용자가 웹 페이지(web page)를 통하여 소프트웨어 패키지를 다운로드(download)하거나 또는/또한 자기 디스크, 광학 디스크, USB(universal serial bus) 저장소 등 적당한 저장 매체를 이용하여 소프트웨어 패키지를 복사하는 것에 의해 플랫폼(20)으로 소프트웨어 패키지가 전달될 수 있다.
플랫폼(20)은 소프트웨어 패키지를 이용하여 소프트웨어를 설치하고자 하는 장치이다. 플랫폼(20)은 개인용 컴퓨터(personal computer), 노트북(notebook), 이동 장치(mobile device), PDA(personal digital assistant) 등의 적당한 전자 장치 및/또는 이들 전자 장치를 구동하기 위한 운영 체제를 포함할 수 있다. 예를 들어, 플랫폼(20)은 리눅스 운영체제를 이용하여 구동되는 컴퓨터일 수 있다.
플랫폼(20)은 CPU 등의 처리 수단(21)을 이용하여 구동될 수 있다. 또한, 플랫폼(20)은 처리 수단(21)에 연결되어 동작하는 하나 이상의 시스템 컴포넌트(미도시)(예컨대, 휘발성/비휘발성 메모리, 하나 이상의 입력 장치 및/또는 하나 이상의 출력 장치 등)를 더 포함할 수도 있다.
플랫폼(20)에 소프트웨어 패키지가 전달되면, 소프트웨어 패키지 설치 모듈(22)이 소프트웨어 패키지를 실행하여 플랫폼(20)에 소프트웨어를 설치할 수 있다. 소프트웨어 패키지 설치 모듈(22)은 변환부(221) 및 어셈블러부(assembler unit)(222)를 포함할 수 있다. 변환부(221)는 소프트웨어 패키지에 포함된 변환 코드를 실행하여, 소프트웨어 패키지의 중간 언어 코드를 플랫폼(20)의 처리 수단(21)에 대응되는 하위 레벨 언어인 어셈블러 코드로 변환할 수 있다.
예를 들어, 변환부(221)는 IR 파일을 어셈블러 파일로 변환하기 위한 가상머신 컴파일러로서, 제2 컴파일러를 포함할 수도 있다. 변환부(221)에 제2 컴파일러를 포함하는 대신 플랫폼(20)에 기존에 탑재되어 있는 가상머신 컴파일러를 이용하여 변환을 수행할 수도 있다. 또는 플랫폼(20)에 탑재된 가상머신 컴파일러가 없을 경우, 변환부(221)는 송수신부(223)로부터 가상머신 컴파일러를 전달받아 동작할 수도 있다.
어셈블러부(222)는 변환부(221)에서 변환된 어셈블러 파일을 플랫폼(20)의 운영체제에서 실행 가능한 실행파일의 형태로 변환할 수 있다. 이를 위하여, 어셈블러부(222)는 어셈블러 파일을 컴퓨터에서 실행 가능한 기계어 코드로 변환할 수 있는 어셈블러(assembler) 및 어셈블러 파일의 각 객체를 연결하는 링커(linker) 등을 포함할 수 있다. 또는 어셈블러부(222)는 플랫폼(20)에 탑재된 어셈블러 및 링커를 이용할 수도 있으며, 플랫폼(20)에 탑재된 어셈블러 및 링커가 없을 경우 송수신부(223)로부터 어셈블러 및 링커 등을 전달받아 동작할 수도 있다.
송수신부(223)는, 필요할 경우 IR 파일을 어셈블러 파일로 변환하기 위한 수단 및/또는 어셈블러 파일을 실행파일로 변환하기 위한 수단을 인터넷(internet) 등의 네트워크(network)를 통해 수신할 수 있다. 예컨대, 송수신부(223)는 소프트웨어 패키지의 변환에 필요한 프로그램을 제공하는 웹 페이지에 접속하여 해당 프로그램을 자동으로 다운로드하거나, 또는 프로그램의 설치를 유도하는 메시지를 출력하고 이에 대한 사용자의 입력에 반응하여 해당 프로그램을 다운로드할 수 있다.
변환부(221) 및 어셈블러부(222)는 송수신부(223)에서 다운로드한 프로그램을 전달받아, IR 파일의 어셈블러 파일로의 변환 및 어셈블러 파일의 실행파일로의 변환 등을 수행할 수 있다. 그러나, 플랫폼(20)에 소프트웨어 패키지의 변환을 위한 수단이 미리 탑재되어 있는 경우에는, 전술한 송수신부(223)에 의한 수신 과정은 생략될 수도 있다.
일 실시예에서, 플랫폼(20)에서 변환된 실행파일을 실행하면, 설치 장소의 지정 및 세부 설정 등을 거쳐 플랫폼(20)에 대한 소프트웨어의 설치가 완료될 수 있다. 예컨대, 소프트웨어 패키지 설치 모듈(22)은 변환된 실행파일을 원하는 위치에 복사한 후 자동으로 실행하거나, 또는 변환된 실행파일을 "setup.exe" 등의 파일명을 갖는 파일로 배포하고 사용자가 이를 실행하는 것에 의하여 소프트웨어의 설치를 수행할 수도 있다.
도 4는 일 실시예에 따른 소프트웨어 패키지의 설치 방법을 도시한 순서도이다. 도 4의 소프트웨어 패키지의 설치 방법은, 소프트웨어 패키지 생성 방법과, 생성된 소프트웨어 패키지를 이용하여 수행되는 소프트웨어 패키지 설치 방법을 포함할 수 있다.
도 4를 참조하면, 단계(S1 내지 S2)는 일 실시예에 따른 소프트웨어 패키지 생성 방법에 해당된다. 먼저, 설치될 소프트웨어의 소스 코드를 컴파일하여 CPU 독립적인 중간 언어 코드로 된 IR 파일을 생성할 수 있다(S1). 예를 들어, 소프트웨어의 소스 코드는 C 또는 C++ 등의 상위 레벨 언어로 작성될 수 있다. IR 파일은 가상머신 컴파일러를 이용하여 특정 CPU에 의존적이지 않으며 가상머신의 규격에만 따르는 IR 코드로 작성될 수 있다.
다음으로, 생성된 IR 파일 및 스크립트 파일을 포함하는 소프트웨어 패키지를 생성할 수 있다(S2). 스크립트 파일은, 소프트웨어 패키지가 설치되는 플랫폼의 CPU 정보를 판독하기 위한 코드와, IR 파일을 판독한 CPU 정보에 대응되는 실행파일로 변환하도록 지시하는 코드를 포함할 수 있다. 소프트웨어 패키지에는 IR 파일 및 스크립트 파일 외에도 필요에 따라 헤더, 설정 파일 또는 다른 적당한 정보가 더 포함될 수도 있다.
도 4에서 단계(S3 내지 S8)은 일 실시예에 따른 소프트웨어 패키지 설치 방법에 해당된다. 먼저, 생성된 소프트웨어 패키지 파일을 소프트웨어가 설치될 타겟 플랫폼에 전달할 수 있다(S3). 예를 들어, 개발자 측의 컴퓨터로부터 유선 또는 무선 통신 수단을 이용하여 타겟 플랫폼에 소프트웨어 패키지를 전송할 수 있다. 또는, 자기 디스크, 광학 디스크 또는 USB 저장소 등의 저장 매체를 이용하여 타겟 플랫폼에 소프트웨어 패키지를 복사하는 방식으로 소프트웨어 패키지를 전달할 수도 있다.
다음으로, 타겟 플랫폼에서 소프트웨어 패키지를 실행할 수 있다(S4). 이는 타겟 플랫폼에 탑재되거나 또는 타겟 플랫폼과 통신하는 소프트웨어 패키지 설치 모듈이 소프트웨어 패키지를 로드(load)하는 것에 의하여 수행될 수 있다. 소프트웨어 패키지 설치 모듈은, 소프트웨어 패키지를 실행파일로 변환하기 위한 가상머신 컴파일러를 포함하거나 플랫폼에 존재하는 가상머신 컴파일러를 이용하여 동작할 수 있다.
일 실시예에서는, 소프트웨어 패키지의 설치에 관련된 프로그램을 다운로드하는 단계를 포함할 수도 있다(S5). 즉, IR 파일을 어셈블러 파일로 변환하기 위한 수단 및/또는 어셈블러 파일을 실행파일로 변환하기 위한 수단을 인터넷 등의 네트워크를 통해 수신할 수 있다. 예컨대, 소프트웨어 패키지의 변환에 필요한 프로그램을 제공하는 웹 페이지에 접속하여 해당 프로그램을 자동으로 다운로드하거나, 또는 프로그램의 설치를 유도하는 메시지를 출력하고 이에 대한 사용자의 입력에 반응하여 해당 프로그램을 다운로드할 수 있다. 그러나, 타겟 플랫폼에 미리 변환 수단 등이 탑재되어 있을 경우에는 전술한 단계(S5)는 생략될 수도 있다.
다음으로 가상머신 컴파일러를 이용하여 소프트웨어 패키지의 IR 파일을 타겟 플랫폼의 CPU에 대응되는 어셈블러 파일로 변환할 수 있다. 이는, 소프트웨어 패키지에 포함된 스크립트 파일을 실행하여, 먼저 타겟 플랫폼의 CPU 정보를 판별하고(S6), 다음으로 판별된 CPU 정보에 따라 중간 언어 코드로 된 IR 파일을 타겟 플랫폼 CPU에 대응되는 하위 레벨 언어인 어셈블러 코드로 된 파일로 변환함으로써 수행될 수 있다(S7).
다음으로, 변환된 어셈블러 파일을 타겟 플랫폼의 CPU에 의해 실행 가능한 실행파일로 변환할 수 있다(S8). 이는 타겟 플랫폼의 CPU에 대해 최적화된 어셈블러 및 링커 등을 이용하여 어셈블러 코드를 기계어 코드로 변환함으로써 수행될 수 있다. 일 실시예에서는, IR 파일을 어셈블러 코드로 된 파일로 변환하는 단계(S7) 및 어셈블러 파일을 실행파일로 변환하는 단계(S8)는 한꺼번에 수행될 수도 있다.
일 실시예에서는, 변환된 실행파일을 자동으로 및/또는 사용자의 입력에 의하여 실행함으로써, 설치 장소의 지정 및 세부 설정 등을 거쳐 타겟 플랫폼에 소프트웨어의 설치가 수행될 수도 있다(S9). 예를 들어, 전술한 단계(S8)에서 변환된 실행파일을 원하는 위치에 복사한 후 자동으로 실행함으로써 소프트웨어의 설치를 수행할 수 있다. 또는, 실행파일을 "setup.exe" 등의 파일명을 갖는 파일로 배포하고, 사용자가 해당 파일을 실행하는 것에 의하여 소프트웨어의 설치를 수행할 수도 있다.
전술한 소프트웨어 패키지 설치 방법은 도면에 제시된 순서도를 참조로 하여 설명되었다. 간단히 설명하기 위하여 상기 방법은 일련의 블록들로 도시되고 설명되었으나, 본 발명은 상기 블록들의 순서에 한정되지 않고, 몇몇 블록들은 다른 블록들과 본 명세서에서 도시되고 기술된 것과 상이한 순서로 또는 동시에 일어날 수도 있으며, 동일한 또는 유사한 결과를 달성하는 다양한 다른 분기, 흐름 경로, 및 블록의 순서들이 구현될 수 있다. 또한, 본 명세서에서 기술되는 방법의 구현을 위하여 도시된 모든 블록들이 요구되지 않을 수도 있다.
이상에서 살펴본 실시예들에 따르면, 소프트웨어 패키지를 특정 CPU에 의존적이지 않은 중간 언어 코드를 이용하여 배포할 수 있으므로 CPU의 종류별로 각각 패키지를 제작할 필요가 없으며 동일한 설치 방법을 제공할 수 있는 이점이 있다. 또한, 상기 소프트웨어 패키지는 종래 기술에 따른 소프트웨어 패키지의 형태와 호환성이 있으므로 개발자 및/또는 사용자의 추가적인 학습 과정을 필요로 하지 않고 이용이 가능하다.
한편, 본 명세서에 기술된 소프트웨어 패키지 설치 시스템 및 방법, 또는 이들의 어떤 측면이나 부분은, 플로피 디스켓, CD-ROM, 하드 드라이브, 또는 기타 임의의 컴퓨터로 판독 가능한 기록 매체와 같은 유형 매체에 포함된 프로그램 코드(즉, 명령어)의 형태로 구현될 수도 있다. 상기 프로그램 코드는 컴퓨터와 같은 장치에 로드(load)되어 실행되며, 이때 상기 장치가 본 발명을 실시하기 위한 시스템에 해당된다.
이상에서 살펴본 본 발명은 도면에 도시된 실시예들을 참고로 하여 설명하였으나 이는 예시적인 것에 불과하며 당해 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 실시예의 변형이 가능하다는 점을 이해할 것이다. 그러나, 이와 같은 변형은 본 발명의 기술적 보호범위 내에 있다고 보아야 한다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해서 정해져야 할 것이다.

Claims (18)

  1. 설치될 소프트웨어에 대응되는 중간 언어 코드 및 변환 코드를 포함하는 소프트웨어 패키지를 생성하는 소프트웨어 패키지 생성 모듈;
    처리 수단을 포함하며, 상기 소프트웨어 패키지를 수신하여 소프트웨어가 설치되는 플랫폼; 및
    상기 변환 코드를 이용하여 상기 중간 언어 코드를 상기 처리 수단에 대응되는 실행파일로 변환하는 소프트웨어 패키지 설치 모듈을 포함하되,
    상기 변환 코드는, 상기 처리 수단의 정보를 판독하기 위한 제1 코드 및 상기 중간 언어 코드를 판독한 상기 처리 수단의 정보에 대응되는 실행파일로 변환하도록 지시하는 제2 코드를 포함하는 스크립트 파일인 것을 특징으로 하는 소프트웨어 패키지 설치 시스템.
  2. 제 1항에 있어서,
    상기 소프트웨어 패키지 생성 모듈은, 가상머신 규격에 따른 중간 언어 코드를 생성하는 제1 컴파일러를 포함하는 것을 특징으로 하는 소프트웨어 패키지 설치 시스템.
  3. 제 1항에 있어서,
    상기 소프트웨어 패키지 설치 모듈은, 가상머신 규격에 따른 중간 언어 코드를 변환하는 제2 컴파일러를 포함하는 것을 특징으로 하는 소프트웨어 패키지 설치 시스템.
  4. 소프트웨어 패키지 생성 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체로서,
    상기 소프트웨어 패키지 생성 프로그램은,
    소프트웨어의 소스 코드를 중간 언어 코드로 변환하는 변환부; 및
    상기 중간 언어 코드 및 상기 중간 언어 코드를 하나 이상의 유형의 실행파일로 변환하기 위한 변환 코드를 포함하는 소프트웨어 패키지를 생성하는 패키징부를 포함하며,
    상기 변환 코드는, 상기 소프트웨어 패키지가 설치될 플랫폼의 처리 수단의 정보를 판독하기 위한 제1 코드 및 상기 중간 언어 코드를 판독한 상기 처리 수단의 정보에 대응되는 실행파일로 변환하도록 지시하는 제2 코드를 포함하는 스크립트 파일인 것을 특징으로 하는,
    소프트웨어 패키지 생성 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체.
  5. 제 4항에 있어서,
    상기 변환부는 가상머신 규격에 따른 중간 언어 코드를 생성하는 제1 컴파일러를 포함하는 것을 특징으로 하는 소프트웨어 패키지 생성 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체.
  6. 처리 수단을 포함하는 플랫폼에 소프트웨어 패키지를 설치하기 위한 소프트웨어 패키지 설치 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체로서,
    상기 소프트웨어 패키지 설치 프로그램은,
    설치될 소프트웨어에 대응되는 중간 언어 코드 및 변환 코드를 포함하는 소프트웨어 패키지를 전달받고, 상기 변환 코드를 이용하여 상기 중간 언어 코드를 상기 처리 수단에 대응되는 어셈블러 코드로 변환하는 변환부; 및
    상기 어셈블러 코드를 상기 처리 수단에 대응되는 실행파일로 변환하는 어셈블러부를 포함하며,
    상기 변환 코드는, 상기 처리 수단의 정보를 판독하기 위한 제1 코드 및 상기 중간 언어 코드를 판독한 상기 처리 수단의 정보에 대응되는 어셈블러 코드로 변환하도록 지시하는 제2 코드를 포함하는 스크립트 파일인 것을 특징으로 하는,
    소프트웨어 패키지 설치 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체.
  7. 제 6항에 있어서,
    상기 변환부는 가상머신 규격에 따른 중간 언어 코드를 어셈블러 코드로 변환하는 제2 컴파일러를 포함하는 것을 특징으로 하는 소프트웨어 패키지 설치 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체.
  8. 제 6항에 있어서,
    상기 소프트웨어 패키지 설치 프로그램은, 상기 중간 언어 코드를 상기 어셈블러 코드로 변환하는 수단 및 상기 어셈블러 코드를 상기 실행파일로 변환하는 수단 중 하나 이상을 네트워크를 통하여 수신하는 송수신부를 더 포함하는 것을 특징으로 하는 소프트웨어 패키지 설치 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체.
  9. 설치될 소프트웨어에 대응되는 중간 언어 코드 및 변환 코드를 포함하는 소프트웨어 패키지를 생성하는 단계;
    처리 수단을 포함하는 플랫폼에 상기 소프트웨어 패키지를 전달하는 단계; 및
    상기 플랫폼에서 상기 변환 코드를 이용하여 상기 중간 언어 코드를 상기 처리 수단에 대응되는 실행파일로 변환하는 단계를 포함하되,
    상기 변환 코드는, 상기 처리 수단의 정보를 판독하기 위한 제1 코드 및 상기 중간 언어 코드를 판독한 상기 처리 수단의 정보에 대응되는 실행파일로 변환하도록 지시하는 제2 코드를 포함하는 스크립트 파일인 것을 특징으로 하는 소프트웨어 패키지 설치 방법.
  10. 제 9항에 있어서,
    상기 중간 언어 코드는 가상머신 규격에 따른 코드인 것을 특징으로 하는 소프트웨어 패키지 설치 방법.
  11. 제 9항에 있어서,
    상기 플랫폼에서 상기 실행파일을 실행하여 소프트웨어를 설치하는 단계를 더 포함하는 것을 특징으로 하는 소프트웨어 패키지 설치 방법.
  12. 소프트웨어의 소스 코드를 중간 언어 코드로 변환하는 단계; 및
    상기 중간 언어 코드 및 상기 중간 언어 코드를 하나 이상의 유형의 실행파일로 변환하기 위한 변환 코드를 포함하는 소프트웨어 패키지를 생성하는 단계를 포함하되,
    상기 변환 코드는, 상기 소프트웨어 패키지가 설치될 플랫폼의 처리 수단의 정보를 판독하기 위한 제1 코드 및 상기 중간 언어 코드를 판독한 상기 처리 수단의 정보에 대응되는 실행파일로 변환하도록 지시하는 제2 코드를 포함하는 스크립트 파일인 것을 특징으로 하는 소프트웨어 패키지 생성 방법.
  13. 제 12항에 있어서,
    상기 소스 코드를 중간 언어 코드로 변환하는 단계는, 상기 소스 코드를 가상머신 규격에 따른 코드로 컴파일하는 단계를 포함하는 것을 특징으로 하는 소프트웨어 패키지 생성 방법.
  14. 처리 수단을 포함하는 플랫폼에서, 소프트웨어에 대응되는 중간 언어 코드 및 변환 코드를 포함하는 소프트웨어 패키지를 수신하는 단계;
    상기 변환 코드를 이용하여 상기 중간 언어 코드를 상기 처리 수단에 대응되는 어셈블러 코드로 변환하는 단계; 및
    상기 어셈블러 코드를 상기 처리 수단에 대응되는 실행파일로 변환하는 단계를 포함하되,
    상기 변환 코드는, 상기 처리 수단의 정보를 판독하기 위한 제1 코드 및 상기 중간 언어 코드를 판독한 상기 처리 수단의 정보에 대응되는 어셈블러 코드로 변환하도록 지시하는 제2 코드를 포함하는 스크립트 파일인 것을 특징으로 하는 소프트웨어 패키지 설치 방법.
  15. 제 14항에 있어서,
    상기 중간 언어 코드는 가상머신 규격에 따른 코드인 것을 특징으로 하는 소프트웨어 패키지 설치 방법.
  16. 제 14항에 있어서,
    상기 실행파일을 실행하여 소프트웨어를 설치하는 단계를 더 포함하는 것을 특징으로 하는 소프트웨어 패키지 설치 방법.
  17. 제 14항에 있어서,
    상기 소프트웨어 패키지를 수신하는 단계 후에,
    상기 중간 언어 코드를 상기 어셈블러 코드로 변환하기 위한 수단 및 상기 어셈블러 코드를 상기 실행파일로 변환하기 위한 수단 중 하나 이상을 네트워크를 통하여 수신하는 단계를 더 포함하는 것을 특징으로 하는 소프트웨어 패키지 설치 방법.
  18. 제 9항 내지 제 17항 중 어느 한 항에 따른 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체.
KR1020100001169A 2010-01-07 2010-01-07 소프트웨어 패키지의 생성 및 설치를 위한 시스템 및 방법 KR101092373B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100001169A KR101092373B1 (ko) 2010-01-07 2010-01-07 소프트웨어 패키지의 생성 및 설치를 위한 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100001169A KR101092373B1 (ko) 2010-01-07 2010-01-07 소프트웨어 패키지의 생성 및 설치를 위한 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20110080772A KR20110080772A (ko) 2011-07-13
KR101092373B1 true KR101092373B1 (ko) 2011-12-09

Family

ID=44919623

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100001169A KR101092373B1 (ko) 2010-01-07 2010-01-07 소프트웨어 패키지의 생성 및 설치를 위한 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR101092373B1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101673610B1 (ko) * 2010-09-17 2016-11-07 주식회사 엘지유플러스 애플리케이션에 대한 리소스 보호 시스템 및 방법
US9569184B2 (en) 2012-09-05 2017-02-14 Microsoft Technology Licensing, Llc Generating native code from intermediate language code for an application
KR102188685B1 (ko) * 2014-04-11 2020-12-08 삼성전자주식회사 애플리케이션 패키지를 생성하는 장치 및 방법
KR101740133B1 (ko) * 2015-08-10 2017-05-26 라인 가부시키가이샤 어플리케이션의 코드를 보호하기 위한 시스템 및 방법
KR102459269B1 (ko) * 2020-11-19 2022-10-26 숭실대학교 산학협력단 이진 분석을 수행하는 소프트웨어 패키징 장치, 방법 및 이를 수행하기 위한 프로그램이 기록된 기록매체
KR102545640B1 (ko) * 2022-01-04 2023-06-20 주식회사 알티스트 철도차량 시스템의 소프트웨어 개발 시스템 및 방법
KR20240024573A (ko) * 2022-08-17 2024-02-26 쿠팡 주식회사 코드 정보를 제공하는 방법 및 이를 지원하는 전자 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060248524A1 (en) * 2005-05-02 2006-11-02 Intermec Ip Corp. System and method for common file installation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060248524A1 (en) * 2005-05-02 2006-11-02 Intermec Ip Corp. System and method for common file installation

Also Published As

Publication number Publication date
KR20110080772A (ko) 2011-07-13

Similar Documents

Publication Publication Date Title
KR101092373B1 (ko) 소프트웨어 패키지의 생성 및 설치를 위한 시스템 및 방법
US8028268B2 (en) System and method for building software package for embedded system
US10296323B2 (en) System and method for fast initial and incremental deployment of apps
JP6294886B2 (ja) アプリケーション用の中間言語コードからネイティブコードを生成すること
JP6122493B2 (ja) 適応的に移植性を有したライブラリ
CN100583032C (zh) 用于动态提供本地库及其相关性的方法和系统
JP4851096B2 (ja) コードの書き換え
US7761701B2 (en) Component firmware integration in distributed systems
US8387032B1 (en) Captive runtime deployment
US10338907B2 (en) Cloud service framework for toolkit deployment
US20120102483A1 (en) Handling calls to native code in a managed code environment
US7162626B2 (en) Use of common language infrastructure for sharing drivers and executable content across execution environments
US20130167136A1 (en) Component-based installation
JP2007535761A (ja) 抗タンパーコードを生成するシステム及び方法
KR20220092615A (ko) 적시(Just-In-Time) 컨테이너
CN101030241A (zh) 基于Keil C51的软件保护开发的方法和系统
JP2005078178A (ja) コンピュータシステム及びソフトウェア管理方法
KR101083271B1 (ko) 액티브엑스 컨트롤 변환 시스템 및 방법
Bertin et al. Compilation and virtualization in the HiPEAC vision
KR20130063757A (ko) 중간 언어 변환 방법과 그를 위한 시스템 및 컴퓨터로 읽을 수 있는 기록매체
Beisel et al. Using shared library interposing for transparent application acceleration in systems with heterogeneous hardware accelerators
US20030145123A1 (en) Method, system, and program for providing access to an application on an end user computer
Mewburn et al. build. sh: Cross-building {NetBSD}
JP2011060236A (ja) 情報処理装置、開発支援プログラム、及びソフトウェア統合開発環境
KR101277145B1 (ko) 공통 표현을 이용한 중간 언어 변환 방법과 그를 위한 시스템 및 컴퓨터로 읽을 수 있는 기록매체

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20141201

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151126

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161201

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171201

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181203

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20191204

Year of fee payment: 9