Like others here at FR, I worked for a major defense contractor. One of the functions reporting to me for several years was Software Quality Engineering which, as we were the prime contractor, had personnel at the software developers’ facilities. The multiple code reviews, modeling and lab testing that is required by a DoD contract for such products is multi-layered and extensive.
I doubt that it was defective EMAL software that caused the incident. It was most likely human error in setting up the test bed properly, or possibly some interfacing software or equipment used to operate the test bed. ......Sensitive software that can lead to loss of life is very carefully controlled through the development, testing and production processes. ......It’s always easy to blame an accident on computer software, but there is usually a human behind the real cause.
Or, as I've often seen, an unexpected combination of inputs that did not make it into the software specification.
I've seen it at lots of lower levels, but two major high level ones come to mind -
The F-16 fly by wire computer that would have rolled the plane inverted if it crossed the equator.
The F-22 landing software that destroyed one of the prototypes.
...and you could probably add the MD-11 of FedEx that was destroyed in Japan in 2009.
No-one has come up with a fail-safe testing methodology for software...
In full disclosure - spoken by a hardware engineer...