IP Library Granted Patent US 9,612,831
Granted Patent B2
US 9,612,831 · App. 13/301,341 · Granted Apr 4, 2017

System and method to measure and incentivize software reuse

Inventor: Chandika N. Mendis (Rajagiriya, LK)
Assignee: Virtusa Corporation
G06F8/77
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,612,831
App. No.
13/301,341
Granted
Apr 4, 2017
Kind
B2
Abstract

Systems, methods, and apparatus for measuring software development productivity that incorporate a measure of code reuse. Embodiments of the present invention utilize call graph analysis in a computerized environment to efficiently analyze a software code base in an automated fashion and thereby generate reuse measures; and then incorporates the reuse measures in the productivity analysis.

Claims (101)

1. A method for determining a productivity measure of a code base, the method comprising: executing by at least one processor capable of executing instructions encoded on a computer-readable medium, the steps of:

(a) determining a created lines of code measure of a code base;

(b) determining a call graph based on the code base;

(c) determining a reuse ratio for the code base based on the call graph; and

(d) computing a cost avoided, the computation comprising modifying the created lines of code measure by the reuse ratio for the code base, normalizing the created lines of code measure using a measure of function points of the code base, wherein normalizing the created lines of code measure comprises applying at least one function point gearing factor to the created lines of code measure of the code base, and wherein the at least one function point gearing factor is based on historical data for at least one programming language.

2. The method according to claim 1 , wherein determining the created lines of code measure comprises adjusting a lines of code count based on a ratio corresponding to lines of duplicated code.

3. The method according to claim 1 , wherein computing a cost avoided comprises adjusting a lines of code count based on the code quality measure.

4. The method of claim 1 further comprising determining the total hours spent developing the code base.

5. The method of claim 3 further comprising determining a productivity measure utilizing the call graph and at least one of the created lines of code measure, the measure of reuse of the code base, the cost avoided, and the total hours spent developing the code base.

6. The method according to claim 1 , wherein determining the created lines of code measure comprises counting the total lines of code according to a pre-determined standard.

7. The method according to claim 1 , wherein the code base is at least one binary data file.

8. The method according to claim 1 , wherein the code base comprises a plurality of programming languages, the method further comprising executing by the processor the steps (a) through (d) for each one of the plurality of programming languages represented in the code base.

9. The method according to claim 8 , further comprising determining a backfired function points measure of the code base by summing the plurality of costs avoided.

10. A method for determining a productivity measure of a code base, the method comprising executing the following steps by at least one computer processor:

determining a lines of code measure for each programming language represented in the code base (LOC);

determining a duplicated code ratio for each programming language represented in the code base (R dup );

determining a reuse ratio for each programming language (R reuse );

determining a function point gearing factor for each programming language represented in the code base (GF lang ); and

determining an adjusted backfired function point measure associated with a number of tasks performed by the code base based on, at least in part, the reuse ratio, according to the formula,

lang

{

(

LOC

×

(

1

-

R

dup

)

/

(

1

-

R

reuse

)

)

×

GF

lang

}

.

11. The method according to claim 10 , further comprising:

determining a measure of the number of code quality defects weighted by severity (WD);

determining a factor by which a lines of code measure is reduced based on the WD measure (n1); and

determining an adjusted backfired function point measure for the code base according to the formula,

lang

{

(

LOC

×

(

1

-

R

dup

)

/

(

1

-

R

reuse

)

-

(

n

1

×

WD

)

)

×

GF

lang

}

.

12. A computer program product for enabling a computer to determine a productivity measure of a code base, comprising:

a non-transitory computer readable medium; and

software instructions encoded on the non-transitory computer readable medium that when executed enable the computer to perform the operations of:

(a) determining a created lines of code measure of a code base;

(b) determining a call graph based on the code base;

(c) determining a reuse ratio for the code base based on the call graph; and

(d) computing a cost avoided, the computation comprising modifying the created lines of code measure by the reuse ratio the code base, normalizing the created lines of code measure using a measure of function points of the code base, wherein normalizing the created lines of code measure comprises applying at least one function point gearing factor to the created lines of code measure of the code base, and wherein the at least one function point gearing factor is based on historical data for at least one programming language.

13. The computer program product according to claim 12 , wherein determining the created lines of code measure comprises adjusting a lines of code count based on a ratio corresponding to lines of duplicated code.

14. The computer program product according to claim 12 , wherein computing a cost avoided comprises adjusting a lines of code count based on the code quality measure.

15. The computer program product according to claim 12 further comprising determining the total hours spent developing the code base.

16. The computer program product according to claim 15 further comprising determining a productivity measure utilizing the call graph and at least one of the lines of code measure, the measure of reuse of the code base, the cost avoided, and the total hours spent developing the code base.

17. The computer program product according to claim 12 , wherein determining the created lines of code measure comprises aggregating counts of modified and added code.

18. The computer program product according to claim 12 , wherein the code base is at least one binary data file.

19. The computer program product according to claim 12 :

wherein the code base comprises a plurality of programming languages; and

the software instructions enable the computer further to perform the operations (a) through (d) for each one of the plurality of programming languages represented in the code base.

20. The computer program product according to claim 18 , further comprising determining a backfired function points measure of the code base by summing the plurality of costs avoided.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded Feb 11, 2021
From: JPMORGAN CHASE BANK, N.A.
To: VIRTUSA CORPORATION
Reel/Frame 055237/0377 →
SECURITY AGREEMENT Recorded Feb 11, 2021
From: VIRTUSA CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 055280/0602 →
RELEASE OF SECURITY INTEREST Recorded Feb 25, 2016
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: VIRTUSA CORPORATION
Reel/Frame 037832/0071 →
SECURITY INTEREST Recorded Feb 25, 2016
From: VIRTUSA CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 037832/0124 →
SECURITY AGREEMENT Recorded Jan 13, 2014
From: VIRTUSA CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 031979/0777 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 1, 2011
From: MENDIS, CHANDIKA N.
To: VIRTUSA CORPORATION
Reel/Frame 027307/0666 →
Continuity (2)
Provisional Application 61416591 · Nov 23, 2010
Related Publication 20120131540A1 · May 24, 2012