Hierarchical dependency analysis enhancements using disjoint-or trees

US9547478B1 · US · B1

Patent metadata
FieldValue
Publication numberUS-9547478-B1
Application numberUS-201514871961-A
CountryUS
Kind codeB1
Filing dateSep 30, 2015
Priority dateSep 30, 2015
Publication dateJan 17, 2017
Grant dateJan 17, 2017

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.

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for performing hierarchical dependency analysis using disjoint-or trees. One of the methods includes receiving, from a user, a request to remove a node from a hierarchy, wherein the hierarchy is a directed graph having nodes and links, wherein each node in the hierarchy represents a software element in the project and each directed link in the hierarchy connects a corresponding pair of nodes and represents containment of a child software element represented by a first node of the pair by a parent software element represented by a second node of the pair. If a parent element of a disjoint-or tree corresponds to a parent node of the removed node, a union of dependencies for the removed node is determined. The union of dependencies is then subtracted from the parent element and from every ancestor element of the parent element.

First claim

Opening claim text (preview).

What is claimed is: 1. A computer-implemented method comprising: receiving, from a user, a request to add a node to a hierarchy of software elements, wherein the hierarchy of software elements is a directed graph having nodes and directed links, wherein each node in the hierarchy of software elements represents a software element in a software project and each directed link in the hierarchy of software elements connects a corresponding pair of nodes and represents containment of a child software element represented by a first node of the corresponding pair of nodes by a parent software element represented by a second node of the corresponding pair of nodes, and wherein one or more elements of a disjoint-or tree each cache a previously computed portion of a union of dependencies over a corresponding node and any descendants of the corresponding node in the hierarchy of software elements; determining that the added node of the hierarchy of software elements is not important enough to cache in the disjoint-or tree and that a parent element of the disjoint-or tree corresponding to a parent element of the added node has a status indicator of complete, wherein the status indicator of complete represents that a set of dependencies cached with an element represents a complete set of dependencies for the corresponding node or any descendants of the corresponding node in the hierarchy of software elements; in response to determining that the added node of the hierarchy of software elements is not important enough to cache in the disjoint-or tree and that the parent element of the disjoint-or tree corresponding to the parent element of the added node has the status indicator of complete, generating a compound element of the disjoint-or tree, wherein the compound element of the disjoint-or tree is a child element of the parent element of the disjoint-or tree, and wherein the compound element stores a set of dependencies for the added node; and maintaining cached data in the disjoint-or tree including propagating the set of dependencies for the added node to all ancestor elements of the compound element of the disjoint-or tree. 2. The computer-implemented method of claim 1 , wherein the disjoint-or tree satisfies two properties: a first property that each element of the disjoint-or tree is associated with a set of dependencies that is a union of one or more sets of dependencies associated with the element and any descendant elements of the element of the disjoint-or tree, and a second property that children elements of each parent element of the disjoint-or tree are associated with disjoint sets of dependencies. 3. The computer-implemented method of claim 1 , further comprising: determining whether the added node of the hierarchy of software elements is important enough to cache in the disjoint-or tree by: computing a weight for the added node based on a number of descendants of the added node, a number of dependencies associated with the added node, or both; and determining that the weight for the added node satisfies a threshold. 4. A computer-implemented method comprising: receiving, from a user, a request to add a node to a hierarchy of software elements, wherein the hierarchy of software elements is a directed graph having nodes and directed links, wherein each node in the hierarchy of software elements represents a software element in a software project and each directed link in the hierarchy of software elements connects a corresponding pair of nodes and represents containment of a child software element represented by a first node of the corresponding pair of nodes by a parent software element represented by a second node of the corresponding pair of nodes, and wherein one or more elements of a disjoint-or tree each cache a previously computed portion of a union of dependencies over a corresponding node and any descendants of the corresponding node in the hierarchy of software elements; caching the added node of the hierarchy of software elements with a corresponding added element of the disjoint-or tree; determining that a parent element of the corresponding added element of the disjoint-or tree has a status indicator of complete, wherein the status indicator of complete represents that a set of dependencies cached with an element represents a complete set of dependencies for the corresponding node or any descendants of the corresponding node in the hierarchy of software elements; and in response to determining that the parent element of the corresponding added element of the disjoint-or tree has the status indicator of complete, generating a compound element of the disjoint-or tree, wherein the compound element of the disjoint-or tree is a child element of the parent element of the disjoint-or tree, and wherein the compound element stores a set difference between a set of the corresponding added element and the parent element of the corresponding added element of the disjoint-or tree. 5. The computer-implemented method of claim 4 , wherein the disjoint-or tree satisfies two properties: a first property that each element of the disjoint-or tree is associated with a set of dependencies that is a union of one or more sets of dependencies associated with the element and any descendant elements of the element of the disjoint-or tree, and a second property that children elements of each parent element of the disjoint-or tree are associated with disjoint sets of dependencies. 6. The computer-implemented method of claim 4 , wherein the set difference stored with the compound element includes a set of dependencies for one or more uncached sibling nodes of the added node of the hierarchy of software elements. 7. The computer-implemented method of claim 4 , further comprising: determining whether the added node of the hierarchy of software elements is important enough to cache in the disjoint-or tree by: computing a weight for the added node based on a number of descendants of the added node, a number of dependencies associated with the added node, or both; and determining that the weight for the added node satisfies a threshold. 8. A computer-implemented method comprising: receiving, from a user, a request to remove a node from a hierarchy of software elements, wherein the hierarchy of software elements is a directed graph having nodes and directed links, wherein each node in the hierarchy of software elements represents a software element in a software project and each directed link in the hierarchy of software elements connects a corresponding pair of nodes and represents containment of a child software element represented by a first node of the corresponding pair of nodes by a parent software element represented by a second node of the corresponding pair of nodes, and wherein one or more elements of a disjoint-or tree each cache a previously computed portion of a union of dependencies over a corresponding node and any descendants of the corresponding node in the hierarchy of software elements; determining that a parent element of the disjoint-or tree corresponds to a parent node of the removed node from the hierarchy of software elements; computing a union of dependencies for the removed node from the hierarchy of software elements; and in response to computing the union of dependencies for the removed node from the hierarchy of software elements, subtracting the union of dependencies from the parent element of the disjoint-or tree and from every ancestor element of the parent element of the disjoint-or tree. 9. The computer-implemented method of claim 8 , wherein the removed node from the hierarchy of software elements has a corresponding element in the disjoint-or tree, and wherein computing the union of dependencies for

Assignees

Inventors

Classifications

  • Drawing of charts or graphs · CPC title

  • G06F8/433Primary

    Dependency analysis; Data or control flow analysis · CPC title

  • G06F8/22Primary

    Procedural · CPC title

  • Analysis of software for verifying properties of programs (testing of software G06F11/3668) · CPC title

  • Structural analysis for program understanding · 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 US9547478B1 cover?
Methods, systems, and apparatus, including computer programs encoded on computer storage media, for performing hierarchical dependency analysis using disjoint-or trees. One of the methods includes receiving, from a user, a request to remove a node from a hierarchy, wherein the hierarchy is a directed graph having nodes and links, wherein each node in the hierarchy represents a software element …
Who is the assignee on this patent?
Semmle Ltd
What technology area does this patent fall under?
Primary CPC classification G06F8/433. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jan 17 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (B1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 1 related publication on this page (citations in our corpus or others sharing the same primary CPC).