Toward Better Understanding and Documentation of Rationale for Code Changes

dc.contributor.authorAlsafwan, Khadijah Ahmaden
dc.contributor.committeechairServant Cortes, Francisco Javieren
dc.contributor.committeememberGulzar, Muhammad Alien
dc.contributor.committeememberLa Toza, Thomas D.en
dc.contributor.committeememberMeng, Naen
dc.contributor.committeememberTilevich, Elien
dc.contributor.departmentComputer Science and Applicationsen
dc.date.accessioned2023-08-25T08:00:20Zen
dc.date.available2023-08-25T08:00:20Zen
dc.date.issued2023-08-24en
dc.description.abstractSoftware development is driven by the development team's decisions. Communicating the rationale behind these decisions is essential for the projects success. Although the software engineering community recognizes the need and importance of rationale, there has been a lack of in-depth study of rationale for code changes. To bridge this gap, this dissertation examines the rationale behind code changes in-depth and breadth. This work includes two studies and an experiment. The first study aims to understand software developers' need. It finds that software developers need to investigate code changes to understand their rationale when working on diverse tasks. The study also reveals that software developers decompose the rationale of code commits into 15 separate components that they could seek when searching for rationale. The second study surveys software developers' experiences with rationale. It uncovers issues and challenges that software developers encounter while searching for and recording rationale for code changes. The study highlights rationale components that are needed and hard to find. Additionally, it discusses factors leading software developers to give up their search for the rationale of code changes. Finally, the experiment predicts the documentation of rationale components in pull request templates. Multiple statistical models are built to predict if rationale components' headers will not be filled. The trained models are effective in achieving high accuracy and recall. Overall, this work's findings shed light on the need for rationale and offer deep insights for fulfilling this important information need.en
dc.description.abstractgeneralSoftware developers build software by creating and changing the software's code. In this process, developers make decisions and other developers need to understand these decisions. The rationale behind code changes is an important piece of information that leads to development success if well explained and understood. In this work, we study the developers' need for rationale by conducting two studies and an experiment. In the first study, we found that software developers often need to look into the rationale behind code changes to understand them better while working on different tasks. We identified 15 different parts of rationale that developers seek when searching for rationale for code changes. The second study focused on the experiences of software developers when looking for and recording rationale. We discovered some challenges that developers face, like difficulty in finding specific rationale parts and the factors that make developers give up searching for rationale. The experiment predicts if developers would document rationale in specific templates. We built models to predict if certain parts of rationale would be left empty, and the models were effective. Overall, this research provides a better understanding of software developers' need, and it provides valuable insights to help fulfill this important information need.en
dc.description.degreeDoctor of Philosophyen
dc.format.mediumETDen
dc.identifier.othervt_gsexam:38329en
dc.identifier.urihttp://hdl.handle.net/10919/116107en
dc.language.isoenen
dc.publisherVirginia Techen
dc.rightsIn Copyrighten
dc.rights.urihttp://rightsstatements.org/vocab/InC/1.0/en
dc.subjectSoftware Engineeringen
dc.subjectSoftware Evolution and Maintenanceen
dc.subjectRevision Control Systemsen
dc.subjectSoftware Changes Rationaleen
dc.subjectApplied Machine Learning.en
dc.titleToward Better Understanding and Documentation of Rationale for Code Changesen
dc.typeDissertationen
thesis.degree.disciplineComputer Science and Applicationsen
thesis.degree.grantorVirginia Polytechnic Institute and State Universityen
thesis.degree.leveldoctoralen
thesis.degree.nameDoctor of Philosophyen

Files

Original bundle
Now showing 1 - 3 of 3
Loading...
Thumbnail Image
Name:
Alsafwan_KA_D_2023.pdf
Size:
6 MB
Format:
Adobe Portable Document Format
Loading...
Thumbnail Image
Name:
Alsafwan_KA_D_2023_support_3.pdf
Size:
2.64 MB
Format:
Adobe Portable Document Format
Description:
Supporting documents
Loading...
Thumbnail Image
Name:
Alsafwan_KA_D_2023_support_1.pdf
Size:
406.34 KB
Format:
Adobe Portable Document Format
Description:
Supporting documents