Safety experts
cause-and-event charting, 381–82
fault-tree analysis, 382–84
root-cause analysis, 362–63
software-defect root causes, 363–80
way of, 3, 361–85
worldview, 361–62
SameLen variable, 264
Schoenfeld, Alan, 175
applying, to debugging, 185–87
belief systems, 185
control, 184–85
heuristics, 183–84
knowledge and behavior hierarchy, 182–83
Mathematical Heuristic movement
criticisms, 178–79
mathematical problem solving and, 182–87
resources, 183
See also Mathematicians
Search
breadth-first, 192–93
caution, 44
depth-first, 193–94
record, 57
Selective support, 409–10
Self-awareness, 12
Semantic analysis, 477–78
Side effects, as clues, 37–38
Similarity, 214–15
dimensions, 214
hypotheses, 215
programming language, 214
Skill-based behavior, 391
Skill-based errors, 394
Slices, 483
Snyder, Lawrence, 279–80
Software-defect root causes, 363–80
design errors, 367–71
general information, 363–65
information types, 364–66
symptom categories, 366–67
symptom description, 365–67
Software engineering
eras, 4–8
object-oriented development history, 6–8
structured development history, 4–6
Software-interface specification defects, 370–71
Solomon, Professor, 49–61
applying, to debugging, 50
camouflage effect, 55–56
defined, 49
domestic drift, 53–54
don’t look for it, 50–51
eureka zone, 58
it’s not lost, 51
it wasn’t you, 60
look once, 57
methods, 49–60
tail thyself, 58–59
think back, 56–57
three C’s, 51–52
where it’s supposed to be, 53
you’re looking right at it, 54–55
Solow, Daniel, 181–82
Sort function
problem, 113
reference, 114
Source-file metarules, 453, 453–55
commentary, 453–54
examples, 454–55
See also Programming conventions
Splint, 479–82
analysis comparison, 504
defined, 479
features, 480
technology, 481–82
usage, 480, 482
See also Static-analysis tools
Stabilize the program, 202–3
defined, 202
in different environment, 203
on different platform, 203
running defective program and, 202
See also Debugging heuristics
Stacey, Kaye, 180–81
Stack checking, 243–45
Statement metarules, 459–62
commentary, 459–60
convention examples, 460–62
See also Programming conventions
Static analysis
defined, 478
rule evaluation, 479
symbolic execution, 479
Static-analysis tools, 478–88
analysis comparison, 504
CodeSurfer, 482–85
PC-lint, 485–88
Splint, 479–82
Static data-structure problems, 373–74
Storage class change, 249–50
defined, 249
language specifics, 250–51
potential problems, 250
purpose, 250
questions answered, 250
refined tactics, 250
related tactics, 250
tactics selection, 250
See also Debugging tactics
Storage limitations, 408
Structured analysis, 4, 5
Structured design, 4, 5
Structured development history, 4–6
structured analysis, 4, 5
structured design, 4, 5
structured documentation, 6
structured programming, 4, 5
structured testing, 5–6
See also Software engineering
Structured documentation, 6
Structured programming, 4, 5
Structured testing, 5–6
Subscript checking, 242–43
Synchronic approach, 27