Recurring Software Defects in High End Computing

View/Open

Date

Author

Advisor

Metadata

Abstract

This dissertation presents an empirical approach for building, storing,
and evolving knowledge about domain-specific software defects. It is
based on an iterative methodology, where the patterns of defects are
derived from the combination of pattern identification heuristics and
the validation and evolution of the patterns by domain experts. The
approach consists of three main activities: (1) Pattern development
through reading-based defect analysis of source code versions, (2)
Reactive pattern refinement through a variation of structured
interviews, and (3) Packaging available knowledge about the defects,
such as symptoms and advice about prevention, into derivative artifacts,
such as lectures and tools.
This approach has been applied to the domain of high performance
computing (HPC), to build defect patterns that consist of a
classification scheme for defect types and subtypes, and specific defect
examples representing that type. For each defect sub-type there is
provided a description, a set of symptoms that can help identify if the
defect is present, a set of potential causes of the defect, and
suggestions about cures and preventions.
I verified the feasibility of the methodology within the constraints of
available research opportunities in the HPC domain. I conducted several
empirical studies, evaluating the reliability of the heuristics, the
generality of the defect pattern data though expert opinion, and the
usefulness of the patterns through classroom studies and expert opinion.
The main outputs produced are an experience base which stores and shares
these patterns, so that HPC practitioners can access them at various
levels of abstraction and submit feedback and an evolved and evaluated
set of educational materials that can be used to help minimize the
defects made by novice programmers.