Skip to main content
QUICK REVIEW

[论文解读] Automatic Software Repair: a Bibliography

Martin Monperrus|arXiv (Cornell University)|Jul 2, 2018
Software Reliability and Analysis Research参考文献 144被引用 61
一句话总结

对自动化软件修复的综合综述与注释性书目,涵盖软件工程、可靠性、操作系统、语言和安全领域的行为修复和状态修复。它按 oracle 和 bug 类别对修复技术进行分类。

ABSTRACT

This article presents a survey on automatic software repair. Automatic software repair consists of automatically finding a solution to software bugs without human intervention. This article considers all kinds of repairs. First, it discusses behavioral repair where test suites, contracts, models, and crashing inputs are taken as oracle. Second, it discusses state repair, also known as runtime repair or runtime recovery, with techniques such as checkpoint and restart, reconfiguration, and invariant restoration. The uniqueness of this article is that it spans the research communities that contribute to this body of knowledge: software engineering, dependability, operating systems, programming languages, and security. It provides a novel and structured overview of the diversity of bug oracles and repair operators used in the literature.

研究动机与目标

  • 提供跨越多个领域(软件工程、可靠性、操作系统、编程语言、安全)对自动化软件修复的综合概述。
  • 按行为修复与状态修复以及所使用的 oracle 类型对修复技术进行分类与分析。
  • 总结核心概念、修复算子和经验性发现,以指导研究人员和从业者。
  • 提供结构化的关键文献书目并标注术语变体,以统一领域术语。

提出的方法

  • 对自动修复文献进行调研与注释性书目。
  • 按修复类型(行为修复与状态修复)以及按 oracle 对修复方法进行分类。
  • 描述修复算子、修复模板和修复模型。
  • 跨领域映射,展示来自不同社区的思想如何趋同。
  • 讨论经验性与非经验性工作以及对评估实践的注记。

实验结果

研究问题

  • RQ1自动化软件修复的主要方法有哪些?它们如何按修复类型和 oracle 区分?
  • RQ2在文献中提出了哪些修复算子、模板和模型?
  • RQ3行为修复与状态修复之间的关系以及有哪些经验证据支持其有效性?
  • RQ4不同领域(软件工程、可靠性、操作系统、语言、安全)对自动修复有哪些贡献?
  • RQ5在编制关于自动修复的全面书目时发现的挑战与开放问题有哪些?

主要发现

  • 文献覆盖行为修复(代码修改)和状态修复(运行时/状态变化)。
  • 存在广泛的修复算子和模板,包括 AST 变异、前置条件和基于模板的修复。
  • 基于测试套件的修复、前/后置条件以及抽象行为模型是指定 oracle 的常见范式。
  • 静态分析、崩溃输入和领域特定修复将范围扩展到传统的基于测试的修复之外。
  • 在软件工程、可靠性、操作系统、编程语言和安全等社区之间出现跨学科的趋同。
  • 本文提供了统一的术语并澄清了修复概念的各种变体(repair、patch、fix、heal、recover 等)。

更好的研究,从现在开始

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

无需绑定信用卡

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