Modern cars rely on s/w. When modern cars fail, for example the engine computer fails, its usually (though not always, but usually) the electronics thats carked it, not the s/w.

Ask any owner of a modern car with an ECU in it how long its run before an expensive failure. I'll be stunned if you get 10 years. Modern cars full of electronics and sensors are stunningly unreliable.

If you study reliability theory the answer becomes blindingly obvious. Everything mechanical (expect software) has a steady-state reliability which is the failure rate when outside the infant-mortality and wear-out regions. The failure-rate of the end-item is the SUM of the failure rates of the parts. Add more parts: aggregate failure rate becomes a higher number. The challenge then is to get the failure rates of all those components really low.

When it comes to things like timing belts and cylinder wear and oxygen sensors getting full of crap, and connectors going ohmic, and wires breaking due to vibration - there are techniques that can be used to reduce the failure rate. The cost also goes up as you do this.

Software, on the other hand, has a constant failure rate. In spite of the difficulty of finding defects at times, in the end all software is a sausage machine. Inputs -> Do stuff -> Outputs. Sometimes the ORDER of inputs and the combinations of inputs leads to failure with modes that are detectable. When that happens you've found your defect, you fix it, and you move on.

Software that has no (known) defects has effectively a failure rate of 0. It will run forever without failure. (Mean Time Between Failures = 1/failure rate). The hardware platform will fail first.

Software with defects might run only until the right combination of input conditions, over time, causes the defect to become manifest.

The FALLACY in all this is to try and compare failure rates of physical things (caused by wear, metal migration in IC's, ingress of water, vibration, etc) with a failure rate of what is essentially a finite-state machine which simply does exactly what its instruction sequence tells it to do.

(Even things like alpha-particles flipping bits in RAM is a physical phenomenon, not a software defect. The manner of handling such an eveny MAY however be a software defect, but remember, that nasty alpha particle was just another input to the software.)