On Mon, 8 Oct 2001, Daniel Barker wrote: > On Sun, 7 Oct 2001, Henrik Esbensen wrote: > > > Hi, > > > > A beginners question: > > > > I'm interested in the maximum potentials of static versus dynamic checking in >software engineering, and I want to look at this from a real-world, >industry-application point of view. > > > > Consider all bugs being filed in some "average/typical" real-world setting against >some "average/typical" real-world product. Assume I have an "infinitely good" >collection of both static and dynamic analysis tools, that is, my static tools are >capable of detecting any bug which is statically detectable and my dynamic tools are >capable of detecting any bug which is dynamically detectable. Then my questions are: > > > > > 1) Just counting the bugs, which percentage of bugs can I find using > > my static tools and which percentage can I find using the dynamic > > tools ? > > Infinitely good dynamic debugging could find all bugs. Infinitely good > static debugging couldn't.
I'm sorry, but it is the other way around. Infinitely good static analysis finds *all* properties inherent in your code - including all bugs. Dynamic debugging only look at some (of the usually infinitely many) possible traces through your code. > Some languages are more > static-analysis-friendly but it takes code inspection or a dynamic test to > pick up all algorithmic mistakes such as writing "a + b" instead of "a - > b", or "if (a < 3)" instead of "if (a > 3)". > > The problem with dynamic checking is, of course, few or no test suites are > that good and you have to develop one for each program or library. > Mvh /Lars L