With the technology explosion in solid state microelectronics, functional complexity of both hardware and software components of a system has increased proportionally. More severe and complex functional requirements are imposed, which increase the problems associated with the design, coding, and testing of the associated software. As with hardware, the later software problems are detected in the development cycle, the more costly is the associated correction. For example, the cost of correcting a software design error after the system is operational is 100 times greater than an error corrected during design.
The obvious approach that has evolved over many years combines a formalized, intensive design effort (including verification and validation of requirements, test plans, and coding) with testing at each stage from module coding to software/hardware integration. Unfortunately, even when such an approach is properly implemented there is no assurance that all design and coding errors have been eliminated since no techniques currently exist to exercise the software completely with all combinations and permutations of the logic and data which would be experienced throughout operational use. Recognition of this situation prevents the Military Services from specifying a designed software "reliability" (such as a maximum number of failures per 1,000 lines of code). Rather, the Military Services require that recognized design and test practices be followed vigorously and documented throughout the software development phases.
As the complexity of systems increases, it becomes more imperative that the user (i.e., operational experienced personnel) provides guidance during the early design planning and test phases of the software. In this way, the system will be designed and tested to requirements which are representative of field usage.
Major integrated software/hardware systems should be
tested exhaustively in a total system test bed. Actual operational exercises
can then be simulated with the system under test. This test method will detect
most of the software and software/ hardware problems prior to fielding the