THESIS
2015
[xiv], 111 pages : illustrations ; 30 cm
Abstract
Code changes are essential for software evolution. To safeguard their quality, newly
submitted changes typically go through a series of quality assurance steps before being
integrated into the code base. However, despite the wide adoption of code review and
testing, low-quality code-changes are still prevailing. Consequently, developers suffer from
interrupted workflow and increased workload to handle those low-quality code-changes.
In this dissertation, we first investigate software practitioners’ perspective of code-change
quality. We conduct a large-scale exploratory study with Microsoft engineers to
investigate industrial practice on understanding code changes. In addition, by inspecting
Eclipse and Mozilla patches and surveying their developers, we investigate why patches...[
Read more ]
Code changes are essential for software evolution. To safeguard their quality, newly
submitted changes typically go through a series of quality assurance steps before being
integrated into the code base. However, despite the wide adoption of code review and
testing, low-quality code-changes are still prevailing. Consequently, developers suffer from
interrupted workflow and increased workload to handle those low-quality code-changes.
In this dissertation, we first investigate software practitioners’ perspective of code-change
quality. We conduct a large-scale exploratory study with Microsoft engineers to
investigate industrial practice on understanding code changes. In addition, by inspecting
Eclipse and Mozilla patches and surveying their developers, we investigate why patches
are rejected in code review and the severity of different patch-quality issues.
Based on our empirical findings, we propose an automatic approach to improve the
quality of software code changes in terms of their semantic atomicity. Specifically, we
combine program slicing and pattern matching techniques to partition code changes that
address multiple issues. Our approach renders promising results in both quantitative and
qualitative evaluation.
In addition to human-written code changes, we also investigate the quality of automatically
generated patches produced by program repair techniques. We conduct a large-scale
human study, in which 95 software practitioners use automatically generated patches as
debugging aids. Our regression analysis on 337 data points reveals a major impact of patch
quality on debugging performance. Our qualitative analysis on participants’ feedback
provides further insights on how to improve program repair techniques.
The primary contributions of this dissertation include 1) in-depth empirical investigations
on the expert knowledge of code-change quality; 2) an automatic approach to
improve the semantic atomicity of code changes; and 3) a human study to explore the
quality impact of automatically generated patches in the debugging context.
Post a Comment