Often non-tech users ask this question, “If a car, truck, train, engines ALWAYS work in the expected way, why can’t software?” . The answer lies in the complexities of the logics, software engineering is packed with way many larger number of permutations and combinations than any other system.
“For critical operations, I can’t come anywhere close to that reliability with the laptops,” Klausman said, technical manager for United Space Alliance for the backup flight system and multifunction electronic display subsystem. “They are wonderful items, but they are susceptible to radiation particles, they are susceptible to badly written software. I could put five laptops on board and all five would suffer radiation upsets within the first day.”
However, for one field the software engineering has never failed: Space shuttles, other space programs.
Perfection is a need
When you have to lift a 120-ton space shuttle that is powered by a 4 million pounds of rocket fuel, you cant take chances. A single mistake can cost billions, there’s no chance for a blunder. For years, computers had been driving all those space giants, and so far, we haven’t seen a failure that was caused by computers. Rigorous testing, realtime simulations and top notch development have made them robust.
Computers at work @ Space shuttles
Four identical computers, running identical software, pull information from thousands of sensors, make hundreds of decisions within a milli-second, collectively vote on every decision before making the move. And there is a fifth one to take control incase any of the four misbehave or disfunction.
Pre-check: Just 6 seconds before the launch, computers probe the pressures, pumps, and temperatures and make the call whether its all safe to fireup the engines and take a flight. Each engine firesup precisely 160 milliseconds apart. Computer waits till the engines create enough thrust of the level of one million pounds and you see those bright blue flames burn the hell out of super pure fuel.
Solid rocket boosters kick in when it Time zero, in under a second, thrust goes upto 6.6 million pounds, this is the time when computers unbolt the shuttle from the ground and lifts the massive mammoth into space. Throughout the shuttle launch process, no human interferes, no one presses even a single button, its too risky to trust humans, for which humans are prone to err.
The software throttles the engines to make sure the craft doesn’t accelerate too fast. It keeps track of where the shuttle is, orders the solid rocket boosters to fall away, makes minor course corrections, and after about 10 minutes, directs the shuttle into orbit more than 100 miles up. When the software is satisfied with the shuttle’s position in space, it orders the main engines to shut down — weightlessness begins and everything starts to float and it propels occasionally incase it sees a trouble with the path/trajectory.
No Crashes, no errors, no bugs
This software never crashes, no reboots needed and finding a bug is a distant dream. It is perfect, perfection we have achieved in mechanical, electronics engineering.
The proof comes from stats: The last three versions of the space program were each 420,000 lines of code and had no more than one error each.
However, commercial applications of this complexity would have thousands of bugs.
The Brains behind software perfection
Such NASA software is work of 260 men and women who have learned to deliver perfection. This software team is lead by Lockheed Martin Corps space shuttle division. Their software controls a $4 billion shuttle,and they understand the responsibility well.
NASA knows how good the software has to be. Bill Pate, one of the software engineer for the company has worked on it for last 22 years, says that these guys take things seriously, “If the software isn’t perfect, some of the people we go to meetings with might die.”