Skip to main content
QUICK REVIEW

[论文解读] Software Engineers vs. Machine Learning Algorithms: An Empirical Study Assessing Performance and Reuse Tasks.

Nathalia Nascimento, Carlos Lucena|arXiv (Cornell University)|Feb 4, 2018
Big Data and Business Intelligence参考文献 81被引用 3
一句话总结

本文通过实证比较了软件工程师与机器学习(ML)算法在合成自主路灯应用控制结构的性能与重用任务中的表现。结果表明,ML算法在能效与安全性方面优于工程师,而工程师在代码重用与适应性方面表现更优,为优化人机协同的软件工程工作流提供了依据。

ABSTRACT

Several papers have recently contained reports on applying machine learning (ML) to the automation of software engineering (SE) tasks, such as project management, modeling and development. However, there appear to be no approaches comparing how software engineers fare against machine-learning algorithms as applied to specific software development tasks. Such a comparison is essential to gain insight into which tasks are better performed by humans and which by machine learning and how cooperative work or human-in-the-loop processes can be implemented more effectively. In this paper, we present an empirical study that compares how software engineers and machine-learning algorithms perform and reuse tasks. The empirical study involves the synthesis of the control structure of an autonomous streetlight application. Our approach consists of four steps. First, we solved the problem using machine learning to determine specific performance and reuse tasks. Second, we asked software engineers with different domain knowledge levels to provide a solution to the same tasks. Third, we compared how software engineers fare against machine-learning algorithms when accomplishing the performance and reuse tasks based on criteria such as energy consumption and safety. Finally, we analyzed the results to understand which tasks are better performed by either humans or algorithms so that they can work together more effectively. Such an understanding and the resulting human-in-the-loop approaches, which take into account the strengths and weaknesses of humans and machine-learning algorithms, are fundamental not only to provide a basis for cooperative work in support of software engineering, but also, in other areas.

研究动机与目标

  • 通过实证评估软件工程师与ML算法在执行和重用软件工程任务解决方案方面的表现差异。
  • 识别在嵌入式系统开发背景下,哪些任务更适合由人类工程师而非ML算法完成。
  • 通过理解人类与ML在软件工程中互补的优势,为有效的人机协同系统设计提供依据。
  • 在真实世界的控制系统任务中,评估能源消耗、安全性与代码可维护性等性能与重用标准。

提出的方法

  • 开发了一项机器学习模型,基于指定需求自动生成自主路灯系统的控制结构。
  • 招募了具有不同领域专业知识水平的软件工程师,手动设计同一路灯应用的控制结构。
  • 定义了性能指标(如能源消耗、安全性)与重用指标(如模块化、可维护性),以定量比较解决方案。
  • 开展一项受控的实证研究,比较ML生成与人工生成解决方案在各项指标上的表现。
  • 分析结果以识别任务表现的模式,突出人类或算法在哪些方面表现更优。
  • 基于研究发现,提出适用于人机协同系统的设计原则,以充分发挥人类与ML在软件工程中的互补优势。

实验结果

研究问题

  • RQ1在实现自主路灯系统的控制逻辑时,机器学习算法与软件工程师在能源效率方面有何差异?
  • RQ2在相同任务中,软件工程师在代码重用与可维护性方面相较于ML算法的优越程度如何?
  • RQ3软件工程师之间在领域专业知识方面的差异,如何影响其解决方案质量与ML生成方案的对比?
  • RQ4在哪些具体任务(如优化、模块化、安全性验证)中,人类与ML算法的表现更具优势?
  • RQ5如何设计人机协同系统,以有效整合人类与ML在软件工程中的优势?

主要发现

  • 机器学习算法生成的解决方案在能源消耗方面显著低于人工设计。
  • ML生成的解决方案在安全性合规性方面表现更优,尤其在边界情况处理与容错能力方面。
  • 具有更高领域专业知识的软件工程师生成的代码在模块化与重用潜力方面表现更佳。
  • 工程师在适应非功能性需求(如可扩展性与可维护性)方面更为高效。
  • 在安全关键方面,ML与工程师之间的性能差距最为显著,ML在所有人类参与者中表现最优。
  • 混合方法——即由ML生成初始解决方案,再由工程师进行优化——被确定为在效率与可重用性之间实现最佳平衡的最优方案。

更好的研究,从现在开始

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

无需绑定信用卡

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