RE: Human minds on Windows(?)

hal@finney.org
Sat, 10 Jul 1999 21:39:50 -0700

Billy Brown, <ewbrownv@mindspring.com>, writes:
> Think in terms of team development. A programmer gets assigned a piece of
> the project, writes code for it, does whatever personal testing he feels
> necessary, then checks it into the central code repository (which is
> presumeably some sort of version-control package). Once he checks it in for
> the first time, anything that anyone ever finds wrong with it counts as an
> error.

A few years ago I worked for a company which had a contract to do software for Ford. Ford has an extensive quality control program with very strict methodologies, which we had to cooperate with. One thing they wanted was a bug tracking system in which, for each bug we found and fixed, we also reported when the bug had been introduced.

It seemed a bit strange at first to view bugs in this way, having in effect birth and death dates. But in fact using the kind of version control system Billy describes, it is usually pretty easy to determine at what date the mistake was made which caused the bug. Sometimes this was at the time the code was first written, other times it was a bug introduced as part of another change, often a fix for some other bug.

It is a truism in software development that at some point code becomes so large and messy, with the original designers gone or working on other projects, that bugs are introduced as fast as they are fixed. Ford was attempting to detect this, in that they were able to build up over time a chart showing how fast bugs were being introduced and removed at any point in time. It's not perfect because it often takes months or years before a given bug is detected, so the bug-creation rate data is only valid for dates some considerable distance in the past. But you can extrapolate from the older data to get an idea of how reliable the software is likely to be today or at any point in the future.

There is an entire literature within the software engineering discipline on this kind of error rate estimation. With time and patience you can get a reasonably accurate picture of the rate at which bugs are introduced, detected and removed.

Hal