1.2 Programmer Productivity
- A measure of the rate at which individual engineers involved in software
development produce software and associated documentation
- Not quality-oriented although quality assurance is a factor in
productivity assessment
- Essentially, we want to measure useful functionality produced per time
unit
1.2.0.0 Productivity metrics
- Size related measures based on some output from the software process.
This may be lines of delivered source code, object code instructions,
etc.
- Function-related measures based on an estimate of the functionality of
the delivered software. Function-points are the best known of this type
of measure
1.2.0.0 Metric problems
- Estimating the size of the measure
- Estimating the total number of programmer months which have elapsed
- Estimating contractor productivity (e.g. documentation team) and
incorporating this estimate in overall estimate
1.2.1 Lines of code
- What's a line of code?
- What programs should be counted as part of the system?
- Assumes linear relationship between system size and volume of
documentation
1.2.1.0 Cross-language comparisons
- The lower level the language, the more productive the programmer
- The more verbose the programmer, the higher the productivity
1.2.2 Function points
- Based on a combination of program characteristics
- external inputs and outputs
- user interactions
- external interfaces
- files used by the system
- A weight is associated with each of these
- The function point count is computed by multiplying each raw count by the
weight and summing all values
1.2.2.0 Function points
- Function point count modified by complexity of the project
- FPs can be used to estimate LOC depending on the average number of
LOC per FP for a given language
- FPs are very subjective -- depend on the estimator. They cannot be
counted automatically
- FPs are language-independent
1.2.2.0 Productivity estimates
- Real-time embedded systems, 40-160 LOC/P-month
- Systems programs , 150-400 LOC/P-month
- Commercial applications, 200-800 LOC/P-month
1.2.2.0 Factors affecting productivity
Studies have indicated that the best programmers are over 10× more
productive than their peers.
- Application domain experience
- Process quality
- Project size
- Technology support
- Working environment
1.2.2.0 Quality and productivity
- All metrics based on volume/unit time are flawed because they do not
take quality into account
- Productivity may generally be increased at the cost of quality
- It is not clear how productivity/quality metrics are related