Sizing up Software

Unlike oil, steel or paper, software is an intangible commodity. This elusive quality makes computer programs difficult to quantify. Modern society has become increasingly reliant on software—and thankfully so. Computer programs routinely execute operations that would be extraordinarily laborious for an unaided person—handling payrolls, recording bank transactions, shuffling airline reservations. They can also complete tasks that are beyond human abilities—for example, searching through massive amounts of information on the Internet. Yet for all its importance, software is an intangible quantity that has been devilishly tricky to measure. Exactly how should people determine the size of software? The question is not just an academic exercise. Without a good gauge of software, the industry has had trouble improving the quality of computer applications and increasing the efficiency of their development. In fact, most companies and government agencies have only a hazy idea of the caliber of their software and the productivity of their programmers. Consequently, predicting the investment of money and time needed to create programs becomes such a difficult task that overruns and delays are the norm rather than the exception. In my opinion, this basic problem of measurement is one of the biggest obstacles now facing the software industry. Of course, one way to size up software would simply be to tally all the bytes (a unit of data in a computer sufficient to contain one keyboard character) that a particular program occupies in computer disk storage. Another approach would be to count the number of lines of "code," the lengthy list of instructions required for each computer application. Such measurements, however, do not always reflect how capable the software truly is. Sometimes a program with three million lines will in fact be richer in functionality and features than an application containing five million. A better approach, then, is to assess the operations that a particular program performs. One formal method for doing so counts "function points," which are quantitative indicators of what a program can do. Computer scientists pioneered this formalism more than two decades ago, and their efforts may soon result in an international standard. Still, it is far from certain whether function points will eventually provide a universal system for measuring software.