Dynamic software updates

US9256419B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9256419-B2
Application numberUS-201213453238-A
CountryUS
Kind codeB2
Filing dateApr 23, 2012
Priority dateApr 23, 2012
Publication dateFeb 9, 2016
Grant dateFeb 9, 2016

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A method, and a corresponding system, for dynamically updating software while the software is running by automatically dividing a patch into a plurality of micro-updates using compiler analysis. The method includes providing the patch which includes updates to several variable units of the software, including functions, type definitions, and data stores. Next, an interference graph of the patch is generated by creating a node corresponding to each variable unit of the patch and creating connected components by adding edges connecting variable units having an impact expression with a non-zero intersection. The patch is divided into the micro-updates, where each micro-update corresponds to a connected component. The micro-updates are then applied to the software when the variable units of the micro-update are at a safepoint, and at least two of the micro-updates are applied at different times while the software is running.

First claim

Opening claim text (preview).

The invention claimed is: 1. A method for dynamically updating software, comprising: providing a dynamic patch including a plurality of updates to variable units of the software; constructing an interference graph of the dynamic patch by generating a node corresponding to each variable unit of the dynamic patch and generating edges connecting nodes having impact expressions with a non-zero intersection, wherein one or more connected nodes is a connected component, and wherein a non-zero intersection occurs when the impact expression of two nodes intersects; dividing the dynamic patch into a plurality of micro-updates each corresponding to one of the connected components; and applying at least two of the micro-updates to the software independently while the software is running, comprising: selecting a first micro-update of the plurality of micro-updates, determining whether the variable units of the selected first micro-update are active, applying the selected first micro-update to the software if the variable units of the selected first micro-update are inactive, and selecting a second micro-update of the plurality of micro-updates and applying the selected second micro-update after determining the variable units of the selected second micro-update are inactive. 2. The method of claim 1 , further comprising: obtaining a list of active variable units; identifying one of the micro-updates including only inactive variable units based on the list; and applying the micro-update including only inactive variable units. 3. The method of claim 1 , further comprising: applying each of the micro-updates to the software when the variable units of the micro-update are at a safepoint. 4. The method of claim 1 , further comprising: clustering at least two of the micro-updates into a macro-update; and applying the macro-update to the software. 5. The method of claim 1 , further comprising: generating the impact expressions using mod/ref information or points-to information or call graph information of the variable units. 6. The method of claim 5 , further comprising: generating the mod/ref information or points-to information or call graph information of the variable units by analyzing sources of the software to be updated. 7. The method of claim 1 wherein each of the variable units of one of the micro-updates is inactive simultaneously while the software is running. 8. The method of claim 1 , further comprising: providing the micro-updates in a source file of a computer-readable medium. 9. The method of claim 1 , further comprising: applying each of the micro-updates at different times while the software is running. 10. A method for updating software while the software provides operating instructions to a computer, comprising: generating an impact expression for each variable unit of a dynamic software update; generating a node on an interference graph for each variable unit; connecting nodes representing the variable units having impact expressions with a non-zero intersection by edges, wherein one or more connected nodes is a connected component, and wherein a non-zero intersection occurs when the impact expression of two nodes intersects; and applying one or more connected components to the software independent of any other connected components, comprising: selecting a first connected component of the one or more connected components, determining whether the variable units of the selected first connected component are active, applying the selected first connected component to the software if the variable units of the selected first connected component are inactive, and selecting a second connected component of the one or more the connected components and applying the selected second component after determining the variable units of the selected second connected component are inactive. 11. The method of claim 10 , wherein applying comprises applying each of the one or more connected components to the software at a safepoint common to each of the variable units of the one or more connected components. 12. A non-transitory computer readable medium storing instructions for performing a method that dynamically updates software, the instructions causing the computer to: analyze the impact of changes to variable units of a dynamic software update on the software; build an interference graph containing a plurality of nodes and edges, wherein each node represents one of the variable units being changed and each edge connects two nodes representing variable units having an impact expression with a non-zero intersection, and wherein a non-zero intersection occurs when the impact expression of two nodes intersects; divide the dynamic software update into micro-updates each including at least one of the variable units based on the analysis; and apply one or more micro-updates to the software independent of any other micro-updates, wherein the computer executes instructions to: select a first micro-update of the plurality of micro-updates, determine whether the variable units of the selected first micro-update are active, apply the selected first micro-update to the software if the variable units of the selected first micro-update are inactive, and select a second micro-update of the plurality of micro-updates and apply the selected second component after determining the variable units of the selected second micro-update are inactive. 13. The non-transitory computer readable medium of claim 12 , further causing the computer to: identify a bug in the software; create the dynamic software update to fix the bug; prepare the dynamic software update for installation; detect any errors in the dynamic software update; and apply each of the micro-updates of the dynamic software update to the software when the variable units of the micro-update are at a safepoint.

Assignees

Inventors

Classifications

  • G06F8/656Primary

    while running · CPC title

  • G06F8/65Primary

    Updates (security arrangements therefor G06F21/57) · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9256419B2 cover?
A method, and a corresponding system, for dynamically updating software while the software is running by automatically dividing a patch into a plurality of micro-updates using compiler analysis. The method includes providing the patch which includes updates to several variable units of the software, including functions, type definitions, and data stores. Next, an interference graph of the patch…
Who is the assignee on this patent?
Mannarswamy Sandya Srivilliputtur, Saraswati Sujoy, Hewlett Packard Entpr Dev Lp
What technology area does this patent fall under?
Primary CPC classification G06F8/656. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Feb 09 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).