Practical Software Estimation Measurement

Managing Project Risk through Early Defect Detection

Managing Software Project RiskWith the most recent spurt of inclement weather, there is really no denying that winter is here.  After awaking to about 4 inches of snow accumulation, I begrudgingly bundled myself up in my warmest winter gear and proceeded to dig out my car.  Perhaps the brisk air woke me up faster than usual because as I dug a path to the car, I began to think about software testing, specifically how effective early testing can reduce the chances of schedule slippages and cost overruns.  Allow me to explain.

Being an eternal optimist, I was grateful that the snow I was shoveling and later brushing off my car was light and powdery.  Despite the frigid temperature and large quantity of snow, I realized that it was good that I had decided to complete this task first thing in the morning.  At the time the snow was relatively easy to clear, and had I waited until the afternoon, the sun would have melted enough of the snow to make this task significantly more difficult and time consuming.

This scenario is also very common in software testing.  Much like digging a car out of the snow, defects found earlier in the software development lifecycle are much easier to fix than those found later on.  This is because the code base is smaller, and the defect has less potential to affect other areas of the system.  If put off until a later date, new defects can build on older defects, thus compounding the problem.  When working with a larger, more complete code base, fixing the defect can be more complicated because it has the potential to affect a larger portion of the system.  

Additionally, fixing defects later in the software development lifecycle can be more time consuming and costly.  As the complexity of the defect increases, so does the amount of time necessary for fixing it.  This can result in schedule slippages and cost overruns because fixing the defect was delayed.  The good news is this can easily be avoided by testing software early in its lifecycle and fixing the defects as are they are discovered.  This will reduce the complexity of the defects found later, and most likely make them less time consuming and costly to fix.  

Hopefully this post gives some insight into fixing defects early in the software lifecycle, or at the very least, provides some motivation for getting the snow in your yard cleared more quickly.