Learning and Suggesting Source Code Changes from Version History: A Systematic Review
Leandro Ungari Cayres, Bruno Santos de Lima, Rog\'erio Eduardo, Garcia

TL;DR
This systematic review examines approaches to learning from and recommending source code changes based on version history, highlighting techniques like pattern recognition and metrics analysis to improve software development practices.
Contribution
It provides a comprehensive overview of methods for learning and suggesting source code changes, emphasizing the use of pattern recognition and metrics in software evolution.
Findings
Most approaches use repetitiveness of code changes to identify patterns.
Programming-by-example techniques are used for structural differencing.
Metrics like complexity and object-oriented metrics are commonly applied.
Abstract
Context: Software systems are in continuous evolution through source code changes to fixing bugs, adding new functionalities and improving the internal architecture. All these practices are recorded in the version history, which can be reused as an advantage in the development process. Objective: This paper aims to investigate approaches and techniques related to the learning of source code changes, since the change identification step, learning, and reuse in recommending strategies. Method: We conducted a systematic review related to primary studies about source code changes. The search approach identified 2410 studies, up to and including 2012, which resulted in a final set of 39 selected papers. We grouped the studies according to each established research question. This review investigates how source code changes, which were performed in the past of software, can support the…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Software Testing and Debugging Techniques · Engineering and Information Technology
