Fault-insertion and fault-fixing behavioural patterns in Apache Software Foundation Projects

Fault-insertion and fault-fixing behavioural patterns in Apache Software Foundation Projects
复制标题

DOI:
10.1016/j.infsof.2023.107187
复制
发表时间:
2023-02
期刊:
Inf. Softw. Technol.
影响因子:
--
通讯作者:
Marco Ortu;Giuseppe Destefanis;T. Hall;David Bowes
Marco Ortu;Giuseppe Destefanis;T. Hall;David Bowes
中科院分区:
其他
文献类型:
--
作者:
Marco Ortu;Giuseppe Destefanis;T. Hall;David Bowes

文献摘要

被引文献

相似文献

背景开发人员在编码时不可避免地会犯人为错误。这些错误可能会导致代码错误,其中一些错误可能会导致系统故障。减少开发人员插入的错误并修复任何漏掉的错误是很重要的。目的调查开发人员的错误插入和修复活动。我们识别插入和修复错误的开发人员,询问代码主题专家插入的错误是否更少,专家修复的错误是否更多,以及插入和修复的模式是否随着时间的推移而变化。方法我们使用潜在狄利克雷分配(LDA)、网络分析和主题建模对12个APACHE项目的开发人员活动进行基于时间的分析。我们还构建了三个描述和模拟开发人员错误引入和修复行为的模型(使用Petri网、马尔可夫链和Hawkes过程)。结果表明:我们分析的大多数项目都有开发人员主导错误的插入和修复;具有代码主题专业知识的开发人员较少插入错误;不同的项目随着时间的推移有不同的错误插入和修复模式。结论我们建议项目识别开发人员的代码主题专业知识,并使用专业知识信息来指导项目工作的分配。
BackgroundDevelopers inevitably make human errors while coding. These errors can lead to faults in code, some of which may result in system failures. It is important to reduce the faults inserted by developers as well as fix any that slip through.AimTo investigate the fault insertion and fault fixing activities of developers. We identify developers who insert and fix faults, ask whether code topic ‘experts’ insert fewer faults, and experts fix more faults and whether patterns of insertion and fixing change over time.MethodsWe perform a time-based analysis of developer activity on twelve Apache projects using Latent Dirichlet Allocation (LDA), Network Analysis and Topic Modelling. We also build three models (using Petri-net, Markov Chain and Hawkes Processes) which describe and simulate developers’ bug-introduction and fixing behaviour.ResultsWe show that: the majority of the projects we analysed have developers who dominate in the insertion and fixing of faults; Faults are less likely to be inserted by developers with code topic expertise; Different projects have different patterns of fault inserting and fixing over time.ConclusionsWe recommend that projects identify the code topic expertise of developers and use expertise information to inform the assignment of project work.