【文献阅读】开源应用程序中软件工件的自动分类(一)摘要介绍结论

(word上的格式复制粘贴过来都没有了,有些是段落的总结不是正文翻译)

摘要

随着开源软件发展的日益普及,软件工件的数量有了巨大的增长,使人们能够深入了解如何构建软件。研究人员总是在寻找大规模的、有代表性的软件工件,以生成新型现有技术的系统的、无偏差的验证。例如,在软件需求追踪的领域中,研究人员经常使用多类型工件的软件应用程序,例如软件的需求、系统元素、验证或以开发和评估它们的追踪分析技术的任务。然而,人工来识别丰富的软件工件,劳动强度是非常大的。在这项工作中,我们首先进行了大规模的研究,以确定哪些类型的软件工件是由不同粒度级别的(大范围)开源项目产生的。然后,我们提出了一种基于机器学习技术的自动化方法来识别各种类型的软件工件。通过一系列实验,我们报告并比较了这些算法应用于软件工件时的性能。

  1. 提出机器学习的算法2.评价了性能表现

 

工件是软件开发过程中产生的许多有形 副产品之一。一些工件(例如,用例、类图和其他统一建模语言(UML)模型、需求和设计文档)帮助描述软件的功能、体系结构和设计。其他工件与开发过程本身有关——比如项目计划、业务用例和风险评估。

本文来自illfm的CSDN博客,全文地址请点击:https://blog.csdn.net/illfm/article/details/22515891?utm_source=copy

 

1.介绍

以数据为主的以往研究在很大程度上,得益于,这些用于(开发新研究技术和评估以及比较现有技术)的数据集,的存在。以数据为中心的研究的一个例子是自动化的软件需求追踪,在这一领域,需要训练数据集,来训练基于机器学习(ML)技术的跟踪算法。研究人员使用功能和非功能需求的标签数据集来训练分类技术,在质量属性和需求文档之间,设计模型和源代码之间创建可追溯性链接[7,35,38,39,46]。需要验证数据集来调整跟踪算法的参数[6,30,35]。使用测试数据集测试跟踪算法针对不可见数据的性能。通过在需求和源代码之间建立联系,研究者使用数据集来评估基于信息检索(Information Retrieval, IR)的追踪算法的准确性[11,12,21,46,53]。在其他领域,研究人员使用设计文档为不断发展的软件系统[16]创建一个ground truth(正确的t标记/真实的有效值/机器学习领域名词)软件架构模型。

 

  1. 软件需求追踪算法中,数据集的重要性1.验证数据集调参设计算法2.测试数据集测试追踪算法在不可视数据上的表现3.最后还要用数据集评估准确性。2.其他算法中,需要设计文档来创建ground truth软件构架模型。

 

获得这样的软件开发数据集是软件工程领域研究人员最常报告的障碍之一[28,44]。近年来,随着开源软件开发方法的进步和普及,研究人员从公开可用的源代码库[36]中获益。除了源代码和问题跟踪实体之外,软件构件还可以提供对软件系统的深入了解,并促进知识共享和信息重用。然而,人工识别特定开源项目中可用的或缺少的工件类型可能是一项耗费大量劳动的任务。以前的研究表明,从开源项目中获得这样的工件是非常重要的,而且研究人员缺乏适当的自动支持,来识别、过滤和浏览这些工件[57]。更重要的是,我们目前对开源项目中可用的各种类型的软件构件缺乏深入的了解。常见的假设是,开源项目经常缺少例如需求和设计文档之类的软件构件。

 

1.识别软件工件是重要的,人工识别耗力,对此也缺乏了解。2.假设,开源项目经常缺少的软件工件是需求和设计文档。

 

在本文中,我们的目标是通过研究这个共同的假设来提高对开源项目的理解,从而回答两个激励问题:

  1. 在开源软件开发过程中创建了哪些类型的工件?

为此,我们进行了一项大规模的实证研究,涉及383个从GitHub上随机抽取的开源软件项目。研究这些项目是为了获得对用于开源项目的这些工件的基于经验性的理解。然后,我们使用提出的自动方法对这个开源项目示例中包含的所有工件进行分类。结果显示,开源软件项目确实经常缺少文档相关的工件,这只占软件工件总数的6.12%。尽管与文档相关的工件数量很少,但是14.88%的项目包含设计文档或需求文档,这意味着对于乐于获得这些工件的研究人员来说,开源项目可能是一个有价值的资源。

1.开源项目经常缺少文档相关工件2.设计文档和需求文档对开源项目的价值性非常高。

 

  1. 我们能自动检测和分类  开源软件 工件吗?

使用启发式方法,我们将工件分为两类:一类是仅根据文件名和扩展名进行分类的工件(例如bat文件),另一类是需要深入分析才能进行分类的工件(例如文本文档)。我们手工分类来自第二组工件的样本并构造一个oracle(数据库)。在手工分类期间,我们识别与工件分类相关的特性。在此之后,我们将探索用于软件工件分类的各种ML算法。接下来,我们报告了我们的方法在验证和测试数据集上的性能,最后,我们对383个开源项目中的所有工件进行了分类,并报告了不同类型工件的所占比例。

  1. 人工标注文本文档提取特征2.探究学习算法并评价性能3.分类加报告不同工件的比例。

结果表明,我们可以成功地将ML算法应用到文本文档中,对软件构件进行分类。使用集成技术,例如投票,我们能够结合几种在软件工件的独特类别上表现良好的算法的预测能力,从而创建一个分类器,能在所有类别上都具有改进的性能。我们的模型使用10倍交叉验证对手工创建的oracle进行评估时达到了85%的精度和82%的召回率。根据验证数据集进行参数调优后,应用于不可见数据的测试数据集时,我们的方法达到76%的精确度和75%的召回率。

 

这项工作的贡献如下:

1.我们对开源软件开发过程中创建的工件类型提供了深入的了解。尽管文档相关 工件只占开源软件项目总软件工件的6.12%,但是14.88%的项目包含设计文档或需求文档,这对于需要这些文档的实证研究来说是很有价值的资源。

2.我们提出了一种新的方法,利用启发式和不同的ML分类器  自动分类  软件工件。

3.我们提供了一个复制包(replication package)[31],其中包括(i)关于抽取的项目的信息,(ii)一个oracle 数据库,包括208个手动分类的文档相关软件工件,用于训练、验证和测试所提出的方法,以及(iii) ML算法使用的特征列表。

 

论文结构:第2节提供了关于研究设计和自动工件分类方法的详细信息。第3节展示了结果,第4节讨论了相关文献。第5节讨论了对有效性的威胁(不利因素),总结了本文并列出了今后工作的方向。

 

6.结论与未来工作

本文提出了一种自动分类 开源软件工件 的方法。并对所提出的方法进行了严格的评估,结果表明使用集成学习的ML算法组合优于单独的分类技术。我们的方法应用于383个随机选择的开源项目,来调查在开源项目中生成的软件构件 类型。这项实证研究的结果表明,除了源代码之外,大约14.88%的开源项目包含其他形式的工件,如需求和设计文档,这是软件工程研究者感兴趣的。

正在进行的工作包括为GitHub构建一个附加组件,以识别和可视化哪些工件已经就位,哪些工件在特定项目中缺失。我们设想附加组件可以用于评估项目的质量,并可以判定项目的质量是否满足某些文档标准。此外,我们还将研究使用信息检索方法来自动对发行说明(release Notes)和需求文档工件进行特征提取,并构建一个更大的oracle(一种可以管理的数据库)来提高分类器的性能。最后,我们计划将这种方法扩展到其他形式的工件,并探索多标签文本分类技术。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值