The figures collected by Jones [31] provide insight in the
size of the problem. He uses the function point (FP) as unit
of measurement for software. It abstracts from specific programming
languages and specific presentation styles of programs. The
correlation between function points with the measurement in lines of
code differs per programming language, and is summarized in
Table 1(a). Another point of reference is that the size of
Windows 95 is equal to
FP.
The total volume of software is estimated at
FP (7 Giga-FP).
The distribution of the
various programming languages used to implement all these
function points is
summarized in Table 1(b).
Older languages dominate the scene:
even today 30% of the 7 Giga-FP is written in COBOL.
If we (hypothetically) assume that all software is written in COBOL
we get an estimation (via 107 COBOL statements per FP) of
COBOL statements
for the total volume of software.
As measure of software quality (or rather, the lack of it), Jones has
estimated that on average 5 errors occur per function point. This
includes errors in requirements, design, coding, documentation and bad
fixes. The result is a frightening figure of
programming errors (35 Giga-bugs) waiting for a chance to burst
out sooner or later.
|
Developing better ways of developing new software will not solve this problem. When an industry approaches 50 years of age--as is the case with computer science-- it takes more workers to perform maintenance than to build new products. Based on current data, Table 2 shows extrapolations for the number of programmers working on new projects, enhancements and repairs. In the current decade, four out of seven programmers are working on enhancement and repair projects. The forecasts predict that by 2020 only one third of all programmers will be working on projects involving the construction of new software.
|
Therefore, we must conclude that the importance of maintenance and gradual improvement of software is ever increasing and deserves more and more attention both in computer science education and research.