# US 10,311,405 B2 · Software-issue graphs

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,311,405 B2
- Document ID: US10311405B2
- Status: Granted
- Kind: B2
- Application number: 15/655,187
- Filed: 2017-07-20
- Published: 2019-01-24
- Granted: 2019-06-04
- Earliest claimed: 2017-07-20
- Assignees: CA, Inc.
- Applicants: CA, Inc.
- Inventors: Jacob Burton; Andrew Homeyer; Kelli Hackethal; Megan Espeland; Mary Davis
- Web page: https://patentgrep.com/patent/US10311405B2

## CPC

- G06Q 10/103: {Workflow collaboration or project management}
- G06F 8/71: Version control (security arrangements therefor G06F21/57); Configuration management
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Provided is a process, including: obtaining a plurality of software-issue reports; obtaining a pull request; forming a software-issue graph having a plurality of nodes corresponding to the software-issue reports and a plurality of edges indicating relationships between the software-issue reports; determining that the pull request addresses a given software-issue report; selecting a subset of nodes in the software-issue graph addressed by the pull request; and designating the pull request as being associated with the plurality of software-issue reports corresponding to the selected subset of nodes.

## Claims

### Claim 1

A method, comprising:
obtaining, with one or more processors, a plurality of software-issue reports, each software-issue report describing a software bug to be fixed or feature to be added to a software application;
obtaining, with one or more processors, a pull request identifying a branch of source code of the software application in a version control system;
forming, with one or more processors, a software-issue graph having a plurality of nodes corresponding to the software-issue reports and a plurality of edges indicating relationships between the software-issue reports, wherein forming the software-issue graph comprises at least one of the following:
determining that a first software-issue report must be addressed before a second software-issue report and, in response, adding an edge to the software-issue graph indicating the first software-issue report must be addressed before the second software-issue report;
determining that a third software-issue report is a duplicate of a fourth software-issue report and, in response, adding an edge to the software-issue graph indicating the third software-issue report is a duplicate of the fourth software-issue report; or
determining that a fifth and a sixth software-issue report each are a species of a seventh software-issue report and, in response, adding a pair of edges to the software-issue graph indicating the fifth and the sixth software-issue report each are a species of the seventh software-issue report, wherein
the software issue graph is formed with a machine-learning model obtained trained by obtaining a log of historical workflow instances addressing software-issue reports and training the machine learning model used to form the software-issue graph with the log of historical workflow instances, and
the machine-learning model is updated based on user adjustments to previous outputs of the model indicating incorrect edges;
determining, with one or more processors, that the pull request addresses a given software-issue report;
selecting, with one or more processors, a subset of nodes in the software-issue graph addressed by the pull request based on the subset of nodes sharing a respective edge with the given software-issue report and respective relationships indicated by the shared edges;
designating, with one or more processors, in memory, the pull request as being associated with the given software-issue report and the plurality of software-issue reports corresponding to the selected subset of nodes.

### Claim 2 (depends on 1)

The method of claim 1, wherein forming the software-issue graph comprises:
determining that the first software-issue report must be addressed before the second software-issue report and, in response, adding the edge to the software-issue graph indicating the first software-issue report must be addressed before the second software-issue report;
determining that the third software-issue report is a duplicate of the fourth software-issue report and, in response, adding the edge to the software-issue graph indicating the third software-issue report is a duplicate of the fourth software-issue report; and
determining that the fifth and the sixth software-issue report each are a species of a seventh software-issue report and, in response, adding the pair of edges to the software-issue graph indicating the fifth and the sixth software-issue report each are a species of the seventh software-issue report.

### Claim 3 (depends on 1)

The method of claim 1, wherein selecting the subset of nodes comprises recursively traversing the software-issue graph by:
accessing a current node corresponding to the pull request and a set of edges connecting to the current node;
filtering out first edges in the set of edges based on the filtered first edges having already been traversed;
filtering out second edges in the set of edges based on the filtered second edges indicating a directionality of a relationship in a given direction; and
forming a set of connected nodes based on the connected nodes being connected to the current node by unfiltered edges among the set of edges; and
recursively calling a routine that traverses the software-issue graph with at least one node in the set of connected nodes identified by parameter in the routine call.

### Claim 4 (depends on 1)

The method of claim 1, comprising:
causing, via a network, a client computing device to display a user interface associating the pull request as being associated with the given software-issue report and the plurality of software-issue reports corresponding to the selected subset of nodes, wherein the user interface includes an event handler operative to receive user inputs selecting among the plurality of software-issue reports corresponding to the selected subset of nodes and cause a value to be sent indicative of the selection via the network.

### Claim 5 (depends on 1)

The method of claim 1, comprising:
causing a client computing device to display a plurality of nodes of the graph in a force directed layout or a tree layout.

### Claim 6 (depends on 1)

The method of claim 1, comprising:
inferring a priority of a software-issue report based on a relationship indicated by an edge of the software-issue graph, wherein inferring the priority is based on:
determining that the first software-issue report must be addressed before the second software-issue report; and
determining that the fifth and the sixth software-issue report each are a species of a seventh software-issue report, wherein the priority is of the first software issue report and the first software-issue report is the same software-issue report as the seventh software-issue report.

### Claim 7 (depends on 1)

The method of claim 1, wherein determining that the pull request addresses the given software-issue report comprises:
receiving a designation supplied by a user via a user interface indicating that the pull request addresses the given software-issue report.

### Claim 8 (depends on 1)

The method of claim 1, wherein determining that the pull request addresses the given software-issue report comprises:
inferring that the pull request addresses the given software-issue report with a supervised machine learning model trained on previous designations of previous software-issue reports as being addressed by previous pull requests.

### Claim 9 (depends on 1)

The method of claim 1, comprising determining that the fifth and the sixth software-issue report each are a species of the seventh software-issue report and, in response, adding the pair of edges to the software-issue graph indicating the fifth and the sixth software-issue report each are a species of the seventh software-issue report by:
forming a first plurality of clusters at a first level of granularity;
forming a second plurality of clusters at a second level of granularity that is greater than the first level of granularity, wherein a given cluster in the first plurality of clusters contains a plurality of clusters in the second plurality of clusters including the fifth and the sixth software-issue reports; and
determining that the seventh software-issue report is representative of the given cluster.

### Claim 10 (depends on 1)

The method of claim 1, comprising determining that the third software-issue report is a duplicate of the fourth software-issue report and, in response, adding the edge to the software-issue graph indicating the third software-issue report is a duplicate of the fourth software-issue report by:
forming, for each of a plurality of the software-issue reports, respective feature vectors having dimensions corresponding to n-grams in the respective software-issue reports, wherein the values of the dimensions are based on both a number of times a respective n-gram occurs in the respective software-issue report and a number of times the respective n-gram occurs in other software-issue reports;
determining pairwise distances between the feature vectors; and
designating software-issue reports as duplicates based on the pairwise distances.

### Claim 11 (depends on 1)

The method of claim 1, comprising determining that the first software-issue report must be addressed before the second software-issue report and, in response, adding the edge to the software-issue graph indicating the first software-issue report must be addressed before the second software-issue report by:
determining weights in a cyclic neural network by iteratively adjusting the weights to reduce an amount of error or increase an amount of fitness of the cyclic neural network in predicting sequences of software-issue reports being addressed in a historical training set of previously addressed software-issue reports.

### Claim 12 (depends on 1)

The method of claim 1, comprising determining that the first software-issue report must be addressed before the second software-issue report and, in response, adding the edge to the software-issue graph indicating the first software-issue report must be addressed before the second software-issue report by:
forming, based on a historical log indicating sequences with which previous software-issue reports were addressed, a transition probability matrix indicating pairwise probabilities of transitioning from a software-issue report corresponding to a row of the transition probability matrix to a software-issue report corresponding to a column of the transition probability matrix;
pruning the transition probability matrix to identify values having greater than a threshold probability; and
adding edges to the software-issue graph between nodes corresponding to values of the transition probability matrix having values greater than the threshold probability.

### Claim 13 (depends on 1)

The method of claim 1, wherein:
forming the software-issue graph comprises steps for forming a software-issue graph.

### Claim 14 (depends on 1)

The method of claim 1, wherein forming the software-issue graph comprises:
sending instructions to a client computing device to display a user interface identifying a plurality of software-issue reports in a web browser;
receiving user inputs entered via the user interface and designating edges to be added to the software-issue graph;
in response to receiving the user inputs, adding the designated edges to the software-issue graph in memory; and
sending instructions to another client computing device to display an updated version of at least part of the software-issue graph in a native application executing on the other client computing device.

### Claim 15 (depends on 1)

The method of claim 1, comprising:
operating a hosted project management application having a plurality of tenant accounts, each tenant account having one or more software projects to which at least some of the software-issue reports pertain.

### Claim 16

A tangible, non-transitory, machine-readable medium storing instructions that when executed by one or more processors effectuate operations comprising:
obtaining, with one or more processors, a plurality of software-issue reports, each software-issue report describing a software bug to be fixed or feature to be added to a software application;
obtaining, with one or more processors, a pull request identifying a branch of source code of the software application in a version control system;
forming, with one or more processors, a software-issue graph having a plurality of nodes corresponding to the software-issue reports and a plurality of edges indicating relationships between the software-issue reports, wherein forming the software-issue graph comprises at least one of the following:
determining that a first software-issue report must be addressed before a second software-issue report and, in response, adding an edge to the software-issue graph indicating the first software-issue report must be addressed before the second software-issue report;
determining that a third software-issue report is a duplicate of a fourth software-issue report and, in response, adding an edge to the software-issue graph indicating the third software-issue report is a duplicate of the fourth software-issue report; or
determining that a fifth and a sixth software-issue report each are a species of a seventh software-issue report and, in response, adding a pair of edges to the software-issue graph indicating the fifth and the sixth software-issue report each are a species of the seventh software-issue report, wherein
the software issue graph is formed with a machine-learning model obtained trained by obtaining a log of historical workflow instances addressing software-issue reports and training the machine learning model used to form the software-issue graph with the log of historical workflow instances, and
the machine-learning model is updated based on user adjustments to previous outputs of the model indicating incorrect edges;
determining, with one or more processors, that the pull request addresses a given software-issue report;
selecting, with one or more processors, a subset of nodes in the software-issue graph addressed by the pull request based on the subset of nodes sharing a respective edge with the given software-issue report and respective relationships indicated by the shared edges;
designating, with one or more processors, in memory, the pull request as being associated with the given software-issue report and the plurality of software-issue reports corresponding to the selected subset of nodes.

### Claim 17 (depends on 16)

The medium of claim 16, wherein forming the software-issue graph comprises:
determining that the first software-issue report must be addressed before the second software-issue report and, in response, adding the edge to the software-issue graph indicating the first software-issue report must be addressed before the second software-issue report;
determining that the third software-issue report is a duplicate of the fourth software-issue report and, in response, adding the edge to the software-issue graph indicating the third software-issue report is a duplicate of the fourth software-issue report; and
determining that the fifth and the sixth software-issue report each are a species of a seventh software-issue report and, in response, adding the pair of edges to the software-issue graph indicating the fifth and the sixth software-issue report each are a species of the seventh software-issue report.

### Claim 18 (depends on 16)

The medium of claim 16, wherein determining that the pull request addresses the given software-issue report comprises:
inferring that the pull request addresses the given software-issue report with a supervised machine learning model trained on previous designations of previous software-issue reports as being addressed by previous pull requests.
