Semantic Slicing of Software Version Histories
In: IEEE Transactions on Software Engineering, Jg. 44 (2018-02-01), S. 182-201
Online
unknown
Zugriff:
Software developers often need to transfer functionality, e.g., a set of commits implementing a new feature or a bug fix, from one branch of a configuration management system to another. That can be a challenging task as the existing configuration management tools lack support for matching high-level, semantic functionality with low-level version histories. The developer thus has to either manually identify the exact set of semantically-related commits implementing the functionality of interest or sequentially port a segment of the change history, “inheriting” additional, unwanted functionality. In this paper, we tackle this problem by providing automated support for identifying the set of semantically-related commits implementing a particular functionality, which is defined by a set of tests. We formally define the semantic slicing problem, provide an algorithm for identifying a set of commits that constitute a slice, and propose techniques to minimize the produced slice. We then instantiate the overall approach, CSlicer , in a specific implementation for Java projects managed in Git and evaluate its correctness and effectiveness on a set of open-source software repositories. We show that it allows to identify subsets of change histories that maintain the functionality of interest but are substantially smaller than the original ones.
Titel: |
Semantic Slicing of Software Version Histories
|
---|---|
Autor/in / Beteiligte Person: | Zhu, Chenguang ; Chechik, Marsha ; Rubin, Julia ; Li, Yi |
Link: | |
Zeitschrift: | IEEE Transactions on Software Engineering, Jg. 44 (2018-02-01), S. 182-201 |
Veröffentlichung: | Institute of Electrical and Electronics Engineers (IEEE), 2018 |
Medientyp: | unknown |
ISSN: | 1939-3520 (print) ; 0098-5589 (print) |
DOI: | 10.1109/tse.2017.2664824 |
Schlagwort: |
|
Sonstiges: |
|