[论文解读] A Survey on Deep Learning for Software Engineering
本综述对深度学习(DL)在软件工程(SE)中的应用进行了全面分析,回顾了2006年至今的142项研究。它对深度学习技术进行了分类,分析了模型训练与优化方法,并识别出深度学习在SE中的关键研究主题、挑战及未来方向,强调了可解释性、真实世界数据以及与传统方法对比评估的必要性。
In 2006, Geoffrey Hinton proposed the concept of training ''Deep Neural Networks (DNNs)'' and an improved model training method to break the bottleneck of neural network development. More recently, the introduction of AlphaGo in 2016 demonstrated the powerful learning ability of deep learning and its enormous potential. Deep learning has been increasingly used to develop state-of-the-art software engineering (SE) research tools due to its ability to boost performance for various SE tasks. There are many factors, e.g., deep learning model selection, internal structure differences, and model optimization techniques, that may have an impact on the performance of DNNs applied in SE. Few works to date focus on summarizing, classifying, and analyzing the application of deep learning techniques in SE. To fill this gap, we performed a survey to analyse the relevant studies published since 2006. We first provide an example to illustrate how deep learning techniques are used in SE. We then summarize and classify different deep learning techniques used in SE. We analyzed key optimization technologies used in these deep learning models, and finally describe a range of key research topics using DNNs in SE. Based on our findings, we present a set of current challenges remaining to be investigated and outline a proposed research road map highlighting key opportunities for future work.
研究动机与目标
- 系统性地回顾并分类自2006年以来深度学习在软件工程中的应用。
- 分析用于SE任务的深度神经网络(DNN)的设计、训练与优化方法。
- 识别深度学习在SE不同活动中的关键研究主题与趋势。
- 突出当前挑战,如可解释性不足、对公开数据集的依赖以及在工业数据上评估不足。
- 提出未来在SE中应用深度学习的研究路线图,重点关注实际适用性以及与传统技术的性能对比。
提出的方法
- 对2006年至今在21个主要SE期刊与会议(会议、期刊)发表的142项原始研究进行了系统性文献综述(SLR)。
- 根据架构(如RNN、CNN、FNN)、模型选择策略与优化技术对深度学习技术进行分类。
- 分析基于深度学习的SE工具在数据收集、预处理、模型训练与评估方面的实践方法。
- 将深度学习应用映射至6类SE活动与23项具体SE任务,如缺陷预测、代码生成与测试用例生成。
- 通过主题分析识别出模型可解释性、数据依赖性与真实世界验证方面的重复性挑战。
- 基于识别出的研究空白,提出研究路线图,包括对工业数据、可解释人工智能以及与传统SE技术的实证比较的迫切需求。
实验结果
研究问题
- RQ1在软件工程研究中,哪些深度学习架构与技术被最广泛使用?
- RQ2在SE应用中,深度神经网络是如何训练与优化的?其关键数据与评估实践是什么?
- RQ3哪些具体的软件工程任务已通过深度学习解决?它们在SE活动中的分布情况如何?
- RQ4在将深度学习应用于真实世界SE问题时,存在哪些主要挑战与局限性?
- RQ5在SE任务中,深度学习模型与传统机器学习或基于规则的方法相比,性能表现如何?
主要发现
- RNN、CNN与前馈神经网络(FNN)是SE中使用最广泛的三种深度学习架构,142项研究共识别出30种不同的DNN。
- 仅有4%的研究使用工业数据集进行训练与评估,表明学术研究与真实世界SE实践之间存在显著差距。
- 多数研究依赖公开的开源数据集,尤其是在代码克隆检测与缺陷预测领域,这引发了对数据代表性与泛化能力的担忧。
- 深度神经网络的“黑箱”特性限制了其在SE中的应用,因为缺乏可解释性会阻碍软件工程师的信任与调试能力。
- SE领域中缺乏深度学习与传统机器学习技术之间的实证比较,导致难以判断DL是否真正带来性能优势。
- 未来研究应优先关注可解释人工智能、数据高效学习(如元学习),以及在工业数据上的验证,以提升实际应用的相关性。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。