You are here: SE » ResearchHome » ErrorHome » DefectTaxonomy

On Defect Taxonomies

Presents considerations for designing defect taxonomies and our draft taxonomy.

Definition "Defect Taxonomy"

A defect is a structural property of a software document of any kind (e.g. requirements description, test plan, source code, configuration file), namely a deviation from the nearest (i.e. most similar) correct document that makes the document incorrect or locally incorrect.

A taxonomy is a system of hierarchical categories designed to be a useful aid for reproducibly classifying things.

Purpose of a defect taxonomy

The following considerations assume that defects are recorded when they are found throughout the software process, including their classification according to the defect taxonomy. Then a defect taxonomy can serve one or several of the following purposes:
  • Understanding process characteristics: Recording defects and classifying them can help understand the process with respect to all those activities that produce defects. In particular, they help in identifying process weaknesses (high-defect steps).
  • Understanding product characteristics:
    • Identifying points needing rework: Clusters of defects point to documents that need rework.
    • Suggesting rework approaches: The kinds of defects may point out the best approach for doing the rework (e.g. direct repair, review, redesign, retest, etc.)
  • Providing project guidance: Defect characteristics of artifacts may help with risk assessment for process decisions such as task priorities, go/no-go decisions, reimplementation decisions etc.
  • ?

Aspects that can be used in forming the taxonomy

Any two taxonomy entries will differ with respect to one or several of the following defect aspects:
  • Kind of underlying human error: e.g. oversight, misdeduction, misbelief/ignorance (by the document authors)
  • The nature of the most likely repair: addition, deletion, modification (of some part of the document)
  • The number of individuals involved in producing the defect: One, more than one.
  • The kind of (sub)clause containing the defect: boolean formula, object name, operation name, list, quantifier, quantity, string

Design considerations

The cross-product of all of the above aspects would not lead to a useful taxonomy. The reasons are as follows:
  • Very many of the resulting classes would occur essentially never (and would hence be difficult to understand and hence confuse users.

Rather, we use the following approach and priorities for constructing the taxonomies:
  • A smaller taxonomy (fewer classes) is preferable over a larger one, because higher rates of misclassification in larger taxonomies will quickly outweigh the usefulness of additional classes.
  • Specifically, the use of an aspect should be avoided if the classification according to that aspect will often be difficult
  • ?

((to be completed))

Defect taxonomy (draft)

((actual taxonomy is still to be begun))


Lots of defect taxonomies and ways how to build and utilize them have been suggested. Here's a short list of some interesting work:


If you have comments or additions but do not want to include them in the main body above, put add them here and sign as indicated below the text window.