  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 improvement of the software project. Results:
The majority of approaches and techniques have used repetitiveness behavior of
source code changes to identify structural or metrics patterns in software
repositories, trough the evaluation of sequences of versions. To extract the
structural patterns, the approaches have used programming-by-example techniques
to differencing source code changes. In quality metrics analysis, the studies
have applied mainly complexity and object-oriented metrics. Conclusion: The
main implication of this review is that source code changes as examples, to
support the improvement of coding practice during the development process, in
which we presented some relevant strategies to guide each step, since
identifying until the suggesting of source code changes.
