Applications of the Naturalness of Software
Date
Author
Institution
Degree Level
Degree
Department
Supervisor / Co-Supervisor and Their Department(s)
Citation for Previous Publication
Link to Related Item
Abstract
There is a wealth of software development artifacts such as source code, issue reports, and revision histories, contained within publicly-accessible and privately-accessible repositories. Mining this data presents myriad opportunities that may benefit future software development efforts; however it is unclear exactly how to leverage this data. This thesis explores the naturalness of software—the assertion that source code, much like natural languages, is regular and predictable. This enables the application of techniques borrowed from the fields of natural language processing (NLP) and information retrieval (IR) to gain insight from existing software repositories. This thesis demonstrate different methods of mapping software artifacts to natural language models and full-text databases. Then, we show how to use these models and databases in the tasks of predicting whether a commit may break the build; clustering crash reports in a scalable and time-efficient manner; and detecting and correcting syntax errors in code written by novices. This thesis empirically demonstrate the effectiveness of these tools on real world software repositories. I conclude by suggesting ways of further exploiting the data contained within software repositories.
