Software Measurementfor Science and Profit

Robert C. Leif andSuzanne B. Leif

Ada_Med, a Division ofNewport Instruments

(619) 582-0437

1. Introduction:

Experimental scientific knowledge isoften the result of quantitative measurements. The technology originallyemployed for these measurements subsequently can be employed incommerce.

Balances => Scales

Trajectory calculations =>Accounting Software

Quantitative measures of the amount ofSoftware are needed to

a.) Measure efficiency.

--The amount of product produceddivided by the effort.

b.) Measure contributions to aproject.

--For purposes of estimation andcompensation.

2. Software Measurement Units

2.1. Lines of Source Text (Lines)

Lines := Total_Semicolons - Comment_Semicolons;

subroutines, generics, classes,etc.

2.2. Function Points

Function points were originallydescribed by Albrecht & now are described by the InternationalFunction Point Users Group's (IFPUG) Release 3.0 of the Function PointCounting Practices Manual, 1990.

From What Are Function Points? By CapersJones, Chairman, Software Productivity Research, Inc.

Function_Points := 4*Inputs +5*Outputs + 4*Inquiries + 10*Data_Files + 7*Interfaces;

Complexity_Adjustment : Finagler_Factor _Type;

--often required

2.3. Feature Points

Capers Jones extended Function_Pointsto:

Complexity : positive range 1..10:=3;

Feature_Points := Function_Points +Complexity*Algorithms - 3*Data_Files;

2.4. Corrected Lines of SourceText

Ada 95 and other OO languages probablyrequire a minor change to Lines of Source Text (Corrected_Lines).

Corrected_Lines := Total_Semicolons

- Comment_Semicolons

- 0.75 *Renaming_Semicolons --contained in declarations.


-- Subtype declarations which do not include a range.

2.5. Linked Lines of Source Text(Linked_Lines)

equals the total number of semicolonswhich would be actually used in the linked Executable if

a) all loop structures remained intact(no unrolling);

b) all instantiations of generics aretreated as the equivalent of the source text which would have beencreated without the use of the generic;

c) all instances of inheritedsubprograms of tagged types are treated as the equivalent of the sourcetext which would have been created without the use of the taggedtype.

2.6. Source Text Efficiency (Source_Efficiency) is a measure of the product produced versus the effort tocreate the software.

Source_Efficiency :=Linked_Lines/Lines_Source;