Traditionally, proofs that software systems meet functional safety standards have depended on exhaustive testing. This method is adequate for simple, deterministic systems, with single-threaded, run-to-completion processes. It is inadequate, however, for today’s multi-threaded systems. The complexity of these systems precludes their being treated as deterministic systems in practice. This white paper proposes how a combination of procedural rigor, statistical testing, and design verification can be used to increase confidence in the functional safety of complex software systems.