Recurring Software Defects in High End Computing

Thumbnail Image


umi-umd-4615.pdf (6.87 MB)
No. of downloads: 1003

Publication or External Link






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.