Machine learning(ML)techniques and algorithms have been successfully and widely used in various areas including software engineering tasks.Like other software projects,bugs are also common in ML projects and libraries...Machine learning(ML)techniques and algorithms have been successfully and widely used in various areas including software engineering tasks.Like other software projects,bugs are also common in ML projects and libraries.In order to more deeply understand the features related to bug fixing in ML projects,we conduct an empirical study with 939 bugs from five ML projects by manually examining the bug categories,fixing patterns,fixing scale,fixing duration,and types of maintenance.The results show that(1)there are commonly seven types of bugs in ML programs;(2)twelve fixing patterns are typically used to fix the bugs in ML programs;(3)68.80%of the patches belong to micro-scale-fix and small-scale-fix;(4)66.77%of the bugs in ML programs can be fixed within one month;(5)45.90%of the bug fixes belong to corrective activity from the perspective of software maintenance.Moreover,we perform a questionnaire survey and send them to developers or users of ML projects to validate the results in our empirical study.The results of our empirical study are basically consistent with the feedback from developers.The findings from the empirical study provide useful guidance and insights for developers and users to effectively detect and fix bugs in MLprojects.展开更多
众包是一种应用群体智慧的分布式问题求解机制,目前广泛存在于以人工智力活动为基础的互联网应用场景中,利用互联网上大量用户的群体协作来解决单人无法解决的复杂问题。众包协作机制对开源领域的发展起到了很大的作用。以开源软件的开...众包是一种应用群体智慧的分布式问题求解机制,目前广泛存在于以人工智力活动为基础的互联网应用场景中,利用互联网上大量用户的群体协作来解决单人无法解决的复杂问题。众包协作机制对开源领域的发展起到了很大的作用。以开源软件的开发维护过程为例,参与人员通过特定平台共同完成代码编写、bug修复等关键任务。与传统业务过程管理(Business Process Management,BPM)不同,众包场景下的协作流程存在流程结构无法预先确定、协作参与者数量无法预知、协作时间与结果无法提前预测等挑战,这给众包协作的效率与质量控制带来了极大的困难。针对众包协作过程中多个参与者按时间次序产生的一系列协作行为(体现为自然语言形式的文本),利用自然语言处理和人工智能等方法,提出了众包协作过程恢复算法,并以开源软件开发领域bug修复过程中的人员合作为案例进行了实证研究,尝试用3种方法对协作流程进行恢复,分别是文本近似度、关键词汇匹配以及神经网络意图理解恢复算法;然后定量对比了各个流程恢复算法的准确度,得出应用关键词匹配算法进行协作流程恢复的准确度最高、效果最好的结论;最后实现将需要分析的协作流程进行协作流程恢复以及可视化的工作。该研究有助于众包流程的协调者(例如开源项目管理者)更直观地理解众包协作中的问题求解过程,从中发现协作的典型模式,从而可为新的众包任务的协作过程的性质作出准确预测。展开更多
缺陷追踪是软件项目管理的一个重要环节,是保证现代大规模开源软件开发顺利进行并持续提高软件质量的必要手段.目前,大部分开源软件都使用开放的缺陷跟踪系统进行软件缺陷的管理.它允许用户向开发者提交系统故障(即defect类型缺陷)以及...缺陷追踪是软件项目管理的一个重要环节,是保证现代大规模开源软件开发顺利进行并持续提高软件质量的必要手段.目前,大部分开源软件都使用开放的缺陷跟踪系统进行软件缺陷的管理.它允许用户向开发者提交系统故障(即defect类型缺陷)以及系统改进建议(即enhancement类型缺陷),但是这些用户的反馈所起的作用尚未得到充分研究.针对这一问题,对Firefox的缺陷跟踪系统进行实证研究,收集了2018年和2019年提交的19474份Firefox Desktop以及3057份Firefox for Android缺陷报告.在此基础上,对比分析了普通用户和核心开发者提交的缺陷在数量、严重性、组件分布、修复率、修复速度以及修复者上的差别,并调查了缺陷报告的撰写质量与缺陷处理结果和修复时间的关系.主要发现包括:(1)当前缺陷追踪系统中普通用户人数众多,但参与程度较浅,86%的用户只提交过一个缺陷,其中,高严重等级的缺陷不超过3%;(2)普通用户提交的缺陷主要分布在和用户交互相关的UI组件上(例如地址栏、音频/视频等),然而还有43%的缺陷由于缺乏充分描述信息而难以准确地定位到具体的关联组件;(3)在缺陷处理结果上,由于查重系统以及缺陷填报系统在设计上过于简单,致使普通用户提交的大量缺陷被处理为“无用”缺陷,缺陷修复率低于10%;(4)在缺陷修复流程上,由于普通用户难以准确、充分地描述缺陷,导致系统对其重视程度不足,普通用户提交缺陷的处理流程也比核心开发者提交的复杂,平均需要多花至少8天的时间进行修复.上述研究结果揭示了当前缺陷追踪系统在用户参与激励机制、缺陷自动查重以及缺陷报告填写智能辅助等方面的不足,能够为缺陷跟踪系统开发者和管理者改进系统、提高普通用户对开源软件的贡献提供参考.展开更多
缺陷修复时间预测能够帮助开源社区管理者精确地估计缺陷修复工作量,实现缺陷修复人员的优化分配。缺陷追踪库Bugzilla是开源社区缺陷修复数据的主要来源。在实际使用中,缺陷追踪库除被用作记录缺陷之外,还被用于记录用户对软件产品不...缺陷修复时间预测能够帮助开源社区管理者精确地估计缺陷修复工作量,实现缺陷修复人员的优化分配。缺陷追踪库Bugzilla是开源社区缺陷修复数据的主要来源。在实际使用中,缺陷追踪库除被用作记录缺陷之外,还被用于记录用户对软件产品不足之处的投诉,以及软件功能相关讨论。缺陷追踪库的混合使用给缺陷修复时间预测带来系统性偏差。为降低系统性偏差对预测结果的影响,给出基于模糊关联规则挖掘FARM(Fuzzy Association Rules Mining)降低系统性偏差的缺陷修复时间预测方法。该方法通过分析历史数据生成模糊关联规则来过滤系统性偏差。实验结果显示经过该方法处理后的新预测模型结果优于原有模型。展开更多
基金This work was supported partially by the National Natural Science Foundation of China(Grant Nos.61872312,61972335,61472344,61611540347,61402396 and 61662021)partially by the Open Funds of State Key Laboratory for Novel Software Technology of Nanjing University(KFKT2020B15 and KFKT2020B16)+3 种基金partially by the Jiangsu“333”Project,partially by the Six Talent Peaks Project in Jiangsu Province(RJFW-053)partially by the Natural Science Foundation of Jiangsu(BK20181353)partially by the Yangzhou city-Yangzhou University Science and Technology Cooperation Fund Project(YZU201803),by the CERNET Innovation Project(NGII20180607)partially by the Yangzhou University Top-level Talents Support Program(2019).
文摘Machine learning(ML)techniques and algorithms have been successfully and widely used in various areas including software engineering tasks.Like other software projects,bugs are also common in ML projects and libraries.In order to more deeply understand the features related to bug fixing in ML projects,we conduct an empirical study with 939 bugs from five ML projects by manually examining the bug categories,fixing patterns,fixing scale,fixing duration,and types of maintenance.The results show that(1)there are commonly seven types of bugs in ML programs;(2)twelve fixing patterns are typically used to fix the bugs in ML programs;(3)68.80%of the patches belong to micro-scale-fix and small-scale-fix;(4)66.77%of the bugs in ML programs can be fixed within one month;(5)45.90%of the bug fixes belong to corrective activity from the perspective of software maintenance.Moreover,we perform a questionnaire survey and send them to developers or users of ML projects to validate the results in our empirical study.The results of our empirical study are basically consistent with the feedback from developers.The findings from the empirical study provide useful guidance and insights for developers and users to effectively detect and fix bugs in MLprojects.
文摘众包是一种应用群体智慧的分布式问题求解机制,目前广泛存在于以人工智力活动为基础的互联网应用场景中,利用互联网上大量用户的群体协作来解决单人无法解决的复杂问题。众包协作机制对开源领域的发展起到了很大的作用。以开源软件的开发维护过程为例,参与人员通过特定平台共同完成代码编写、bug修复等关键任务。与传统业务过程管理(Business Process Management,BPM)不同,众包场景下的协作流程存在流程结构无法预先确定、协作参与者数量无法预知、协作时间与结果无法提前预测等挑战,这给众包协作的效率与质量控制带来了极大的困难。针对众包协作过程中多个参与者按时间次序产生的一系列协作行为(体现为自然语言形式的文本),利用自然语言处理和人工智能等方法,提出了众包协作过程恢复算法,并以开源软件开发领域bug修复过程中的人员合作为案例进行了实证研究,尝试用3种方法对协作流程进行恢复,分别是文本近似度、关键词汇匹配以及神经网络意图理解恢复算法;然后定量对比了各个流程恢复算法的准确度,得出应用关键词匹配算法进行协作流程恢复的准确度最高、效果最好的结论;最后实现将需要分析的协作流程进行协作流程恢复以及可视化的工作。该研究有助于众包流程的协调者(例如开源项目管理者)更直观地理解众包协作中的问题求解过程,从中发现协作的典型模式,从而可为新的众包任务的协作过程的性质作出准确预测。
文摘缺陷追踪是软件项目管理的一个重要环节,是保证现代大规模开源软件开发顺利进行并持续提高软件质量的必要手段.目前,大部分开源软件都使用开放的缺陷跟踪系统进行软件缺陷的管理.它允许用户向开发者提交系统故障(即defect类型缺陷)以及系统改进建议(即enhancement类型缺陷),但是这些用户的反馈所起的作用尚未得到充分研究.针对这一问题,对Firefox的缺陷跟踪系统进行实证研究,收集了2018年和2019年提交的19474份Firefox Desktop以及3057份Firefox for Android缺陷报告.在此基础上,对比分析了普通用户和核心开发者提交的缺陷在数量、严重性、组件分布、修复率、修复速度以及修复者上的差别,并调查了缺陷报告的撰写质量与缺陷处理结果和修复时间的关系.主要发现包括:(1)当前缺陷追踪系统中普通用户人数众多,但参与程度较浅,86%的用户只提交过一个缺陷,其中,高严重等级的缺陷不超过3%;(2)普通用户提交的缺陷主要分布在和用户交互相关的UI组件上(例如地址栏、音频/视频等),然而还有43%的缺陷由于缺乏充分描述信息而难以准确地定位到具体的关联组件;(3)在缺陷处理结果上,由于查重系统以及缺陷填报系统在设计上过于简单,致使普通用户提交的大量缺陷被处理为“无用”缺陷,缺陷修复率低于10%;(4)在缺陷修复流程上,由于普通用户难以准确、充分地描述缺陷,导致系统对其重视程度不足,普通用户提交缺陷的处理流程也比核心开发者提交的复杂,平均需要多花至少8天的时间进行修复.上述研究结果揭示了当前缺陷追踪系统在用户参与激励机制、缺陷自动查重以及缺陷报告填写智能辅助等方面的不足,能够为缺陷跟踪系统开发者和管理者改进系统、提高普通用户对开源软件的贡献提供参考.
文摘缺陷修复时间预测能够帮助开源社区管理者精确地估计缺陷修复工作量,实现缺陷修复人员的优化分配。缺陷追踪库Bugzilla是开源社区缺陷修复数据的主要来源。在实际使用中,缺陷追踪库除被用作记录缺陷之外,还被用于记录用户对软件产品不足之处的投诉,以及软件功能相关讨论。缺陷追踪库的混合使用给缺陷修复时间预测带来系统性偏差。为降低系统性偏差对预测结果的影响,给出基于模糊关联规则挖掘FARM(Fuzzy Association Rules Mining)降低系统性偏差的缺陷修复时间预测方法。该方法通过分析历史数据生成模糊关联规则来过滤系统性偏差。实验结果显示经过该方法处理后的新预测模型结果优于原有模型。