Term used to describe the tendency of software that has not been used
in a while to {lose}; such failure may be semi-humorously ascribed to
{bit rot}. More commonly, software rot strikes when a program's
assumptions become out of date. If the design was insufficiently
{robust}, this may cause it to fail in mysterious ways. Syn. code
rot. See also {link rot}.
For example, owing to endemic shortsightedness in the design of COBOL
programs, a good number of them succumbed to software rot when their
2-digit year counters underwent {wrap around} at the beginning of the
year 2000. Actually, related lossages often afflict centenarians who
have to deal with computer software designed by unimaginative clods.
One such incident became the focus of a minor public flap in 1990,
when a gentleman born in 1889 applied for a driver's license renewal
in Raleigh, North Carolina. The new system refused to issue the card,
probably because with 2-digit years the ages 101 and 1 cannot be
distinguished.
Historical note: Software rot in an even funnier sense than the
mythical one was a real problem on early research computers (e.g.,
the R1; see {grind crank}). If a program that depended on a peculiar
instruction hadn't been run in quite a while, the user might discover
that the opcodes no longer did the same things they once did. ("Hey,
so-and-so needs an instruction to do such-and-such. We can {snarf}
this opcode, right? No one uses it.") Another classic example of this
sprang from the time an MIT hacker found a simple way to double the
speed of the unconditional jump instruction on a PDP-6, so he patched
the hardware. Unfortunately, this broke some fragile timing software
in a music-playing program, throwing its output out of tune. This was
fixed by adding a defensive initialization routine to compare the
speed of a timing loop with the real-time clock; in other words, it
figured out how fast the PDP-6 was that day, and corrected
appropriately.
Compare {bit rot}.
[glossary]
[Reference(s) to this entry by made by: {ASCII}{bit rot}{COBOL}{dead code}]