Previous Section Table of Contents Next Section

Chapter 1. Bug Classification

This chapter covers the classification of bugs used in this book. It is based on a classification done by the computer scientist Donald Knuth. Each bug type is identified with the notation C.subcategory, where C is the initial of one of the main categories (A, D, F, or B) and subcategory is a descriptive name.

More details and explanations of these classifications can be found in Appendix A, "Classification of Bugs." Types of bugs marked with an [*] do not appear in any of the examples.

A-Algorithm. The algorithm that the programmer designed is incorrect.

A.off-by-one. The program makes a calculation that is off by one.

A.logic. The algorithm has a logical flaw.

A.validation. Variables are not properly checked to ensure they are valid. [*]

A.performance. The algorithm has severe performance problems. [*]

D-Data. Data is not properly processed.

D.index. An array is indexed into incorrectly.

D.limit. Processing is done incorrectly at the beginning or end of the data.

D.number. A bug related to how numbers are stored in memory.

D.memory[*]. The program mismanages memory.

F-Forgotten. Statements are not executed in the intended order.

F.init. A variable is not properly initialized.

F.missing. A necessary statement is missing.

F.location. A statement is in the wrong place.

B-Blunder. A simple mistake exists in the code.

B.variable. The wrong variable name is used.

B.expression. The calculation of an expression has a mistake.

B.language. A bug specific to the syntax of the language. [*]

    Previous Section Table of Contents Next Section