软件生态系统中的跨项目缺陷理解与分析技术

来源 :南京大学 | 被引量 : 2次 | 上传用户:jimmycjriyue
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
作为最受欢迎的开源代码仓库,GitHub以其特有的“社交编程”方式极大地促进了软件生态系统的发展。在GitHub软件生态系统中,下游项目依赖于上游项目提供的基础设施或功能组件,形成了复杂的项目间依赖关系。通过这些依赖关系,上游项目中的缺陷将其影响传递到下游项目中,形成软件生态系统中独有的跨项目缺陷。相比于项目内缺陷,跨项目缺陷影响范围更大,危害整个生态系统的健康;其处理过程更复杂,涉及多个项目开发者的协作;且由于一些影响仅暴露在下游,上游测试集无法捕获,导致其检测难度更高。随着GitHub的愈加流行和软件生态系统的高速发展,此类缺陷数量不断增加,其有别于项目内缺陷的特点导致已有的缺陷理解和分析结论以及检测修复等技术不再适用。然而当前软件生态系统和缺陷的相关工作仍缺少对该类缺陷的关注,尤其缺乏对其检测、诊断和修复过程的理解和特征总结,缺少适用于软件生态系统的跨项目缺陷检测和修复的支持技术与工具。因此,本文围绕GitHub软件生态系统中的跨项目缺陷理解和分析技术展开研究。具体而言,本文的第一项工作关注程序员处理跨项目缺陷时的应对措施,着重研究跨项目缺陷带来的两个难点:跨项目缺陷的根本原因追踪和多项目开发者协作,探索程序员在面对这两个难点时的惯常行为,并获取程序员处理跨项目缺陷时的技术与工具需求,用以启发后续工作并提供实证支持;然后,根据实证分析中获得的开发者需求,分别为提高跨项目缺陷修复质量和检测潜在跨项目缺陷设计相应的方法和工具。因而,本文的第二项工作是识别给定跨项目缺陷所影响的下游模块(方法或类)名单,以帮助开发者理解缺陷的影响范围和严重程度,从而与相应下游开发者沟通,提供令上下游满意的缺陷修复补丁;本文的第三项工作是设计适用于GitHub软件生态系统的跨项目回归测试框架,其目的是对一次上游代码修改挑选相关的下游测试用例以补充上游测试集,从而检测潜在的跨项目缺陷。本文的主要贡献总结如下:(1)为深入理解程序员如何应对跨项目缺陷,本文对其特有的表现形式——跨项目关联缺陷进行实证研究。跨项目关联缺陷是指报告到两个不同项目中具有因果关系的一对缺陷。该实证研究具体调查三个研究问题:1)跨项目缺陷根本原因追踪的难度;2)有助于跨项目根源追踪的因素;3)下游开发者配合上游修复的惯常行为。通过对GitHub上Python科学计算生态系统中的271对跨项目关联缺陷报告进行人工审查以及对116位程序员的在线问卷调查,本文总结了一系列开发者在跨项目缺陷诊断和修复过程中的惯常行为,并为缺陷追踪系统等工具的设计提出建议。(2)为识别跨项目缺陷具体影响哪些下游模块,本文提出了一个生态系统范围的跨项目缺陷影响分析方法。对于给定跨项目缺陷,已知其上游出错方法和缺陷触发条件,本方法首先通过生态系统范围的调用依赖分析识别使用该出错方法的下游候选模块(方法或类),然后通过符号分析将每个候选模块入口处到上游方法调用点的路径编码成符号约束,通过约束求解判断是否存在满足缺陷触发条件的下游模块输入。如存在,则该模块受给定缺陷影响。为验证该方法的有效性,本文实现了一个工具原型并在31个跨项目缺陷上进行实验。实验结果表明,该方法可以从25490个候选下游模块中共计找出1132个受这31个缺陷影响的模块;对于每个缺陷,平均剔除了 66.5%的不受影响模块,有效地减少了程序员的代码审查工作量。(3)为进行跨项目回归测试、检测潜在跨项目缺陷,本文提出了一个适用于GitHub软件生态系统的测试框架并设计了两步跨项目测试选择策略。测试框架由三部分组成:1)中心仓库,用以处理和存放细粒度的生态系统依赖网络、测试执行轨迹以及历史构建日志;2)两步测试挑选组件,用以挑选与一次上游修改最相关的下游项目和具体的下游测试用例;3)测试执行和反馈组件,用以生成特定于具体项目的测试脚本、执行测试并将结果通知给相关项目。两步跨项目测试选择策略首先基于项目在生态网络中的中心性和对上游被修改模块的依赖强度选择最重要的相关下游项目,然后提出基于上游方法覆盖率和基于上游文件中心性的测试选择策略,在下游项目中挑选能够补充上游测试集的测试文件。本文实现了一个GitHub集成工具,并在133个Python科学计算类项目上进行评估。对100次上游项目代码提交进行回归测试的结果表明,该测试框架能够有效地选择出可以补充上游测试集的下游测试用例。本文的研究结果有助于深入理解GitHub软件生态系统中的跨项目缺陷,所提出的支持技术与工具也能有效地帮助检测和修复此类缺陷,保障软件生态系统的健康发展。
其他文献
随着跨境电子商务的不断发展,作为其发展工具的跨境电商平台相继出现,并且在平台的成长过程中,低价竞争的趋势也愈演愈烈。阿里巴巴旗下的跨境出口电商平台——"速卖通"2016
企业的目标是追求价值最大化,在生产经营中不断创造价值。而现金流是企业生产活动的血液,也是企业经营成果的综合体现,是企业进行价值创造的源泉。如果企业拥有健康的现金流,
<正>多发性硬化(multiple sclerosis,MS)是一种好发于中青年的中枢神经系统炎性脱髓鞘疾病,以时间和空间多发为特征,可出现感觉、运动、视觉、认知、括约肌功能等多种功能障碍,
山西票号和英格兰银行作为各自国家金融革命的代表机构,其发展轨迹和路径选择深受本国制度环境影响。对此本文拟分六部分就中英两国政府层面的正式制度供给对两家金融机构发
光子晶体是一种排列有序的微结构,因介电常数在空间的周期性变化可以控制光的传播。液晶的物理性能对外界条件极其敏感且不同相态间的转变也会使其光学性质发生变化。将液晶
为了有效地净化空气中的VOCs(挥发性有机物),深圳市某公司提出了一套由吸收法、芬顿法以及光催化法组成的联用工艺,并制作了工程样机。本研究主要以丙酮和甲苯两种典型的水溶性
近年来,兽药行业不但面临着大环境激烈的竞争,而且经受着行业本身的改变。首先,兽药行业的养殖模式在改变,由农户自给自足的散养方式向规模化、专业化养殖方式的转变;其次,兽
目的探讨醒后卒中的临床特点及早期预后情况。方法前瞻性、连续性纳入2017年4月至9月所有入住重庆医科大学附属第一医院神经内科发病3 d以内的274例急性缺血性卒中患者,根据
目的1.观察减重手术患者术后体重、糖脂代谢变化现状;2.分析腹腔镜胃旁路术(laparoscopic Roux-en-Y gastric bypass surgery,LRYGB)和胃袖状切除术(laparoscopic gastrectom
随着我国经济的不断发展,我国建筑行业得到了突飞猛进的发展。与此同时,公共建筑节能控制已经引起了社会的广泛关注。公共建筑供热节能是一项系统化、综合化的工程,应该采用