前言

这个是前天的文章,昨天、今天的文章都还没看的。很僵硬。

决定先补上这一篇,然后再读两篇SSBSE的文章。

简介

本文旨在阅读 ICSE NIER 2017 论文- Production-Driven Patch Generation。

Durieux T, Hamadi Y, Monperrus M. Production-driven patch generation[C]// Ieee/acm, International Conference on Software Engineering: New Ideas and Emerging Technologies Results Track. IEEE, 2017:23-26.

1 摘要说什么了

讲真我一开始真的没看懂。

We present an original concept for patch generation: we propose to do it directly in production.

2 introduction说了啥

难点:

Program repair requires the presence of a failing test case to reproduce a failure that has happened in production. Writing such a failing test case is a really hard task, because the developer in charge of reproducing a failure has little access to the system state at the point of failure (she basically only has logs).

作者要干的事情:(原来是要尽量弱化 需要错误用例的程序修复的要求)

The difficulty of reproducing production failures has a direct impact on applicability of program repair: with no failing test, there is no patch generation. We aim at weakening the requirements of program repair by removing the mandatory presence of a failing test case.

他直接在摘要里强调这个 weaken the requirements of program repair by removing the mandatory presence of a failing test case. 不就好了吗,搞得我半天没看懂
还是比较难理解的

作者的想法:

Our intuition is to perform program repair directly in
production, so that the repair process has a direct access to
the system state at the point of failure.

作者搞了一个工具,叫做Itzal,用production assertions 或者 runtime exceptions来发现错误,然后在沙箱里面search 一个补丁,如果一个补丁fixes 这个failure,那么它就是候选补丁,然后再tested for regression(直接在production里面),based on the shadow traffic。

而且,这个Itzal has been realized in a prototype implementation for Java which focuses on generating source code patches for null dereferences.

This paper presents an architecture, called Itzal, it generates patches without requiring a failing test case. The process of Itzal is as follows. First, Itzal uses production assertions or runtime exceptions to detect failures. Second, right after the failure is detected in production, a patch is searched in a sandboxed environment that mimics the production one. If a patch fixes the failure, it is a “candidate patch”. Third, the patches are tested for regression, directly in production, based on traffic that is an exact copy of the production traffic – we call it shadow traffic. Itzal has been realized in a prototype implementation for Java which focuses on generating source code patches for null dereferences.

mimic
VERB 模仿;仿效;效尤
If someone or something mimics another person or thing, they try to be like them.
Don’t try to mimic anybody. You have to be yourself if you are going to do your best…
不要试图仿效任何人,要是你想做到最好,就得做你自己。

作者用的单词是我不熟悉的,比如null dereferences,原来是空指针引用?

dereference
英 [ˌdi:ˈrefrəns]
间接引用
to use a piece of data to discover where another piece of data is held
The program contains a null pointer dereference.
程序包含一个空指针引用。

专门花一段时间来讲Itzal和现在工具的区别,但是讲真,对我来说还是不好懂,可能我不太懂repair in the production和runtime state吧:

This is a new line of research in automatic repair. Compared to classical test-suite based patch generation (e.g. [1]), Itzal does patch generation online, i.e. as soon as the failure happens, with no need for reproducing the failure. Yet, Itzal is not a classical runtime repair technique either (e.g. [2]): while the patches are generated online in production, the system state is never altered. The Itzal patches are applied later, once the developer has validated them.

[1] C. Le Goues, T. Nguyen, S. Forrest, and W. Weimer, “Genprog: A
generic method for automatic software repair,” IEEE Transactions on
Software Engineering, vol. 38, no. 1, pp. 54–72, 2012.
[2] M. C. Rinard, C. Cadar, D. Dumitran, D. M. Roy, T. Leu, and W. S.
Beebee, “Enhancing server availability and security through failureoblivious computing.” in OSDI, vol. 4, 2004, pp. 21–21.

这两个文献,【1】可以说是经典了,【2】应该是10多年以前的文献了

作者的贡献:

• Itzal, an architecture for patch generation in production
that does not require a failing test case.
• The use of shadow production systems and shadow traffic
in the context of automatic repair to generate patches in
production.
• The design and implementation of a Java implementation
of this vision for null pointer exceptions.

讲真,我觉得1)和3)有点重合了,不过一个是architecture,一个是design and implementation。
终于知道哪里不对劲了,没有benchmark!!!
看来是没有一个empirical study,这样大家怎么知道你的好不好呢。

第一次看到说 this paper is based on content from Arxiv’s document 的,比较神奇:

This paper is based on content from Arxiv’s document #1609.06848 [3] and is structured as follows. Section II presents Itzal. Section III presents the related works and Section IV concludes.

原文有11页,看来这个是强势缩减版。

这个是Itzal的架构,构想

3 工具实现

Itzal 是基于现有工具Itzal4j实现的???

We have implemented a prototype of Itzal for Java in a tool named Itzal4j, dedicated to reactive applications based on HTTP. Itzal4j generates patches for null dereference failures. In Itzal4j, the Request Oracle Service is based on exceptions. Any uncaught exception happening during the processing of a request is considered as a failure. The Patch Synthesis Service is dedicated to null pointers and uses the NPEFix technique [4] for searching the space of possible patches for null dereferences. Sandboxing of patch search is achieved using Docker, a major software containerization platform which provides powerful sandboxing (both disk and IO based).

还用了docker技术。

Our work is much inspired by the classical work on runtime
repair. Rinard et al. [2] present a technique called “failure
oblivious computing” to avoid illegal memory accesses by
adding additional code around each memory operation during
the compilation process.

原来2004年,这么久的都可以作为灵感来源,看来作者功底很深丫。

Assure [5] is a self-healing system based on error-virtualization. Long et al. [6] proposes the concept of “recovery shepherding” in a system called RCV. Those techniques do not produce patches and do not perform regression testing in production

原来Itzal是一个self-healing system?
这一块我不是很了解,好像不是修改源代码的?

Perkins et al. [8] propose ClearView, a system for automatically repairing errors in production. Itzal and ClearView both
perform repair in production, yet they are very different: 1)
ClearView does not produce source code patches while Itzal
does; 2) ClearView modifies the production state, while Itzal
only modifies the sandboxed shadow requests and state (this
means that ClearView can mess up the application while Itzal
never does so); 3) ClearView works with learned invariantbased oracles, while Itzal uses human designed request oracles

和clearview的比较。

The concept of shadow traffic is related to the execution of multiple versions of the same software in parallel, called in the literature “multi-version execution” [9], or “parallel execution” [10]. However, none of the related work uses shadow traffic to generate patches.

synchronize
英 [ˈsɪŋkrənaɪz] 美 [ˈsɪŋkrəˌnaɪz, ˈsɪn-]
vt. 使同步;使同时 vi. 同时发生;共同行动

ICSE NIER 2017 论文阅读 - Production-Driven Patch Generation相关推荐

  1. 【论文阅读】Query Graph Generation for Answering Multi-hop Complex Questions from Knowledge Bases

    <Query Graph Generation for Answering Multi-hop Complex Questions from Knowledge Bases> 论文来源:A ...

  2. 论文阅读:Leveraging Code Generation to Improve Code Retrieval and Summarization via Dual Learning

    论文题目与链接: [2002.10198] Leveraging Code Generation to Improve Code Retrieval and Summarization via Dua ...

  3. (sketch to image) 论文阅读笔记 SketchyCOCO:Image Generation from Freehand Scene Sketches

    Task Description:根据sketch生成全景图 Input: 包含前景sketch(如上图中的斑马,长颈鹿,大象等)和背景sketch(如草-草地,白云-天空,树-森林等)的全景级fre ...

  4. 【论文阅读】An Image Patch is a Wave: Quantum Inspired Vision MLP

    [论文阅读]An Image Patch is a Wave: Quantum Inspired Vision MLP 1.摘要 2.视觉领域的几种研究架构 2.1CNN 2.2Transformer ...

  5. 论文阅读笔记--Monocular Human Pose Estimation: A Survey of Deep Learning-based Methods 人体姿态估计综述

    趁着寒假有时间,把之前的论文补完,另外做了一点点笔记,也算是对论文的翻译,尝试探索一条适合自己的论文阅读方法. 这篇笔记基本按照原文的格式来,但是有些地方翻译成中文读起来不太顺,因此添加了一些自己的理 ...

  6. 深度学习论文阅读目标检测篇(七)中英对照版:YOLOv4《Optimal Speed and Accuracy of Object Detection》

    深度学习论文阅读目标检测篇(七)中英对照版:YOLOv4<Optimal Speed and Accuracy of Object Detection> Abstract 摘要 1. In ...

  7. 视频人像抠图论文阅读

    视频人像抠图论文阅读 1.Prime Sample Attention in Object Detection 2.Mask RCNN 3.Background Matting: The World ...

  8. [软件自动修复领域] 前沿论文阅读(2019年8月12日)

    文章目录 前言 论文列表 Automated Program Repair: A Step towards Software Automation Getafix: Learning to fix b ...

  9. 3D目标检测论文阅读多角度解析

    3D目标检测论文阅读多角度解析 一.前言 CNN(convolutional neural network)在目标检测中大放异彩,R-CNN系列,YOLO,SSD各类优秀的方法层出不穷在2D图像的目标 ...

最新文章

  1. java 日志框架的选择Log4j-SLF4j-Logback
  2. ASP.NET WebApi技术从入门到实战演练
  3. C++ 智能指针std::shared_ptr简单使用和理解
  4. (转)Thread的中断机制(interrupt)
  5. 环京机柜数量惊人 数据中心建设应避免一哄而上
  6. python自动上传图片_使用Python实现一个简单的图片上传存储服务
  7. 让互联网更快的协议,QUIC在腾讯的实践及性能优化
  8. php get_token_all函数,pimcore getObjectByToken函数PHP对象注入漏洞
  9. Linux IO复用区别与epoll详解
  10. maven项目动态替换配置中的值
  11. 第四章 ASP.NET MVC HTML.ActionLink输出超链接的具体用法
  12. linux学习第四课:命令格式和目录处理命令
  13. 笔记本电脑开不了机怎么重装系统?小熊U盘重装win7系统教程
  14. 【转载】Unity3D研究院之静态自动检查代码缺陷与隐患
  15. 【附PPT下载】2021腾讯广告算法大赛 ACM MM Grand Challenge录用论文揭晓
  16. 前端工程师说明(仅以自勉)
  17. TDengine集群搭建
  18. 机器学习(0):机器学习概述及基本概念
  19. 用Java写一个解一元二次方程的程序
  20. 使用Hadoop分析大数据

热门文章

  1. oracle配置jdk版本号,升级oracle中的JDK版本
  2. canopy算法流程_python实现Canopy算法
  3. mapbox-gl集成three.js开发
  4. C++实践(四):C++实现AES-CMAC算法
  5. unturned服务器无限载入,unturned进不去服务器
  6. 手机怎么解压php文件夹,手机怎么解压文件
  7. 【分布式框架】深入理解分布式之缓存击穿
  8. 移动端touch事件,实时获取touchmove移动下的最新元素
  9. pandas数据划分区间
  10. OpenHarmony WIFI 驱动模型源码学习