When developing complex embedded software, such as avionics software, medical device software and military software, analysis and testing are crucial for ensuring the safety and reliability of the final product.
Two processes are often used to detect errors and ensure they are repaired - static analysis and dynamic testing. Some view the two methods of detecting defects as competitors. In a recent EETimes report, however, engineering expert Paul Anderson claimed the two processes complement one another.
According to Anderson, static analysis can be effectively used for "bug hunting". Good static analysis tools are "simultaneously interprocedural, flow-sensitive, context-sensitive, whole program and path-sensitive," Anderson said. "They scale to tens of millions of lines of code and yield results with a low level of false positives."
While analysis is able to find errors in code, dynamic testing processing, such as embedded software testing tools, can help identify ways in which software does not do what it is meant to do.
Static analysis and dynamic testing, according to Anderson, "should never be thought of as if they were in direct competition with each other." Since they utilize completely different techniques, they should be regarded as "mutually supporting" methods that help make software better.