In comparison to relatively simple mechanical devices it is also mindboggling in how many more ways software can fail.
- failures from the underlying hardware
- out of memory may occur in many places
- handle each corner case that may be reachable correctly
- concurrency
- malicous user input
- running the program on future hardware
I don't thin "physical" devices have fewer points of failure than software... it's just that our intuition is used to lumping thinks together (like zillions of types of cracks are all "just cracks" unless you're a specialist in the field...), maybe we have less well formed intuitions about software failure.
...but do you really think an analog device doesn't have MUCH MORE ways in which it can fail than a piece of software? ...I mean, just think that software has a "limited" number of states it can be in ...whereas for a "lump of atoms" you need an overly simplified model just to start counting some sort of states for the smallest components
- failures from the underlying hardware - out of memory may occur in many places - handle each corner case that may be reachable correctly - concurrency - malicous user input - running the program on future hardware