Hypothesis Based Debugging


  • ANSH CHAURASIA Aspiring Scientists' Summer Internship Program Intern
  • HENRY ZHENG Aspiring Scientists' Summer Internship Program Intern
  • Thomas LaToza Aspiring Scientists' Summer Internship Program Mentor
  • Abdulaziz Alaboudi Aspiring Scientists' Summer Internship Program Co-mentor




Reliance on technology has created greater demand for successfully functioning software. However, software developers often face progress-impeding programming “bugsâ€. When debugging code, developers either formulate their own hypotheses- a theory for why the program is not functioning as intended- or look on specific websites for generalized solutions to adapt to their own scenario. However, these sites don't ensure that developers will discover a solution and developers occasionally lack the knowledge to formulate the correct hypotheses, potentially leading to significant losses in time. Therefore, it is worthwhile to develop tools to flag risky lines of code and provide a set of probable hypotheses that correlate unexpected behaviors with certain lines of code. The major focus of the research project has been to create a large database of errors and hypotheses and determine how to present relevant ones to developers. The tool developed works by testing a set of queries against JavaScript files to determine the applicability of each hypothesis. Additionally, another significant emphasis has been on development of an interface capable of acquiring necessary data about the program, bug, and developer's intent to present the most relevant hypotheses and solutions. Each schematic developed was assessed on versatility of developer bugs the tool captured and its ability to convey probable hypotheses to developers. After evaluating each schematic, a final prototype was created, which could monitor code through debugging windows, test queries against the source code and use a description from the developer to rank the relevant hypothesis. The project concludes that this prototype has great potential to help developers fix bugs faster and more effectively in order to maintain high-quality software in the modern digital age.





College of Engineering and Computing: Department of Computer Science