Wednesday, March 11, 2020

Bit-Rot: Computer Software Degrades over Time

Bit-Rot: Computer Software Degrades over Time


By: W.B. Langdon, Earl T. Barr, Justyna Petke
Associate Editor: Federica Sarro (@f_sarro)

At first sight it seems surprising that computer software should degrade. We are used to the idea that mechanical devices wear out with use and sooner or later they fail. Similarly, performance of electrical devices, particularly batteries, falls with time and they too eventually fail. But software? That’s just a pattern of bits. Sure the device holding the bits may fail, but we can restore from backup, we have error correcting codes. Surely as long as the bits are ok, the software will continue to be ok?
Wrong! Software too degrades over time. (Part of Figure 1 shows a fragment of a program which worked fine 20+ years ago, but which now does not even compile.) Like the fact that there are many reasons for hardware to fail, there are many reasons why untouched software may no longer work. It is so common for legacy software to fail [1], that the term software “bit rot” has been coined to cover, not just the problem of reading bits from old hardware [2], but also the general tendency for old programs to cease to perform their original task.

 Figure 1: Over time software fails
Today, and in the foreseeable future, the dominant cost of computing is software, i.e. people’s time, not hardware. Further the dominant cost of software is the cost of software maintenance. (Wiederhold [3, p66] says “Maintenance costs over time typically exceed the original software develop- ment cost by factors of 2 to 10.”) Bit rot increases the maintenance burden. We cannot simply leave software in the state it was in when it was first sold. Firstly we will need to bugfix. Arguably, if the defect was known in the original code, this is not bit rot. But even excluding this special case, bit rot can cover items such as the need to update for: new computer hardware, e.g. laptop, smartphone, new software libraries, new versions of computer programming languages and their support tools (the GNU C++ compiler has been through 113 releases since the code in Figure 1 was writ- ten), new computer operating systems, such as Microsoft Windows 10, and new versions of existing operating systems, etc.
In other words, if left untouched software suffers bit rot. Even in the absence of hostile actors and evolving computer viruses, we must keep soft- ware up-to-date, e.g. we cannot keep running windowsXP forever. This is a problem for everyone, not just major corporations with dedicated software maintenance teams. Unless hardware failure, fire or theft, comes first, even home computer uses, laptops, and phones will eventually suffer from bit rot.

You might also enjoy reading

References

[1] Andreas Zeller. Yesterday, my program worked. today, it does not. why? In Oscar Nierstrasz and Michel Lemoine, editors, ESEC/FSE ’99, vol-
ume 1687 of LNCS, pages 253–267, Toulouse, France, September 6–10 1999. Springer.
[2] Brian Hayes. Computing science: Bit rot. American Scientist, 86(5):410– 415, 1998.
[3] Gio Wiederhold. What is your software worth? Communications of the ACM, 49(9):65–75, September 2006.

No comments:

Post a Comment