tags:

views:

100

answers:

4

It is said [Software Defect ReductionTop 10 List] that, 'about 40 to 50 percent of user programs contain nontrivial defects'.

What are some nontrivial defects and how to overcome them?

+2  A: 

I would interpret "non-trivial" as "has a real impact on the user".

For instance, if a menu item has a typo in it, that would be a trivial defect. If your spreadsheet application crashed when it tried to save any sheet with the number "999" in, that would be non-trivial.

I'd be hugely surprised if the number was really as low as 40-50%. In my experience pretty much every signficant application has non-trivial defects, even if they're rarely encountered. (If I'm the only user in the world who uses the number 999 in a spreadsheet, the bug is still hugely important to me so I don't think it can be classed as trivial.)

As for "overcoming" defects - the normal barrage of unit tests, continuous build, automated integration tests, manual testing, making sure you have a really good user feedback system, and management who are willing to put resources into fixing bugs as well as creating new features.

Jon Skeet
+1  A: 

Subjective, but:

Non trivial: defects that stop users doing their job, or that impact their productivity to a significant degree Trivial: defects that just annoy users

Obviously there is a big grey area here, because what's annoying and trivial for one product might be annoying but non-trivial for another.

Jeffrey Kemp
A: 

First, it is worth noting that most single defects are trivial: tests aim at discovering them.

So non trivial defects are generally a combination of two or more single defects, each of them being harmless alone (test input didn't trigger them).

A second step in non triviality is when time is part of the input/output space: specific dates or durations.

Then you can add discrepancies between assumptions and reality: compiler, target platform, inputs, ...

Shake all of that and may the force be with you...

mouviciel
A: 

Try to understand the other side first: Trivial defects. A trivial defect is either harmless or easy to fix (typo in a text in the UI, wrong color for a button, labels are not aligned perfectly).

Non-trivial defects are everything else: Performance problems, handling of the application, data corruption, etc. They are sometimes hard to find and often hard to fix.

Aaron Digulla