KR102056960B1 - 온라인 스토어를 통해 소프트웨어 컴포넌트를 업데이트하는 기법 - Google Patents

온라인 스토어를 통해 소프트웨어 컴포넌트를 업데이트하는 기법 Download PDF

Info

Publication number
KR102056960B1
KR102056960B1 KR1020157034024A KR20157034024A KR102056960B1 KR 102056960 B1 KR102056960 B1 KR 102056960B1 KR 1020157034024 A KR1020157034024 A KR 1020157034024A KR 20157034024 A KR20157034024 A KR 20157034024A KR 102056960 B1 KR102056960 B1 KR 102056960B1
Authority
KR
South Korea
Prior art keywords
framework
update
application
computer system
applications
Prior art date
Application number
KR1020157034024A
Other languages
English (en)
Other versions
KR20160013884A (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 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20160013884A publication Critical patent/KR20160013884A/ko
Application granted granted Critical
Publication of KR102056960B1 publication Critical patent/KR102056960B1/ko

Links

Images

Classifications

    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)

Abstract

본 발명은 온라인 스토어를 통해 소프트웨어 컴포넌트를 업데이트하기 위한 방법, 시스템 및 컴퓨터 프로그램 제품으로 확장된다. 컴퓨팅 장치는 온라인 스토어로부터 배포되는 애플리케이션 및 프레임워크를 다운로드하도록 온라인 스토어와 상호작용한다. 컴퓨팅 시스템은 배포된 애플리케이션 및 프레임워크가 업데이트된 채로 유지하도록 구성된 운영 체제를 포함한다. 운영 체제는, 자동으로 그리고 사용자 개입 없이, 사용자 불편을 최소화하는 방식으로 애플리케이션 및 프레임워크 업데이트를 스케줄링하고 시도할 수 있다. 운영 체제는 컴퓨팅 장치 상의 임의의 및/또는 모든 사용자 계정에 대해 애플리케이션 및 프레임워크 업데이트를 관리할 수 있다. 운영 체제는, 설치된 애플리케이션 및/또는 프레임워크를 갖는 상이한 사용자 계정에 대해 각각의 애플리케이션 및/또는 프레임워크가 별도로 설치되는 경우에도 업데이트들을 관리할 수 있다.

Description

온라인 스토어를 통해 소프트웨어 컴포넌트를 업데이트하는 기법{UPDATING SOFTWARE COMPONENTS THROUGH ONLINE STORES}
컴퓨터 시스템 및 관련 기술은 사회의 많은 면에 영향을 미친다. 사실, 정보를 처리하는 컴퓨터 시스템의 능력은 우리가 생활하고 일하는 방식을 바꾸어 놓았다. 컴퓨터 시스템은 이제 컴퓨터 시스템의 출현 전에는 수작업으로 행해졌던 수많은 업무들(예컨대, 워드 프로세싱, 스케줄링, 회계 등)을 일상적으로 수행한다. 보다 최근에는, 컴퓨터 시스템들이 서로에게 그리고 다른 전자 장치에 연결되어, 컴퓨터 시스템 및 다른 전자 장치가 전자 데이터를 전송하는데 이용할 수 있는 유선 및 무선 컴퓨터 네트워크를 형성한다. 따라서, 많은 컴퓨팅 업무의 수행(performance)이 다수의 컴퓨터 시스템 및/또는 다수의 컴퓨팅 환경에 걸쳐 분산된다.
온라인 스토어로부터 배포된 애플리케이션은 흔히 디스크 풋프린트(disk footprint)를 줄이고 상이한 애플리케이션들의 공유된 컴포넌트들이 동시에 업데이트될 수 있도록 하기 위해 공통의 프레임워크를 공유한다. 적어도 일부 시스템 내에서는, 애플리케이션 및 프레임워크 업데이트가 수동으로 수행된다. 따라서, 일부 상황에서는 프레임워크가 업데이트되지 않을 수 있다. 예를 들어, 프레임워크의 새로운 버전이 출시될 경우, 새로운 애플리케이션 또는 업데이트된 애플리케이션이 획득되지 않고 새로운/업데이트된 애플리케이션이 자신이 사용하는 프레임워크의 새로운 버전에 특별히 바인딩되지 않으면 이 프레임워크는 업데이트되지 않을 수 있다.
많은 온라인 스토어는 애플리케이션 및 애플리케이션 업데이트를 찾아내고, 다운로드하고 설치할 능력을 갖고 있다. 온라인 스토어를 통해 배포된 적어도 일부 애플리케이션은 하나 이상의 공통 프레임워크를 공유한다. 프레임워크는 통상적으로 이전 기종과 호환되도록(backward compatible) 개발된다. 따라서 개발자들이 프레임워크의 이전 버전을 사용하여 애플리케이션을 생성하더라도 사용자는 이들 프레임워크의 최신 버전을 갖는 것이 통상적으로 유리하다. 프레임워크 업데이트는 보안 패치, 성능 향상 및 기타 이점들을 포함할 수 있다.
그러나, 상술한 바와 같이 프레임워크 업데이트는 다운로드가 보장되지 않는다. 사용자는 애플리케이션에 바인딩된(bound) 프레임워크의 버전, 즉, 애플리케이션이 개발되었을 때 사용된 프레임워크의 버전만 얻을 수 있다. 따라서, 다양한 시나리오 하에서, 사용자는 이용가능한 프레임워크 업데이트를 결코 얻을 수 없을 수도 있다. 한 시나리오에서는, 개발자가 절대로 자신의 애플리케이션이 새로 출시되는 프레임워크에 바인딩되도록 업데이트하지 않는다. 다른 시나리오에서는, 사용자가 이용가능한 업데이트를 한 번도 설치하려고 하지 않는다. 다른 시나리오에서는, 사용자가 업데이트된 프레임워크에 바인딩되어버리는 새로운 애플리케이션을 전혀 획득하지 않는다. 따라서, 사용자는 잠재적으로 불안정하거나 느리거나 다른 바람직하지 않는 상태로 남게 될 수 있다.
또한, 종래의 업데이트 기법은 흔히 결과적으로 비교적 큰 애플리케이션 패키지를 만들게 되는데, 여기서 이들이 운영 체제에 직접 삽입되고 운영 체제 업데이트들이 자신을 향상시킬 것을 요구하거나, 또는 공통 아이템이 각각의 개별 애플리케이션의 내부에 여러 번 반복적으로 포함된다. 공통 아이템을 복제하는 것은 저장 자원을 소비하고, 개발자에게 각각의 변경을 다시 구현하도록 하는 부담을 지우며, 업데이트를 각 개인 애플리케이션에 수작업으로 제출한다.
본 발명은 온라인 스토어를 통해 소프트웨어 컴포넌트를 업데이트하기 위한 방법, 시스템 및 컴퓨터 프로그램으로 확장된다. 일부 실시예에서, 자동으로 그리고 사용자 개입 없이, 애플리케이션 업데이트 쿼리가 온라인 스토어로 전송된다. 애플리케이션 업데이트 쿼리는 컴퓨터 시스템에 설치된 복수의 애플리케이션들 중 어느 하나의 애플리케이션에 대한 업데이트에 대해 온라인 스토어에 질의한다. 자동으로 그리고 사용자 개입 없이, 별도의 프레임워크 업데이트 쿼리가 애플리케이션 업데이트 쿼리와 병행하여 온라인 스토어로 전송된다. 프레임워크 업데이트 쿼리는 컴퓨터 시스템에 설치된 복수의 애플리케이션들 중 어느 하나의 애플리케이션에 의해 이용된 임의의 프레임워크에 대한 업데이트에 대해 온라인 스토어에 질의한다.
프레임워크 업데이트가 프레임워크 업데이트 쿼리에 응답하여 수신된다. 프레임워크 업데이트는 컴퓨터 시스템에 설치된 하나 이상의 애플리케이션에 의해 이용된 프레임워크에 대한 업데이트를 포함한다. 자동으로 그리고 사용자 개입 없이, 프레임워크 업데이트는 컴퓨터 시스템에서의 운영 체제 유지보수 기간(operating system maintenance window) 동안 컴퓨터 시스템에서 설치되도록 스케줄링된다. 프레임워크 업데이트는 컴퓨터 시스템에서 하나 이상의 애플리케이션을 업데이트하기 위한 이용가능한 시간에 설치된다.
다른 실시예에서, 소프트웨어 컴포넌트(예컨대, 애플리케이션 또는 프레임워크) 업데이트가 온라인 스토어로부터 수신된다. 소프트웨어 컴포넌트 업데이트는 컴퓨터 시스템에서 복수의 사용자 계정에 적용가능하다. 소프트웨어 컴포넌트 업데이트는 복수의 계정 각각에 대해 개별적으로 설치되어야 한다. 자동으로 그리고 사용자 개입 없이, 소프트웨어 컴포넌트 업데이트는 컴퓨터 시스템에서의 운영 체제 유지보수 기간 동안에 복수의 사용자 계정 각각에 대해 설치되도록 스케줄링된다. 복수의 계정 각각에 대해, 소프트웨어 컴포넌트 업데이트는 사용자 계정에 대한 소프트웨어 컴포넌트를 업데이트하기 위해 이용가능한 시간에 설치된다.
다른 실시예에서, 온라인 스토어로부터 애플리케이션의 적어도 일부를 획득하기 위한 사용자 명령이 수신된다. 애플리케이션이 프레임워크의 버전에 바인딩되어 있는지 판정된다. 또한 프레임워크의 보다 최신 버전이 온라인 스토어로부터 이용가능한지 판정된다. 프레임워크의 보다 최신 버전은 프레임워크의 버전보다 더 최근에 업데이트된다.
애플리케이션의 적어도 일부 및 프레임워크의 보다 최신 버전에 대한 요청이 온라인 스토어로 전송된다. 이 요청에 응답하여 온라인 스토어로부터 프레임워크의 보다 최신 버전이 수신된다. 자동으로 그리고 사용자 개입 없이, 프레임워크의 보다 최신 버전이 컴퓨터 시스템에 설치되도록 스케줄링된다. 프레임워크의 보다 최신 버전은 적어도 애플리케이션을 업데이트하기 위한 이용가능한 시간에 설치된다.
본 개요는 후속하여 발명의 상세한 설명 부분에서 설명되는 개념들 중 선택된 것들을 단순화된 형태로 소개하고자 제공되는 것이다. 본 개요는 청구항의 청구대상의 핵심적인 특징이나 필수적인 특징들을 밝히고자 함이 아니며, 청구항의 청구대상의 범위를 결정하는 데 도움이 되고자 함도 아니다.
본 발명의 추가적인 특징들 및 이점들은 후술하는 설명에 기술되어 있으며, 부분적으로는 이 설명으로부터 명확할 것이며, 또는 본 발명의 실시에 의해 학습될 수도 있을 것이다. 본 발명의 특징 및 이점들은 첨부한 청구범위에서 특별히 지적된 수단들 및 이들의 조합에 의해 이해될 수 있고 얻어질 수 있을 것이다. 본 발명의 이들 및 다른 특징들은 하기 설명 및 첨부한 청구범위로부터 보다 명확해질 것이며, 또는 이하에 개시된 대로 본 발명을 실시함으로써 학습될 수 있다.
본 발명의 상기 및 다른 이점들 및 특징들이 얻어질 수 있는 방식을 기술하기 위해, 위에서 간략하게 설명한 본 발명에 대해 첨부 도면에 예시되어 있는 특정 실시예를 참고하여 보다 자세하게 설명할 것이다. 이들 도면은 본 발명의 전형적인 실시예를 도시한 것일 뿐이며 따라서 본 발명의 범위를 제한하는 것으로 간주되어서는 안 된다는 점을 이해하고, 본 발명은 첨부 도면을 사용하여 보다 구체적으로 그리고 상세하게 설명될 것이다.
도 1은 온라인 스토어를 통해 소프트웨어 컴포넌트 업데이트를 용이하게 하는 예시적인 컴퓨터 아키텍처를 도시한 것이다.
도 2는 온라인 스토어를 통해 소프트웨어 컴포넌트를 업데이트하는 예시적인 방법의 흐름도이다.
도 3은 온라인 스토어를 통해 소프트웨어 컴포넌트 업데이트를 용이하게 하는 예시적인 컴퓨터 아키텍처를 도시한 것이다.
도 4는 온라인 스토어를 통해 소프트웨어 컴포넌트를 업데이트하는 예시적인 방법의 흐름도이다.
도 5는 온라인 스토어를 통해 소프트웨어 컴포넌트 업데이트를 용이하게 하는 예시적인 컴퓨터 아키텍처를 도시한 것이다.
도 6은 온라인 스토어를 통해 소프트웨어 컴포넌트를 업데이트하는 예시적인 방법의 흐름도이다.
도 7은 웹 서비스를 통해 소프트웨어 컴포넌트 업데이트를 용이하게 하는 예시적인 컴퓨터 아키텍처 내에서의 데이터 흐름을 도시한 것이다.
본 발명은 온라인 스토어를 통해 소프트웨어 컴포넌트를 업데이트하기 위한 방법, 시스템, 및 컴퓨터 프로그램 제품으로 확장된다. 일부 실시예에서, 자동으로 그리고 사용자 개입 없이, 애플리케이션 업데이트 쿼리가 온라인 스토어로 전송된다. 애플리케이션 업데이트 쿼리는 컴퓨터 시스템에 설치된 복수의 애플리케이션들 중 어느 하나의 애플리케이션에 대한 업데이트에 대해 온라인 스토어에 질의한다. 자동으로 그리고 사용자 개입 없이, 별도의 프레임워크 업데이트 쿼리가 애플리케이션 업데이트 쿼리와 병행하여 온라인 스토어로 전송된다. 프레임워크 업데이트 쿼리는 컴퓨터 시스템에 설치된 복수의 애플리케이션들 중 어느 하나의 애플리케이션에 의해 이용된 임의의 프레임워크에 대한 업데이트에 대해 온라인 스토어에 질의한다.
프레임워크 업데이트가 프레임워크 업데이트 쿼리에 응답하여 수신된다. 프레임워크 업데이트는 컴퓨터 시스템에 설치된 하나 이상의 애플리케이션에 의해 이용된 프레임워크에 대한 업데이트를 포함한다. 자동으로 그리고 사용자 개입 없이, 프레임워크 업데이트는 컴퓨터 시스템에서의 운영 체제 유지보수 기간(operating system maintenance window) 동안 컴퓨터 시스템에서 설치되도록 스케줄링된다. 프레임워크 업데이트는 컴퓨터 시스템에서 하나 이상의 애플리케이션을 업데이트하기 위한 이용가능한 시간에 설치된다.
다른 실시예에서, 소프트웨어 컴포넌트(예컨대, 애플리케이션 또는 프레임워크) 업데이트가 온라인 스토어로부터 수신된다. 소프트웨어 컴포넌트 업데이트는 컴퓨터 시스템에서 복수의 사용자 계정에 적용가능하다. 소프트웨어 컴포넌트 업데이트는 복수의 계정 각각에 대해 개별적으로 설치되어야 한다. 자동으로 그리고 사용자 개입 없이, 소프트웨어 컴포넌트 업데이트는 컴퓨터 시스템에서의 운영 체제 유지보수 기간 동안에 복수의 사용자 계정 각각에 대해 설치되도록 스케줄링된다. 복수의 계정 각각에 대해, 소프트웨어 컴포넌트 업데이트는 사용자 계정에 대한 소프트웨어 컴포넌트를 업데이트하기 위해 이용가능한 시간에 설치된다.
다른 실시예에서, 온라인 스토어로부터 애플리케이션의 적어도 일부를 획득하기 위한 사용자 명령이 수신된다. 애플리케이션이 프레임워크의 버전에 바인딩되어 있는지 판정된다. 또한 프레임워크의 보다 최신 버전이 온라인 스토어로부터 이용가능한지 판정된다. 프레임워크의 보다 새로운 버전은 프레임워크의 버전보다 더 최근에 업데이트된다.
애플리케이션의 적어도 일부 및 프레임워크의 보다 최신 버전에 대한 요청이 온라인 스토어로 전송된다. 이 요청에 응답하여 온라인 스토어로부터 프레임워크의 보다 최신 버전이 수신된다. 자동으로 그리고 사용자 개입 없이, 프레임워크의 보다 최신 버전은 컴퓨터 시스템에 설치되도록 스케줄링된다. 프레임워크의 보다 최신 버전은 적어도 애플리케이션을 업데이트하기 위한 이용가능한 시간에 설치된다.
일부 실시예에서는, 애플리케이션을 획득하기 위한 단일 쿼리가, 획득되는 애플리케이션에 대한 정보를 포함한다. 온라인 스토어는 애플리케이션에 대한 정보 및 애플리케이션에 적용가능한 임의의 보다 새로운 프레임워크를 리턴할 수 있다.
다른 실시예에서는, 자동형 및/또는 대화형 업데이트 동안에 (예컨대, 클라이언트측) 에이전트가 자신이 알고 있는 애플리케이션 및/또는 프레임워크에 대한 정보를 전송한다. 온라인 스토어는 임의의 보다 새로운 애플리케이션 (업데이트) 및 프레임워크 (업데이트)에 대한 정보를 리턴할 수 있다.
자동형 업데이트는 다운로드된 애플리케이션 (업데이트) 및 프레임워크 (업데이트)가, 예컨대 유지보수 기간 동안 설치되도록 스케줄링하는 것을 포함할 수 있다.
사용자가 개시한 애플리케이션 획득 및/또는 대화식 업데이트는 사용자가 발행한 명령의 일부로서 설치될 수 있다(그리고 보다 즉각적일 수 있다). 설치는 더 이상의 사용자 동작 없이 애플리케이션 및/또는 프레임워크가 다운로드된 후에 내부적으로 처리될 수 있다.
본 발명의 실시예는, 이하에 보다 자세히 논의되는 바와 같이, 예컨대, 하나 이상의 프로세서 및 시스템 메모리와 같은 컴퓨터 하드웨어를 포함하는 특수 목적 또는 범용 컴퓨터를 포함하거나 활용할 수 있다. 본 발명의 범위 내의 실시예들은 또한 컴퓨터 실행가능 명령어 및/또는 데이터 구조를 반송 또는 저장하는 물리적 및 기타 컴퓨터 판독가능 매체를 포함한다. 이들 컴퓨터 판독가능 매체는 범용 또는 특수 목적 컴퓨터 시스템에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 컴퓨터 실행가능 명령어를 저장하는 컴퓨터 판독가능 매체는 컴퓨터 저장 매체(장치)이다. 컴퓨터 실행가능 명령어를 반송하는 컴퓨터 판독가능 매체는 전송 매체이다. 따라서, 예를 들어, 제한적인 것은 아니지만, 본 발명의 실시예는 적어도 두 가지의 상이한 종류의 컴퓨터 판독가능 매체, 즉 컴퓨터 저장 매체(장치) 및 전송 매체를 포함할 수 있다.
컴퓨터 저장 매체(장치)는 RAM, ROM, EEPROM, CD-ROM, SSD(solid state drive)(예컨대 RAM 기반), 플래시 메모리, PCM(phase-change memory), 또는 다른 유형의 메모리, 다른 광학 디스크 저장부, 자기 디스크 저장부 또는 다른 자기 저장 장치, 또는 컴퓨터 실행가능 명령어 또는 데이터 구조의 형태로 원하는 프로그램 코드 수단을 저장하는데 사용될 수 있고 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함한다.
"네트워크"는 컴퓨터 시스템 및/또는 모듈 및/또는 다른 전자 장치 사이에 전자 데이터의 전달을 가능하게 하는 하나 이상의 데이터 링크로서 정의된다. 정보가 네트워크 또는 다른 통신 접속(유선, 무선 또는 유무선의 조합)을 통해 전송되거나 제공될 경우, 컴퓨터는 이 접속을 전송 매체로서 간주한다. 전송 매체는 컴퓨터 실행가능 명령어 또는 데이터 구조 형태로 원하는 프로그램 코드 수단을 전달하는데 사용될 수 있고 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 네트워크 및/또는 데이터 링크를 포함할 수 있다. 이들의 조합 또한 컴퓨터 판독가능 매체의 범위에 포함될 수 있다.
또한, 다양한 컴퓨터 시스템 컴포넌트에 도달하면, 컴퓨터 실행가능 명령어 또는 데이터 구조 형태의 프로그램 코드 수단이 자동으로 전송 매체에서 컴퓨터 저장 매체로(또는 그 역으로) 전달될 수 있다. 예를 들어, 네트워크 또는 데이터 링크를 통해 수신된 컴퓨터 실행가능 명령어 또는 데이터 구조는 네트워크 인터페이스 모듈(예컨대, "NIC") 내의 RAM에 버퍼링될 수 있고, 그 후 결국 컴퓨터 시스템 RAM으로 전송되고/또는 컴퓨터 시스템의 난휘발성(less volatile) 컴퓨터 저장 매체에 저장될 수 있다. 따라서, 컴퓨터 저장 매체는 전송 매체를 이용하는(또는 심지어 주로 이용하는) 컴퓨터 시스템 컴포넌트에 포함될 수 있음을 이해해야 한다.
컴퓨터 실행가능 명령어는, 프로세서에서 실행될 경우 범용 컴퓨터, 특수 목적 컴퓨터 또는 특수 목적 처리 장치로 하여금 소정의 기능 또는 기능 그룹을 수행하게 하는 명령어 및 데이터를 포함한다. 컴퓨터 실행가능 명령어는, 예를 들어, 이진수, 어셈블리어와 같은 중간 포맷 명령어 또는 심지어 소스 코드일 수 있다. 본 발명이 구조적 특징 및/또는 방법적 동작에 특유한 표현으로 기술되었지만, 첨부하는 특허청구범위에 정의된 청구대상은 전술한 구체적인 특성이나 동작으로 제한되지 않는다. 오히려, 전술한 구체적인 특성이나 동작은 청구항을 구현하는 예시적인 형태로서 개시된 것이다.
당업자는, 본 발명이 개인용 컴퓨터, 데스크탑 컴퓨터, 랩탑 컴퓨터, 메시지 프로세서, 핸드헬드 장치, 멀티 프로세서 시스템, 마이크로프로세서 기반 또는 프로그램 가능 가전, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 모바일 전화기, PDA, 태블릿, 페이저, 라우터, 스위치 등을 포함하는 많은 유형의 컴퓨터 시스템 구성을 갖는 네트워크 컴퓨팅 환경에서 실시될 수 있음을 알 수 있을 것이다. 본 발명은 또한 네트워크를 통해 (유선 데이터 링크, 무선 데이터 링크, 또는 유선 및 무선 데이터 링크의 조합에 의해) 링크되는 로컬 컴퓨터 시스템 및 원격 컴퓨터 시스템이 모두 태스크를 수행하는 분산 시스템 환경에서 실시될 수도 있다. 분산 시스템 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치에 위치할 수 있다.
본 발명의 실시예는 또한 클라우드 컴퓨팅 환경으로 구현될 수 있다. 본원의 상세한 설명 및 하기 청구범위에서, "클라우드 컴퓨팅"은 구성가능형 컴퓨팅 자원의 공유 풀에 대한 온디맨드 네트워크 액세스를 가능하게 하는 모델로서 정의된다. 예를 들어, 클라우드 컴퓨팅은 구성가능형 컴퓨팅 자원의 공유 풀에 대한 유비쿼터스 및 편리한 온디맨드 액세스를 제공하기 위해 시장에서 이용될 수 있다. 구성가능형 컴퓨팅 자원의 공유 풀은 가상화를 통해 신속하게 제공될 수 있고, 낮은 관리 노력 또는 서비스 제공자 상호작용으로 릴리스될 수 있으며, 그 후 적절히 스케일링될 수 있다.
클라우드 컴퓨팅 모델은 온디멘드 셀프 서비스, 브로드 네트워크 액세스, 자원 풀링, 신속한 융통성, 측정된 서비스 등과 같은 다양한 특징으로 구성될 수 있다. 클라우드 컴퓨팅 모델은 또한, 예컨대, SaaS(Software as a Service), PaaS(Platform as a Service), IaaS(Infrastructure as a Service)와 같은 다양한 서비스 모델의 형태로 될 수 있다. 클라우드 컴퓨팅 모델은 또한 프라이비트 클라우드, 커뮤니티 클라우드, 퍼블릭 클라우드, 하이브리드 클라우드 등과 같은 여러 분산 모델을 이용하여 분산될 수 있다. 상세한 설명 및 청구범위에서, 클라우드 컴퓨팅 환경은 클라우드 컴퓨팅이 이용되는 환경이다.
상세한 설명 및 청구범위에서, "프레임워크"는 추가적인 사용자 기록 코드에 의해 선택적으로 변경될 수 있는 일반적인 기능을 제공하며 따라서 애플리케이션 특정 소프트웨어를 제공하는 소프트웨어로서 정의된다. (소프트웨어) 프레임워크는 애플리케이션, 제품 및 솔루션을 개발하는데 사용되는 재사용가능한 소프트웨어 플랫폼이다. 프레임워크는, 상이한 모든 컴포넌트가 프로젝트 또는 솔루션의 개발을 가능하게 하는 지원 프로그램, 컴파일러, 코드 라이브러리, 툴 세트, 및 API(application programming interface)를 포함한다.
일반적으로, 본 발명의 실시예는 온라인 스토어를 통해 소프트웨어 컴포넌트를 업데이트하는 것과 관련된다. 컴퓨팅 장치는 온라인 스토어와 상호작용하여 온라인 스토어로부터 배포되는 애플리케이션 및 프레임워크를 다운로드한다. 컴퓨터 시스템은 배포된 애플리케이션 및 프레임워크를 업데이트된 채로 유지하도록 구성된다. 운영 체제는, 자동으로 그리고 사용자 개입 없이, 사용자 불편을 최소화하는 방식으로 애플리케이션 및 프레임워크 업데이트를 지능적으로 스케줄링하고 시도한다.
운영 체제는 컴퓨팅 장치 상의 임의의 및/또는 모든 사용자 계정에 대해 애플리케이션 및 프레임워크 업데이트를 관리할 수 있다. 운영 체제는 애플리케이션 및/또는 프레임워크가 설치되어 있는 상이한 사용자 계정에 대해 각각의 애플리케이션 및/또는 프레임워크가 별도로 설치되어야 하는 경우에도 업데이트를 관리할 수 있다. 운영 체제는, 컴퓨팅 장치가 유료 네트워크에 접속되는 애플리케이션 및 프레임워크의 다운로드 및 업데이트를 회피할 수도 있다. 온라인 스토어는 각각의 배포된 애플리케이션 및 프레임워크에 대한 별도의 원격 측정(telemetry)을 추적할 수 있다.
애플리케이션의 프레임워크의 독립적 업데이트
도 1은 온라인 스토어를 통한 소프트웨어 컴포넌트 업데이트를 용이하게 하는 예시적인 컴퓨터 아키텍처(100)를 도시한 것이다. 도 1을 참조하면, 컴퓨터 아키텍처(100)는 컴퓨터 시스템(101) 및 온라인 스토어(121)를 포함한다. 각각의 컴퓨터 시스템(101) 및 온라인 스토어(121)는, 예컨대 LAN(Local Area Network), WAN(Wide Area Network) 및 심지어 인터넷과 같은 네트워크(109)(또는 그 일부)를 통해 서로 연결될 수 있다. 따라서, 컴퓨터 시스템(101)과 온라인 스토어(121) 뿐만 아니라 임의의 다른 연결된 컴퓨터 시스템 및 이들의 컴포넌트는 네트워크를 통해 메시지 관련 데이터(예를 들어, IP(Internet Protocol) 데이터그램 및 TCP(Transmission Control Protocol), HTTP(Hypertext Transfer Protocol), SMTP(Simple Mail Transfer Protocol) 등과 같은 IP 데이터그램을 이용하거나 또는 기타 비 데이터그램 프로토콜을 이용하는 다른 상위 계층 프로토콜)를 생성할 수 있고 메시지 관련 데이터를 교환할 수 있다.
이제 도 1을 참조하면, 컴퓨터 시스템(101)은 운영 체제(102) 및 계정 데이터베이스(106)를 포함한다. 운영 체제(102)는 컴퓨터 시스템(101)의 컴퓨터 하드웨어 자원을 관리하고 컴퓨터 시스템(101)에서 실행되는 애플리케이션에 대한 공통 서비스를 제공하는 소프트웨어의 컬렉션일 수 있다. 운영 체제(102)는, 제한적인 것은 아니지만, Microsoft® Windows®, Apple® iOS®, 및 Google® Android™을 포함하는 운영체제일 수 있다.
운영 체제(102)는 스케줄러(103) 및 에이전트(104)를 더 포함한다. 일반적으로, 스케줄러/인스톨러(103)는 컴퓨터 시스템(101)에서의 설치를 위해 애플리케이션, 애플리케이션 업데이트, 프레임워크, 및 프레임워크 업데이트를 스케줄링하도록 구성된다. 스케줄러/인스톨러(103)는 또한 스케줄링된(및/또는 다른 이용가능한) 시간에 컴퓨터 시스템(101)에 대해 애플리케이션, 애플리케이션 업데이트, 프레임워크, 및 프레임워크 업데이트의 설치를 시도하도록 구성된다.
컴퓨터 시스템(101)은 한 사용자에 의해 사용될 수도 있고 복수의 사용자에 의해 사용될 수도 있다. 계정 데이터베이스(106)는 계정(107, 108)을 포함한 여러 사용자 계정에 대한 정보를 저장한다. 여러 사용자 계정은 동일하거나 또는 상이한 사용자에 대응할 수 있다. 사용자는 하나의 사용자 계정을 가질 수도 있고 복수의 사용자 계정을 가질 수도 있다. 예를 들어, 계정(107, 108)은 사용자(117, 118)에 각각 대응할 수 있다. 다른 한편으로, 계정(107, 108)은 사용자(117)의 계정일 수도 있다. 사용자는 상이한 권한을 가지고 컴퓨터 시스템(101)에 액세스하는 복수의 상이한 사용자 계정(예컨대, 일반 사용자 또는 관리자)을 가질 수 있다. 각각의 상이한 계정은 그 자체의 설정 및 자원과 연관될 수 있다.
컴퓨터 시스템(101)은, 예컨대 애플리케이션(111, 112) 및 프레임워크(114)와 같은, 설치된 하나 이상의 애플리케이션 및 하나 이상의 대응하는 프레임워크를 가질 수 있다. 하나 이상의 애플리케이션은 동일한 프레임워크에 의존할 수 있다. 예를 들어, 점선으로 표시된 바와 같이, 애플리케이션(111, 112)은 프레임워크(114)에 의존할 수 있다.
일부 실시예에서, 애플리케이션 및/또는 프레임워크는 다수의 상이한 사용자 계정에 대해 컴퓨터 시스템(101)에 설치된다. 따라서, 애플리케이션 및/또는 프레임워크는 컴퓨터 시스템(101)에 복수 회 설치될 수 있다. 따라서, 애플리케이션 업데이트 및/또는 프레임워크 업데이트는 업데이트될 대응하는 애플리케이션 및/또는 프레임워크가 설치되어 있는 각 사용자 계정마다 한 번씩 복수 회 설치된다.
일반적으로, 온라인 스토어(121)는 애플리케이션, 애플리케이션 업데이트, 프레임워크, 및 프레임워크 업데이트를 다른 컴퓨터 시스템에 배포하도록 구성된다. 예를 들어, 온라인 스토어(121)는 애플리케이션(131), 프레임워크(133) 또는 이들에 대한 업데이트 중 어느 하나를 컴퓨터 시스템(101)을 포함하는 다른 컴퓨터 시스템에 배포할 수 있다. 원격 측정 모듈(122)은 배포된 애플리케이션, 애플리케이션 업데이트, 프레임워크, 및 프레임워크 업데이트에 대한 별도의 원격 측정 데이터를 추적할 수 있다.
일부 실시예에서, 온라인 스토어(121)는 애플리케이션 및/또는 프레임워크를 구매하기 위한 구매 모듈을 갖는다. 따라서, 애플리케이션(131) 및/또는 프레임워크(132) 중 일부는 배포가 허용되기 전에 구매될 필요가 있을 수 있다. 애플리케이션(131) 및/또는 프레임워크(132) 중 나머지는 구매 없이 배포될 수 있다(즉, 이들은 무료이다). 애플리케이션 및/또는 프레임워크가 처음에 구매되는 경우에도, 대응하는 업데이트는 추가 구매 없이 배포될 수 있다(즉, 업데이트가 무료이다).
컴퓨터 시스템(101)으로 돌아가서, 에이전트(104)는 컴퓨터 시스템(101)에 설치된 애플리케이션 및/또는 프레임워크에 대응하는 업데이트에 대해 가끔 또는 지정된 간격으로 온라인 스토어(121)에 질의하도록 구성된다. 일부 실시예에서, 에이전트(104)는 자동으로 그리고 사용자 개입 없이, 온라인 스토어(121)에 질의한다. 다른 실시예에서, 사용자는 에이전트(104)로 하여금 온라인 스토어(121)에 질의하게끔 한다. 별도의 애플리케이션 업데이트 쿼리 및 프레임워크 업데이트 쿼리가 서로 독립적으로 온라인 스토어(121)로 전송될 수 있다. 에이전트(104)는 임의의 리턴된 애플리케이션 업데이트 및/또는 프레임워크 업데이트를 수락할 수 있다. 에이전트(104)는, 업데이트가 설치를 위해 스케줄링되고 이어서 설치될 수 있도록, 임의의 업데이트에 대해 스케줄러/인스톨러(103)에게 통지한다.
도 2는 온라인 스토어를 통해 소프트웨어 컴포넌트를 업데이트하기 위한 예시적인 방법(200)의 흐름도이다. 방법(200)은 컴퓨터 아키텍처(100)의 컴포넌트 및 데이터데 대해 기술될 것이다.
방법(200)은 자동으로 그리고 사용자 개입 없이, 애플리케이션 업데이트 쿼리를 온라인 스토어로 전송하는 단계(201) -애플리케이션 업데이트 쿼리는 컴퓨터 시스템에 설치된 복수의 애플리케이션 중 어느 하나의 애플리케이션에 대한 업데이트에 대해 온라인 스토어에게 질의함- 를 포함한다. 예를 들어, 에이전트(104)는 애플리케이션 업데이트 쿼리(131)를 온라인 스토어(121)에게 자동으로 전송할 수 있다. 애플리케이션 업데이트 쿼리(131)는 컴퓨터 시스템(101)에 설치된 애플리케이션에 대한 임의의 업데이트에 대해 온라인 스토어(121)에게 질의할 수 있다.
방법(200)은 자동으로 그리고 사용자 개입 없이, 별도의 프레임워크 업데이트 쿼리를 애플리케이션 업데이트 쿼리와 병행하여 온라인 스토어에 전송하는 단계(202) -프레임워크 업데이트 쿼리는 컴퓨터 시스템에 설치된 복수의 애플리케이션 중 어느 하나의 애플리케이션에 의해 이용되는 임의의 프레임워크에 대한 업데이트에 대해 온라인 스토어에게 질의함- 를 포함한다. 예를 들어, 에이전트(104)는 프레임워크 업데이트 쿼리(132)를 애플리케이션 업데이트 쿼리(131)와 병행하여 온라인 스토어(121)에게 자동으로 전송할 수 있다. 프레임워크 업데이트 쿼리(132)는, 예컨대, 애플리케이션(111), 애플리케이션(112) 등과 같은 컴퓨터 시스템(101)에 설치된 애플리케이션들 중 어느 하나에 의해 이용되는 프레임 워크에 대한 업데이트에 대해 온라인 스토어(121)에 독립적으로 질의할 수 있다.
온라인 스토어(121)는 프레임워크 업데이트 쿼리(132)를 수신할 수 있다. 온라인 스토어(121)는 프레임워크(114)에 대한 업데이트가 존재하는지 판정할 수 있다. 온라인 스토어(121)는 프레임워크 업데이트(133)(프레임워크(114)에 대한 업데이트)를 컴퓨터 시스템(101)에 리턴할 수 있다.
방법(200)은 프레임워크 업데이트 쿼리에 응답하여 프레임워크 업데이트를 수신하는 단계(203) -프레임워크 업데이트는 업데이트를 컴퓨터 시스템에 설치된 하나 이상의 애플리케이션에 의해 이용되는 프레임워크에 포함시키는데, 이 하나 이상의 애플리케이션은 복수의 애플리케이션 중에서 선택됨- 를 포함한다. 예를 들어, 에이전트(104)는 온라인 스토어(121)로부터 프레임워크 업데이트(133)를 수신할 수 있다.
방법(200)은, 자동으로 그리고 사용자 개입 없이, 컴퓨터 시스템에서의 운영 체제 유지보수 기간 동안 컴퓨터 시스템에 설치하도록 프레임워크 업데이트를 스케줄링하는 단계(204)를 포함한다. 예를 들어, 스케줄러/인스톨러(103)는 설치할 프레임워크 업데이트(133)를 스케줄링할 수 있다. 프레임워크(114)가 설치되어 있는 하나 이상의 사용자 계정 각각에 대해 (가능하게는 상이한 시간에) 설치가 스케줄링될 수 있다. 예를 들어, 두 사용자 계정(107, 108) 중 하나 이상에 대해 설치가 스케줄링될 수 있다. 스케줄러/인스톨러(103)는 프레임워크 업데이트(133)에 대한 설치 스케줄을 결정할 때 다양한 알고리즘들 중 어느 하나를 이용할 수 있다. 일부 알고리즘은 운영 체제(102)의 유지보수 기간, 시스템 유휴 시간, 또는 다음에 사용자가 로그온하는 시간 동안 프레임워크 업데이트를 설치하도록 스케줄링하는 것을 포함할 수 있다.
방법(200)은 컴퓨터 시스템에서 하나 이상의 애플리케이션을 업데이트하기 위한 프레임워크 업데이트를 이용가능한 시간에 설치하는 단계(205)를 포함한다. 예를 들어, 스케줄러/인스톨러(103)가 이용가능한 시간에 하나 이상의 애플리케이션(111, 112)을 업데이트하기 위한 프레임워크 업데이트(133)를 설치할 수 있다. 프레임워크 업데이트(133)는 하나 이상의 사용자 계정 각각에 대해 (가능하게는 상이한 시간에) 설치될 수 있다. 예를 들어, 프레임워크 업데이트(133)는 사용자 계정(107)에 대해 한 (이용가능한) 시간에 설치될 수 있고/있거나 사용자 계정(108)에 대해서는 다른 (이용가능한) 시간에 설치될 수 있다. 이용가능한 시간은 운영 체제 유지보수 기간 또는 예컨대 시스템 유휴 시간 또는 사용자가 다음 번에 로그 온하는 시간과 같은 일부 다른 이용가능한 시간일 수 있다.
온라인 스토어(121)는 애플리케이션 업데이트 쿼리(131)를 수신할 수 있다. 온라인 스토어(121)는 애플리케이션(111)에 대한 업데이트가 존재하는지 판정할 수 있다. 온라인 스토어(121)는 애플리케이션 업데이트(134)(애플리케이션(111)에 대한 업데이트)를 컴퓨터 시스템(101)에 리턴할 수 있다.
방법(200)은 컴퓨터 시스템에 설치된 지정된 애플리케이션에 대한 업데이트를 포함하는 애플리케이션 업데이트를 수신하는 단계(206)를 포함한다. 예를 들어, 에이전트(104)는 온라인 스토어(121)로부터 애플리케이션 업데이트(134)를 수신할 수 있다.
방법(200)은 자동으로 그리고 사용자 개입 없이, 운영 체제 유지보수 기간 동안 컴퓨터 시스템에서 설치할 애플리케이션 업데이트를 스케줄링하는 단계(207)를 포함한다. 예를 들어, 프레임워크 업데이트(133)의 스케줄링하는 것과 유사하게, 스케줄러/인스톨러(103)는 설치할 애플리케이션 업데이트(134)를 스케줄링할 수 있다. 설치는 애플리케이션(111)이 설치된 하나 이상의 사용자 계정들 각각에 대해 (가능하게는 상이한 시간에) 스케줄링될 수 있다.
방법(200)은 지정된 애플리케이션을 업데이트하기 위해 이용가능한 시간에 애플리케이션 업데이트를 설치하는 단계(208)를 포함한다. 예를 들어, 프레임워크 업데이트(133)와 유사하게, 스케줄러/인스톨러(103)는 애플리케이션(111)을 업데이트하기 위해 이용가능한 시간에 애플리케이션 업데이트(134)를 설치할 수 있다. 애플리케이션 업데이트(134)는 하나 이상의 사용자 계정들 각각에 대해 (가능하게는 상이한 시간에) 설치될 수 있다.
일부 실시예에서, 애플리케이션 업데이트 쿼리(131) 및 프레임워크 업데이트 쿼리(132)는 단일 쿼리로서 패키지된다. "애플리케이션 획득"에 대한 명령을 사용자가 개시하는 동안 단일 쿼리는 획득되는 애플리케이션의 정보를 포함하고 온라인 스토어는 애플리케이션 및 애플리케이션에 이용가능한 임의의 보다 새로운 프레임워크를 다시 리턴한다.
"자동 업데이트" 및 "대화식 업데이트" 동안 (클라이언트측) 에이전트는 자신이 알고 있는 애플리케이션 및 프레임워크에 대한 정보를 전송한다. 온라인 스토어는 임의의 보다 새로운 애플리케이션(업데이트) 및 프레임워크(업데이트)에 대한 정보를 다시 리턴한다.
멀티 계정 소프트웨어 컴포넌트 업데이트
도 3은 온라인 스토어를 통해 소프트웨어 컴포넌트 업데이트를 용이하게 하는 예시적인 컴퓨터 아키텍처(300)를 도시한 것이다. 도 3을 참조하면, 컴퓨터 아키텍처(300)는 컴퓨터 시스템(301) 및 온라인 스토어(321)를 포함한다. 각각의 컴퓨터 시스템(301) 및 온라인 스토어(321)는, 예컨대 LAN(Local Area Network), WAN(Wide Area Network) 및 심지어 인터넷과 같은 네트워크(309)(또는 그 일부)를 통해 서로 연결될 수 있다. 따라서, 컴퓨터 시스템(301)과 온라인 스토어(321) 뿐만 아니라 임의의 다른 연결된 컴퓨터 시스템 및 이들의 컴포넌트는 네트워크를 통해 메시지 관련 데이터(예를 들어, IP(Internet Protocol) 데이터그램 및 TCP(Transmission Control Protocol), HTTP(Hypertext Transfer Protocol), SMTP(Simple Mail Transfer Protocol) 등과 같은 IP 데이터그램을 이용하거나 또는 기타 비 데이터그램 프로토콜을 이용하는 다른 상위 계층 프로토콜)를 생성할 수 있고 메시지 관련 데이터를 교환할 수 있다.
이제 도 3을 참조하면, 컴퓨터 시스템(301)은 운영 체제(302) 및 계정 데이터베이스(306)를 포함한다. 운영 체제(302)는 컴퓨터 시스템(301)의 컴퓨터 하드웨어 자원을 관리하고 컴퓨터 시스템(301)에서 실행되는 애플리케이션에 대한 공통 서비스를 제공하는 소프트웨어의 컬렉션일 수 있다. 운영 체제(302)는, 제한적인 것은 아니지만, Microsoft® Windows®, Apple® iOS®, 및 Google® Android™을 포함하는 운영 체제일 수 있다.
운영 체제(302)는 스케줄러(303) 및 에이전트(304)를 더 포함한다. 일반적으로, 스케줄러/인스톨러(303)는 컴퓨터 시스템(301)에서의 설치를 위해 애플리케이션, 애플리케이션 업데이트, 프레임워크, 및 프레임워크 업데이트를 스케줄링하도록 구성된다. 스케줄러/인스톨러(303)는 또한 스케줄링된(및/또는 다른 이용가능한) 시간에 컴퓨터 시스템(301)에 대해 애플리케이션, 애플리케이션 업데이트, 프레임워크, 및 프레임워크 업데이트의 설치를 시도하도록 구성된다.
따라서, 컴퓨터 시스템(301)은 또한 설치된 애플리케이션 및/또는 프레임워크와 같은 하나 이상의 소프트웨어 컴포넌트를 가질 수 있다.
컴퓨터 시스템(301)은 한 사용자에 의해 사용될 수도 있고 복수의 사용자에 의해 사용될 수도 있다. 계정 데이터베이스(306)는 계정(307, 308)을 포함한 여러 사용자 계정에 대한 정보를 저장한다. 여러 사용자 계정은 동일하거나 또는 상이한 사용자에 대응할 수 있다. 사용자는 하나의 사용자 계정을 가질 수도 있고 복수의 사용자 계정을 가질 수도 있다. 예를 들어, 계정(307, 308)은 사용자(317, 318)에 각각 대응할 수 있다. 다른 한편으로, 계정(307, 308)은 사용자(317)의 계정일 수도 있다. 사용자는 상이한 권한을 가지고 컴퓨터 시스템(301)에 액세스하는 복수의 상이한 사용자 계정(예컨대, 일반 사용자 또는 관리자)을 가질 수 있다. 각각의 상이한 계정은 그 자체의 설정 및 자원과 연관될 수 있다. 예를 들어, 계정(307, 308)은 각각 설정(347, 348)과 연관된다. 계정 설정은 어떤 애플리케이션 및/또는 프레임워크가 대응하는 사용자 계정에 대해 설치되는지를 나타내는 표시를 포함할 수 있다.
따라서, 소프트웨어 컴포넌트는 컴퓨터 시스템(301)에서 다수의 상이한 사용자 계정에 대해 설치될 수 있으며, 따라서 소프트웨어 컴포넌트가 복수 회 설치된다. 따라서, 소프트웨어 컴포넌트에 대한 업데이트도 복수 회 설치된다(예컨대, 각 사용자 계정마다 1회씩).
일반적으로, 온라인 스토어(321)는 소프트웨어 컴포넌트(예컨대, 애플리케이션, 애플리케이션 업데이트, 프레임워크, 및 프레임워크 업데이트)를 다른 컴퓨터 시스템에 배포하도록 구성된다. 온라인 스토어(321)는 구매 모듈을 포함할 수도 있고 포함하지 않을 수도 있다.
컴퓨터 시스템(301)으로 돌아가서, 에이전트(304)는 컴퓨터 시스템(301)에 설치된 소프트웨어 컴포넌트에 대응하는 업데이트에 대해 가끔 또는 지정된 간격으로 온라인 스토어(321)에 질의하도록 구성된다. 일부 실시예에서, 에이전트(304)는 자동으로 그리고 사용자 개입 없이, 온라인 스토어(321)에 질의한다. 다른 실시예에서, 사용자는 에이전트(304)로 하여금 온라인 스토어(321)에 질의하게끔 한다. 에이전트(304)는 임의의 리턴된 소프트웨어 컴포넌트 업데이트를 수락할 수 있다. 에이전트(304)는, 업데이트가 설치를 위해 스케줄링되고 이어서 복수의 사용자 계정에 대해 설치될 수 있도록, 임의의 업데이트에 대해 스케줄러/인스톨러(303)에게 통지한다.
도 4는 온라인 스토어를 통해 소프트웨어 컴포넌트를 업데이트하기 위한 예시적인 방법(400)의 흐름도이다. 방법(400)은 컴퓨터 아키텍처(300)의 컴포넌트 및 데이터에 대해 기술될 것이다.
방법(400)은 온라인 스토어로부터 소프트웨어 컴포넌트 업데이트를 수신하는 단계(401)를 포함한다. 예를 들어, 에이전트(304)는 온라인 스토어(321)로부터 소프트웨어 컴포넌트 업데이트(333)를 수신할 수 있다. 소프트웨어 컴포넌트 업데이트는 소프트웨어 컴포넌트(311)(예컨대, 애플리케이션 또는 프레임워크)에 대한 업데이트일 수 있다.
방법(400)은 복수의 계정 각각에 대해 개별적으로 설정되는 소프트웨어 컴포넌트 업데이트가 컴퓨터 시스템에서 복수의 사용자 계정에 적용가능한지 판정하는 단계(402)를 포함한다. 예를 들어, 에이전트(304)는 설정(347, 348)을 참고하여 소프트웨어 컴포넌트(311)가 사용자 계정(307) 및 사용자 계정(308) 모두에 대해 각각 설치되어 있는지를 판정할 수 있다. 에이전트(304)는 또한 소프트웨어 컴포넌트 업데이트(333)가 사용자 계정(307) 및 사용자 계정(308)에 대해 개별적으로 설치되어야하는지 판정할 수 있다.
방법(400)은 자동으로 그리고 사용자 개입 없이, 컴퓨터 시스템에서의 운영 체제 유지보수 기간 동안 복수의 사용자 계정 각각에 대해 소프트웨어 컴포넌트 업데이트를 스케줄링하는 단계(403)를 포함한다. 예를 들어, 스케줄러/인스톨러(403)는 운영 체제(302)에 대한 유지보수 기간 동안 사용자 계정(307, 308) 각각에 대해 소프트웨어 컴포넌트 업데이트(333)의 설치를 스케줄링할 수 있다.
방법(400)은, 복수의 계정 각각에 대해, 사용자 계정(404)에 대한 소프트웨어 컴포넌트를 업데이트하기 위해 이용가능한 시간에 소프트웨어 컴포넌트 업데이트를 설치하는 단계(404)를 포함한다. 예를 들어, 사용자 계정(307, 308) 각각에 대해, 스케줄러/인스톨러(403)는 이용가능한(그러나 가능하게는 상이한) 시간에 소프트웨어 컴포넌트 업데이트(333)를 설치할 수 있다. 예를 들어, 프레임워크(133)는 운영 체제(102)에 대한 유지보수 기간과 같은 한 (이용가능한) 시간에 사용자 계정(107)에 대해 설치될 수 있다. 프레임워크 업데이트(133)는 다음 번에 사용자 계정(108)에 로그온하는 시간과 같은 다른 (이용가능한) 시간에 사용자 계정(108)에 대해 설치될 수 있다. 일반적으로, 이용가능한 시간은 운영 체제 유지보수 기간 또는 예컨대 시스템 유휴 시간 또는 사용자가 다음 번에 로그 온하는 시간과 같은 일부 다른 이용가능한 시간일 수 있다.
애플리케이션 업데이트 요청에 대한 프레임워크 업데이트
도 5은 온라인 스토어를 통한 소프트웨어 컴포넌트 업데이트를 용이하게 하는 예시적인 컴퓨터 아키텍처(500)를 도시한 것이다. 도 5을 참조하면, 컴퓨터 아키텍처(500)는 컴퓨터 시스템(501) 및 온라인 스토어(521)를 포함한다. 각각의 컴퓨터 시스템(501) 및 온라인 스토어(521)는, 예컨대 LAN(Local Area Network), WAN(Wide Area Network) 및 심지어 인터넷과 같은 네트워크(509)(또는 그 일부)를 통해 서로 연결될 수 있다. 따라서, 컴퓨터 시스템(501)과 온라인 스토어(521) 뿐만 아니라 임의의 다른 연결된 컴퓨터 시스템 및 이들의 컴포넌트는 네트워크를 통해 메시지 관련 데이터(예를 들어, IP(Internet Protocol) 데이터그램 및 TCP(Transmission Control Protocol), HTTP(Hypertext Transfer Protocol), SMTP(Simple Mail Transfer Protocol) 등과 같은 IP 데이터그램을 이용하거나 또는 기타 비 데이터그램 프로토콜을 이용하는 다른 상위 계층 프로토콜)를 생성할 수 있고 메시지 관련 데이터를 교환할 수 있다.
이제 도 5을 참조하면, 컴퓨터 시스템(501)은 운영 체제(502)를 포함한다. 운영 체제(502)는 컴퓨터 시스템(501)의 컴퓨터 하드웨어 자원을 관리하고 컴퓨터 시스템(501)에서 실행되는 애플리케이션에 대한 공통 서비스를 제공하는 소프트웨어의 컬렉션일 수 있다. 운영 체제(502)는, 제한적인 것은 아니지만, Microsoft® Windows®, Apple® iOS®, 및 Google® Android™을 포함하는 운영체제일 수 있다.
운영 체제(502)는 스케줄러(503) 및 에이전트(504)를 더 포함한다. 일반적으로, 스케줄러/인스톨러(503)는 컴퓨터 시스템(501)에서의 설치를 위해 애플리케이션, 애플리케이션 업데이트, 프레임워크, 및 프레임워크 업데이트를 스케줄링하도록 구성된다. 스케줄러/인스톨러(503)는 또한 스케줄링된(및/또는 다른 이용가능한) 시간에 컴퓨터 시스템(501)에 대해 애플리케이션, 애플리케이션 업데이트, 프레임워크, 및 프레임워크 업데이트의 설치를 시도하도록 구성된다.
따라서, 컴퓨터 시스템(501)은 또한 대응하는 프레임워크에 바인딩되는 애플리케이션을 가질 수 있다. 예를 들어 컴퓨터 시스템(501)은 프레임워크(514)에 바인딩되는 (점선으로 표시된)애플리케이션(511)을 포함한다.
에이전트(504)는 애플리케이션 및/또는 프레임워크 업데이트에 대해 가끔, 지정된 간격으로, 또는 사용자 명령에 응답하여, 온라인 스토어(521)에 질의하도록 구성된다. 에이전트(504)는 임의의 리턴된 소프트웨어 컴포넌트 업데이트를 수락할 수 있다. 에이전트(504)는, 업데이트가 설치를 위해 스케줄링되고 이어서 복수의 사용자 계정에 대해 설치될 수 있도록, 임의의 업데이트에 대해 스케줄러/인스톨러(103)에게 통지할 수 있다.
사용자에 의해 생성되거나 자동으로 생성된 애플리케이션에 대한 업데이트를 요청하는 애플리케이션 업데이트 명령에 응답하여, 에이전트(504)는 애플리케이션이 바인딩되는 프레임워크를 결정할 수 있다. 에이전트(504)는 그러한 프레임워크에 대한 업데이트가 또한 요청되도록 추가의 독립적인 요청을 세우거나 또는 기존의 요청을 보완할 수 있다.
도 6는 온라인 스토어를 통해 소프트웨어 컴포넌트를 업데이트하기 위한 예시적인 방법(200)의 흐름도이다. 방법(600)은 컴퓨터 아키텍처(500)의 컴포넌트 및 데이터데 대해 기술될 것이다.
방법(600)은 온라인 스토어로부터 애플리케이션의 적어도 일부분을 획득하기 위한 사용자 명령을 수신하는 단계(601)를 포함한다. 예를 들어, 에이전트(504)는 사용자(517)로부터 애플리케이션 업데이트 명령(543)을 수신할 수 있다. 애플리케이션 업데이트 명령(543)은 에이전트(104)에게 온라인 스토어(521)로부터 애플리케이션(511)에 대한 임의의 업데이트를 요청하게 할 수 있다.
방법(600)은 애플리케이션이 프레임워크(602)의 버전에 바인딩되는지 판정하는 단계(602)를 포함한다. 예를 들어, 에이전트(504)는 애플리케이션(511)이 프레임워크(514)에 바인딩된다고 판정할 수 있다. 방법(600)은 프레임워크의 버전보다 더 최신에 업데이트된 프레임워크의 더 새로운 버전이 온라인 스토어로부터 이용가능한지를 판정하는 단계(603)를 포함한다. 예를 들어, 에이전트(504)는 프레임워크(514)의 더 새로운 버전이 온라인 스토어(521)에서 이용가능한지 판정할 수 있다. 에이전트(504)는 프레임워크(514)의 더 새로운 버전이 이용가능한지 판정하기 위해 네트워크(509)를 통해 온라인 스토어(521)와 통신할 수 있다.
또는, 에이전트(504)는 프레임워크(514)의 더 새로운 버전이 이용가능하다고 판정하지 않을 수도 있다.
어느 경우든, 에이전트(504)는 업데이트 요청(531)을 공식화할 수 있다. 업데이트 요청(531)은 애플리케이션(511)에 대한 업데이트와 프레임워크(514)에 대한 업데이트를 모두 요청할 수 있다.
방법(600)은 프레임워크의 더 새로운 버전 및 애플리케이션의 적어도 일부분에 대한 요청을 온라인 스토어로 전송하는 단계(604)를 포함한다. 예를 들어, 에이전트(504)는 업데이트 요청(531)을 온라인 스토어(521)로 전송할 수 있다. 업데이트 요청(531)은 애플리케이션(511)에 대한 업데이트와 프레임워크(514)에 대한 업데이트를 요청한다.
온라인 스토어(521)는 업데이트 요청(531)을 수신할 수 있다. 온라인 스토어(521)는 이용가능한 애플리케이션 업데이트(534)(애플리케이션(511)용) 및 프레임워크 업데이트(533)(프레임워크(514)용)를 식별할 수 있다. 온라인 스토어(521)는 애플리케이션 업데이트(534) 및 프레임워크 업데이트(533)를 컴퓨터 시스템(501)으로 전송할 수 있다.
방법(600)은 요청에 응답하여 온라인 스토어로부터 프레임워크의 더 새로운 버전을 수신하는 단계(605)를 포함한다. 예를 들어, 에이전트(504)는 온라인 스토어(521)로부터 프레임워크 업데이트(533)(및 애플리케이션 업데이트(534))를 수신할 수 있다.
방법(600)은 자동으로 그리고 사용자 개입 없이, 컴퓨터 시스템에서의 프레임워크의 더 새로운 버전의 설치를 스케줄링하는 단계를 포함한다. 방법(600)은 적어도 애플리케이션을 업데이트하기 위해 이용가능한 시간에 프레임워크의 더 새로운 버전을 설치하는 단계를 포함한다. 예를 들어, 스케줄러/인스톨러(503)는 프레임워크(514)의 설치를 스케줄링하고 프레임워크(514)를 업데이트하기 위해 프레임워크 업데이트(533)를 설치할 수 있다. 스케줄러/인스톨러(503)는 프레임워크 애플리케이션(511)을 업데이트하기 위해 애플리케이션 업데이트(534)의 설치를 스케줄링하고 인스톨할 수 있다.
일부 실시예에서는, 사용자가 "애플리케이션 획득" 및 "대화식 업데이트"를 개시하는 동안 애플리케이션 및/또는 프레임워크가 동일한 사용자가 개시한 명령의 일부로서 기본적으로 즉시 설치될 수 있다. 사용자는 다른 동작을 수행해야 하는 수고를 덜게 된다. 대응하는 애플리케이션에 대해 내부적으로 설치가 이루어지면, 이들을 다운로드하고 다운로드한 후 사용자에 대해 설치를 함으로써 프레임워크가 온라인 스토어에 의해 리턴된다.
부가적인 실시예
도 7은 웹 서비스를 통해 소프트웨어 컴포넌트 업데이트를 용이하게 하는 예시적인 컴퓨터 아키텍처(700) 내에서의 데이터 흐름을 도시한 것이다. 도시된 바와 같이, 컴퓨터 아키텍처(700)는 에이전트(701), 호출자(702), 검색 필터(703), 및 클라이언트 웹 서버(721)를 포함한다. 에이전트(701)는 동기 업데이트(704), 새로운 업데이트(706), 어플라이 필터(apply filter)(707), 적용가능한 앱 업데이트(708), 적용가능 앱 참조 프레임워크 업데이트(709), 기타 프레임워크 업데이트(711), 및 적용가능 앱 및 프레임워크 업데이트(712)를 포함한다.
호출자(702)는 대화식 활동, 자동 배경 활동에 대한 자동 업데이트, 또는 기타 이러한 시나리오에 대한 운영 체제 스토어일 수 있다. 호출자(702)는 검색 필터(703)를 특정하는 클라이언트 웹 서비스(702)에 대해 스캔(즉, 동기 업데이트(704))을 개시할 수 있다. 예를 들어, 스캔은 단일 앱, 복수의 앱, 또는 시스템 상의 모든 앱에 대한 업데이트에 대한 검색일 수 있다. 검색 필터 콘텍스트(713)는 클라이언트 웹 서비스(702)로 전송된다. 클라이언트 웹 서비스(702)는 적용가능한 애플리케이션 및 프레임워크(예컨대 새로운 업데이트(706))를 리턴한다.
검색 콘텍스트(713) 및/또는 실행되는 특정 시나리오에 기초하여, 어플라이 필터(707)는 업데이트를 적용가능한 앱 업데이트(708)(애플리케이션 자체에 대한 업데이트), 적용가능한 앱 참조 프레임워크 업데이트(709)(애플리케이션 업데이트에 의해 사용된 특정 프레임워크 업데이트), 및 기타 프레임워크 업데이트(711)(독립적으로 설치될 "기타" 프레임워크 업데이트)로 분류할 수 있다. 적용가능한 앱 및 프레임워크 업데이트(712)는, 예컨대, 운영 체제에서 확립된 유지보수 기간 설치 스케줄에 따라 설치된다.
그 다음에 예컨대, 운영 체제에서 확립된 유지보수 기간 설치 스케줄링에 따라 적용가능한 애플리케이션 및 프레임워크 업데이트가 설치된다.
설치 스케줄링 알고리즘
전술한 바와 같이, 애플리케이션 및 프레임워크는 운영 체제에 의해 자동으로 설치될 수 있다. 성공적인 다운로드 후에, 애플리케이션 및/또는 프레임워크가 운영 체제의 유지보수 기간 동안 설치하도록 스케줄링될 수 있다. 유지보수 기간 중에 컴퓨팅 장치가 오프되거나 중지되면, 시스템 유휴 시간 동안에 설치 시도가 리스케줄링될 수 있다. 지정된 기간(예컨대, 3일) 후에 이들 설치가 실패하면, 설치는 사용자가 다음 번에 로그인할 때로 리스케줄링될 수 있다. 컴퓨팅 장치에 현재 로그인한 사용자 계정에 대해 설치가 시도될 수 있다. 설치된 애플리케이션 및/또는 프레임워크를 갖지만 로그인되지 않은 임의의 사용자 계정에 대해서는, 업데이트의 설치가 사용자 계정들 각각의 다음 사용자 로그인 동안에 리스케줄링된다.
위 시간들 중 임의의 시간에, 애플리케이션이 전경에 사용 중이거나 또는 배경에서 미디어를 재생하고 있는 중이면, 업데이트는 애플리케이션을 강제로 닫음으로써 사용자를 방해하지 않도록 하기 위해 조용히 종료될 수 있다. 그 다음에 동일하거나 유사한 논리에 따라 설치가 리스케줄링된다. 다른 한편으로, 업데이트의 설치는, 중지되거나 또는 배경 태스크(background task)를 스케줄링한 애플리케이션에 의해 차단되지 않는다. 애플리케이션 상태에 따라 설치가 진행될 수 있고 업데이트 동안 태스크가 보존될 수 있다.
추가적인 실시예
전술한 바와 같이, 애플리케이션 및 프레임워크는 서로 완전히 독립적으로 다루어질 수 있다. 온라인 스토어로부터 새로운 애플리케이션을 획득할 때, 그 애플리케이션에 의해 사용된 최신 프레임워크의 동시 획득이 발생할 수 있다. 운영 체제가 자동으로 배경에서 애플리케이션을 업데이트하는 경우, 업데이트된 프레임워크에 대한 검사가 동시에 이루어질 수 있다. 각각의 애플리케이션 및/또는 프레임워크에 대한 임의의 적용가능한 업데이트가 배경에서 자동으로 업데이트될 수 있다. 에이전트는 컴퓨팅 장치가 계량된 인터넷 접속 또는 배터리 전력 상태에 있지 않음을 검사할 수 있다. 에이전트는 이들 상태 조건 모두가 완화될 때까지 업데이트를 중단할 수 있다.
대화식으로 업데이트를 검사할 경우, 애플리케이션에 의해 사용된 최신 프레임워크의 동시 획득이 일어날 수 있다. 따라서, 애플리케이션 및 프레임워크를 하나의 그룹으로서 다운받으려고 시도하는 단일 동작보다는 2개의 별개의 동작이 기본적으로 동시에 일어난다. 프레임워크를 업데이트하기 위한 이 별개의 독립적인 프로세스는 개발자가 보다 새로운 프레임워크 버전이 사용됨을 확신하도록 돕는다. 또한, 고객들은 프레임워크 업데이트에 대해 걱정할 필요가 없다. 고객들에게, 프레임워크 및 프레임워크 업데이트는 완전히 보이지 않을 수 있고, 단순히 모든 것이 그냥 작동하도록(just work) 하는 시스템의 일부일 수 있다.
원격 측정은 매 다운로드마다 전송될 수 있으며, 따라서 정보 취급자가 새로운 릴리스를 관리할 때 품질을 모니터링할 수 있다.
따라서, 본 발명의 실시예는 애플리케이션 패키지가 보다 작게 되도록 하고 공통 프레임워크를 자신의 애플리케이션과 함께 배포하는 것에 대한 개발자의 걱정을 경감시키는 것을 돕는 엔드투엔드(end-to-end) 솔루션을 제공한다.
본 발명은 그 사상 또는 필수적 특징으로부터 벗어나지 않고 다른 특정 형태로 실시될 수 있다. 전술한 실시예는 모든 면에서 예시적인 것일 뿐 제한적인 것으로 이해해서는 안 된다. 따라서, 본 발명의 범위는 전술한 설명보다는 첨부된 청구범위에 의해 나타내어진다. 첨구범위의 균등성의 의미 및 범위 내에 포함되는 모든 변경들은 이들 범위 내에 포함되어야 한다.

Claims (19)

  1. 프로세서 및 시스템 메모리를 포함하는 컴퓨터 시스템 -상기 컴퓨터 시스템은 소프트웨어 컴포넌트를 배포하는 온라인 스토어(online store)에 통신가능하게 연결되어 있고, 상기 소프트웨어 컴포넌트는 상기 온라인 스토어로부터의 복수의 애플리케이션과 상기 컴퓨터 시스템에 설치된 상기 온라인 스토어로부터의 하나 이상의 프레임워크를 포함함- 에서, 상기 컴퓨터 시스템에 저장된 소프트웨어 컴포넌트에 대한 업데이트를 수신하는 방법으로서,
    자동으로 그리고 사용자 개입 없이, 애플리케이션 업데이트 쿼리를 상기 온라인 스토어에 전송하는 단계 -상기 애플리케이션 업데이트 쿼리는 상기 컴퓨터 시스템에 설치되고 상기 온라인 스토어로부터 구매된 복수의 애플리케이션 중 임의의 애플리케이션에 대한 업데이트에 대해 상기 온라인 스토어에 질의하고, 상기 복수의 애플리케이션 각각은 상기 애플리케이션을 개발하는 데 사용되었고 상기 애플리케이션과 함께 설치되었던 적어도 하나의 프레임워크의 버전을 가지고, 상기 복수의 애플리케이션 중 적어도 두 개의 애플리케이션은 상이한 프레임워크와 함께 설치되고 개발됨- 와,
    자동으로 그리고 사용자 개입 없이, 별도의 프레임워크 업데이트 쿼리를 상기 애플리케이션 업데이트 쿼리와 병행하여 상기 온라인 스토어에 전송하는 단계 -상기 프레임워크 업데이트 쿼리는 상기 복수의 애플리케이션 중 임의의 애플리케이션의 개발에 사용되고 함께 설치된 임의의 프레임워크에 대한 업데이트에 대해 상기 온라인 스토어에게 질의함- 와,
    상기 프레임워크 업데이트 쿼리에 응답하여 프레임워크 업데이트를 수신하는 단계 -상기 프레임워크 업데이트는 프레임워크의 새로운 버전을 포함하고, 상기 프레임워크의 새로운 버전은 상기 컴퓨터 시스템에서 서브-복수의 애플리케이션(a sub-plurality of applications)의 개발에 사용되고 함께 설치된 상기 프레임워크의 버전에 대해 업데이트되며, 상기 서브-복수의 애플리케이션은 상기 복수의 애플리케이션 중에서 선택됨- 와,
    상기 서브-복수의 애플리케이션이 상기 프레임워크의 새로운 버전과 함께 설치되지 않거나 개발되지 않은 경우에도, 자동으로 그리고 사용자 개입 없이, 상기 프레임워크 업데이트가 상기 컴퓨터 시스템에서의 운영 체제 유지보수 기간(operating system maintenance window) 동안 상기 컴퓨터 시스템에서 설치되도록 스케줄링하는 단계와,
    상기 서브-복수의 애플리케이션에 의한 상기 프레임워크의 새로운 버전의 사용으로 상기 서브-복수의 애플리케이션에 의한 상기 프레임워크의 버전의 사용을 대체하도록 상기 운영 체제 유지보수 기간 동안 상기 프레임워크 업데이트를 설치하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 컴퓨터 시스템에 설치된 애플리케이션에 대한 업데이트를 포함하는 애플리케이션 업데이트를 수신하는 단계 -상기 애플리케이션은 상기 서브-복수의 애플리케이션 중에서 선택됨- 와,
    자동으로 그리고 사용자 개입 없이, 상기 애플리케이션 업데이트가 상기 운영 체제 유지보수 기간 동안 상기 컴퓨터 시스템에서 설치되도록 스케줄링하는 단계와,
    상기 애플리케이션을 업데이트하기 위해 이용가능한 시간에 상기 애플리케이션 업데이트를 설치하는 단계를 더 포함하고,
    상기 운영 체제 유지보수 기간 동안 상기 프레임워크 업데이트를 설치하는 단계는, 적어도 하나의 애플리케이션에 대한 애플리케이션 업데이트가 상기 애플리케이션 업데이트 쿼리에 응답하여 수신되지 않는 경우에도 상기 적어도 하나의 애플리케이션에 대한 상기 프레임워크의 새로운 버전의 사용으로 상기 프레임워크의 상기 버전의 사용을 대체하도록 상기 프레임워크 업데이트를 설치하는 단계를 포함하고,
    상기 적어도 하나의 애플리케이션은 상기 서브-복수의 애플리케이션 중에서 선택되는
    방법.
  3. 제2항에 있어서,
    상기 프레임워크 업데이트를 설치하는 단계는 상기 컴퓨터 시스템에서 상기 프레임워크 업데이트를 복수 회 설치하는 단계를 포함하고,
    상기 프레임워크 업데이트의 각각의 설치는 상기 컴퓨터 시스템에서 복수의 상이한 계정 중 상이한 계정에 대해 설치되는
    방법.
  4. 제2항에 있어서,
    상기 애플리케이션 업데이트에 대한 업데이트 원격 측정(telemetry)을 추적하는 단계와,
    상기 프레임워크 업데이트에 대한 별도의 업데이트 원격 측정을 추적하는 단계를 더 포함하고,
    상기 업데이트 원격 측정 및 상기 별도의 업데이트 원격 측정은 애플리케이션 및 프레임워크의 관리되는 릴리스의 품질을 모니터링하는 데 사용되는
    방법.
  5. 제1항에 있어서,
    상기 프레임워크 업데이트가 상기 컴퓨터 시스템에서의 운영 체제 유지보수 기간 동안 상기 컴퓨터 시스템에서 설치되도록 스케줄링하는 단계는 상기 프레임워크 업데이트가 상기 컴퓨터 시스템에서의 복수의 사용자 계정 각각에 대해 별도로 설치되어야 한다고 판정하는 단계를 포함하는
    방법.
  6. 제5항에 있어서,
    상기 프레임워크 업데이트를 설치하는 단계는,
    상기 복수의 사용자 계정 중 제 1 사용자 계정이 상기 컴퓨터 시스템에 로그인되어 있는 것을 검출하는 단계와,
    상기 제 1 사용자 계정이 상기 컴퓨터 시스템에 로그인되어 있는 동안,
    상기 제 1 사용자 계정에 대한 상기 프레임워크 업데이트를 설치하는 단계와,
    시스템 유휴 시간 동안 상기 복수의 사용자 계정 중 제 2 사용자 계정에 대한 상기 프레임워크 업데이트를 설치하는 단계를 포함하는
    방법.
  7. 제1항에 있어서,
    상기 컴퓨터 시스템과 상기 온라인 스토어 사이의 네트워크 연결이 계량된 연결(metered connection)이 아님을 판정하는 단계를 더 포함하는
    방법.
  8. 제1항에 있어서,
    상기 온라인 스토어는 Microsoft® Windows®, Apple® iOS®, 및 Google® AndroidTM 중에서 선택된 운영 체제와 함께 사용하도록 구성되는 소프트웨어 애플리케이션을 판매하는
    방법.
  9. 제1항에 있어서,
    상기 프레임워크 업데이트를 설치하는 단계는 둘 이상의 애플리케이션에 의한 상기 프레임워크의 상기 새로운 버전의 사용으로 상기 둘 이상의 애플리케이션에 의한 상기 프레임워크의 상기 버전의 사용을 대체하도록 상기 프레임워크 업데이트를 설치하는 단계를 포함하는
    방법.
  10. 프로세서 및 시스템 메모리를 포함하는 컴퓨터 시스템 -상기 컴퓨터 시스템은 소프트웨어 컴포넌트를 배포하는 온라인 스토어에 통신가능하게 연결되어 있고, 상기 소프트웨어 컴포넌트는 상기 온라인 스토어로부터의 복수의 애플리케이션과 상기 컴퓨터 시스템에 설치된 상기 온라인 스토어로부터의 하나 이상의 프레임워크를 포함함- 에서, 상기 컴퓨터 시스템에 저장된 소프트웨어 컴포넌트에 대한 업데이트를 수신하는 방법으로서,
    상기 온라인 스토어로부터 프레임워크의 새로운 버전을 포함하는 프레임워크 업데이트를 수신하는 단계 -상기 프레임워크의 새로운 버전은 하나 이상의 애플리케이션의 개발에 사용되고 함께 설치된 상기 프레임워크의 버전에 대해 업데이트되고, 상기 하나 이상의 애플리케이션은 상기 온라인 스토어로부터의 상기 복수의 애플리케이션 중에서 선택됨- 와,
    복수의 사용자 계정 내의 각각의 사용자 계정이 상기 하나 이상의 소프트웨어 애플리케이션 중 적어도 하나와 연관됨을 판정함으로써 상기 컴퓨터 시스템에서 상기 복수의 사용자 계정에 대해 상기 프레임워크 업데이트가 설치되어야 한다고 판정하는 단계와,
    상기 하나 이상의 애플리케이션 중 적어도 하나의 애플리케이션이 각각의 사용자 계정에 대한 상기 프레임워크의 새로운 버전과 함께 설치되지 않거나 개발되지 않은 경우에도, 자동으로 그리고 사용자 개입 없이, 상기 복수의 사용자 계정의 각각의 사용자 계정에 대해 별도로 설치되도록 상기 프레임워크 업데이트를 스케줄링하는 단계와,
    상기 복수의 사용자 계정 각각에 대해, 상기 하나 이상의 애플리케이션 중 적어도 하나의 애플리케이션에 의한 상기 프레임워크의 상기 새로운 버전의 사용으로 상기 하나 이상의 애플리케이션 중 적어도 하나의 애플리케이션에 의한 상기 프레임워크의 상기 버전의 사용을 대체하기 위해 이용가능한 시간에 상기 프레임워크 업데이트를 설치하는 단계를 포함하고,
    상기 업데이트를 설치하는 단계는
    상기 복수의 사용자 계정 중 제 1 사용자 계정이 상기 컴퓨터 시스템에 로그인되어 있는 것을 검출하는 단계와,
    상기 제 1 사용자 계정이 상기 컴퓨터 시스템에 로그인되어 있는 동안,
    상기 제 1 사용자 계정에 대해 상기 프레임워크 업데이트를 설치하는 단계와,
    시스템 유휴 시간 동안 상기 복수의 사용자 계정 중 제 2 사용자 계정에 대해 상기 프레임워크 업데이트를 설치하는 단계
    를 포함하는 방법.
  11. 제10항에 있어서,
    상기 컴퓨터 시스템에서 복수의 사용자 계정에 대해 상기 프레임워크 업데이트가 설치되어야 한다고 판정하는 단계는 상기 프레임워크가 상기 복수의 사용자 계정 각각에 대해 상기 하나 이상의 애플리케이션 각각에 의해 사용됨을 판정하는 단계
    를 포함하는 방법.
  12. 제10항에 있어서,
    상기 복수의 사용자 계정의 각각의 사용자 계정에 대해 별도로 설치되도록 상기 프레임워크 업데이트를 스케줄링하는 단계 후에,
    상기 복수의 사용자 계정의 하나 이상의 사용자 계정에 대해 상기 컴퓨터 시스템이 운영 체제 유지보수 기간 동안 꺼져 있거나 중지되었는지를 판정하는 단계와,
    상기 하나 이상의 사용자 계정 각각에 대해, 컴퓨터 시스템 유휴 시간 동안 상기 프레임워크 업데이트가 별도로 설치되도록 리스케줄링(rescheduling)하는 단계
    를 더 포함하는 방법.
  13. 제12항에 있어서,
    상기 프레임워크 업데이트의 설치가 지정된 기간 후에 적어도 하나의 사용자 계정에 대해 여전히 성공적이지 않음을 검출하는 단계와,
    상기 적어도 하나의 사용자 계정에 대해, 상기 사용자 계정이 다음번 로그인되는 때로 상기 프레임워크 업데이트의 별도의 설치를 리스케줄링하는 단계
    를 더 포함하는 방법.
  14. 제10항에 있어서,
    상기 프레임워크의 상기 버전과 함께 설치되고 개발된 애플리케이션이 운영 체제 유지보수 기간 동안 사용 중에 있음을 판정하는 단계와,
    상기 애플리케이션의 사용을 변경하지 않고 상기 프레임워크 업데이트의 설치를 조용히 중지(silently failing)하는 단계와,
    후속 시간 동안에 상기 프레임워크 업데이트의 설치를 리스케줄링하는 단계
    를 더 포함하는 방법.
  15. 프로세서 및 시스템 메모리를 포함하는 컴퓨터 시스템 -상기 컴퓨터 시스템은 소프트웨어 컴포넌트를 배포하는 온라인 스토어(online store)에 통신가능하게 연결되어 있고, 상기 소프트웨어 컴포넌트는 상기 온라인 스토어로부터의 복수의 애플리케이션과 상기 컴퓨터 시스템에 설치된 상기 온라인 스토어로부터의 하나 이상의 프레임워크를 포함함- 에서, 상기 컴퓨터 시스템에 저장된 소프트웨어 컴포넌트에 대한 업데이트를 수신하는 방법으로서,
    상기 온라인 스토어로부터 애플리케이션에 대한 애플리케이션 업데이트를 획득하기 위한 사용자 명령을 수신하는 단계 -상기 애플리케이션은 상기 온라인 스토어로부터 구매됨- 와,
    상기 사용자 명령에 응답하여, 상기 애플리케이션이 프레임워크의 버전으로 개발되었고 상기 컴퓨터 시스템에서 상기 프레임워크의 버전과 함께 설치되었음을 판정하는 단계 -상기 프레임워크의 상기 버전은 또한 상기 컴퓨터 시스템에 설치된 하나 이상의 다른 애플리케이션의 개발에 사용되고 함께 설치됨- 와,
    상기 구매된 애플리케이션이 상기 프레임워크의 상기 버전과 함께 설치되고 개발되는 경우에도 상기 프레임워크의 버전보다 더 최근에 업데이트된 상기 프레임워크의 더 새로운 버전이 상기 온라인 스토어로부터 이용가능한지를 판정하는 단계와,
    상기 프레임워크의 더 새로운 버전이 이용가능하다는 판정에 응답하여 상기 프레임워크의 상기 버전에 대한 프레임워크 업데이트 및 상기 애플리케이션에 대한 애플리케이션 업데이트를 모두 요청하는 요청을 상기 온라인 스토어로 전송하는 단계와,
    상기 요청에 응답하여 상기 온라인 스토어로부터 상기 프레임워크의 더 새로운 버전을 수신하는 단계와,
    상기 애플리케이션에 대한 상기 애플리케이션 업데이트를 요구하는 상기 사용자 명령에 기초하여, 자동으로 그리고 사용자 개입 없이, 상기 애플리케이션에 의한 사용을 위해 상기 프레임워크의 버전을 업데이트하고 상기 하나 이상의 다른애플리케이션에 의한 사용을 위해 상기 프레임워크의 버전을 업데이트하도록 상기 프레임워크의 더 새로운 버전이 상기 컴퓨터 시스템에서 설치되도록 스케줄링하는 단계와,
    상기 애플리케이션 및 상기 하나 이상의 다른 애플리케이션이 상기 프레임워크의 새로운 버전과 함께 설치되지 않거나 개발되지 않은 경우에도, 상기 구매된 애플리케이션 및 상기 하나 이상의 다른 애플리케이션에 제공된 상기 프레임워크의 상기 버전의 기능을 업데이트하기 위해 상기 프레임워크의 상기 더 새로운 버전을 설치하는 단계 - 상기 프레임워크의 상기 더 새로운 버전의 설치는 상기 애플리케이션 및 상기 하나 이상의 다른 애플리케이션에 의한 상기 프레임워크의 상기 더 새로운 버전의 사용으로 상기 애플리케이션 및 상기 하나 이상의 다른 애플리케이션에 의해 상기 프레임워크의 상기 버전의 사용을 대체함 -
    를 포함하는 방법.
  16. 제15항에 있어서,
    상기 프레임워크의 더 새로운 버전을 설치하는 단계는 상기 프레임워크의 더 새로운 버전을 복수 회 설치하는 단계를 포함하고,
    상기 프레임워크의 상기 더 새로운 버전의 각각의 설치는 상기 컴퓨터 시스템에서 복수의 사용자 계정 중 상이한 사용자 계정에 대해 설치되는
    방법.
  17. 제16항에 있어서,
    상기 프레임워크의 더 새로운 버전을 설치하는 단계는,
    상기 복수의 사용자 계정 중 제 1 사용자 계정이 상기 컴퓨터 시스템에 로그인되어 있는 것을 검출하는 단계와,
    상기 제 1 사용자 계정이 상기 컴퓨터 시스템에 로그인되어 있는 동안,
    상기 제 1 사용자 계정에 대해 상기 프레임워크 업데이트를 설치하는 단계와,
    시스템 유휴 시간 동안 상기 복수의 사용자 계정 중 제 2 사용자 계정에 대해 상기 프레임워크 업데이트를 설치하는 단계
    를 포함하는 방법.
  18. 제15항에 있어서,
    상기 애플리케이션 업데이트에 대한 업데이트 원격 측정을 추적하는 단계와,
    상기 프레임워크의 상기 새로운 버전에 대한 별도의 업데이트 원격 측정을 추적하는 단계를 더 포함하고,
    상기 업데이트 원격 측정 및 상기 별도의 업데이트 원격 측정은 애플리케이션 및 프레임워크의 관리되는 릴리스의 품질을 모니터링하는 데 사용되는
    방법.
  19. 제15항에 있어서,
    상기 프레임워크의 더 새로운 버전을 설치하는 단계는, 상기 애플리케이션에 대한 애플리케이션 업데이트를 획득하기 위한 상기 사용자 명령에 응답하여, 상기 애플리케이션에서 하나 이상의 보안 취약성(security vulnerabilities)을 해결하고 상기 하나 이상의 다른 애플리케이션에서 하나 이상의 보안 취약성을 해결하기 위해 상기 프레임워크의 상기 더 새로운 버전을 설치하는 단계를 포함하는
    방법.
KR1020157034024A 2013-05-29 2013-09-20 온라인 스토어를 통해 소프트웨어 컴포넌트를 업데이트하는 기법 KR102056960B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361828658P 2013-05-29 2013-05-29
US61/828,658 2013-05-29
US13/968,452 2013-08-16
US13/968,452 US9645809B2 (en) 2013-05-29 2013-08-16 Updating software components through online stores
PCT/US2013/061040 WO2014193450A1 (en) 2013-05-29 2013-09-20 Updating software components through online stores

Publications (2)

Publication Number Publication Date
KR20160013884A KR20160013884A (ko) 2016-02-05
KR102056960B1 true KR102056960B1 (ko) 2020-01-22

Family

ID=51986697

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157034024A KR102056960B1 (ko) 2013-05-29 2013-09-20 온라인 스토어를 통해 소프트웨어 컴포넌트를 업데이트하는 기법

Country Status (5)

Country Link
US (3) US9645809B2 (ko)
EP (1) EP3005095A1 (ko)
KR (1) KR102056960B1 (ko)
CN (1) CN105453035B (ko)
WO (1) WO2014193450A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8918779B2 (en) * 2009-08-27 2014-12-23 Microsoft Corporation Logical migration of applications and data
CN105247482B (zh) * 2013-06-28 2019-10-22 三星电子株式会社 更新应用的方法和装置
US9483247B2 (en) * 2014-01-27 2016-11-01 Ca, Inc. Automated software maintenance based on forecast usage
US9400643B2 (en) * 2014-03-03 2016-07-26 Google Inc. Methods and systems for updating components on a computing device
CN105912365B (zh) * 2016-04-14 2020-01-14 惠州Tcl移动通信有限公司 一种移动终端系统更新方法及系统
US10447814B2 (en) 2017-02-02 2019-10-15 Microsoft Technology Licensing, Llc Joint servicing of software packages
US10169030B1 (en) 2017-09-13 2019-01-01 International Business Machines Corporation Refreshing a software component without interruption
WO2019059880A1 (en) * 2017-09-19 2019-03-28 Siemens Aktiengesellschaft APPARATUS AND METHOD FOR AUTONOMOUSLY ADDING AND DELETING FUNCTIONALITY IN PROGRAMMABLE CONTROLLERS (PLC)
US11334337B2 (en) * 2019-04-23 2022-05-17 Hewlett Packard Enterprise Development Lp Selecting and sending subset of components to computing device prior to operating system install
CN110515642B (zh) * 2019-09-02 2022-04-29 杭州行至云起科技有限公司 一种应用程序升级方法及系统
CN111666090B (zh) * 2020-06-10 2022-09-20 贵州电子商务云运营有限责任公司 一种应用系统扩展组件在线更新支撑系统
KR20230103774A (ko) * 2021-12-31 2023-07-07 엘지전자 주식회사 가전기기, 가전기기 업그레이드 방법 및 가전기기 업그레이드 시스템

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185734B1 (en) * 1998-07-21 2001-02-06 Hewlett-Packard Company Hierarchical registry structure for managing multiple versions of software components
US6819343B1 (en) * 2000-05-05 2004-11-16 Microsoft Corporation Dynamic controls for use in computing applications
GB2374688B (en) * 2001-04-19 2004-12-29 Ibm A method and system for distributing software features to a computer
US20080313282A1 (en) 2002-09-10 2008-12-18 Warila Bruce W User interface, operating system and architecture
US20060106806A1 (en) * 2004-11-12 2006-05-18 Smith Micro Software, Inc. Software update for a plurality of mobile devices
US7490073B1 (en) * 2004-12-21 2009-02-10 Zenprise, Inc. Systems and methods for encoding knowledge for automated management of software application deployments
JP4455403B2 (ja) 2005-05-17 2010-04-21 キヤノン株式会社 管理方法及び管理装置
US8006240B2 (en) * 2005-12-01 2011-08-23 International Business Machines Corporation Support continuous availability by allowing the use of multiple concurrent versions of shared artifact libraries, with proper bind-drain semantics, for long-lived process application consumers
US20070192763A1 (en) 2006-02-15 2007-08-16 Helvick Richard E Method and system for scheduling application of software updates
EP2047420A4 (en) * 2006-07-27 2009-11-18 Hewlett Packard Development Co USER EXPERIENCE AND DEPENDENCE MANAGEMENT IN A MOBILE DEVICE
US7603435B2 (en) * 2006-11-15 2009-10-13 Palm, Inc. Over-the-air device kill pill and lock
US8099720B2 (en) 2007-10-26 2012-01-17 Microsoft Corporation Translating declarative models
US8291402B2 (en) * 2007-11-29 2012-10-16 Red Hat, Inc. Using system fingerprints to accelerate package dependency resolution
US20090307682A1 (en) 2008-06-08 2009-12-10 Sam Gharabally Techniques for Acquiring Updates for Application Programs
US9032390B2 (en) * 2008-07-29 2015-05-12 Qualcomm Incorporated Framework versioning
US20100299219A1 (en) * 2009-05-25 2010-11-25 Cortes Ricardo D Configuration and Management of Add-ons to Digital Application Programs for Network-Based Distribution
WO2012145002A1 (en) 2011-04-21 2012-10-26 Hewlett-Packard Development Company, L.P. Installing an application into a virtualized environment
WO2012148867A1 (en) 2011-04-26 2012-11-01 Soultanov Rafael Web-based app builder for mobile devices with automatic updates
US9696981B2 (en) * 2011-04-27 2017-07-04 Cambridge Semantics, Inc. Incremental deployment of computer software program logic
US9319406B2 (en) 2011-07-12 2016-04-19 Apple Inc. System and method for linking pre-installed software to a user account on an online store
US20130067447A1 (en) * 2011-09-09 2013-03-14 Microsoft Corporation State Machine Based Package Installation
US8554179B2 (en) 2011-09-23 2013-10-08 Blackberry Limited Managing mobile device applications
EP2764437A4 (en) 2011-10-04 2015-07-01 Nokia Corp METHOD AND APPARATUS FOR PROVIDING AN APPLICATION MARKET
US9766870B2 (en) 2013-05-30 2017-09-19 Microsoft Technology Licensing, Llc Bundle package generation

Also Published As

Publication number Publication date
CN105453035B (zh) 2019-08-06
CN105453035A (zh) 2016-03-30
US20170206078A1 (en) 2017-07-20
US10318273B2 (en) 2019-06-11
KR20160013884A (ko) 2016-02-05
US20140359596A1 (en) 2014-12-04
US20190272166A1 (en) 2019-09-05
US10613853B2 (en) 2020-04-07
EP3005095A1 (en) 2016-04-13
WO2014193450A1 (en) 2014-12-04
US9645809B2 (en) 2017-05-09

Similar Documents

Publication Publication Date Title
KR102056960B1 (ko) 온라인 스토어를 통해 소프트웨어 컴포넌트를 업데이트하는 기법
EP3688594B1 (en) Api repository enabling microservices configuration and management
JP6363796B2 (ja) 動的コードデプロイメント及びバージョニング
JP6352535B2 (ja) プログラム・コードを実行するための要求に対するプログラム的イベント検出及びメッセージ生成
CN108369534B (zh) 代码执行请求路由
US9146764B1 (en) Processing event messages for user requests to execute program code
TWI599976B (zh) 用於客戶裝置之遠端管理的應用程式商店介面
US8938510B2 (en) On-demand mailbox synchronization and migration system
EP3332309B1 (en) Method and apparatus for facilitating a software update process over a network
US9904585B1 (en) Error handling in executing workflow state machines
US20150186129A1 (en) Method and system for deploying a program module
US8874640B2 (en) Method and system for reducing service overhead in service oriented architectures
US20120047506A1 (en) Resource abstraction via enabler and metadata
US9766927B1 (en) Data flow management in processing workflows
US9300759B1 (en) API calls with dependencies
US20150304399A1 (en) Running agents to execute automation tasks in cloud systems
CN102195970A (zh) 基于客户端会话的调试
US9141363B2 (en) Application construction for execution on diverse computing infrastructures
US20170352115A1 (en) Mobile application licensing tool
US10776081B2 (en) Systems and methods for utilizing webhooks integrated in platform-as-a-service supported application development and deployment
CN113014616A (zh) 用于内容交付嵌入的分析内容网络
CN117337429A (zh) 部署机器学习模型
US9553935B2 (en) Mechanism for configuring service endpoints in native client applications at runtime
US20240126625A1 (en) Declarative api for managing connectors and schemas
Pasquali Deploying Node. js

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant