The fundamental fact about verifying properties of software, by any means, is that almost anything worth knowing is undecidable
in principle. The limitations of software testing, on the one hand, and static analysis on the other, are just different manifestations
of this one basic fact. Because both approaches to verification are ultimately doomed, neither is likely to supplant the other
in the foreseeable future. On the other hand, each can complement the other, and some of the most promising avenues of research
are in combinations and hybrid techniques.