TITLE: Betters Tools for Software Understanding PI: Brad A. Myers, Carnegie Mellon University
Understanding software is a prerequisite to taking any action to change it, and this remains expensive and error-prone. Research with programmers in the field has identified significant barriers to understanding. Lab and field studies of usability barriers in understanding and using APIs will result in models of how developers understand the design of the objects. These results will lead to new software tools for API exploration and understanding. Work on enabling people to better understand and fix bugs through new visualizations and interaction techniques will allow them to ask "Why" and "Why Not" questions about their code, with the answer visualizing the responsible code and dataflow. New tools will support understanding code by others during reverse engineering activities, focusing on how data and control can flow through large and complex programs. Using static analysis techniques and a new "WhatTree" visualization will allow programmers to investigate the update paths of their programs, while supporting the programmers in collecting and keeping track of facts and hypotheses about how the program operates. The results will improve programmer success and thus their overall productivity.