Reuse Metrics at IBM

Jeffrey S. Poulin

MS 244

IBM Reuse Technology Support Center

Poughkeepsie, NY 12602

A lot of groups report high levels of reuse on projects but rarely do they give detailed information on how they arrived at those values nor do they quantify the value of the reuse to their organization. Many groups feel pressure to demonstrate that they have active reuse programs but, despite the supposed savings, cannot verify the benefits. Reuse metrics have a unique role because, unlike productivity metrics, reuse metrics reflect on what a programmer does not do. Organizations normally reward those who deliver the most function, thereby encouraging developers to write code. However, in reuse we want to recognize developers for NOT writing code.

Ultimately, an organization defines what to measure and report as reuse in accord with its goals. Because IBM uses the metrics in a Return on Investment (ROI) model, we carefully define what to include in our reuse counts so we can reasonably quantify the level of reuse and its value to an organization. Specifically, we have the following goals:

  1. Reuse metrics must reflect real effort saved.
  2. Reuse metrics must encourage reuse.

We also must have easy data to collect, normalize, and report. We calculate the IBM reuse metrics from common data elements using three equations we developed from those elements. The first metric, Reuse Percent, indicates the level of reuse activity in an organization as a percentage of effort. Although a simple percent equation, we feel it provides a good estimate of overall reuse activity because we carefully define what we count as reuse.

Reuse%= RSI/(RSI+SSI) *100

Where:

The second metric, Reuse Cost Avoided, estimates financial benefit. The Reuse Cost Avoided combines the level of reuse on a project with historical information on development and service costs to tell us the

value of reuse to our organization. RCA equals the sum of avoided costs during the development and service phases of a project:

Development_Cost_Avoided = (1-.2) * RSI * New_Code_Cost

Service_Cost_Avoided = RSI * Error_rate * Cost_per_Error

Where:

The third metric, Reuse Value Added, includes recognition not only for reusing software but also for writing reusable code. We present the Reuse Value Added as a ratio or productivity index; a value of 1

indicates no participation in reuse. A value of 1.5 indicates an organization increases its effectiveness by 50% as a result of its participation in the reuse program. The increased effectiveness results not only from reduced development costs but also from maintaining software that others use and from using software which others maintain for you.

RVA = ((SSI+RSI) + SIRBO) / SSI

Where: