【软件分析与挖掘】Vision of Software Clone Management: Past, Present, and Future (Keynote Paper)

abstract:

代码克隆的综述


S1    INTRODUCTION AND MOTIVATION

代码克隆的利弊:

利:可以有效地去耦合,避免其他一些可能的错误;

弊:当被复制的那段code中带有bug的话,他的复制版本中都会含有bug。

但是代码克隆操作又是不可避免的,因此,代码克隆应该得到有效的检测和管理。


S2    A SYSTEMATIC REVIEW OF CLONE LITERATURE

Robert Tiras搜集了一个从1994~2013的论文库,主要分为以下几类:

1、克隆检测;(主要是一些检测技术和工具)

2、克隆分析;(主要是分析克隆的性质,如原因,存在性和影响,克隆重组的影响)

3、克隆管理;

4、克隆检测技术和工具的评价;

研究情况:

四个分类的研究情况:可以发现,克隆的分析和克隆的检测论文比较多

4个类别的发表的数量:未来在克隆的管理上,研究更有潜力,同时,对于克隆工具的评估的论文也相对较少。


S3    CLONE MANAGEMENT

克隆管理包含克隆检测,克隆避免和消除克隆,追踪克隆代码,克隆代码的重构。

A.   代码克隆的定义

Ira Baxter给出一种比较模糊的定义:“Clones are segments of code that are similar according to some de?nition of similarity"。每个研究者可能因为他们的检测工具对于代码的表现形式和检测机制的不同,他们对于相似的定义也不同。主要分为一下以下几类克隆:

1——相同的代码片段,除了代码的空格数和注释不同;

2——相同结构的代码片段,除了变量名,常量名,类型名,顺序和注释不同;( near-miss  clones)

3——同第二种相似,但还进一步允许有不同的操作符,如加减等;( near-miss clones)

4——实现相同的功能,但是实现的方法不同;

检测目的的不同,导致对克隆的定义也不同。我们并不希望能够有一个对“克隆”的统一定义,而是希望基于特定任务的相似性分类可以在未来出现,以及可以进一步区分上下文和克隆的目的。

对于代码克隆的研究不应该仅仅只局限于源代码,还应该扩展到基于模型,甚至是在电子表格中的克隆。

B    克隆管理


S4   克隆检测

不同的克隆检测技术:

1、追踪剪切板的操作;

2、相似性度量比较;

3、文本比较;

4、基于token的比较;

5、句法比较;

6、基于PDG(程序依赖图)的比较;

7、基于hash的比较;

8、基于低级代码的比较(如汇编、java字节码)

9、其他。


S5   集成克隆检测

把克隆检测与IDE或版本控制工具结合起来。

文中列举了大量的工具,但是极少数可以处理第三类clone。


S6  克隆检测报告

为了最小化克隆的信息, Harder and Göde提出了一种可扩展的模式——Rich Clone Format (RCF),包括克隆数据的存储,交换和一致性。但是,它也没有解决所有问题。因为没有一个统一的概念模型,所以需要多个研究团队在一起讨论后才能得出结论。


S7   克隆追踪

源码的改变可能使得之前的克隆信息失效,因此,要更新克隆信息,有两种方法:

1、重新检测:每一次代码改变,都可能触发克隆检测机制,重新检测一遍,这种方法开销太大;

2、增量式检测:检测仅在源码被修改的位置进行,在原有的基础之上加以改动,


S8   克隆演化分析

克隆的稳定性,克隆演化与软件的缺陷。克隆的可视化。

克隆演化的“家族系谱图”


S9   克隆注释

便于其他编程人员的阅读


S10   克隆再造/重构技术

克隆的泛型,设计模式,软件重构模式,同步修改。

1、泛型和模版:可以减少冗余的代码;

2、一致性重命名;

3、重构模式;


S11   分析和识别潜在的克隆重构

1、代码克隆分布和属性的可视化

散点图,hasse图,html等等。

2、成本效益分析和重构步骤

成本效益分析困难


S12   代码重复的根本原因

1、开发策略:当有相似的需求时,重用现有的代码通过拷贝的方式比较简便;

2、维护成本:现有的代码已经被测试过,复制的话可以节约成本;

3、克服潜在的局限性:开发者为了追求效率,并未遵循正确的开发策略,相似问题找相似代码解决;

4、无意中进行克隆:相同的API,写的代码高度的一致性。


S13   克隆管理策略

分三类:

1、克隆纠正:删掉代码中所有的克隆;

2、克隆预防:组织新的克隆活动;

3、克隆补救:删掉一些不好的克隆;


S14   克隆管理系统的设计

A   集成架构方案:

1、架构中心;

2、集成架构;

3、分散架构;

B   克隆管理触发事件:

1、主动触发;

2、系统触发;

3、克隆范围;

C   克隆管理的范围和时间点;


S15   克隆管理的工业应用

目前应用的程度还不高


S16   总结

时间: 2024-11-08 07:36:17

【软件分析与挖掘】Vision of Software Clone Management: Past, Present, and Future (Keynote Paper)的相关文章

【软件分析与挖掘】Multiple kernel ensemble learning for software defect prediction

摘要: 利用软件中的历史缺陷数据来建立分类器,进行软件缺陷的检测. 多核学习(Multiple kernel learning):把历史缺陷数据映射到高维特征空间,使得数据能够更好地表达: 集成学习(ensemble learning):使用一系列的分类器来减少由主类带来的分类误差,使具有更好的检测结果. 本文采用集成学习的方法构建一个多核分类器,集多核学习和集成学习的优点,提出方法: propose a multiple kernel ensemble learning (MKEL) appr

【软件分析与挖掘】BOAT: An Experimental Platform for Researchers to Comparatively and Reproducibly Evaluate Bug Localization Techniques

摘要: 目前有许多的bug定位技术,但是,由于他们基于不同的数据集,而且有些数据集还不是公开的,甚至有些技术只应用于小数据集,不具有通用性,因此,不好比较这些技术之间的优劣. 因此,BOAT应运而生.BOAT是指:Bug lOcalization experimental plATform.这是一个web平台,开发者注册之后,可以在这上面上传他们的bug定位技术,因为在这个平台上测试的数据集是相同的,所以与其他的bug定位技术具有可比性. 地址:http://www.vlis.zju.edu.c

【软件分析与挖掘】An Empirical Study of Bugs in Build Process

摘要 对软件构建过程中所产生的错误(build process bugs)进行实证研究. 5个开源项目:CXF, Camel, Felix,Struts, and Tuscany. 把build process bugs 和 other bugs在3个维度比较:bug severity, bug ?x time, the number of ?les modi?ed to ?x a bug. 结论表明, Ⅰ.the fraction of build process bugs which are

【软件分析与挖掘】A Comparative Study of Supervised Learning Algorithms for Re-opened Bug Prediction

摘要: 本文主要是评估多种监督机器学习算法的有效性,这些算法用于判断一个错误报告是否是reopened的,算法如下: 7种监督学习算法:kNN,SVM, SimpleLogistic,Bayesian Network, Decision Table, CARTand LWL: 3种集成学习算法: AdaBoost,Bagging and Random Forest. 实验结果表明: 评判的指标:accuracy scores和 F-Measure scores Bagging  and  Dec

必应词典手机版(IOS版)与有道词典(IOS版)之软件分析【功能篇】

1.序言: 随着手机功能的不断更新和推广,手机应用市场的竞争变得愈发激烈.这次我们选择必应词典和有道词典的苹果客户端作对比,进一步分析这两款词典的客户端在功能和用户体验方面的利弊.这次测评的主要评测人是团队PM,另有其他同学给出建议. 2.软件分析与测评: 我们选择的是必应词典(version3.2.2 for ios)和有道词典(version 5.1.2 for ios) 2.1核心功能: 2.1.1词典功能: 众所周知词典的基本功能就是查词,在查词的基础上会给出相应的英文解释,例句以及用法

必应词典桌面版 --- 基于大学生用户群体的软件分析(与有道词典对比版 1功能篇)

1.概述 这篇博客会从大学生的角度来评测必应词典桌面版,以大学生的使用习惯来评判必应词典桌面版各项功能的优劣,并与同类软件进行横向分析,最终给出我们的评分.本次分析评测的主要评测员为博主本人,相关分析评测人员包括软件工程团队人员与他们的来自各个学校各个专业的同学们,人数共计23个,具有较好的普遍性. 2.软件分析与评测 本次评测我们会从功能.体验两大方面来对必应词典桌面版进行分析.必应词典版本:V3.5.0 for windows 桌面版     有道词典版本:PC版6.2 这篇博客是功能篇.

第十团队:软件分析与用户体验分析

第十团队 1.概述 这篇博客会从大学生的角度来评测Microsoft Edge浏览器,以大学生的使用习惯来评判Microsoft Edge浏览器各项功能的优劣,并与同类软件进行横向分析,最终给出我们的评分.本次分析评测的主要评测员为博主本人,相关分析评测人员包括软件工程团队人员与他们的来自各个学校各个专业的同学们,人数共计23个,具有较好的普遍性. 目标用户:大学生 人数:23人 2.软件分析与评测 本次评测我们会从功能.体验两大方面来对Microsoft Edge浏览器和QQ浏览器进行分析.

第9组 软件分析与用户体验分析

必应输入法桌面版--基于大学生用户群体的软件评测与分析(与搜狗输入法对比版 ) 1.概述 这篇博客会从大学生的角度来评测必应输入法桌面版,以大学生的使用习惯来评判必应输入法桌面版和搜狗输入法桌面版,最终给出我们的评分.调研人数:7人,调查为卷的形式 2.软件分析与评测 本次评测我们会从功能.体验两大方面来对必应输入法桌面版进行分析.必应输入法:1698.04 for windows 桌面版     有道词典版本:9.2.0.2785 windows桌面版 2.1 功能 1.地名输入: 必应输入法

Everspin串口串行mram演示软件分析

Everspin在磁存储器设计,制造和交付给相关应用方面的知识和经验在半导体行业中是独一无二的.在平面内和垂直磁隧道结(MTJ)STT-MRAM位单元的开发方面处于市场领先地位.包括40nm,28nm及更高工艺在内的先进技术节点上进行了全包交钥匙的300mm大批量平面内和垂直MTJ ST-MRAM生产.生产基于180nm,130nm和90nm工艺技术节点的MRAM产品.下面要介绍关于everspin公司MRAM演示软件分析 everspin公司MRAM演示软件分析 MRAM低级驱动程序通过操作系