Tony said, regarding design defects/component failures:
...If you rebuilt this cirucit with known-good
components then
it would behave as originally intended. I really can't think of a
software equivalent of this.
Relying on an external library - whose functionality changes, with an OS
upgrade or some such. It's not an exact parallel, of course. Better
software design (and keeping more of the functionality inside the code you
write) can mitigate the likelihood of this happening to some extent. And of
course, it won't happen as long as *none* of the software involved
(including the OS) gets "upgraded".
- Mark