[comp.software-eng] Predicting Software Ship Dates

joshua@athertn.Atherton.COM (Flame Bait) (11/30/89)

I have a simple question, I'm looking for a simple answer :-)

Given any information you want, predict when a software project will have
fewer than N bugs, and make the prediction after "new" coding has stopped,
but while debugging and testing is still going on.

The situation in detail:
I'm about to start a small (1 person, a few months) project; I know that
at some point in the future, I'm going to have the whole thing written,
and I'll be testing it (with help from QA) and fixing bugs as fast as I 
can, but I will not be adding functionality.  During this process (which
I expect will take at least half of the coding time) my boss will want 
to know when it will be ready.  I will (of course) have no idea.  I might
be working on the last bug, or the 100th to last bug.  The ship criteria
will be something like "no class 0 bugs, max of one class 1 bug, and three
class 2 bugs".  Since the project hasn't started yet, I can set up to 
keep track of any statistics you might want.  

What I'm looking for (besides the holy grail) is a program which looks at 
the bugs per hour testing, or something similar, and predicts when the bugs 
will drop below our ship criteria.  Obviously, I can eyeball the curve and
make a guess, but I'd like something with some empirical evidence behind
it.

Lastly, I'm mathmatically illiterate, so I'd like the answer in the form
of a computer program, not any complicated math.  I do own NUMERICAL 
RECIPES (Press et al.), so an answer can reference that.  

Please post your answers.  I want to see other peoples comments on the 
presented solutions.  

Joshua Levy
--------                Quote: "Hofstaedter's Law:  It always takes longer than
Addresses:                      you expect, even if you take into account 
joshua@atherton.com             Hofstaedter's Law"
{decwrl|sun|hpda}!athertn!joshua    work:(408)734-9822    home:(415)968-3718

crm@romeo.cs.duke.edu (Charlie Martin) (12/01/89)

I don't have the exact reference right at hand, but the IBM Software
Clean Room work on statistical testing might offer an attack.  You would
basically develop an empirical for the number of remaining bugs given
the time to find a bug, then use that.

On the other hand, for a massive project you can deal with this, both in
terms of the workload testing jig and the statistical munging of the
data; on a one-person project, it may not be a valid model or worth the
trouble.  Have you considered playing Michaelangelo and saying "whem I'm
done!"
Charlie Martin (crm@cs.duke.edu,mcnc!duke!crm) 

marks@agcsun.UUCP (Mark Shepherd) (12/01/89)

In article <15030@joshua.athertn.Atherton.COM>, joshua@athertn.Atherton.COM (Flame Bait) writes:
> I have a simple question, I'm looking for a simple answer :-)
> 
> Given any information you want, predict when a software project will have
> fewer than N bugs, and make the prediction after "new" coding has stopped,
> but while debugging and testing is still going on.
> 

I don't believe that there is a reliable, quantitative way of producing
the answer you're looking for. 

I do believe that the answer depends (at least in part) on the following:

  How well do you understand the requirements?
  How good is the design?
  How good is the designer?
  How good are the tools?
  How much time was spent in requirements analysis and design?
  Have you ever done this sort of thing before?
  Are there mutually dependant subsystems (eg hardware and software)
    that must be simultaneously debugged? 
  Was the project done by a small coherent team? 
  Was the team all in one location?
  Does your management place higher priority on schedule, or on quality?
  Did you prototype the system, or at least the tricky or poorly 
    understood parts?
  Are you willing to redesign/rewrite the pieces that turn out to be 
    poorly designed or implemented? 
  Is there a comprehensive test plan? 

I'm afraid that these questions are much more difficult to answer than
the usual QA ones (how much paper was produced? was MIL-STD abc123 followed?).
Sorry.

Mark Shepherd 
Ampex Corporation
...!ucbvax!avsd!dse!agcsun!marks 

These are my opinions.

mjl%ritcv@cs.rit.edu (12/02/89)

In article <15030@joshua.athertn.Atherton.COM>, joshua@athertn.Atherton.COM (Flame Bait) writes:
> I have a simple question, I'm looking for a simple answer :-)
> 
> Given any information you want, predict when a software project will have
> fewer than N bugs, and make the prediction after "new" coding has stopped,
> but while debugging and testing is still going on.

Sounds like you should be looking at "Software Reliability: Measurement,
Prediction, and Application" by John Musa, et. al. (McGraw-Hill, 1987).
They address these problems and several others from a statistical profile
viewpoint.  The underlying math is heavy duty indeed, but it can be
skipped initially, as they provide some basic parameters you can fit
to your own project.  I heartily recommend it.

Mike Lutz
Mike Lutz	Rochester Institute of Technology, Rochester NY
UUCP:		{rutgers,cornell}!rochester!rit!mjl
INTERNET:	mjlics@ultb.isc.rit.edu