多标签软件行为学习

多标签软件行为学习

论文:Feng, Y., & Chen, Z. (2012). Multi-label software behavior learning. International Conference on Software Engineering (Vol.8543, pp.1305-1308). IEEE.

https://ieeexplore.ieee.org/document/6227093/

论文摘要:软件行为学习是软件工程中的一项重要任务。软件行为通常可以表示程序的执行轨迹。类似的程序执行会有类似的行为,即,揭示相同的错误。单标签学习已被用于将单个标签(故障)分配给现有工作中的失败执行。但是,一个失败的执行可能是由几个故障同时引起的。因此,在实践中它需要分配多个标签来支持软件工程任务。在本文中,我们提出了多标签软件行为学习。一个经典的多标签学习算法ML-KNN被引入以实现对软件行为的全面学习。我们对两个工业程序:Flex和Grep进行了初步实验。实验结果表明,多标签学习可以产生比单标签学习更精确,更完整的结果。

技术介绍:

软件行为学习是软件开发生命周期中最重要的任务之一。软件行为通常表示一个程序的执行轨迹,然后相似的执行轨迹被识别并分组到一个类别中。这个分组可以帮助理解软件行为并协助软件工程任务。许多基于软件行为学习的应用已经被研究,包括测试用例选择,失败报告分类,失败预测和调试。随着许多现代软件产品的开发,大量的失败执行信息可以被自动收集并报告给开发人员。但失败报告的多样性、复杂性等问题给开发人员带来了巨大的挑战。因此实现失败报告的自动分组来简化工作是必要的。

受到单标签学习的限制,现有的研究都假设失败的执行只对应于一个故障,即,失败报告只分配一个故障标签。强大的假设可以简化软件行为学习的解决方案。然而,这种简化增加了软件行为学习不完全甚至错误的风险,最终会影响软件工程任务。在实践中,失败的执行可能由于几个故障同时造成的。 也就是说,失败的执行应该被分配多个标签(故障)。多标签学习是一种非平凡的泛化方法,它能产生完整的学习结果,是机器学习中的一个热门话题。本文引入了一种著名的多标签学习算法ML-KNN,并使用KNN和ML-KNN分别进行单标签和多标签的软件行为学习,评价两种学习方法的能力。

多标签软件行为学习

多标签软件行为学习

图1 软件行为学习框架

多标签软件行为学习

为了评估单标签和多标签的软件行为学习能力,本文采用了机器学习中广泛使用的评价指标:召回率、精确度和F1值。在两个广泛使用的工业程序(Flex和Grep)中,多标签学习可以显著提高软件行为学习的有效性。

单标签软件行为学习也在试着为失败报告分配故障标签,然而当失败执行由多个故障同时引起时,单标签学习能会产生一些不完整,甚至错误的学习结果。第3.3节中的结果证明,在失败报告分类的任务中,多标签软件行为学习比单标签学习要好。多标签学习可以显着改善软件行为学习方面的F值,且改进具有显著性,有统计学意义。因此,多标签软件行为学习可以更有效地帮助软件工程任务。

多标签软件行为学习

图2 单标签和多标签软件行为学习在工业程序中flex和grep中的F值。

“F*”和“G*”分别表示Flex和Grep的版本。“S”和“M”分别表示单标签学习和多标签学习的结果

多标签软件行为学习

表1 单尾t检验判断多标签软件行为学习的F值和单标签的F值相比是否显著性提高,

其中所有的p值都比标准值0.05小得多,即,改进具有显著性

总而言之,本研究做出了以下贡献:

  1. 我们首先介绍了软件行为学习中的多标签学习任务。 接着将其形式化为一个多标签模型,并将一个经典的多标签学习算法ML-KNN引入到解决方案中。
  2. 我们在两个大型工业程序中进行了初步实验,分析了有关软件工程中单标签学习的风险。 实验结果表明,多标签软件行为学习总体上优于单标签学习。

来源:慕测科技

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年10月3日
下一篇 2018年10月3日

相关推荐