Sunday, July 25, 2010

Laying railroad tracks.

Today I came across an interesting video on how train tracks are laid. (If the link disappears, search for "Werktrein in Overpelt".) Fascinating, yes?

It's striking that a series of steps involving these enormous machines works so well, while a software flow for a process like IC (Integrated Circuit) design is so troublesome. You could blame smaller amounts of money spent, but I think the problem has more to do with the lack of interest in software quality at all levels.

Tuesday, July 13, 2010

Estimating numbers of bugs with the Lincoln Index

Here is a pretty good explanation of the Lincoln Index, which is a simple way to estimate the total number of errors expected in a software project. All you need are 2 independent testers.

Interestingly, when the testers find completely distinct errors, the estimate is infinite. Unfortunately, a typical bug may tend to crash the whole program in many different tests until it is corrected. Testing does not really find bugs independently.

A better application might be 2 independent code reviews.

The index actually finds its primary use in ecological population estimates, where its derivation is an obvious result of capture-mark-release-and-recapture.