Does Software Rot?Joel Spolsky, in an otherwise good article on the risks of rewriting legacy
software, scoffs at the idea that software rusts, or rots. It seems
absurd, to him, that people would imagine that the entropy that acts on physical
things would act on pure information. But in my many years as a software
engineer, I have seen software rot, for the very same reasons that things
in the physical world rot and decay.
Joel’s comment is as follows:
[Software] doesn’t acquire bugs just by sitting around on your hard drive. Au contraire, baby! Is software supposed to be like an old Dodge Dart, that rusts just sitting in the garage? Is software like a teddy bear that's kind of gross if it's not made out of all new material? Before succumbing to this reductio ad absurdum argument, though, we should ask what makes the Dodge and the teddy bear rot or decay, and whether these processes apply to software. One reason something rots is because hordes of tiny organisms, from insects through bacteria, are acting on it, working independently and breaking down its structure. This does happen with large pieces of commercial software with dozens or hundreds of maintainers. These maintenance programmers are constantly changing the program, and the degree to which their changes are not coordinated with the original plan for the program—its DNA, if you will—the program begins to rot. Maybe cancer is a better analogy here. What if people leave the software alone, as Spolsky suggests? Think of it as an inanimate object, then. When an inanimate object decays, like the rusting Dodge, one reason is that the environment is exerting a constant pressure on it to which the object must adapt in order to maintain its structure. If it doesn’t adapt, the object wears down and eventually breaks. Think about the effect of the ocean surf on a cliffside, or of weeds on a sidewalk. This process happens to software when the software doesn’t change but its environment does: its operating platform. The operating system changes, and if the programs on it are left alone, eventually something changes and the old program begins to decay. You can prevent software rot by preventing both of these processes; namely, not to change it and not to change its platform. Some people have brought old software (like old arcade games) to life again by reproducing their original platform (MAME or those game-in-a-joystick toys you see on the shelves these days). This is similar to the way that people preserve scorpions or dandelions in Lucite. No more change to the organism or its environment. Posted: Mon - December 20, 2004 at 11:10 AM |
Quick Links
Calendar
Categories
Archives
XML/RSS Feed
Statistics
Total entries in this blog:
Total entries in this category: Published On: Nov 26, 2006 11:42 AM |
||||||||||||||