[论文解读] Machine Learning for Software Engineering: A Systematic Mapping
本系统映射研究分析了227篇文献,对软件工程(SE)生命周期各阶段的机器学习(ML)应用进行分类,提出了一套全面的MLSE分类法。研究识别出关键的ML技术及其在需求工程、测试和缺陷预测等SE任务中的适用性,并指出了未来研究中尚未充分探索的领域。
Context: The software development industry is rapidly adopting machine learning for transitioning modern day software systems towards highly intelligent and self-learning systems. However, the full potential of machine learning for improving the software engineering life cycle itself is yet to be discovered, i.e., up to what extent machine learning can help reducing the effort/complexity of software engineering and improving the quality of resulting software systems. To date, no comprehensive study exists that explores the current state-of-the-art on the adoption of machine learning across software engineering life cycle stages. Objective: This article addresses the aforementioned problem and aims to present a state-of-the-art on the growing number of uses of machine learning in software engineering. Method: We conduct a systematic mapping study on applications of machine learning to software engineering following the standard guidelines and principles of empirical software engineering. Results: This study introduces a machine learning for software engineering (MLSE) taxonomy classifying the state-of-the-art machine learning techniques according to their applicability to various software engineering life cycle stages. Overall, 227 articles were rigorously selected and analyzed as a result of this study. Conclusion: From the selected articles, we explore a variety of aspects that should be helpful to academics and practitioners alike in understanding the potential of adopting machine learning techniques during software engineering projects.
研究动机与目标
- 为解决软件工程(SE)生命周期各阶段中机器学习(ML)应用缺乏全面概览的问题。
- 识别出在需求分析、缺陷预测和测试自动化等特定SE任务中最为有效的ML技术。
- 通过结构化的分类法,对ML在SE中的最新研究进展进行分类与组织。
- 通过突出未充分探索的领域和有前景的应用领域,为研究人员和实践者提供指导。
- 通过映射ML研究在SE各阶段的分布情况,为未来实证研究提供基础。
提出的方法
- 遵循实证软件工程指南,开展系统映射研究。
- 在学术数据库中执行多阶段搜索,使用预定义关键词及纳入/排除标准。
- 通过严格的筛选流程,基于与SE生命周期阶段中ML的相关性,选出227篇相关文献。
- 开发分类法,按其在特定SE阶段(如需求、设计、测试)的适用性对ML技术进行分类。
- 采用主题分析与定量分析相结合的方法,映射ML技术在SE活动中的分布情况。
- 通过作者间的迭代评审与共识达成,验证结果,确保方法论的严谨性。
实验结果
研究问题
- RQ1哪些软件工程生命周期阶段最频繁地应用机器学习技术?
- RQ2在SE中主要使用哪些类型的机器学习技术,它们在不同SE阶段如何被应用?
- RQ3在ML采用方面,研究格局在不同SE活动(如需求、测试、维护)中的分布如何?
- RQ4ML在SE中主要解决哪些问题领域,哪些领域尚未充分探索?
- RQ5基于当前研究趋势,将ML集成到SE流程中的主要挑战与机遇是什么?
主要发现
- SE中ML应用的大部分集中在测试、缺陷预测和需求工程,且在自动化测试用例生成和故障预测方面增长显著。
- 监督学习技术,如支持向量机(SVM)、随机森林和神经网络,是在SE应用中最广泛使用的ML方法。
- 大量研究聚焦于代码克隆检测、漏洞预测和工作量估算,表明对质量提升与成本效率改进有强烈兴趣。
- 系统映射显示,维护和架构设计是ML应用中尚未充分探索的领域,暗示具有巨大的研究潜力。
- 研究发现,深度学习在代码相似性检测和可利用性预测等复杂任务中的应用呈增长趋势。
- 所提出的MLSE分类法有效组织了现有研究,并为未来ML在SE中的研究提供了结构化参考。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。