Committee: Michal Young (chair), Stephen Fickas, Christopher Wilson
Directed Research Project(Jul 2017)
Keywords: dynamic analysis, specification mining, dynamic data structure analysis, design patterns
Dynamic specification mining techniques attempt to fill gaps in missing or decaying documentation of software systems to support software maintenance tasks such as testing or bug fixing. Current dynamic mining techniques are blind to common coding styles, and in particular to design patterns that involve dynamic data structures such as lists of listeners for event notification. Because they cannot recover properties involving these dynamic structures, they may produce incomplete or misleading specifications (e.g., suggesting a method may be &dquot;pure&dquot; because its effects are produced indirectly through event notification). We have devised an extension to current dynamic specification mining techniques that ameliorates this shortcoming. The key insight is to monitor not only values dynamically, but also properties to track dynamic data structures commonly used in design patterns. We have implemented this approach as an extension to the instrumentation component of Daikon, the leading example of dynamic invariant mining in the research literature. We have applied our tool to widely used software systems published on GitHub to illustrate and evaluate the usefulness of this pliable monitoring for elucidating the overall behavior of target systems.