TECHNICAL FIELD

This disclosure relates generally to machine learning. More specifically, but not by way of limitation, this disclosure relates to using machine learning to predict a software component responsible for causing a software defect based on a textual description of the defect.

BACKGROUND

Software often includes software defects in which, for example, the software does not perform according to design. Software defects may be discovered during software development or after software is deployed. In many cases, users or other developers can submit defect reports to the software developer. A typical defect report includes a description of the problem, an identification of when the problem occurs, and a description of how to reproduce the problem.

But software packages include many software components, which increases the complexity involved with identifying the particular software component causing a defect. Users who discover software defects often do not know which software components are contained within a particular software package, let alone have a way to discover which software component caused the defect. Hence, upon receiving a defect report from a user, developers responsible for defect triage must isolate the particular software component in which the defect occurs before any work can start on correcting the identified defect.

Existing tools for software defect reporting employ location-based and activity-based approaches. Location-based tools predict a location of a defect, or a bug, in a base of source code based on similar previously-isolated defects. Activity-based tools predict a software component based on a developer's previous submitted defects. But these solutions cannot produce accurate results, in part because historic defect reports contain mixed ground truth labels (some are labeled with classifications, some with sub-classifications). Consequently, the training the predictive model may be less-than ideal. In addition, these defect distributions can be non-uniform in one or more respects. In one example, data sets can be non-stationary in time because more defect reports are submitted for newer components than for older software components. In another example, the defect distribution can be non-uniform in component coverage if particular software components may have more software defect reports submitted than other components.

Accordingly, existing solutions are unable to reliably classify software defects.

SUMMARY

Systems and methods are disclosed for facilitating updates to software programs by determining a location of a software defect via machine learning techniques. In an example, a method accesses a textual description of a software defect in a software program. The software program has a set of functions for controlling a computing device. The method generates a feature vector from the textual description by applying a topic model to the textual description. The method determines a set of classifications by applying a first classification model to the feature vector. Each classification in the set of classifications includes a respective probability that the textual description is represented by the classification. The method further determines a set of sub-classifications by applying a second classification model to the feature vector. Each sub-classification includes a respective probability that the textual description is represented by the sub-classification. Each sub-classification is within one of the classifications. The method integrates the set of classifications and the set of sub-classifications into a final classification of the textual description that indicates a software component responsible for causing the software defect. The integration can include creating an aggregated set of classifications by aggregating sub-classifications associated with each of the set of classifications and calculating a final probability over each component by stacking the set of classifications and the aggregated set of classifications, resulting in a final classification. The final classification is usable for correcting the software defect by modifying one or more of functions via a development environment.

These illustrative embodiments are mentioned not to limit or define the disclosure, but to provide examples to aid understanding thereof. Additional embodiments are discussed in the Detailed Description, and further description is provided there.

