Off-campus UMass Amherst users: To download campus access dissertations, please use the following link to log into our proxy server with your UMass Amherst user name and password.

Non-UMass Amherst users: Please talk to your librarian about requesting this dissertation through interlibrary loan.

Dissertations that have an embargo placed on them will not be available to anyone until the embargo expires.

Author ORCID Identifier


Open Access Dissertation

Document Type


Degree Name

Doctor of Philosophy (PhD)

Degree Program

Computer Science

Year Degree Awarded


Month Degree Awarded


First Advisor

Yuriy Brun

Second Advisor

Arjun Guha

Third Advisor

George S. Avrunin

Fourth Advisor

Claire Le Goues

Subject Categories

Software Engineering


Software developers spend significant time and effort fixing bugs. Automatic program repair promises to significantly reduce bug-fixing costs. Program repair requires: fault localization — identifying program elements that cause the bug, patch generation — identifying modifications to those program elements to attempt to repair the bug, and patch validation — verifying that the modification actually repairs the bug. Most automatic program repair techniques use the developer-written tests for the repair process and produce seemingly good patches for 11–19% of the bugs in real-world software. However, most of these patches are not correct, as they overfit to the developer-written tests and break undertested functionality. The goal of this dissertation is to address this patch overfitting problem.

We improve automatic program repair techniques by augmenting developer tests with additional constraints from natural language software artifacts. While most existing techniques ignore such artifacts, we show that they can significantly improve the quality of program repair. We make the following contributions: (1) Methodologies to objectively evaluate repair techniques’ repair applicability and repair quality; (2) Swami, a technique that uses natural language processing to improve the developer-written tests by generating executable tests with oracles from software specifications; (3) Blues, a technique that uses information-retrieval-based approach to identify suspicious program statements using bug reports; (4) RAFL, an unsupervised technique that uses rank-aggregation algorithms to combine multiple fault localization techniques; and (5) An evaluation demonstrating that automatic program repair can improve significantly when using both tests and bug reports, together.


Creative Commons License

Creative Commons Attribution 4.0 License
This work is licensed under a Creative Commons Attribution 4.0 License.

Available for download on Wednesday, March 01, 2023