So, just why do we want to measure software productivity (without using the root word “productive” in the answer)? I believe that it comes down to the desire to numerically evaluate an inherently complex process so that quantitative comparisons can be made to provide a basis for decision making:
- Is output per unit of labor or cost increasing or decreasing?
- Benchmarking against “the industry” or “the competition”
- Identify practices that either promote or impede increased output and better quality
I’m sure there are many others that could be added to the list.
Traditionally, software productivity has been measured as a ratio between units of output and units of effort. Simple productivity measures worked fairly well for well defined, repetitive manufacturing processes where a 10% increase in input reliably translates to a comparable increase in output, but there are massive problems with applying simple productivity measures to complex, non-repetitive design processes like software development.