What is dynamic analysis, and why isn't it enough?
Dynamic analysis attempts to find errors while a program is executing. The objective of dynamic analysis is to reduce debugging time by automatically pinpointing and explaining errors as they occur.
The use of dynamic analysis tools can reduce the need for the developer to recreate the precise conditions under which an error occurs. However, a bug that is identified at execution might be far removed from the original programmer. Also, the analysis might not result in an adequate documentation trail. This can introduce difficulties in correcting problems as programmers familiarize themselves with the original code.
Identifying problems at the source code level with static source code analysis can further reduce the time and expense of other debugging tactics by allowing developers to identify and eradicate problems at the source code level, prior to compiling. Even if a development team is using a complete test automation suite, using a static source code analysis tool will reduce resources required for more resource intensive debugging tactics, and increase effectiveness of problem identification and eradication by up to 400%