IP Library Granted Patent US 9,047,164
Granted Patent B2
US 9,047,164 · App. 11/853,780 · Granted Jun 2, 2015

Calculating defect density by file and source module

Inventors: Sandeep Jain (Palo Alto, CA); David Knight (Belmont, CA)
Assignee: OPSHUB, INC.
G06F8/71G06F11/3616G06F8/70G06F11/3672
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,047,164
App. No.
11/853,780
Granted
Jun 2, 2015
Kind
B2
Abstract

Techniques are provided for tracking and analyzing defect density by source file or module. Defect density is the number of distinct defects which required changes to be made (to fix the defect) to a particular file or module in a given period of time. This metric is very useful for identifying the most critical areas of weakness of the system and hence the areas where additional investment/action may be taken. For example, this metric can be used to prioritize the area in which unit tests should be written, for which additional automated system tests should be written or which a project should be undertaken to re-write the error prone file or module to improve its quality and maintainability.

Claims (23)

1. A computer-implemented method for tracking and analyzing a defect density by a source file or module, the method comprises:

generating a defect density value for each unit of a plurality of units that contain code for a computer program, wherein the defect density value indicates a number of distinct defects in said unit in which required changes are to be made to fix a defect in a given period of time, and wherein said plurality of units are a plurality of modules of said computer program and wherein generating a defect density value for each unit of a plurality of units that contain code for a computer program includes generating a separate defect density value for each module of said plurality of modules, and wherein a defect density value for each unit of a plurality of units that contain code for a computer program is generated for identifying critical areas of weakness in plurality of modules for investing additional action and to rewrite an error prone module; and

generating the defect density value for each logical entity of a plurality of logical entities that contain code for a computer program, wherein the defect density value indicates how many distinct defects in said logical entity required changes to be made, and wherein generating the defect density value for each logical entity involves mathematically adding the defect density values of each unit of the plurality of units that is a version of the logical entity, and wherein at least one logical entity of the plurality of logical entities has a plurality of units that are versions of the at least one logical entity, and wherein a plurality of versions of the plurality of files are mapped to the at least one logical entity, and wherein said plurality of units are a plurality of files that contain code for said computer program, and wherein generating a defect density value for each unit of a plurality of units that contain code for a computer program includes generating a defect density value for each file of said plurality of files;

determining a single logical entity to which the file corresponds to provide a measure of the defect density by file by using a canonical name of a file of the plurality of files, and wherein a same file existing in a plurality of locations in a single project has different canonical names, and wherein the same file existing in a plurality of locations in a same project due to branching has same canonical name, and wherein the canonical name is mapped to a file based on a check-in data, file name, project, module and user;

generating a report that indicates, for each logical entity, a separate value represents mathematically adding the defect density values of each unit of the plurality of units that is a version of the logical entity, and wherein the report is generated in a plurality of ways depending on a type of data store and reporting tool used, and wherein the plurality of reports includes a report of bug density for priority bugs and a report of bug density for critical bugs, and wherein the bug density with respect to module and the bug density with respect to each file in each module are computed and reported;

associating each distinct defect with a level of criticality and an assignee, and wherein the value, indicates only those distinct defects associated with a particular level of criticality;

associating each distinct defect with a period of time in which the corresponding unit required changes to be made, and wherein the value included in the report includes an indication of the detect density value of each logical entity for the period of time; and

wherein the defect density per file or module is calculated based on the assignee, criticality, changes associated with a valid task ID, the files changed for each task ID, mapping of the files to the modules across one or more releases and a date of bug-fixing;

wherein the method is performed by one or more computing devices.

2. The method of claim 1 , further comprises generating a defect density value for each logical entity of the plurality of logical entities for each time interval of a plurality of time intervals.

3. The method of claim 2 further comprises using the defect density values, generated for a given logical entity over said plurality of time intervals, to determine whether the defect rate for said given logical entity is increasing or decreasing over time.

4. A non-transitory computer readable storage medium storing instructions, the instructions including instructions for tracking and analyzing a defect density by a source file or module which, when executed by one or more processors, cause the one or more processors to perform the steps of:

generating a defect density value for each unit of a plurality of units that contain code for a computer program, wherein the defect density value indicates how many a number of distinct defects in said unit required changes to be made;

wherein said plurality of units are a plurality of modules of said computer program, and wherein generating a detect density value for each unit of a plurality of units that contain code, for a computer program is generated for identifying critical areas of weakness in plurality of modules for investing additional action and to re-write an error prone module; and

generating the detect density value for each unit of a plurality of logical entity of a plurality of logical entities that contain code for a computer program, wherein the defect density value indicates how many distinct defects in said logical entity required changes to be made, and wherein generating the defect density value for each logical entity involves mathematically adding the defect density values of each unit of the plurality of units that is a version of the logical entity, and wherein at least one logical entity of the plurality of logical entities has a plurality of units that are versions of the at least one logical entity, and wherein a plurality of versions of the plurality of files are mapped to the at least one logical entity, and wherein said plurality of units are a plurality of files that contain code for said computer program, and wherein generating a defect density value for a computer program includes generating a defect density value for each file of said plurality of files;

determining a single logical entity to which the file corresponds to provide a measure of the defect density by file by using a canonical name of a file of the plurality of files, and wherein a same file existing in a plurality of locations in a single project has different canonical names, and wherein the same file existing in a plurality of locations in a same project due to branching has same canonical name, and wherein the canonical name is mapped to a file based on a check-in data, file name, project, module and user;

generating a report that indicates, for each logical entity, a separate value that represents mathematically adding the detect density values of each unit of the plurality of units that is a version of the logical entity, and wherein the report is generated in a plurality of ways depending on a type of data store and reporting tool used, and wherein the plurality of reports includes a report of bug density for priority bugs and a report of bug density for critical bugs, and wherein the bug density with respect to module and the bug density with respect to each file in each module are computed and reported;

associating each distinct defect with a level of critically and an assignee, and wherein the value, included in the report, indicates only those distinct defects associated with a particular level of criticality;

associating each distinct defect with a period of time in which the corresponding unit required changes to be made, and wherein the value included in the report includes an indication of the defect density value of each logical entity for the period of time; and

prioritizing writing of tests for said units based on detect density values generated for said units; and

wherein the defect density per file or module is calculated based on assignee, criticality and changes associated with a valid task ID, the files changed for each task ID, mapping of the files to the modules across one or more releases and a date of bug-fixing.

5. The non transitory computer-readable storage medium of claim 4 further comprising instructions for generating a detect density value for each logical entity of the plurality of logical entities for each time interval of a plurality of time intervals.

6. The non-transitory computer-readable storage medium of claim 5 further comprising instructions for using the defect density values, generated for a given logical unit over said plurality of time intervals, to determine whether the defect rate for said given logical unit is increasing or decreasing over time.

Assignments (2)
CHANGE OF NAME Recorded Sep 21, 2010
From: OPTIMALQUALITY.COM, INC.
To: OPSHUB, INC.
Reel/Frame 025021/0385 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 23, 2007
From: JAIN, SANDEEP; KNIGHT, DAVID
To: OPTIMALQUALITY.COM, INC.
Reel/Frame 020003/0526 →
Continuity (2)
Provisional Application 60844309 · Sep 12, 2006
Related Publication 20080066050A1 · Mar 13, 2008