# US 9,430,359 B1 · Identifying and resolving software issues

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

- Number: US 9,430,359 B1
- Document ID: US9430359B1
- Status: Granted
- Kind: B1
- Application number: 14/073,351
- Filed: 2013-11-06
- Granted: 2016-08-30
- Earliest claimed: 2013-11-06
- Assignees: Amazon Technologies, Inc.
- Applicants: Amazon Technologies, Inc.
- Inventors: Andrew Thomas Troutman; Joshua William McFarlane; Matthew Roy Noble; Nicholas Alexander Allen
- Web page: https://patentgrep.com/patent/US9430359B1

## CPC

- G06F 11/3668: Testing of software
- G06F 11/0706: {the processing taking place on a specific hardware platform or in a specific software environment}
- G06F 11/0793: {Remedial or corrective actions (recovery from an exception in an instruction pipeline G06F9/3861; by retry G06F11/1402; for recovering from a failure of a protocol instance or entity H04L69/40)}
- G06F 11/366: {using diagnostics (G06F11/0703 takes precedence)}
- G06F 11/3692: {for test results analysis}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Technologies are described herein for use in identifying and resolving software issues. One or more corrective actions may be identified and taken that are based upon the similarity between an unresolved issue and one or more resolved issues and/or upon the similarity between code changes made to resolve similar previously resolved issues. A version control graph might also be utilized to determine if a change made to resolve an issue in one branch of a software component is applicable to another branch of the software component. The version control graph might also be utilized to compute the relevance of an entry in an issue tracking system for an issue at a point in time after the entry is created in the issue tracking system.

## Claims

### Claim 1

An apparatus for performing one or more corrective actions with respect to an unresolved issue in a software component, the apparatus comprising:
a processor; and
a computer-readable storage medium having computer-executable instructions stored thereupon which, when executed by the processor, cause the apparatus to:
obtain data describing one or more characteristics of an unresolved issue with a software component from an issue tracking system,
obtain data describing one or more characteristics of one or more resolved issues with the software component from the issue tracking system,
identify at least one resolved issue that is similar to the unresolved issue from the one or more resolved issues based upon the characteristics of the unresolved issue and the characteristics of the one or more resolved issues,
identify, based upon data maintained by a version control system, a plurality of changes that were made to the software component in order to resolve the at least one resolved issue, wherein the version control system maintains a version control graph for the software component that identifies the plurality of changes made to the software component and relationships between the plurality of changes,
determine a similarity between the plurality of changes that were made to the software component in order to resolve the at least one resolved issue, and
perform one or more corrective actions with respect to the unresolved issue based upon the similarity between the plurality of changes to the software component by providing a recommendation identifying changes to the software component that are similar to one another.

### Claim 2 (depends on 1)

The apparatus of claim 1, wherein at least one of the one or more corrective actions further comprises annotating an entry in the issue tracking system for the unresolved issue with data identifying changes made to the at least one resolved issue that is similar to the unresolved issue.

### Claim 3 (depends on 1)

The apparatus of claim 1, wherein at least one of the one or more corrective actions further comprises causing a developer that resolved a resolved issue that is similar to the unresolved issue to be assigned to the unresolved issue in the issue tracking system.

### Claim 4 (depends on 1)

The apparatus of claim 1, wherein at least one of the one or more corrective actions further comprises generating a commit in the version control system for the unresolved issue.

### Claim 5 (depends on 1)

The apparatus of claim 1, wherein at least one of the one or more corrective actions further comprises generating a commit in the version tracking system for the unresolved issue and causing one or more tests to be performed to determine that the commit resolved the unresolved issue.

### Claim 6 (depends on 1)

The apparatus of claim 1, wherein the data describing the one or more characteristics of the unresolved issue with the software component and the data describing the one or more characteristics of the one or more resolved issues with the software component comprise one or more of failed test cases associated with the unresolved issue, one or more stack traces associated with the unresolved issue, a text description of the unresolved issue, or data identifying one or more conditions under which the unresolved issue occurs.

### Claim 7 (depends on 1)

The apparatus of claim 1, wherein the similarity between the identified changes to the software component is determined based upon one or more of files that were changed to resolve the at least one resolved issue, test cases added in response to having resolved the at least one resolved issue, lines of program code that were changed to resolve the at least one resolved issue, software classes that were changed to resolve the at least one resolved issue, or an identity of a developer that resolved the at least one resolved issue.

### Claim 8

A non-transitory computer-readable storage medium having computer-executable instructions stored thereon which, when executed by a computer, cause the computer to:
obtain data describing one or more characteristics of an unresolved issue with a software component from an issue tracking system;
obtain data describing one or more characteristics of one or more resolved issues from the issue tracking system;
identify at least one resolved issue that is similar to the unresolved issue from the one or more resolved issues based upon the one or more characteristics of the unresolved issue and the one or more characteristics of the one or more resolved issues;
identify, based upon data maintained by a version control system, a plurality of changes that were made to the software component in order to resolve the at least one resolved issue that is similar to the unresolved issue, wherein the version control system maintains a version control graph for the software component that identifies the plurality of changes made to the software component and relationships between the plurality of changes;
determine a similarity between the plurality of changes that were made to the software component in order to resolve the resolved issues; and
perform one or more corrective actions on the unresolved issue based at least in part upon the similarity between the plurality of changes to the software component by providing a recommendation identifying changes to the software component that are similar to one another.

### Claim 9 (depends on 8)

The computer-readable storage medium of claim 8, wherein performing one or more corrective actions further comprises providing a notification that identifies changes associated with the resolved issues similar to the unresolved issue, the changes having at least a threshold level of similarity with one another.

### Claim 10 (depends on 8)

The computer-readable storage medium of claim 8, wherein performing one or more corrective actions further comprises annotating an entry in the issue tracking system for the unresolved issue with data identifying changes made to the resolved issues that are similar to the unresolved issue.

### Claim 11 (depends on 8)

The computer-readable storage medium of claim 8, wherein performing one or more corrective actions further comprises relating one or more other resolved or unresolved issues with the unresolved issue in the issue tracking system.

### Claim 12 (depends on 8)

The computer-readable storage medium of claim 8, wherein performing one or more corrective actions further comprises generating a commit in the version tracking system for the unresolved issue and causing one or more tests to be performed to determine that the commit resolves the unresolved issue.

### Claim 13 (depends on 8)

The computer-readable storage medium of claim 8, wherein the similarity of the resolved issues and the unresolved issue is determined, at least in part, based upon one or more failed test cases associated with the unresolved issue, one or more stack traces associated with the unresolved issue, a text description of the unresolved issue, or data identifying one or more conditions under which the unresolved issue occurs.

### Claim 14 (depends on 8)

The computer-readable storage medium of claim 8, wherein the similarity between the identified changes is determined, at least in part, based upon files that were changed to resolve the resolved issues, lines of program code that were changed to resolve the resolved issues, software classes that were changed to resolve the resolved issues, or an identity of a developer associated with the resolved issues.

### Claim 15 (depends on 8)

The computer-readable storage medium of claim 8, wherein the one or more corrective actions further comprise causing a developer that resolved a resolved issue that is similar to the unresolved issue to be assigned to the unresolved issue in the issue tracking system.

### Claim 16

A computer-implemented method for performing one or more corrective actions with respect to an unresolved issue with a software component, the method comprising:
obtaining data describing one or more characteristics of an unresolved issue with a software component from an issue tracking system;
obtaining data describing one or more characteristics of one or more resolved issues from the issue tracking system;
identifying, from the one or more resolved issues, at least one resolved issue that is similar to the unresolved issue with the software component based upon the one or more characteristics of the unresolved issue and the one or more characteristics of the one or more resolved issues;
identifying, based upon data maintained by a version control system, a plurality of changes that were made to the software component in order to resolve the at least one resolved issue, wherein the version control system maintains a version control graph for the software component that identifies the plurality of changes made to the software component and relationships between the plurality of changes;
determining a similarity between the plurality of changes that were made to the software component in order to resolve the at least one resolved issue; and
performing one or more corrective actions with respect to the unresolved issue based upon the similarity between the plurality of changes to the software component by providing a recommendation identifying changes to the software component that are similar to one another.

### Claim 17 (depends on 16)

The computer-implemented method of claim 16, wherein performing one or more corrective actions further comprises annotating an entry in the issue tracking system for the unresolved issue.

### Claim 18 (depends on 16)

The computer-implemented method of claim 16, wherein performing one or more corrective actions further comprises associating an entry in the issue tracking system for the unresolved issue to one or more developers associated with one or more of the resolved issues that are similar to the unresolved issue.

### Claim 19 (depends on 16)

The computer-implemented method of claim 16, wherein performing one or more corrective actions further comprises generating a commit in the version control system for the unresolved issue.

### Claim 20 (depends on 16)

The computer-implemented method of claim 16, wherein identifying one or more of the resolved issues that are similar to the unresolved issue with the software component comprises identifying one or more of the resolved issues that have at least a threshold similarity to the unresolved issue with the software component.

### Claim 21 (depends on 16)

The computer-implemented method of claim 16, wherein the data describing the one or more characteristics of the one or more resolved issues comprises data describing one or more resolved issues with the software component.

### Claim 22 (depends on 16)

The computer-implemented method of claim 16, wherein the data describing the one or more characteristics of the one or more resolved issues comprises data describing one or more resolved issues with one or more other software components.

### Claim 23 (depends on 16)

The computer-implemented method of claim 16, wherein the similarity between the plurality of changes to the software component is determined based upon one or more of files that were changed to resolve the at least one resolved issue, lines of program code that were changed to resolve the at least one resolved issue, software classes that were changed to resolve the at least one resolved issue, or an identity of a developer that resolved the at least one resolved issue.
