软件工程读书笔记

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件工程读书笔记

专业:软件工程硕士A班

学生姓名:丁浩宸

学号:13214020

二〇一④年八月

The impact of imperfect change rules on framework API evolution identification:an empirical study

实证研究:框架API更新辨别的不完善变化规则的影响

Wei Wu·Adrien Serveaux·Yann-Ga¨el Gu´eh´eneuc·

Giuliano Antoniol

摘要:软件框架在持续更新。程序员保持他们的客户端代码更新很费时。而且不是所有的框架都有着更新的文档说明。因此许多处理方法被提出以减少没有更新文档的影响,这些方法依靠通过辨别软件两个发行版本的改变规则。但是这些改变规则是不完善的,即不是100%正确的。在我们的知识范围内,并没有展示这些非完善改变规则的可用性的实证研究。因此我们设计并实施了一个实验来评价非完善规则的影响。在实验中,实验人员必须在三个不同的发行版本中找到21处丢失了的方法的替换。三个版本分别依靠1)全部正确的改变规则,2)不完善的改变规则,3)无改变规则。统计分析结果表明实验人员在三个不同的发行版本中找到的替换的精度有着显著差异。其中依赖全部正确的改变规则的结果精度是最高的,没有改变规则的精度是最低的,不完善的改变规则在两者中间。不完善改变规则和没有改变规则的精度差的效应值是巨大的,不完善改变规则和完全正确改变规则的精度差的效应值是适度的。研究结果表明框架API更新方法总结出的改变规则确实可以帮助开发者,即使这些规则并不是一直正确的。非完善改变规则可以帮助开发者在文档不可用时更新他们的代码,或者作为部分文档的补充。完全正确和不完善改变规律间适度的差异表明提高改变规则的精度依然可以帮助开发者。

关键词软件维护·可用性·框架API更新·变化规则

1背景介绍

软件框架和函数库库广泛应用于软件开发以降低成本。实际上,开发人员发展框架不断修正错误,补丁安全漏洞,满足新的需求。从理论上说,应用程序接口(API)的新版本的框架应该是与以前的版本向后兼容的,从而可以使使用之前框架的程序在新的框架下可以继续运作。

然而,由于API的变化,升级到新版本的框架需要大量的努力。开发人员必须深入研究文档和以前版本框架的源代码来理解他们的差异,来使他们的程序与新版本兼容。他们推迟升级的时间越长,就需要越多的时间,因为会有更多的变化。为适应新版本的框架的API变化,开发人员通常执行四个任务:(1)找到丢失的API的可能替代,(2)如果他们无法找到替代品,就要找到丢失的API的变通,(3)实现替代或变通,(4)测试实现。

一个有效的方法来帮助找到合适的替代品是文档。然而,许多框架并没有足够的文档,特别是当涉及到更改版本和规则之间适应程序从一个老版本发布到一个新的。一般情况下,很少有公司明确文档API的变化或提供这些信息给公众。因此,许多方法已经被开发来找到丢失API的替代。有些方法要求框架开发人员做额外的工作。然而,开发人员可能无法或不愿意手动建立改变规则或使用特定的工具。因此,为了避免框架开发人员的额外工作,其他方法自动识别描述目标之间的匹配方法的变化规则。这些方法所产生的变化规律并不都是正确的。他们的精度在不同的框架分析中有差异。

然而,使用这些方法变化规则所产生的升级文档,开发人员不知道变化规律是否是正确的,直到他们修改使用客户端程序。我们设计并进行实验评估框架的有效性API演化改变规则。在这项实验中,实验人员找到替代的目标方法借助完全正确的改变规则,不完善的改变规则,没有改变规则。然后,我们测量实验人员的精度和发现替代方法的时间。实验结果统计分析表明,完全正确的,不完善的,没有改变规则发现的替代品的精度有着明显不同,平均值分别为82%,71%和57%。没有改变方法和不完善的变化规则之间的效应差很大,完全正确的改变方法和不完善的变化规则之间的效应差是适中的。找到替代方法用不同的平均时间为24,23,25分钟(1413、1338和1413秒)。

这些结果表明改变规则框架API生成的进化方法是有用的,即使一些变化的

规则是不正确的。然而,正如所料,更高精度的变化规律会为他们提供更多的帮助。因此,不完善变化规律可以作为替代不可用文档或作为部分文档的补充。框架的开发人员也可以使用它们作为起点建立升级文档。结果中不完善和完全正确改变规则是适中的。因此,提高精度变化规律仍将帮助开发人员提高工作效率。

2相关工作

2.1框架API进展方法

2.1.1输入

现有捕捉数字变化的方法需要框架开发人员手动输入的变化规则或使用一个特定IDE自动记录变化。Chow和Notkin(1996)提出了一个方法,要求框架开发者提供新版本的变化规律。CatchUP!(Henkel and Diwan2005)和JBuilder((Kemper and Overbeck2005)记录在一个版本的重构操作然后在另一个版本上重复它们。MolhadoRef(Dig et al.2007年)也雇佣了一个record-and-replay技术处理API 级合并程序版本的变化。这些方法因为框架的开发人员的参与可以提供准确的变化规律。

2.1.2特性

框架API演化是使用从输入中提取具体的信息特征,如call-dependency关系或文本相似度。

捕捉API级别变换的特征(Chow and Notkin1996;HenkelandDiwan2005;Kemper and Overbeck2005;Dig et al.2007)是不同的手动添加或自动捕获改变规则。这些方法对每个目标方法和它的替代品有一个特定的模型。

Godfrey and Zou’s(2005)和S.Kimetal(2005)使用文本相似密度,软件度量,并调用依赖关系描述方法和他们的目标更换。Xing和Stroulia(2007)使用词汇和结构相似的逻辑设计模型提取的两个版本之间的差异,包括文本相似度,继承关系,使用依赖关系和关联关系。Kim et al.’s(2007)计算目标方法和它的替代测量之间的LCS来区别他们。SemDiff(Dagenais and Robillard2011),Sch¨afer et al.(2008),和AURA(Wu et al.2010)使用call-dependency关系来衡量信心值和各种预处理文本相似。HiMa(Meng et al.2012)使用

相关文档
最新文档