KR20120037397A - 카탈로그-기반 소프트웨어 컴포넌트 관리 - Google Patents
카탈로그-기반 소프트웨어 컴포넌트 관리 Download PDFInfo
- Publication number
- KR20120037397A KR20120037397A KR1020117029929A KR20117029929A KR20120037397A KR 20120037397 A KR20120037397 A KR 20120037397A KR 1020117029929 A KR1020117029929 A KR 1020117029929A KR 20117029929 A KR20117029929 A KR 20117029929A KR 20120037397 A KR20120037397 A KR 20120037397A
- Authority
- KR
- South Korea
- Prior art keywords
- software component
- software
- computing device
- catalog
- version
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44536—Selecting among different versions
Abstract
복수의 소프트웨어 컴포넌트 식별자는 장치 상에서 실행하는 운영 체제의 카탈로그에 유지된다. 이러한 소프트웨어 컴포넌트 식별자 각각은 장치 상에 설치된 복수의 소프트웨어 컴포넌트 중 하나에 대응한다. 카탈로그는 복수의 소프트웨어 컴포넌트 중 하나에 대한 요청에 응답하여 접근되며, 요청은 카탈로그에 포함된 정보의 적어도 일부에 기초하여 응답된다. 또한, 컴퓨팅 장치 상에 설치된 소프트웨어 컴포넌트의 두 개 이상의 버전은 식별될 수 있다. 소프트웨어 컴포넌트의 두 개 이상의 버전 중 어떤 하나가 실행되는 소프트웨어 컴포넌트의 활성 버전인지가 판단된다. 소프트웨어 컴포넌트에 관한 정보에 대한 요청에 응답하여, 소프트웨어 컴포넌트의 활성 버전에 관한 정보는 반환된다.
Description
컴퓨터는 전형적으로 다른 애플리케이션이 컴퓨터 상에 설치되어 실행하게 하는 것을 포함하는 다양한 기능을 제공하는 운영 체제(operating system)를 실행한다. 상이한 애플리케이션은 종종 컴퓨터에 설치되어 상이한 방법으로 실행되어, 다양한 파일 및 정보가 컴퓨터 상의 많은 위치, 폴더 등에 저장되게 된다. 따라서, 이러한 상이한 애플리케이션을 컴퓨터 상에서 관리하는 것은 애플리케이션을 새로운 버전으로 업그레이드를 시도할 때, 애플리케이션을 삭제할 때 등에 많은 어려움을 초래할 수 있다.
본 요약은 발명을 실시하기 위한 구체적인 내용에서 추가로 후술되는 단순화된 형태의 개념의 선택을 소개하기 위해 제공된다. 본 요약은 청구된 본 발명의 중요한 특징 또는 필수적인 특징을 식별하도록 의도되지 않으며 청구된 본 발명의 범위를 제한하기 위해 사용되도록 의도되지도 않는다.
하나 이상의 양태에 따라, 복수의 소프트웨어 컴포넌트 식별자는 장치의 운영 체제의 카탈로그에 유지된다. 소프트웨어 컴포넌트 식별자 각각은 장치에 설치된 복수의 소프트웨어 컴포넌트 중 하나에 대응한다. 카탈로그는 복수의 소프트웨어 컴포넌트 중 하나에 대한 요청에 응답하여 접근되며, 요청은 카탈로그에 포함된 정보의 적어도 일부에 기초하여 응답된다.
하나 이상의 양태에 따라, 컴퓨팅 장치의 운영 체제에 있어서, 컴퓨팅 장치 상에 설치된 소프트웨어 컴포넌트의 두 개 이상의 버전이 식별된다. 소프트웨어 컴포넌트의 두 개 이상의 버전 중 어떤 버전이 실행되는 소프트웨어 컴포넌트의 활성 버전인지가 판단된다. 소프트웨어 컴포넌트에 관한 정보에 대한 요청에 응답하여, 소프트웨어 컴포넌트의 활성 버전에 관한 정보는 반환된다.
유사한 특징을 지칭하기 위해 동일한 참조번호가 도면 전반에 걸쳐 사용된다.
도 1은 하나 이상의 실시예에 따른 카탈로그-기반 소프트웨어 컴포넌트 관리를 구현하는 예시적인 컴퓨팅 장치를 도시한다.
도 2는 하나 이상의 실시예에 따른 예시적인 카탈로그를 도시한다.
도 3은 하나 이상의 실시예에 따른 예시적인 소프트웨어 컴포넌트를 도시한다.
도 4는 하나 이상의 실시예에 따른 카탈로그-기반 소프트웨어 컴포넌트 관리에 대한 예시적인 프로세스를 도시하는 흐름도이다.
도 5는 하나 이상의 실시예에 따른 카탈로그-기반 소프트웨어 컴포넌트 관리에 대한 예시적인 프로세스를 도시하는 흐름도이다.
도 6은 하나 이상의 실시예에 따른 카탈로그-기반 소프트웨어 컴포넌트 관리를 구현하도록 구성될 수 있는 예시적인 컴퓨팅 장치를 도시한다.
도 1은 하나 이상의 실시예에 따른 카탈로그-기반 소프트웨어 컴포넌트 관리를 구현하는 예시적인 컴퓨팅 장치를 도시한다.
도 2는 하나 이상의 실시예에 따른 예시적인 카탈로그를 도시한다.
도 3은 하나 이상의 실시예에 따른 예시적인 소프트웨어 컴포넌트를 도시한다.
도 4는 하나 이상의 실시예에 따른 카탈로그-기반 소프트웨어 컴포넌트 관리에 대한 예시적인 프로세스를 도시하는 흐름도이다.
도 5는 하나 이상의 실시예에 따른 카탈로그-기반 소프트웨어 컴포넌트 관리에 대한 예시적인 프로세스를 도시하는 흐름도이다.
도 6은 하나 이상의 실시예에 따른 카탈로그-기반 소프트웨어 컴포넌트 관리를 구현하도록 구성될 수 있는 예시적인 컴퓨팅 장치를 도시한다.
카탈로그-기반 소프트웨어 컴포넌트 관리가 본 명세서에서 설명된다. 소프트웨어 제품은 하나 이상의 소프트웨어 컴포넌트로 구성된다. 각각의 소프트웨어 컴포넌트는 컴퓨팅 장치 상의 운영 체제의 카탈로그에 유지되는 아이덴터티(identity)를 갖는다. 카탈로그는 어떤 소프트웨어 컴포넌트가 컴퓨팅 장치에 설치되는지를 식별한다. 카탈로그는 운영 체제가 소프트웨어 컴포넌트를 관리하게 하는 것은 물론 시스템에 설치된 소프트웨어 컴포넌트를 쉽게 식별하게 한다.
도 1은 하나 이상의 실시예에 따른 카탈로그-기반 소프트웨어 컴포넌트 관리를 구현하는 예시적인 컴퓨팅 장치(100)를 도시한다. 컴퓨팅 장치(100)는 소프트웨어 애플리케이션을 실행시킬 수 있는 다양한 상이한 장치가 될 수 있다. 예를 들어, 컴퓨팅 장치(100)는 데스크탑 컴퓨터, 서버 컴퓨터, 랩탑 컴퓨터, 이동국(mobile station), 오락 기기(entertainment appliance), 디스플레이 장치에 통신 방식으로 결합된 셋탑 박스, 셀룰러 또는 다른 무선 전화기, 게임 콘솔, 자동차 컴퓨터 등일 수 있다. 따라서, 컴퓨팅 장치(100)는 상당한 메모리 및 프로세서 리소스를 갖는 풀 리소스 장치(full resource device)(예를 들어, 퍼스널 컴퓨터, 게임 콘솔)로부터 제한된 메모리 및/또는 프로세싱 리소스를 갖는 낮은 리소스 장치(low resource device)(예를 들어, 전통적인 셋탑 박스, 휴대용 게임 콘솔)를 포괄할 수 있다.
컴퓨팅 장치(100)는 소프트웨어 컴포넌트 접근 제어 모듈(104) 및 카탈로그(106)를 갖는 운영 체제(100)를 포함한다. 소프트웨어 애플리케이션으로도 또한 지칭되는 두 개의 소프트웨어 제품(110 및 112)이 컴퓨팅 장치(100) 내에 포함되는 것으로 도시되어 있다. 비록 두 개의 소프트웨어 제품(110 및 112)이 도 1의 예에 도시되어 있지만, 대안적으로 두 개 미만의 또는 두 개 초과의 소프트웨어 제품이 컴퓨팅 장치(100) 내에 포함될 수 있다. 각각의 소프트웨어 제품(110 및 112)은 하나 이상의 소프트웨어 컴포넌트를 포함한다. 도 1의 예에서, 소프트웨어 제품(110)은 소프트웨어 컴포넌트(122), 소프트웨어 컴포넌트(124) 및 소프트웨어 컴포넌트(126)를 포함하는 반면, 소프트웨어 제품(112)은 소프트웨어 컴포넌트(126) 및 소프트웨어 컴포넌트(128)를 포함한다. 도 1에서 알 수 있는 바와 같이, 복수의 상이한 소프트웨어 제품은 하나의 소프트웨어 컴포넌트(예를 들어, 소프트웨어 컴포넌트(126))를 공유할 수 있다.
소프트웨어 컴포넌트 접근 제어 모듈(104)은 컴퓨팅 장치(100) 상에 설치된 소프트웨어 컴포넌트를 관리한다. 제어 모듈(104)은 컴퓨팅 장치(100) 상에 설치된 소프트웨어 컴포넌트(예를 들어, 도 1의 예에서 소프트웨어 컴포넌트(122-128))의 기록(record)을 카탈로그(106)로서 유지한다. 카탈로그(106)는 설치된 소프트웨어 컴포넌트의 기록이며, 컴퓨팅 장치(100) 상에서 실행될 수 있다. 컴퓨팅 장치(100) 상에서 소프트웨어 컴포넌트를 실행하기 위하여, 소프트웨어 컴포넌트는 컴퓨터 장치 상에 설치된다. 이러한 설치 프로세스는 설치 컴포넌트 또는 모듈에 의해 일반적으로 실행되며, 일반적으로 운영 체제(102)의 파일 시스템의 다양한 위치에 파일을 저장하는 것과 소프트웨어 컴포넌트를 설명하는 다양한 정보를 저장하는 것 등을 포함한다. 컴퓨팅 장치(100)에 소프트웨어 컴포넌트를 설치하는 프로세스의 일환으로서, 제어 모듈(104)에 소프트웨어 컴포넌트를 인식하게 하여, 소프트웨어 컴포넌트의 식별자가 카탈로그(106)에 부가되게 한다. 이와 같이 설치된 소프트웨어 컴포넌트는 소프트웨어 컴포넌트가 컴퓨팅 장치(100) 상에서 실행될 수 있기 때문에 "활성(active)"은 소프트웨어 컴포넌트라고도 지칭된다.
다른 소프트웨어 컴포넌트는 컴퓨팅 장치(100)에 저장될 수 있지만 컴퓨팅 장치(100)에 설치되지 않을 수 있다. 일반적으로, 운영 체제(102)는 그러한 소프트웨어 컴포넌트를 인식하지 못하고, 카탈로그(106)에 그러한 컴포넌트의 식별자를 포함하지 않으며, 그러한 소프트웨어 컴포넌트를 실행하는 것을 지원하지 않는다. 따라서, 그러한 소프트웨어 컴포넌트는, 컴퓨팅 장치(100)에 저장되어 있지만 컴퓨팅 장치(100)에 설치되어 있지 않기 때문에, "휴면(dormant)"이라고도 지칭될 수 있다. 비록, 실행 가능한 파일이 컴퓨팅 장치(100)에 설치되어 있지 않은 경우에도, 소프트웨어 컴포넌트가 운영 체제에 의해 실행될 수 있는 실행 가능한 파일이 되는 상황이 발생할 수 있다는 것이 이해되어야 한다. 그러나, 그러한 소프트웨어 컴포넌트가 컴퓨팅 장치(100)에 설치되지 않음으로써, 운영 체제(102)는 그러한 소프트웨어 컴포넌트에 관한 정보(예를 들어, 그러한 소프트웨어 컴포넌트에 의해 제공되는 기능, 그러한 소프트웨어 컴포넌트의 개발자 또는 발행자 등)를 인식하지 못하며, 이에 따라, 그러한 소프트웨어 컴포넌트는 여전히 휴면 소프트웨어 컴포넌트로서 지칭된다.
소프트웨어 컴포넌트 접근 제어 모듈(104)은 컴퓨팅 장치(100) 상에 설치된 소프트웨어 컴포넌트의 집중적 관리(centralized management)를 제공한다. 카탈로그(106)를 유지함으로써, 제어 모듈(104)은 후술되는 바와 같이 특정 소프트웨어 컴포넌트에 대한 다양한 기능을 인식하여 쉽게 제공할 수 있다. 예들 들어, 제어 모듈(104)은 컴퓨팅 장치(100) 상에 설치된 모든 소프트웨어 컴포넌트(104)를 쉽게 식별할 수 있고, 식별된 소프트웨어 컴포넌트에 관한 다양한 기능을 제공할 수 있다.
도 1에서 알 수 있는 바와 같이, 각각의 소프트웨어 제품은 하나 이상의 소프트웨어 컴포넌트로 구성된다. 소프트웨어 제품의 소프트웨어 컴포넌트는 컴퓨팅 장치(100) 상에 실행될 수 있는 명령어 및 데이터를 포함하며, 소프트웨어 컴포넌트는 소프트웨어 제품의 기능도 함께 제공한다. 운영 체제(102)는 실행할 때 소프트웨어 제품 전체로서 수행되기보다는 개별 소프트웨어 컴포넌트와 통신한다.
비록 단일 카탈로그(106)가 도 1에 도시되어 있지만, 대안적으로 운영 체제(102)는 복수의 카탈로그(106)를 포함할 수 있다. 하나 이상의 실시예에 있어서, 운영 체제(102)는 컴퓨팅 장치(100) 상의 각각의 계정에 대해 상이한 카탈로그(106)를 포함한다. 이러한 실시예에 있어서, 운영 체제(102)는 상이한 사용자들이 상이한 계정에 대해 상이한 설정, 접근 권리 등을 유지하면서 상이한 계정(또는 복수의 상이한 계정)을 각각 설정하게 한다. 부가적으로, 하나 이상의 시스템 또는 관리자 계정은 컴퓨팅 시스템(100) 상에서 또한 설정될 수 있다. 운영 체제(102)는 상이한 계정들 각각에 대해 상이한 카탈로그(106)를 유지한다. 또한, 운영 체제(102)는 복수의 상이한 사용자들이 언제든지 컴퓨팅 장치(100)에 로그인 되게 한다. 그러나, 이러한 상황에서는 일반적으로 복수의 사용자 중 오직 한 사용자가 현재 활성 사용자(active user)(현재 활성 계정을 사용하는 사용자)가 된다. 따라서, 제어 모듈(104)에 의해 언제든지 사용되는 카탈로그(106)는 언제든지 로그인 되는 컴퓨팅 장치(100)의 특정 계정에 기초하여 변할 수 있고, 로그인 된 복수의 계정 중 어떤 계정도 언제든지 현재 활성 계정이 된다.
특정 카탈로그(106)는 컴퓨팅 장치(100) 상에 설치된 소프트웨어 컴포넌트의 식별자를 포함한다. 상이한 카탈로그(106)가 상이한 계정에 대해 유지되는 상황에서, 특정 카탈로그(106)는 그 계정 하에 컴퓨팅 장치(100) 상에 설치된 소프트웨어 컴포넌트의 식별자를 포함한다. 상이한 사용자들은 컴퓨팅 장치(100) 상에 상이한 소프트웨어 컴포넌트를 설치할 수 있어, 상이한 식별자가 상이한 카탈로그(106)에 포함된다.
도 2는 하나 이상의 실시예에 따른 예시적인 카탈로그(200)를 도시한다. 카탈로그(200)는 복수의 소프트웨어 컴포넌트 식별자(202, 204, 206 및 208)를 포함하며, 각각은 대응하는 소프트웨어 컴포넌트(222, 224, 226 및 228) 각각을 식별한다. 소프트웨어 컴포넌트(222-228)는 카탈로그(200)를 구현하는 컴퓨팅 장치 상에 설치(또는 컴퓨팅 장치의 운영 체제의 특정 계정 하에 설치)된 소프트웨어 컴포넌트이다.
각각의 소프트웨어 컴포넌트(222-228)는 소프트웨어 컴포넌트가 다른 소프트웨어 컴포넌트와 구별되게 하는 컴포넌트 아이덴터티를 갖는다. 하나 이상의 실시예에 있어서, 이러한 아이덴터티는 예를 들어, 보다 상세하게 후술되는 바와 같은 매니페스트에 포함되는 것으로서, 소프트웨어 컴포넌트에 의해 제공된다. 대안적으로, 컴포넌트 아이덴터티는 운영 체제(예를 들어, 도 1의 운영 체제(102)), 다른 컴포넌트 또는 모듈, 다른 로컬 또는 원격 서비스, 다른 로컬 또는 원격 장치에 의해서 등과 같은 다른 방식으로 생성될 수 있다.
도 1을 다시 참조하면, 하나 이상의 실시예에 있어서, 카탈로그(106)는 설치된 소프트웨어 컴포넌트의 단일 인덱스를 포함한다. 다른 실시예에 있어서, 카탈로그(106)는 소프트웨어 컴포넌트의 복수의 인덱스 또는 일부를 포함한다. 이러한 복수의 인덱스 또는 일부는 예를 들어, 설치된 모든 소프트웨어 컴포넌트를 포함하는 하나의 인덱스 또는 일부를 포함하며, 이는 풀 인덱스(full index)로서 지칭되기도 한다. 또한, 복수의 인덱스 또는 일부는 예를 들어 규칙 또는 기준의 특정 세트를 만족하는 소프트웨어 컴포넌트의 서브 세트를 포함하는 제 2 인덱스 또는 부분을 포함할 수 있으며, 이는 유효 인덱스(effective index)로도 지칭된다. 이러한 규칙 또는 기준 세트는 설치되어 실행될 수 있는 소프트웨어 컴포넌트를 효과적으로 감소시키기 위해 사용될 수 있다.
일반적으로, 유효 인덱스는 컴퓨팅 장치(100) 상에 설치된 소프트웨어 컴포넌트의 활성 버전을 식별한다. 소프트웨어 컴포넌트의 복수의 상이한 버전은 컴퓨팅 장치(100) 상에 설치될 수 있으며, 각각의 상이한 버전은 풀 인덱스에 포함된다. 그러나, 소프트웨어 컴포넌트의 복수의 버전에 있어서, 복수의 버전 중 하나의 버전이 유효 인덱스에 포함될 대상으로 선택된다.
다양한 상이한 규칙이나 기준은 유효 인덱스에 포함될 대상으로 선택된 버전을 판단하기 위해 사용될 수 있다. 하나 이상의 실시예에 있어서, 하나의 그러한 규칙은 버전 규칙(versioning rule)이다. 버전 규칙은 소프트웨어 컴포넌트의 복수의 상이한 버전 중 어떤 버전이 버전 번호 또는 다른 버전 식별자에 기초한 활성 버전인지를 명시한다. 이러한 버전 규칙은 예를 들어, 가장 최근 버전이 실행되어야 한다는 것(예를 들어, 가장 높은 버전 번호를 갖는 버전), 특정 포맷으로 버전 식별자를 갖거나 특정 값을 갖는 버전이 실행되어야 한다는 것 등이 될 수 있다. 이러한 실시예에 있어서, 소프트웨어 컴포넌트의 활성 버전은 유효 인덱스에 포함되고, 소프트웨어 컴포넌트의 다른 버전들은 심지어 풀 인덱스에 포함될 수 있어도 유효 인덱스에서 제외된다.
유효 인덱스를 결정하기 위해 사용될 수 있는 다른 규칙은 정책 규칙(policy rule)이다. 예를 들어, 컴퓨팅 장치(100)의 관리자, 또는 다양한 상이한 이유로 컴퓨팅 장치(100)가 결합되는 네트워크의 관리자에 의해 정책이 설정될 수 있다. 이러한 정책은 특정 소프트웨어 컴포넌트 또는 그 버전이 컴퓨팅 장치(100) 상에서 실행되지 않아야 되는 것, 특정 발행자에 의해 디지털 서명된 소프트웨어 컴포넌트 또는 그 버전만이 실행되어야 하는 것 등을 명시할 수 있다. 이러한 상황에 있어서, 명시된 소프트웨어 컴포넌트 또는 그 버전은 심지어 풀 인덱스에 포함될 수 있어도 유효 인덱스에서 제외된다.
유효 인덱스를 결정하기 위해 사용될 수 있는 다른 규칙은 복제 규칙(duplicate rule)이다. 복제 규칙은 동일한 소프트웨어 컴포넌트의 복수의 카피들이 컴퓨팅 장치 상에 설치되는 경우, 단지 하나의 카피만이 유효 인덱스에 유지되어야 하는 것을 명시한다. 복수의 카피는 다양한 상이한 이유로 설치될 수 있는데, 예를 들어, 공통 소프트웨어 컴포넌트를 각각 포함하는 복수의 소프트웨어 제품이 컴퓨팅 장치 상에 설치되는 결과로서 설치될 수 있다.
도 3은 하나 이상의 실시예에 따른 예시적인 소프트웨어 컴포넌트(300)를 도시한다. 소프트웨어 컴포넌트는 소프트웨어 컴포넌트를 설명하는 하나 이상의 파일 및 메타데이터의 컬렉션이다. 소프트웨어 컴포넌트(300)는 하나 이상의 리소스 파일(302)을 포함하며, 각각의 리소스 파일은 소프트웨어 컴포넌트(300)에 대해 다양한 명령어 및/또는 데이터를 저장한다. 소프트웨어 컴포넌트(300)에 포함되는 특정 리소스 파일(302)은 소프트웨어 컴포넌트(300)의 개발자가 바라는 대로 변할 수 있다.
매니페스트(304)는 소프트웨어 컴포넌트(300)를 설명하는 메타데이터와 소프트웨어 컴포넌트(300)에 의해 노출된 기능을 저장한다. 하나 이상의 실시예에서, 매니페스트(304)는 소프트웨어 컴포넌트(300)의 식별자를 포함한다. 소프트웨어 컴포넌트(300)의 식별자는 소프트웨어 컴포넌트(300)가 장치 상에 설치된 다른 소프트웨어 컴포넌트로부터 구별되게 한다. 이러한 식별자는 소프트웨어 컴포넌트(300)의 하나 이상의 버전 번호, 리소스 파일(302)에 대한 디지털 서명(및 선택적으로는 매니페스트(304)의 일부분), 및 소프트웨어 컴포넌트(300)의 발행자 또는 개발자의 식별자와 같은 다양한 속성으로 구성될 수 있다. 대안적으로, 이들 버전 번호, 디지털 서명, 및 발행자 또는 개발자의 식별자는 소프트웨어 컴포넌트(300)의 식별자의 속성으로서 포함되지 않고(또는 포함하여) 별도로 유지될 수 있다.
소프트웨어 컴포넌트(300)의 버전 번호는 소프트웨어 컴포넌트(300)의 상이한 버전이 쉽게 식별되게 한다. 이들 버전 번호는 보다 상세하게 후술되는 바와 같이 소프트웨어 컴포넌트(300)의 관리하는 것을 용이하게 하기 위해 사용될 수 있다.
또한, 매니페스트(304)는 리소스 파일(302)에 해시 함수(hash function)를 적용하여 생성된 해시 값을 포함할 수 있다. 하나 이상의 암호 또는 일방향 해시 함수와 같은 다양한 상이한 해시 함수가 해시 값을 생성하기 위해 사용될 수 있다. 이러한 해시 함수의 예는 MD5(메시지 다이제스트 알고리즘 5) 해시 함수, SHA-1(보안 해시 알고리즘 1) 해시 함수 등을 포함한다.
매니페스트(304)의 적어도 일부(예를 들어, 디지털 서명 이외의 다른 매니페스트(304)의 부분)에 대한 디지털 서명은 소프트웨어 컴포넌트(300)의 발행자 또는 발행자를 대신하여 생성된다. 또한, 디지털 서명은 리소스 파일(302)(매니페스트(304)에 포함되는 리소스 파일(302)의 해시를 대신하거나 포함하여)에 대해서도 이루어질 수 있다. 소프트웨어 컴포넌트(300)의 발행자는 소프트웨어 컴포넌트(300)의 리소스 파일(302)의 개발자가 될 수 있거나, 그렇지 않으면 소프트웨어 컴포넌트(300)를 분배하는 다른 실체가 될 수 있다. 디지털 서명은 공개 키 암호화에 기초한 이미 공지된 다양한 기법들 중 하나를 사용하여 생성될 수 있다. 이러한 디지털 서명은 디지털 서명이 이루어진 매니페스트(304)의 다른 일부는 물론 리소스 파일(302)이 변하는 경우(예를 들어, 매니페스트(304) 내의 리소스 파일(302)의 해시 값으로 인하여)에 변한다. 따라서, 디지털 서명은 디지털 서명이 이루어진 매니페스트(304)의 다른 부분은 물론 리소스 파일(302)의 특정 세트의 식별자로서 역할을 할 수 있다.
소프트웨어 컴포넌트(300)의 발행자 및/또는 개발자의 아이덴터티는 매니페스트(304)에 또한 포함될 수 있다. 또한, 디지털 서명은 발행자 및/또는 개발자의 아이덴터티에 대해 생성될 수 있다.
소프트웨어 컴포넌트(300)가 도 1의 컴퓨팅 장치(100)와 같은 컴퓨팅 장치 상에 설치되어야 할 때, 소프트웨어 컴포넌트(300)는 설치 또는 배치 컴포넌트, 또는 모듈에 의해 얻어진다. 소프트웨어 컴포넌트(300)는 다양한 로컬 및/또는 원격 서비스, 및/또는 장치 중 어느 하나로부터 얻어질 수 있다.
설치 프로세스의 일부로서, 소프트웨어 컴포넌트(300)의 식별자는 설치와 동시에 그렇지 않으면 설치 프로세스에 의해 식별될 때 컴퓨팅 장치의 운영 체제의 특정 계정의 카탈로그에 부가된다. 설치 프로세스는 카탈로그에 소프트웨어 컴포넌트(300)의 식별자를 부가할 수 있거나, 그렇지 않으면 카탈로그에 소프트웨어 컴포넌트(300)의 식별자를 결과적으로 부가할 수 있는 소프트웨어 컴포넌트 접근 제어 모듈(예를 들어, 도 1의 제어 모듈(104))과 통신할 수 있다.
하나 이상의 실시예에 있어서, 하나 이상의 검증 작업은 소프트웨어 컴포넌트 접근 제어 모듈 또는 소프트웨어 컴포넌트(300)의 식별자를 카탈로그에 부가하기 이전에 설치 컴포넌트 또는 모듈에 의해 실행된다. 다양한 상이한 검증 작업이 실행될 수 있다. 예를 들어, 소프트웨어 컴포넌트(300), 매니페스트(304) 및/또는 리소스 파일(302)이 따르게 되는 규칙 또는 기준 세트가 설정될 수 있다. 검증의 일환으로서, 규칙 또는 기준의 세트에 실제로 따르는지 여부에 대한 확인이 수행될 수 있다. 규칙 또는 기준의 세트에 따르지 않은 경우에는 소프트웨어 컴포넌트(300)의 식별자가 카탈로그에 부가되지 않는다.
또 다른 예로서, 전술한 것과 같은 리소스 파일(302) 및/또는 매니페스트(304)에 대한 디지털 서명이 매니페스트(304)에 존재하는지의 여부에 관한 확인이 수행될 수 있다. 그와 같은 디지털 서명이 매니페스트(304)에 존재하지 않는다면, 소프트웨어 컴포넌트(300)의 식별자는 카탈로그에 부가되지 않는다. 그러나, 그와 같은 디지털 서명이 매니페스트(304)에 존재한다면, 디지털 서명된 이후부터 디지털 서명이 이루어진 리소스 파일(302) 및/또는 매니페스트(304)가 변경되지 않았는지의 여부에 대한 확인이 수행된다. 이러한 확인은 리소스 파일(302)에 대한 해시 값을 계산하는 것을 포함하여 계산된 해시 값이 매니페스트(304)에 저장된 것과 동일한 해시 값인지를 검증할 수 있다. 디지털 서명이 이루어진 매니페스트(304)가 변경되지 않았는지를 확인하는 것은 공개 키 암호화를 이용하는 이미 공지된 다양한 방식들 중 어느 한 방식으로 수행될 수 있다. 또한, 매니페스트(304)에 포함된 소프트웨어 컴포넌트(300)의 발행자의 식별자가 디지털 서명에 포함된 발행자에 부합(예를 들어, 발행자 식별자와 동일)하는지의 여부에 관한 확인을 수행할 수 있다. 디지털 서명이 이루어진 리소스 파일(302) 및/또는 매니페스트(304)가 디지털 서명 이후에 변경된 경우에는, 소프트웨어 컴포넌트(300)의 식별자는 카탈로그에 부가되지 않는다.
또 다른 예로서, 리소스 파일(302) 및/또는 매니페스트(304)에 대한 디지털 서명을 생성한 실체가 신뢰할 수 있는지의 여부에 대한 확인이 수행될 수 있다. 이러한 확인은 디지털 서명을 생성한 실체의 디지털 인증서가 소프트웨어 컴포넌트(300)가 설치된 장치의 인증서 저장소에 포함되는지의 여부를 판단하기 위해 인증서 저장소에 접근하여 수행될 수 있다. 대안적으로, 인증서 저장소에 포함하지 않고, 인증서 저장소 내의 디지털 인증서로부터 디지털 서명을 생성한 실체의 디지털 인증서까지 인증서 체인(certificate chain)이 설정될 수 있다. 이와 같은 디지털 인증서가 인증서 저장소에 포함되지 않는 경우(또는, 인증서 체인이 설정될 수 없는 경우), 소프트웨어 컴포넌트(300)의 식별자는 카탈로그에 부가되지 않는다.
도 1을 다시 참조하면, 소프트웨어 컴포넌트(122-128)가 컴퓨팅 장치(100) 상에 설치될 때, 소프트웨어 컴포넌트(122-128)의 하나 이상의 리소스 파일의 위치에 대한 경로가 유지될 수 있다. 이러한 경로는 카탈로그(106)에 유지될 수 있거나, 그렇지 않으면 운영 체제(102)의 다른 저장소 내의 메타데이터로서 유지될 수 있다. 이들 경로는 특정 파일이 검색 및 실행, 로딩 또는 이와 반대로 적절히 사용되게 한다. 예를 들어, 바로 가기(shortcuts)로서 표시되는 아이콘에 대한 경로(paths to icons)가 유지되는 것, 실행 가능한 파일에 대한 경로가 유지될 수 있는 것, 다이나믹 링크 라이브러리(DLLs)에 대한 경로가 유지될 수 있는 것 등이 있다. 이들 경로를 유지함으로써, 소프트웨어 컴포넌트에 관한 정보는 쉽게 식별 및 반환될 수 있다. 예를 들어, 특정 소프트웨어 컴포넌트가 실행되는 경우, 소프트웨어 컴포넌트에 대한 실행 가능한 파일에 대한 경로는 쉽게 식별될 수 있다. 또 다른 예로서, 소프트웨어 컴포넌트에 바로 가기를 나타내는 아이콘이 디스플레이되는 경우, 아이콘에 대한 데이터를 저장하는 파일은 쉽게 식별될 수 있다. 또 다른 예로서, DLL이 로딩되는 경우, DLL을 저장하는 파일에 대한 경로는 쉽게 식별될 수 있다.
소프트웨어 컴포넌트 접근 제어 모듈(104)은 여러 다른 컴포넌트 및 모듈이 카탈로그(106)로부터 설치된 소프트웨어 컴포넌트에 관한 정보를 얻게 한다. 이러한 다른 컴포넌트 및 모듈은 운영 체제(102)의 일부가 될 수 있거나, 그렇지 않으면 하나 이상의 소프트웨어 컴포넌트(122-128)가 될 수 있다. 설치된 소프트웨어 컴포넌트에 관한 카탈로그(106) 내에 유지되는 정보는 요청하는 컴포넌트 또는 모듈에 반환될 수 있거나, 그렇지 않으면 요청에 대한 응답을 생성하는 데 있어 제어 모듈(104)에 의해 사용될 수 있다. 또한, 카탈로그(106)가 컴퓨팅 장치(100) 상에 설치된 소프트웨어 컴포넌트의 기록을 유지함으로써, 카탈로그(106)는 운영 체제(102)의 다른 컴포넌트 또는 모듈에 의해 활용될 수 있다.
하나 이상의 실시예에 있어서, 카탈로그(106)에 접근하는 데 있어 제어 모듈(104)에 의해 여러 동작이 지원된다. 이러한 동작은 애플리케이션 프로그램밍 인터페이스(API)의 방법들로서 노출될 수 있거나, 그렇지 않으면 수행될 동작에 대한 요청이 다른 방식으로 제어 모듈(104)에 수행될 수 있다. 이하의 표 1은 카탈로그(106)에 접근하는 데 있어 제어 모듈(104)에 의해 지원되는 동작의 예를 설명한다.
동작 | 설명 |
카탈로그 열거 (Enumerate catalogs) |
운영 체제에서 카탈로그의 리스트를 반환한다. |
카탈로그 가져오기 (Get catalog) |
동작을 실행하기 위한 요청에 명시된 계정에 대한 카탈로그를 반환한다. |
컴포넌트 부가 (Add component) |
카탈로그에 소프트웨어 컴포넌트를 부가한다. |
컴포넌트 제거 (Remove component) |
카탈로그로부터 소프트웨어 컴포넌트를 제거한다. |
컴포넌트 열거 (Enumerate components) |
카탈로그의 풀 인덱스 및/또는 유효 인덱스 내의 소프트웨어 컴포넌트의 리스트를 반환한다. |
아이덴터티로 컴포넌트 열거 (Enumerate components by identity) |
명시된 아이덴터티에 부합하는 소프트웨어 컴포넌트 식별자를 갖는 요청에 명시된 카탈로그의 풀 인덱스 및/또는 유효 인덱스 내의 소프트웨어 컴포넌트의 리스트를 반환한다. 명시된 아이덴터티는 일부 또는 전부가 될 수 있다. 예를 들어, 명시된 아이덴터티는 컴포넌트 아이덴터티의 명시되지 않은 속성 또는 일부를 나타내는 와일드카드를 사용할 수 있다. |
경로로 컴포넌트 가져오기 (Get component by path) |
명시된 카탈로그 및 디렉토리 또는 파일의 경로를 고려해 유효 인덱스 및/또는 풀 인덱스로부터 소프트웨어 컴포넌트 식별자를 반환한다. 이는 콜러(caller)가 제공된 파일이 유효 인덱스 및/또는 풀 인덱스 내의 컴포넌트에 속하는지의 여부를 판단하게 한다. |
상술한 것처럼, 하나 이상의 실시예에 있어서, 소프트웨어 컴포넌트에 대한 식별자는 소프트웨어 컴포넌트에 대한 버전 번호를 식별하는 컴포넌트 식별자를 포함한다. 두 개의 소프트웨어 컴포넌트가 동일 버전 번호를 갖는 상황에서, (두 개의 소프트웨어 컴포넌트의 컴포넌트 식별자의 나머지 부분이 동일하다고 가정하면), 두 개의 소프트웨어 컴포넌트 중 하나는 다른 새로운 대체 버전이 되도록 결정된다. 새로운 대체 버전으로 결정되는 두 개의 소프트웨어 컴포넌트 중 하나는 다양한 상이한 방식으로 결정될 수 있는데, 예로서, 하나의 소프트웨어 컴포넌트가 높은 버전 번호를 갖게 하는 것이 있다. 제어 모듈(104)은 소프트웨어 컴포넌트의 구 버전을 컴포넌트의 새로운 대체 버전으로 대체하여, 반환된 새로운 대체 버전을 갖도록 소프트웨어 컴포넌트에 대한 후속 요청을 야기한다. 하나 이상의 실시예에 있어서, 제어 모듈(104)은 컴포넌트의 새로운 대체 버전을 카탈로그(106)의 유효 인덱스에 부가하고 소프트웨어 컴포넌트의 구 버전을 카탈로그(106)의 유효 인덱스로부터 제거한다. 대안으로, 제어 모듈(104)은, 다른 때, 예를 들어 소프트웨어 컴포넌트의 요청에 응답하여, 소프트웨어 컴포넌트의 두 개의 버전 중 어떤 버전이 새로운 대체 버전인지의 여부를 판단할 수 있다.
또한, 각각의 소프트웨어 컴포넌트는 상술한 것과 같은 매니페스트를 갖는다. 하나 이상의 실시예에 있어서, 각각의 소프트웨어 컴포넌트의 매니페스트는 소프트웨어 컴포넌트가 동작 동안 다른 소프트웨어 컴포넌트에 의존하는지의 여부를 또한 식별한다. 예를 들어, 소프트웨어 컴포넌트(122)는 시스템에서 또한 실행하는 소프트웨어 컴포넌트(124)에 의존할 수 있고, 소프트웨어 컴포넌트(124)는 시스템에서 또한 실행하는 소프트웨어 컴포넌트(126)에 의존할 수 있다.
이러한 정보가 소프트웨어 컴포넌트의 매니페스트에 제공되면, 제어 모듈(104)은 특정 소프트웨어 컴포넌트가 컴퓨팅 장치(100) 상에서 실행할 수 있는지의 여부를 쉽게 판단할 수 있다. 예를 들어, 제어 모듈(104)은 소프트웨어 컴포넌트(122)의 매니페스트에 접근하고 소프트웨어 컴포넌트(122)의 실행을 위해 소프트웨어 컴포넌트(124)(및 이어서 소프트웨어 컴포넌트(126))가 또한 실행되고 있는지의 여부를 판단할 수 있다. 따라서, 제어 모듈(104)은 다른 컴포넌트 또는 모듈(운영 체제(102)의 일부, 그렇지 않으면 운영 체제(102)로부터 분리될 수 있는 다른 컴포넌트 또는 모듈))로부터 특정 소프트웨어 컴포넌트가 컴퓨팅 장치(100)에서 실행될 수 있는지의 여부에 관한 질의에 응답할 수 있다. 특정 소프트웨어 컴포넌트가 의존하는 다른 소프트웨어 컴포넌트가 카탈로그(106)에 있으면, 특정 소프트웨어 컴포넌트는 컴퓨팅 장치(100)에서 실행할 수 있다. 그러나, 특정 소프트웨어 컴포넌트가 의존하는 다른 소프트웨어 컴포넌트가 카탈로그(106)에 있지 않으면, 특정 소프트웨어 컴포넌트는 컴퓨팅 장치(100)에서 실행할 수 없다.
마찬가지로, 정보가 소프트웨어 컴포넌트의 매니페스트에 제공되면, 제어 모듈(104)은 컴퓨팅 장치(100)로부터 특정 소프트웨어 컴포넌트의 제거로 다른 소프트웨어 컴포넌트가 실행하는 것을 방지할 것인지의 여부를 쉽게 판단할 수 있다. 예를 들어, 제어 모듈(104)은 소프트웨어 컴포넌트(122)의 매니페스트에 접근하여 소프트웨어 컴포넌트(122)의 실행을 위해 소프트웨어 컴포넌트(124)(및 이어서 소프트웨어 컴포넌트(126))가 또한 실행되고 있는지의 여부를 판단할 수 있다. 따라서, 제어 모듈(104)은, 제대로 실행되지 않을 수 있는 적어도 하나의 다른 소프트웨어 컴포넌트를 야기시키지 않고 소프트웨어 컴포넌트(124)가 제거될 수 없음을 나타냄으로써, 다른 컴포넌트 또는 모듈(운영 체제(102)의 일부, 그렇지 않으면 운영 체제(102)로부터 분리될 수 있는 다른 컴포넌트 또는 모듈)로부터 소프트웨어 컴포넌트(124)가 컴퓨팅 장치(100)로부터 제거될 수 있는지의 여부에 관한 질의에 응답할 수 있다. 이러한 질의에 대한 응답에는 제대로 실행되지 않을 수 있는 소프트웨어 컴포넌트의 아이덴터티가 포함될 수도 있다.
도 4는 하나 이상의 실시예에 따른 카탈로그-기반 소프트웨어 컴포넌트 관리에 대한 예시적인 프로세스(400)를 도시하는 흐름도이다. 프로세스(400)는 장치 상에서 실행하는 운영 체제의 제어 모듈, 예를 들어, 도 1의 소프트웨어 컴포넌트 접근 제어 모듈(104)과 같은 제어 모듈에 의해 수행되며, 소프트웨어, 펌웨어, 하드웨어 또는 그들의 조합으로 구현될 수 있다. 프로세스(400)는 카탈로그-기반 소프트웨어 컴포넌트 관리에 대한 예시적인 프로세스이며, 카탈로그-기반 소프트웨어 컴포넌트 관리의 추가 설명은 상이한 도면을 참조하여 본 명세서 내에 포함된다.
프로세스(400)에서, 소프트웨어 컴포넌트 식별자들은 카탈로그에 유지된다(행위 402). 그러한 소프트웨어 컴포넌트 식별자들은 소프트웨어 컴포넌트를 서로 구별하며, 상술한 것과 같은 다양한 상이한 형태를 취할 수 있다. 복수의 상이한 카탈로그가 장치에 포함될 수 있으며, 각각의 카탈로그는 상술한 것처럼 상이한 인덱스를 선택적으로 포함한다.
결국, 소프트웨어 컴포넌트에 관한 요청이 수신된다(행위 404). 프로세스(400)에서는, 그와 같은 요청이 수신될 때까지 대기하며, 요청에 응답하여 카탈로그에 접근한다(행위 406). 접근될 카탈로그는 요청의 일부로서 식별될 수 있거나, 그렇지 않으면 요청에 내재될 수 있다(예를 들어, 프로세스(400)를 구현하는 컴퓨팅 장치의 현재 사용자의 카탈로그).
이러한 요청은 카탈로그 내의 정보에 기초하여 응답하게 된다(행위 408). 카탈로그 내의 정보는 상술한 것처럼 적어도 컴포넌트 식별자를 포함한다. 특정 응답은 상술한 것처럼 요청된 동작의 특성에 따라 변할 수 있다.
도 5는 하나 이상의 실시예에 따른 카탈로그-기반 소프트웨어 컴포넌트 관리에 대한 예시적인 프로세스(500)를 도시하는 흐름도이다. 프로세스(500)는 소프트웨어 컴포넌트의 복수의 버전이 장치 상에 설치되는 요청에 대해 응답하는 것에 관한 것이다. 프로세스(500)는 장치 상에서 실행하는 운영 체제의 제어 모듈, 예를 들어, 도 1의 소프트웨어 컴포넌트 접근 제어 모듈(104)과 같은 제어 모듈에 의해 수행되며, 소프트웨어, 펌웨어, 하드웨어 또는 그들의 조합으로 구현될 수 있다. 프로세스(500)는 카탈로그-기반 소프트웨어 컴포넌트 관리에 대한 예시적인 프로세스이며, 카탈로그-기반 소프트웨어 컴포넌트 관리의 추가 설명은 상이한 도면을 참조하여 본 명세서 내에 포함된다.
프로세스(500)에서, 장치 상에 설치되는 사용자에 접근 가능한 소프트웨어 컴포넌트의 복수의 버전이 식별된다(행위 502). 상이한 사용자들은 상술한 것처럼 상이한 소프트웨어 컴포넌트에 접근할 수 있다.
복수의 버전 중 어떤 버전이 소프트웨어 컴포넌트의 활성 버전이 되는지에 대한 판단이 수행된다(행위 504). 이러한 판단은 복수의 버전이 식별될 때 또는 다른 때 이루어지며, 활성 버전의 리스트는 상술한 것처럼 유지(예를 들어 유효 인덱스로서)될 수 있다. 대안적으로, 판단은 소프트웨어 컴포넌트에 관한 정보에 대한 요청에 응답하여 이루어질 수 있다.
소프트웨어 컴포넌트에 관한 정보에 대한 요청에 응답하여, 소프트웨어 컴포넌트의 활성 버전에 관한 정보는 반환된다(행위 506). 이러한 요청은 프로세스(500)를 구현하는 운영 체제의 다른 컴포넌트 또는 모듈로부터 수신된 요청이 될 수 있거나, 그렇지 않으면 상술한 것처럼 다른 소프트웨어 컴포넌트로부터 수신된 요청이 될 수 있다.
프로세스(500)는 단일 소프트웨어 컴포넌트를 참조한다. 프로세스(500)는 복수의 소프트웨어 컴포넌트에 대해 반복될 수 있다는 점이 이해되어야 한다. 예를 들어, 복수의 소프트웨어 컴포넌트의 활성 버전의 유효 인덱스는 상술한 것처럼 유지될 수 있다.
또한, 행위(502)에서 실행되는 식별과 행위(504)에서 실행되는 판단은 여러 번 실행될 수 있음이 주목되어야 한다. 하나 이상의 실시예에 있어서, 행위(502 및 504)는 컴퓨팅 장치(100) 상에 설치된 소프트웨어 컴포넌트가 변경될 때마다 실행된다. 프로세스(500)를 구현하는 소프트웨어 접근 제어 모듈은 그와 같은 변경이 이루어질 때를 운영 체제의 다른 컴포넌트 또는 모듈에 의해 알 수 있다. 이와 같은 변경의 예는 소프트웨어 컴포넌트를 설치하는 것과 소프트웨어 컴포넌트를 삭제하는 것을 포함한다. 대안으로, 행위(502 및 504)는 다른 때 예를 들어, 낮은 활성시(운영 체제가 다른 작업을 실행하는 데 있어 비지 상태(busy)가 아닐 때), 소프트웨어 컴포넌트 또는 카탈로그에 관한 정보에 대한 요청에 응답하는 것 등에 의해 실행될 수 있다.
도 6은 하나 이상의 실시예에 따른 카탈로그-기반 소프트웨어 컴포넌트 관리를 구현하도록 구성될 수 있는 예시적인 컴퓨팅 장치(600)를 도시한다. 컴퓨팅 장치(600)는 예를 들어 도 1의 컴퓨팅 장치(100)가 될 수 있다.
컴퓨팅 장치(600)는 하나 이상의 프로세서 또는 프로세싱 유닛(602), 하나 이상의 메모리 및/또는 스토리지 컴포넌트(606)를 포함할 수 있는 하나 이상의 컴퓨터 판독 가능한 매체(604), 하나 이상의 입력/출력(input/output(I/O)) 장치(608), 및 다양한 컴포넌트 및 장치가 서로 통신하게 하는 버스(610)를 포함한다. 컴퓨터 판독 가능한 매체(604) 및/또는 하나 이상의 I/O 장치(608)는 컴퓨팅 장치(600)의 부분으로서 포함될 수 있거나, 또는 대안적으로 컴퓨팅 장치(600)에 결합될 수 있다. 버스(610)는 다양한 상이한 버스 아키텍처를 사용하는 메모리 버스 또는 메모리 제어기, 주변 장치 버스(peripheral bus), 가속 그래픽 포트(accelerated graphics port), 프로세서 또는 로컬 버스 등을 포함하는 몇 가지 유형의 버스 구조 중 하나 이상의 유형의 버스 구조를 나타낸다. 버스(610)는 유선 및/또는 무선 버스를 포함할 수 있다.
메모리/스토리지 컴포넌트(606)는 하나 이상의 컴퓨터 스토리지 매체를 나타낸다. 컴포넌트(606)는 (RAM(random access memory)과 같은) 휘발성 매체 및/또는 (ROM(read only memory), 플래시 메모리, 광 디스크, 자기 디스크 등과 같은) 비휘발성 매체를 포함할 수 있다. 컴포넌트(606)는 제거 가능한 매체(예를 들어, 플래시 메모리 드라이브, 제거 가능한 하드 드라이브, 광 디스크 등)은 물론 고정식 매체(예를 들어, RAM, ROM, 고정식 하드 드라이브 등)을 포함할 수 있다.
본 명세서에서 논의된 기법은 하나 이상의 프로세싱 유닛(602)에 의해 실행되는 명령어를 이용하여 소프트웨어로 구현될 수 있다. 프로세싱 유닛(602) 내에, 프로세싱 유닛(602)의 다양한 캐시 메모리 내에, 장치(600)의 다른 캐시 메모리(도시되지 않음) 내에, 다른 컴퓨터 판독 가능한 매체 상에 등과 같이 컴퓨팅 장치(600)의 상이한 컴포넌트 내에 상이한 명령어가 저장될 수 있다는 것이 이해되어야 한다. 또한, 컴퓨팅 장치(600) 내에 명령어가 저장되는 위치가 시간에 따라 변경될 수 있다는 것이 이해되어야 한다.
하나 이상의 입력/출력 장치(608)는 사용자가 명령 및 정보를 컴퓨팅 장치(600)로 입력하게 하며, 또한 정보가 사용자 및/또는 다른 컴포넌트 또는 장치로 제시되게 한다. 입력 장치의 예는 키보드, 커서(cursor) 제어 장치(예를 들어, 마우스), 마이크로폰, 스캐너 등을 포함한다. 출력 장치의 예는 디스플레이 장치(예를 들어, 모니터 또는 프로젝터), 스피커, 프린터, 네트워크 카드 등을 포함한다.
본 명세서에서는 소프트웨어 또는 프로그램 모듈의 일반적인 맥락에서의 다양한 기법이 설명될 수 있다. 일반적으로, 소프트웨어는 특정 임무를 수행하거나 특정 추상적 데이터 유형(abstract date type)을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 이들 모듈 및 기법의 구현은 일부 형태의 컴퓨터 판독 가능한 매체 상에 저장될 수 있거나 일부 형태의 컴퓨터 판독 가능한 매체를 거쳐 전달될 수 있다. 컴퓨터 판독 가능한 매체는 컴퓨팅 장치에 의해 접근될 수 있는 임의의 이용 가능한 매체 또는 매체들일 수 있다. 예를 들어, 컴퓨터 판독 가능한 매체는 "컴퓨터 스토리지 매체" 및 "통신 매체"를 포함할 수 있지만 이에 제한되지 않는다.
"컴퓨터 스토리지 매체"는 컴퓨터 판독 가능한 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터와 같은 정보의 스토리지를 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성인 제거 가능한 그리고 제거 가능하지 않은 매체를 포함한다. 컴퓨터 스토리지 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 다른 광 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 스토리지 장치, 또는 요구된 정보를 저장하기 하기 위해 사용될 수 있으며, 컴퓨터에 의해 접근될 수 있는 임의의 다른 매체를 포함하지만 이에 제한되지 않는다.
"통신 매체"는 전형적으로 컴퓨터 판독 가능한 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 반송파 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호 내에 구현한다. 통신 매체는 또한 임의의 정보 전달 매체를 포함한다. 용어 "변조된 데이터 신호"는, 그의 특성 세트 중 하나 이상의 특성 세트를 갖거나 정보를 그 신호 내에 부호화하기 위한 방식으로 변경된 신호를 의미한다. 예를 들어, 통신 매체는 유선 네트워크 또는 다이렉트-와이어드 접속(direct-wired connection)과 같은 유선 매체, 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함하지만 이에 제한되지 않는다. 전술된 것의 임의의 조합도 또한 컴퓨터 판독 가능한 매체의 범위 내에 포함된다.
일반적으로, 본 명세서에 설명된 임의의 기능 또는 기법은 소프트웨어, 펌웨어, 하드웨어 (예를 들어, 고정식 논리 회로), 수동 프로세싱, 또는 이들 구현의 조합을 사용하여 구현될 수 있다. 본 명세서에서 사용되는 용어 "모듈" 및 "컴포넌트"는 일반적으로 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 나타낸다. 소프트웨어 구현인 경우에, 모듈 또는 컴포넌트는 프로세서(예를 들어, CPU 또는 복수의 CPU) 상에서 실행될 때 명시된 임무를 수행하는 프로그램 코드를 나타낸다. 프로그램 코드는 하나 이상의 컴퓨터 판독 가능한 메모리 장치 내에 저장될 수 있으며, 그에 대한 추가 설명은 도 6을 참조하여 발견될 수 있다. 본 명세서에서 설명된 카탈로그-기반 소프트웨어 컴포넌트 관리의 특징은 플랫폼에 무관하며(platform-independent), 이는 그 기법이 다양한 프로세서를 갖는 다양한 상업적인 컴퓨팅 플랫폼상에서 구현될 수 있다는 것을 의미한다.
비록 본 발명이 구조 특징 및/또는 방법론적인 행위에 특유한 언어로 설명되었지만, 첨부된 특허청구범위에서 한정된 본 발명이 전술된 특유한 특징 또는 행위에 반드시 제한되지 않는다는 것이 이해되어야 한다. 대신에, 전술된 특유의 특징 또는 행위는 특허청구범위를 구현하는 예시적인 형태로서 개시된다.
Claims (15)
- 컴퓨팅 장치(600)에 있어서,
프로세서(602), 및
상기 프로세서에 결합되어 있으며, 운영 체제의 복수의 명령어가 저장되어 있는 하나 이상의 컴퓨터 판독 가능한 매체(604)를 포함하며, 상기 복수의 명령어는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금
상기 운영 체제의 카탈로그에 복수의 소프트웨어 컴포넌트 식별자를 유지(402)하게 하고? 상기 복수의 소프트웨어 컴포넌트는 상기 장치 상에 설치되며, 상기 복수의 소프트웨어 컴포넌트 식별자 각각은 상기 복수의 소프트웨어 컴포넌트 중 하나에 대응함?,
상기 복수의 소프트웨어 컴포넌트 중 하나에 관한 요청에 응답하여 상기 카탈로그에 접근(406)하게 하며,
상기 카탈로그에 포함된 정보에 적어도 부분적으로 기초하여 상기 요청에 응답(408)하게 하는
컴퓨팅 장치(600).
- 제 1 항에 있어서,
상기 복수의 카탈로그는 상기 장치 상에 있고, 상기 복수의 카탈로그 각각은 상기 운영 체제의 복수의 계정 중 하나에 대응하며, 상기 명령어는 추가로 상기 프로세서로 하여금 상기 복수의 계정 중 어느 것이 로그인 되는가에 적어도 부분적으로 기초하여 상기 복수의 카탈로그 중 하나를 식별하게 하는
컴퓨팅 장치.
- 제 1 항에 있어서,
상기 요청은 상기 복수의 소프트웨어 컴포넌트 중 하나를 실행하는 것이 상기 카탈로그에 있는 하나 이상의 다른 소프트웨어 컴포넌트에 의존하는지의 여부를 확인하기 위한 요청인
컴퓨팅 장치.
- 제 1 항에 있어서,
상기 카탈로그는 풀 인덱스(full index) 및 유효 인덱스(effective index)를 포함하고, 상기 풀 인덱스는 상기 장치 상에 설치된 모든 컴포넌트를 포함하고, 상기 유효 인덱스는 상기 풀 인덱스의 서브 세트를 포함하며, 상기 유효 인덱스는 상기 장치에 설치된 두 개 이상의 버전을 갖는 상기 복수의 소프트웨어 컴포넌트 각각에 대해 상기 소프트웨어 컴포넌트의 활성 버전을 포함하는
컴퓨팅 장치. - 제 1 항에 있어서,
상기 복수의 소프트웨어 컴포넌트 식별자 각각은
상기 소프트웨어 컴포넌트의 발행자의 식별자,
상기 소프트웨어 컴포넌트를 설명하는 메타데이터를 저장하는 매니페스트에 대한 상기 발행자의 디지털 서명, 및
상기 소프트웨어 컴포넌트의 하나 이상의 버전 번호를 포함하는
컴퓨팅 장치.
- 제 1 항에 있어서,
상기 요청은 상기 장치 상에 설치된 복수의 버전을 갖는 소프트웨어 컴포넌트에 관한 요청이며, 상기 요청에 대해 응답하는 것은 상기 소프트웨어 컴포넌트의 상기 복수의 버전 중 특정한 하나에 적어도 부분적으로 기초하여 응답하는 것인
컴퓨팅 장치.
- 제 1 항에 있어서,
상기 요청은 주어진 경로를 갖는 파일을 포함하는 상기 복수의 소프트웨어 컴포넌트 중 하나의 소프트웨어 컴포넌트 식별자에 대한 요청을 포함하는
컴퓨팅 장치.
- 컴퓨팅 장치의 운영 체제에서 구현되는 방법에 있어서,
상기 컴퓨팅 장치에 설치된 소프트웨어 컴포넌트의 두 개 이상의 버전을 식별(502)하는 단계,
상기 소프트웨어 컴포넌트의 상기 두 개 이상의 버전 중 어느 것이 실행될 상기 소프트웨어 컴포넌트의 활성 버전인지의 여부를 판단(504)하는 단계, 및
상기 소프트웨어 컴포넌트에 관한 정보에 대한 요청에 응답하여, 상기 소프트웨어 컴포넌트의 상기 활성 버전에 관한 정보를 반환(506)하는 단계를 포함하는
방법.
- 제 8 항에 있어서,
상기 소프트웨어 컴포넌트의 상기 두 개 이상의 버전은 각각 버전 번호만이 다른 소프트웨어 컴포넌트 식별자를 갖는
방법.
- 제 9 항에 있어서,
상기 소프트웨어 컴포넌트의 상기 두 개 이상의 버전 각각의 상기 소프트웨어 컴포넌트 식별자를 카탈로그에 유지하는 단계를 더 포함하며, 각각의 소프트웨어 컴포넌트 식별자는
상기 소프트웨어 컴포넌트의 상기 버전의 발행자의 식별자,
상기 소프트웨어 컴포넌트의 버전을 설명하는 메타데이터를 저장하는 매니페스트에 대한 상기 발행자의 디지털 서명, 및
상기 소프트웨어 컴포넌트의 상기 버전의 상기 버전 번호를 포함하는
방법.
- 제 8 항에 있어서,
복수의 소프트웨어 컴포넌트 각각에 대해 상기 식별 및 판단하는 것을 반복하는 단계,
상기 복수의 소프트웨어 컴포넌트의 상기 활성 버전 각각의 식별자를 포함하는 유효 인덱스를 생성하는 단계, 및
상기 복수의 소프트웨어 컴포넌트 각각의 상기 활성 버전을 순차적으로 식별하기 위해 상기 유효 인덱스를 사용하는 단계를 더 포함하는
방법.
- 제 11 항에 있어서,
상기 판단하는 단계는
특정 소프트웨어 컴포넌트의 두 개 이상의 버전 중 어느 것이 상기 특정 소프트웨어 컴포넌트의 활성 버전인지를 판단하기 위해 사용될 규칙의 세트를 식별하되, 상기 규칙의 세트는 상기 컴퓨팅 장치가 결합된 네트워크의 관리자에 의해 설정된 정책 규칙 세트를 포함하는 단계, 및
상기 규칙의 세트에 기초하여, 상기 두 개 이상의 버전 중 상기 특정 소프트웨어 컴포넌트의 상기 활성 버전인 하나를 선택하는 단계를 포함하는
방법.
- 제 8 항에 있어서,
상기 컴퓨팅 장치 상에 설치되는 상기 소프트웨어 컴포넌트의 새로운 버전에 응답하여 상기 식별 및 판단 단계를 반복하는 단계를 더 포함하는
방법.
- 제 8 항에 있어서,
상기 소프트웨어 컴포넌트의 상기 두 개 이상의 버전 중 하나가 상기 컴퓨팅 장치로부터 제거되는 것에 응답하여 상기 식별 및 판단 단계를 반복하는 단계를 더 포함하는
방법.
- 제 8 항에 있어서,
상기 컴퓨팅 장치 상의 복수의 사용자 계정 중 상이한 하나에 대한 상기 소프트웨어 컴포넌트의 상기 활성 버전을 각각 식별하는 복수의 카탈로그를 유지하는 단계를 더 포함하며, 상기 소프트웨어 컴포넌트의 상기 활성 버전은 상이한 카탈로그 내의 상이한 버전인
방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/484,394 US8495621B2 (en) | 2009-06-15 | 2009-06-15 | Catalog-based software component management |
US12/484,394 | 2009-06-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120037397A true KR20120037397A (ko) | 2012-04-19 |
KR101643022B1 KR101643022B1 (ko) | 2016-07-26 |
Family
ID=43307526
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020117029929A KR101643022B1 (ko) | 2009-06-15 | 2010-06-15 | 카탈로그-기반 소프트웨어 컴포넌트 관리 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8495621B2 (ko) |
EP (1) | EP2443549A2 (ko) |
JP (1) | JP2012530322A (ko) |
KR (1) | KR101643022B1 (ko) |
CN (1) | CN102804132B (ko) |
WO (1) | WO2010147926A2 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170046409A (ko) * | 2015-10-21 | 2017-05-02 | 삼성전자주식회사 | 어플리케이션을 관리하는 방법 및 그 장치 |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9134989B2 (en) | 2002-01-31 | 2015-09-15 | Qualcomm Incorporated | System and method for updating dataset versions resident on a wireless device |
US9092286B2 (en) * | 2002-12-20 | 2015-07-28 | Qualcomm Incorporated | System to automatically process components on a device |
US8626146B2 (en) | 2003-10-29 | 2014-01-07 | Qualcomm Incorporated | Method, software and apparatus for performing actions on a wireless device using action lists and versioning |
CA2687883C (en) | 2007-06-19 | 2014-07-08 | Qualcomm Incorporated | Methods and apparatus for dataset synchronization in a wireless environment |
WO2010135696A1 (en) * | 2009-05-21 | 2010-11-25 | Salesforce.Com, Inc. | System, method and computer program product for versioning components of an application |
US8997083B2 (en) * | 2009-11-30 | 2015-03-31 | Red Hat, Inc. | Managing a network of computer systems using a version identifier generated based on software packages installed on the computing systems |
US10089119B2 (en) | 2009-12-18 | 2018-10-02 | Microsoft Technology Licensing, Llc | API namespace virtualization |
US9009696B2 (en) | 2010-04-27 | 2015-04-14 | Red Hat, Inc. | Generating encoded identifications of selected subsets of installed software packages on a client machine |
US8776094B2 (en) | 2011-08-11 | 2014-07-08 | Microsoft Corporation | Runtime system |
US20130055369A1 (en) * | 2011-08-24 | 2013-02-28 | Mcafee, Inc. | System and method for day-zero authentication of activex controls |
US8695021B2 (en) | 2011-08-31 | 2014-04-08 | Microsoft Corporation | Projecting native application programming interfaces of an operating system into other programming languages |
US8683206B2 (en) * | 2011-09-19 | 2014-03-25 | GM Global Technology Operations LLC | System and method of authenticating multiple files using a detached digital signature |
US9697016B2 (en) | 2011-11-15 | 2017-07-04 | Microsoft Technology Licensing, Llc | Search augmented menu and configuration for computer applications |
CN102541557B (zh) * | 2011-12-28 | 2014-12-10 | 山东中创软件工程股份有限公司 | 一种组件处理系统及方法 |
CN102722396B (zh) * | 2012-06-11 | 2015-05-20 | 山东中创软件商用中间件股份有限公司 | 一种组件加载方法及系统 |
GB2507305A (en) * | 2012-10-25 | 2014-04-30 | Ibm | Server client negotiation of version selection in a messaging system |
US10073690B2 (en) | 2014-09-26 | 2018-09-11 | Oracle International Corporation | Populating content for a base version of an image |
US9665366B2 (en) * | 2014-09-26 | 2017-05-30 | Oracle International Corporation | Creation of a software configuration signature for software |
US10205769B2 (en) | 2013-05-31 | 2019-02-12 | Itron, Inc. | Distributed applications across platforms |
US9342288B2 (en) * | 2013-05-31 | 2016-05-17 | Itron, Inc. | Surfacing cross platform applications |
US11328344B2 (en) | 2013-05-31 | 2022-05-10 | Itron, Inc. | Utility application delivery platform |
US9830146B2 (en) * | 2013-06-07 | 2017-11-28 | Microsoft Technology Licensing, Llc | API lifecycle platform and version management |
US9298923B2 (en) * | 2013-09-04 | 2016-03-29 | Cisco Technology, Inc. | Software revocation infrastructure |
EP2849464A1 (en) * | 2013-09-17 | 2015-03-18 | Gemalto SA | Method of communicating between a server and a secure element |
US10127261B2 (en) * | 2013-12-31 | 2018-11-13 | Dassault Systems Enovia Corporation | Methods and systems for resolving conflicts in hierarchically-referenced data |
CN103793248B (zh) * | 2014-01-23 | 2017-02-01 | 北京奇虎科技有限公司 | 一种应用程序升级的方法及装置 |
US9348582B2 (en) * | 2014-02-13 | 2016-05-24 | Linkedin Corporation | Systems and methods for software dependency management |
US9223569B1 (en) | 2014-06-17 | 2015-12-29 | International Business Machines Corporation | Automatic software catalog content creation based on bio-inspired computing prediction |
GB2528679A (en) * | 2014-07-28 | 2016-02-03 | Ibm | Software discovery in an environment with heterogeneous machine groups |
US9521153B2 (en) * | 2014-08-18 | 2016-12-13 | Dell Products L.P. | Platform trust extension |
US10635504B2 (en) | 2014-10-16 | 2020-04-28 | Microsoft Technology Licensing, Llc | API versioning independent of product releases |
JP6889617B2 (ja) * | 2017-06-01 | 2021-06-18 | キヤノン株式会社 | 情報処理装置、プログラム管理方法、及びプログラム |
US10868709B2 (en) | 2018-09-10 | 2020-12-15 | Oracle International Corporation | Determining the health of other nodes in a same cluster based on physical link information |
CN112433748A (zh) * | 2019-08-26 | 2021-03-02 | 北京国双科技有限公司 | 软件系统版本标定方法、装置、存储介质及处理器 |
CN111190858B (zh) * | 2019-10-15 | 2023-07-14 | 腾讯科技(深圳)有限公司 | 软件信息存储方法、装置、设备和存储介质 |
CN113535221A (zh) * | 2020-04-16 | 2021-10-22 | 北京沃东天骏信息技术有限公司 | 应用版本管理的方法和装置 |
CN114936031B (zh) * | 2022-07-22 | 2022-11-11 | 浙江中控技术股份有限公司 | 组件的调用方法及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050039634A (ko) * | 2003-10-24 | 2005-04-29 | 마이크로소프트 코포레이션 | 소프트웨어 제품의 애플리케이션 식별자 |
US20060184932A1 (en) * | 2005-02-14 | 2006-08-17 | Blazent, Inc. | Method and apparatus for identifying and cataloging software assets |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4558413A (en) * | 1983-11-21 | 1985-12-10 | Xerox Corporation | Software version management system |
US6397378B1 (en) * | 1998-08-21 | 2002-05-28 | National Instruments Corporation | Test executive system and method including distributed type storage and conflict resolution |
US6883168B1 (en) * | 2000-06-21 | 2005-04-19 | Microsoft Corporation | Methods, systems, architectures and data structures for delivering software via a network |
US7191436B1 (en) * | 2001-03-08 | 2007-03-13 | Microsoft Corporation | Computer system utility facilitating dynamically providing program modifications for identified programs |
US8216071B2 (en) * | 2002-03-20 | 2012-07-10 | Intel Corporation | Method and apparatus for software delivery and management |
US20040093595A1 (en) * | 2002-08-08 | 2004-05-13 | Eric Bilange | Software application framework for network-connected devices |
US7305669B2 (en) * | 2002-09-27 | 2007-12-04 | Sun Microsystems, Inc. | Software upgrades with multiple version support |
US7562346B2 (en) | 2003-09-02 | 2009-07-14 | Microsoft Corporation | Software componentization for building a software product |
US7574706B2 (en) * | 2003-12-15 | 2009-08-11 | Microsoft Corporation | System and method for managing and communicating software updates |
US7478381B2 (en) * | 2003-12-15 | 2009-01-13 | Microsoft Corporation | Managing software updates and a software distribution service |
US8458691B2 (en) * | 2004-04-15 | 2013-06-04 | International Business Machines Corporation | System and method for dynamically building application environments in a computational grid |
US7797525B2 (en) * | 2004-07-01 | 2010-09-14 | Hewlett-Packard Development Company, L.P. | Operating system installation |
US7562358B2 (en) * | 2004-10-04 | 2009-07-14 | United Parcel Service Of America, Inc. | Controlled deployment of software in a web-based architecture |
US7546595B1 (en) * | 2004-10-14 | 2009-06-09 | Microsoft Corporation | System and method of installing software updates in a computer networking environment |
US7743373B2 (en) * | 2005-05-06 | 2010-06-22 | International Business Machines Corporation | Method and apparatus for managing software catalog and providing configuration for installation |
US7831956B2 (en) | 2005-09-13 | 2010-11-09 | Microsoft Corporation | Using attributes to identify and filter pluggable functionality |
US8332817B2 (en) * | 2005-11-08 | 2012-12-11 | Red Hat, Inc. | Certifying a software application based on identifying interface usage |
WO2007071465A1 (en) * | 2005-12-22 | 2007-06-28 | International Business Machines Corporation | A method and apparatus for populating a software catalog with automated use signature generation |
US7991891B2 (en) * | 2006-02-02 | 2011-08-02 | Microsoft Corporation | Version-specific content searching |
US8621433B2 (en) * | 2006-03-20 | 2013-12-31 | Microsoft Corporation | Managing version information for software components |
US7644111B2 (en) | 2006-05-02 | 2010-01-05 | Microsoft Corporation | Framework for content representation and delivery |
US7840942B2 (en) * | 2006-11-29 | 2010-11-23 | International Business Machines Corporation | Configuration file sharing |
US20080301672A1 (en) * | 2007-05-30 | 2008-12-04 | Google Inc. | Installation of a Software Product on a Device with Minimal User Interaction |
JP5058697B2 (ja) * | 2007-07-19 | 2012-10-24 | キヤノン株式会社 | 情報処理装置、アプリケーション管理方法、及びコンピュータプログラム |
US8464228B2 (en) | 2007-08-23 | 2013-06-11 | Accenture Global Services Limited | Binary library |
US8464249B1 (en) * | 2009-09-17 | 2013-06-11 | Adobe Systems Incorporated | Software installation package with digital signatures |
US8819658B2 (en) * | 2009-12-17 | 2014-08-26 | Verizon Patent And Licensing Inc. | Methods and systems for managing update requests for a deployed software application |
-
2009
- 2009-06-15 US US12/484,394 patent/US8495621B2/en not_active Expired - Fee Related
-
2010
- 2010-06-15 WO PCT/US2010/038590 patent/WO2010147926A2/en active Application Filing
- 2010-06-15 EP EP10790019A patent/EP2443549A2/en not_active Withdrawn
- 2010-06-15 JP JP2012516182A patent/JP2012530322A/ja not_active Withdrawn
- 2010-06-15 CN CN201080026685.7A patent/CN102804132B/zh not_active Expired - Fee Related
- 2010-06-15 KR KR1020117029929A patent/KR101643022B1/ko active IP Right Grant
-
2013
- 2013-07-22 US US13/947,689 patent/US20130305239A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050039634A (ko) * | 2003-10-24 | 2005-04-29 | 마이크로소프트 코포레이션 | 소프트웨어 제품의 애플리케이션 식별자 |
US20060184932A1 (en) * | 2005-02-14 | 2006-08-17 | Blazent, Inc. | Method and apparatus for identifying and cataloging software assets |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170046409A (ko) * | 2015-10-21 | 2017-05-02 | 삼성전자주식회사 | 어플리케이션을 관리하는 방법 및 그 장치 |
US11256496B2 (en) | 2015-10-21 | 2022-02-22 | Samsung Electronics Co., Ltd. | Apparatus and method for managing application |
Also Published As
Publication number | Publication date |
---|---|
CN102804132B (zh) | 2014-11-12 |
EP2443549A2 (en) | 2012-04-25 |
WO2010147926A2 (en) | 2010-12-23 |
US20130305239A1 (en) | 2013-11-14 |
US8495621B2 (en) | 2013-07-23 |
KR101643022B1 (ko) | 2016-07-26 |
CN102804132A (zh) | 2012-11-28 |
WO2010147926A3 (en) | 2011-03-03 |
US20100318968A1 (en) | 2010-12-16 |
JP2012530322A (ja) | 2012-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101643022B1 (ko) | 카탈로그-기반 소프트웨어 컴포넌트 관리 | |
US11818224B2 (en) | On demand resources | |
US9679130B2 (en) | Pervasive package identifiers | |
US11347855B2 (en) | Data lineage management | |
US20130067449A1 (en) | Application packages using block maps | |
US9880824B2 (en) | On demand resources | |
US8880651B2 (en) | Method and system for efficient download of data package | |
US20110191453A1 (en) | Applicability detection using third party target state | |
US11120212B2 (en) | Creating and modifying applications from a mobile device | |
US10878089B2 (en) | Identifying malware based on content item identifiers | |
US20160371071A1 (en) | Account-based software upgrades in a multi-tenant ecosystem | |
US8949590B2 (en) | Controlling access to software component state | |
US10127270B1 (en) | Transaction processing using a key-value store | |
US20230359471A1 (en) | Operating system partitioning of different users for single-user applications | |
US20210103577A1 (en) | Reliable detection of deleted assets in data stores | |
CN113886409A (zh) | 一种数据更新的方法以及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
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: 20190617 Year of fee payment: 4 |