Infinite defect loops have many causes, beginning with an inadequate architecture, but persist because
of subtle, frequent changes. Software that exhibits this tendency is probably entropic. A less-polite phrase
to describe it is ???
spaghetti code.???
To eliminate or minimize this, Microsoft uses an approach called synch and stabilize (see Chapter 4).
To find this out, you will need to look at two sources:
1. The test history. Look at the execution of tests over the last three to four test runs. How many
problems have repeatedly recurred? How many tests have found a bug, had it fixed, and had it
recur? See Figure 8.25.
2. The configuration management database. Use this to get the data you need to assess requirements
and code turmoil. See section 18.9.8.
See also section 18.10.2.2.
2.7.3 What Are the Primary Root Causes of Our Bugs?
The obvious answer to this is to look in the mirror. Of course, the root cause of all bugs is human failing.
More usefully, a number of other causes can be determined:
1. The process or phase. Is there evidence that an undue number of bugs are deriving in or from
some phase? Would they have been found by better unit tests or system tests? Could the bug have
been found by a more rigorous review? This is data that can be got from the bug reports. Most
root cause analyses of bugs stop here and shouldn??™t. (See section 18.10.2.2 for an example of an
out-of-control process that generates out-of-control code.
Pages:
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128