Original Post Date: Tuesday, August 19, 2008

Recently a client approached me with a thought provoking inquiry.  They were interested in performing historical trend analysis on their software projects to support estimating software costs for future technologies.  They have done this for years with hardware procurements and wanted to start performing the same kind of analysis for software. For hardware it’s not that hard to do, we have tangibles like RAM size, processor speed, resolution, etc. The question they had for me was “What are likely candidates on which to perform historical trend analysis for software”. 

Think about it.  What parameters that describe a software project can we track consistently over the last 30 years to determine cost or effort trends.  There are several fairly interesting areas to pursue but nothing that jumps right out as the right answer.  Certainly it is fair to say that the size of software projects has increased significantly over time – when we consider size to be some representation of business value.   But software size measurement has been complicated by changes in software development tools and the software industry in general.

Put aside the fact that translation from software development artifacts to business value is neither easy nor well defined - there are even bigger issues that factor into size for such a trend analysis. These issues include reuse and complexity.  It’s very rare for anyone to be building completely new software these days.  Even the newest, most unique, state of the art applications take advantage of software that already exists or requires minimum modification to support the custom software developed to deliver uniqueness.  And software complexity, which feeds business value, is completely nefarious – there is no scale for the complexity of software functions and any scale developed would be subjective and would belie future trending.

Clearly, I don’t have the answer – but I thought the question was interesting enough to share.  I am still thinking about this and will no doubt have more to add in the future.  I do believe that the software engineering community has actually increased the productivity with which it delivers business value through software.  What we have failed to do is find the right way to quantify this productivity by properly taking into account breadth and depth of software delivered, tempered with the amount of reuse included.