Skip to main content
QUICK REVIEW

[论文解读] A Systematic Literature Review on the Use of Deep Learning in Software Engineering Research

Cody Watson, Nathan Cooper|arXiv (Cornell University)|Sep 14, 2020
Software Engineering Research被引用 6
一句话总结

本篇系统性文献回顾分析了128篇关于软件工程中的深度学习(DL4SE)的研究论文,识别出23项软件工程任务中关键的模式、挑战与最佳实践。通过围绕学习组件的结构化分析,本研究提供了一份全面的研究路线图,突出展示了成功的应用案例、可重现性方面的担忧,以及DL4SE未来的科研方向。

ABSTRACT

An increasingly popular set of techniques adopted by software engineering (SE) researchers to automate development tasks are those rooted in the concept of Deep Learning (DL). The popularity of such techniques largely stems from their automated feature engineering capabilities, which aid in modeling software artifacts. However, due to the rapid pace at which DL techniques have been adopted, it is difficult to distill the current successes, failures, and opportunities of the current research landscape. In an effort to bring clarity to this crosscutting area of work, from its modern inception to the present, this paper presents a systematic literature review of research at the intersection of SE & DL. The review canvases work appearing in the most prominent SE and DL conferences and journals and spans 128 papers across 23 unique SE tasks. We center our analysis around the components of learning, a set of principles that govern the application of machine learning techniques (ML) to a given problem domain, discussing several aspects of the surveyed work at a granular level. The end result of our analysis is a research roadmap that both delineates the foundations of DL techniques applied to SE research, and highlights likely areas of fertile exploration for the future.

研究动机与目标

  • 映射当前深度学习在软件工程研究中应用的现状。
  • 识别在软件工程任务中应用深度学习时的重复性模式、挑战与最佳实践。
  • 通过分析128项研究中的学习组件,为未来工作提供研究路线图。
  • 评估DL4SE文献中可重现性与可复制性方面的问题。
  • 区分DL4SE与新兴的“为深度学习而构建的软件工程”(SE4DL)领域,并说明为何本综述聚焦于DL4SE。

提出的方法

  • 遵循Kitchenham等人提出的软件工程研究指南,开展系统性文献回顾(SLR)。
  • 在顶级SE与DL会议与期刊中使用精心筛选的检索字符串进行搜索,并辅以滚雪球法与手动收集论文。
  • 应用预定义的纳入/排除标准,从23项不同的SE任务中筛选出128项相关的主要研究。
  • 在14个维度上提取详细属性,包括数据类型、预处理方法、网络架构、损失函数、超参数调优及评估指标。
  • 进行探索性数据分析与相关性分析,以揭示DL组件与性能之间的关系。
  • 将研究发现综合为一份研究路线图,识别出潜在陷阱、最佳实践及可操作的未来研究方向。

实验结果

研究问题

  • RQ1哪些软件工程任务最常通过深度学习来解决?
  • RQ2在SE研究中,最常使用的深度学习架构与数据类型是什么?
  • RQ3研究人员在DL4SE研究中如何处理超参数调优、过拟合与模型评估?
  • RQ4DL4SE文献中可重现性与可复制性方面的主要挑战是什么?
  • RQ5在为SE任务设计DL模型时,会考虑哪些原则(例如奥卡姆剃刀原理)?

主要发现

  • 最常被研究的SE任务包括缺陷预测、代码建议、自动程序修复与恶意软件检测。
  • 卷积神经网络(CNNs)与循环神经网络(RNNs),特别是长短期记忆网络(LSTMs),是最常使用的深度学习架构。
  • 大量研究使用代码与文本数据(如源代码、注释、文档)作为输入,通常需要进行分词与嵌入处理。
  • 仅有32%的研究报告了使用基线模型进行比较,这引发了对其声称性能提升有效性和可重现性的担忧。
  • 交叉熵损失与均方误差是最常使用的损失函数,而焦点损失(focal loss)在类别不平衡的缺陷预测任务中逐渐兴起。
  • 发现使用恰当的验证策略与模型泛化能力之间存在显著相关性,表明各研究在方法论严谨性方面存在显著差异。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。