Simultaneous Modification Support based on Code Clone Analysis

Simultaneous Modification Support based on Code Clone Analysis
复制标题

DOI:
10.1109/apsec.2007.83
复制
发表时间:
2007-12
期刊:
14th Asia-Pacific Software Engineering Conference (APSEC'07)
影响因子:
--
通讯作者:
Yoshiki Higo;Yasushi Ueda;S. Kusumoto;Katsuro Inoue
Yoshiki Higo;Yasushi Ueda;S. Kusumoto;Katsuro Inoue
中科院分区:
其他
文献类型:
--
作者:
Yoshiki Higo;Yasushi Ueda;S. Kusumoto;Katsuro Inoue

文献摘要

相似文献

随着其大小和复杂性的增加,维护软件系统变得更加困难。使软件维护更加困难的一个因素是代码克隆的存在。代码克隆被定义为在软件系统中以相同或相似形式出现的代码片段。例如,代码克隆的存在是忽略某些地方应同时修改的地方的重要因素。一种有助于代码克隆数量的技术是重构。有几项研究工作为重构代码克隆提供了支持,但不幸的是,有些代码克隆不能或不应该重构(例如,刻板印象的过程,缺乏抽象功能,提高性能)。为了支持维持代码克隆之间的一致性,我们提出了一种同时修改支持方法。给定软件系统,首先,维护者确定必须修改的代码片段。然后,仅检测到已确定的代码片段和软件系统源文件之间的代码克隆。我们开发了同时修改支持工具,天秤座,并将其应用于开源软件系统。结果表明,天秤座和GREP一样多,这是UNIX的有用工具。
Maintaining software systems becomes more difficult as their size and complexity increase. One factor that makes software maintenance more difficult is the presence of code clones. A code clone is defined as a code fragment occurring more than once in identical or similar form into a software system. For example, the presence of code clones is a big factor of overlooking some places that should be modified simultaneously. One technique that helps the number of code clones is refactoring. There are several research efforts that provide support to refactor code clones, but unfortunately some code clones cannot or should not be refactored (ex. stereotyped process, absence of abstraction functionality, performance enhancement). In order to support maintaining the consistency among code clones, we propose a simultaneous modification support method. Given a software system, firstly, a maintainer identifies a code fragment that must be modified. Then, only the code clones between the identified code fragment and the source files of the software system are detected. We developed a simultaneous modification support tool, Libra, and applied it to open source software systems. The results showed that Libra was a good searching tool as much as grep, which is a useful tool of UNIX.