Current aerospace software development practices emphasize rigid quality control processes that attempt to reduce software errors. These processes typically focus on validating that the software meets the requirements but do little to ensure that the requirements themselves are correct and complete. Flawed requirements are often not detected until the software is introduced into an operational environment, at which point fixing them can be time consuming and expensive.
The authors will demonstrate how the software development cycle can be significantly collapsed by carefully constructing a testing environment where failure is not only tolerable, but expected. In this environment, development can take place rapidly in an iterative and incremental approach, providing instant feedback on design and implementation decisions. This allows for mistakes in both the software and the requirements to be discovered earlier, minimizing the impact on cost and schedule.
This paper will explain the key points of the "Fail early, fail often, fail safe" approach to testing and provide examples and lessons learned from specific software development efforts.
"Fail Early" Start testing in the real world environment as soon as possible.
"Fail Often" Expect that it will fail on the first try. You are testing to figure out which assumptions are wrong.
"Fail Safe" Assume that the software will do the worst possible thing at the worst possible moment and construct your test so that it doesn't matter.