Software Cannot Fix Everything
Fundamental Theorem of Software Engineering
"We can solve any problem by introducing an extra level of indirection."
The above theorem does not describe an actual theorem that can be proven; rather, it is a general principle for managing complexity through abstraction.
Abstraction is the process of removing physical, spatial, or temporal details or attributes in the study of objects or systems to focus attention on details of greater importance; it is similar in nature to the process of generalization
And the more amusing version of the theory is: "We can solve any problem by introducing an extra level of indirection... except for the problem of too many levels of indirection." And RFX 1925 notes: It is easier to move a problem around (for example, by moving the problem to a different part of the overall network architecture) than it is to solve it.
These are three famous cases where software could not fix the hardware problem. The lesson – often you cannot compensate for design flaws in hardware by attacking them with software. There are times when you cannot eliminate design flaws without redesigning / fixing the hardware.
Case 1: Hubble
Shortly after the Hubble Space Telescope's launch in 1990, operators discovered that the observatory's primary mirror had an aberration that affected the clarity of the telescope's early images.
NASA sent up astronauts in the space shuttle Endeavour to manually repair the telescope. Five space walks later, the astronauts completed the repairs. They installed a device containing 10 small mirrors that intercepted the light from the primary mirror and corrected the pathway to the sensors.
Case 2: Intel Cascade Lake processors
For months now, Intel had been trying to fix hardware-based flaws in its chips that can leak confidential data from a PC or server. Two hardware-based flaws, dubbed ZombieLoad and RIDL (Rogue In-flight Data Load). New versions of these same attacks that can bypass the Intel software patches.
The flaws continue to haunt Intel processors because they deal with the very architecture inside the company's silicon. To achieve the speed boosts, Intel processors have been designed to predict and pre-fetch computing instructions as the system runs. But this can come at a cost. You can also trick the same processes into pre-fetching confidential data from the machine before leaking it.
Intel defended its attempts to patch the vulnerabilities. On the one hand, the company admitted the current mitigations aren't perfect; some data will still leak. Nevertheless, the existing protections can still "reduce the potential attack surface," and customers can expect additional patches to arrive in the future.
Case 3: Boeing 737 Max
According to a report by TheVerge: “The development team attacked the hardware problem with software. In addition to the standard software suite on the 737 Max’s two computers, Boeing loaded another routine called the Maneuvering Characteristics Augmentation System (MCAS). It would run in the background, waiting for the airplane to enter a high-angle climb. Then it would act, rotating the airplane’s horizontal stabilizer to counteract the changing aerodynamic forces. On paper, it seemed elegant enough.”
May 16, 2019 - Boeing said it's completed a software update for its 737 Max planes and is working with the FAA on to get the plane back in the air. Really? Then where is it. You cannot solve all problems when there are fundamental design challenges.
By the way – we love Boeing – flying on them and working with them.