GenSlice: Generalized Semantic History Slicing

Semantic history slicing addresses the problem of identifying changes related to a particular high-level functionality from the software change histories. Existing solutions are either imprecise, resulting in larger-than-necessary history slices, or inefficient, taking a long time to execute. In this paper, we develop a generalized history slicing framework, named GenSlice, which overcomes the aforementioned limitations. GenSlice abstracts existing history slicing techniques and change history management operations (such as splitting commits into fine-grained changes) as history transformation operators, making it possible to apply them sequentially in various orders. We study and prove properties of various orders of operators and devise a systematic approach for efficiently producing history slices that are optimal for practical purposes. We report on an empirical evaluation of our framework, demonstrating its effectiveness on a set of real-world case studies.

[1]  Yuriy Brun,et al.  Early Detection of Collaboration Conflicts and Risks , 2013, IEEE Transactions on Software Engineering.

[2]  Andreas Zeller,et al.  The impact of tangled code changes , 2013, 2013 10th Working Conference on Mining Software Repositories (MSR).

[3]  Shuvendu K. Lahiri,et al.  Helping Developers Help Themselves: Automatic Decomposition of Code Review Changesets , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[4]  Yi Li Managing Software Evolution through Semantic History Slicing , 2017 .

[5]  Andrew P. Black,et al.  How we refactor, and how we know it , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[6]  Andreas Zeller,et al.  Yesterday, my program worked. Today, it does not. Why? , 1999, ESEC/FSE-7.

[7]  Gregg Rothermel,et al.  Analyzing Regression Test Selection Techniques , 1996, IEEE Trans. Software Eng..

[8]  Marsha Chechik,et al.  Precise semantic history slicing through dynamic delta refinement , 2016, 2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE).

[9]  Jennifer Widom,et al.  Change detection in hierarchically structured information , 1996, SIGMOD '96.

[10]  Mariot Tsitoara Git Best Practices , 2020 .

[11]  Harald C. Gall,et al.  Classifying Change Types for Qualifying Change Couplings , 2006, 14th IEEE International Conference on Program Comprehension (ICPC'06).

[12]  Marsha Chechik,et al.  A Dataset for Dynamic Discovery of Semantic Changes in Version Controlled Software Histories , 2017, 2017 IEEE/ACM 14th International Conference on Mining Software Repositories (MSR).

[13]  Milos Gligoric,et al.  Selective Bisection Debugging , 2017, FASE.

[14]  Andreas Zeller,et al.  Simplifying and Isolating Failure-Inducing Input , 2002, IEEE Trans. Software Eng..

[15]  James A. Jones,et al.  History slicing , 2011, 2011 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011).

[16]  J. Rubin,et al.  Semantic Slicing of Software Version Histories , 2018, IEEE Transactions on Software Engineering.

[17]  Shinpei Hayashi,et al.  Refactoring edit history of source code , 2012, 2012 28th IEEE International Conference on Software Maintenance (ICSM).

[18]  Yuriy Brun,et al.  Development History Granularity Transformations (N) , 2015, 2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[19]  Marsha Chechik,et al.  Semantic Slicing of Software Version Histories (T) , 2015, ASE.

[20]  Michael D. Ernst,et al.  Development History Granularity Transformations , 2015 .

[21]  Andreas Zeller,et al.  Mining Version Histories to Guide Software Changes , 2004 .