History slicing: assisting code-evolution tasks

History slicing: assisting code-evolution tasks
复制标题

历史切片:协助代码演化任务

DOI:
10.1145/2393596.2393646
复制
发表时间:
2012
影响因子:
7.4
通讯作者:
James A. Jones
James A. Jones
中科院分区:
计算机科学1区
文献类型:
--
作者:
Francisco Servant;James A. Jones

文献摘要

被引文献

相似文献

许多软件工程任务要求开发人员了解源代码的历史和演变。然而,今天的软件开发技术和工具并不适合这样的信息容易和有效的采购。在本文中,我们提出了一种称为历史切片的方法,可以自动识别最小数量的代码修改,在任何数量的修订,在细粒度的源代码的任何任意段。我们还介绍了我们的实现历史切片,Chronos,其中包括一个新的可视化的整个发展的利益的代码。我们提供两个实验:一个实验自动计算16,000个历史切片,以确定各种级别的自动化带来的好处,另一个实验评估历史切片对使用该技术的实际开发人员的实际影响,该技术用于涉及代码演变的实际软件维护任务。实验表明,历史切片在三个方面大大改善了传统技术:(1)开发人员需要检查和跟踪的信息量减少了三个数量级;(2)开发人员试图解决软件维护任务的正确性增加了一倍以上;(3)完成这些软件维护任务的时间几乎减半。
Many software-engineering tasks require developers to understand the history and evolution of source code. However, today's software-development techniques and tools are not well suited for the easy and efficient procurement of such information. In this paper, we present an approach called history slicing that can automatically identify a minimal number of code modifications, across any number of revisions, for any arbitrary segment of source code at fine granularity. We also present our implementation of history slicing, Chronos, that includes a novel visualization of the entire evolution for the code of interest. We provide two experiments: one experiment automatically computes 16,000 history slices to determine the benefit brought by various levels of automation, and another experiment that assesses the practical implications of history slicing for actual developers using the technique for actual software-maintenance tasks that involve code evolution. The experiments show that history slicing offered drastic improvements over the conventional techniques in three ways: (1) the amount of information needed to be examined and traced by developers was reduced by up to three orders of magnitude; (2) the correctness of developers attempting to solve software-maintenance tasks was more than doubled; and (3) the time to completion of these software-maintenance tasks was almost halved.