软件缺陷修复是近十年来的热点研究领域之一。从工业软件开发中的人工缺陷修复,到基于新型技术的自动缺陷修复,将会大量降低软件开发和维护的人力成本,快速提升软件质量。然而,目前自动的缺陷修复技术在实际应用中仍存在着极大的困难。
缺陷修复源于真实软件开发场景,始于缺陷发现与定位,是软件质量提升的重要技术。缺陷修复具有先天的困难性,即便是人类程序员也经常陷入难于发现和修复缺陷的困境。自动化的智能化的缺陷修复技术面临着一系列的机遇和挑战。
缺陷修复与软件测试、调试、维护、部署等领域息息相关。国内研究者在软件缺陷修复及相关研究领域取得了系列成果,在方法、技术和应用中都具有一定程度的领先地位。因此,我们组织了缺陷修复论坛,旨在提供展示研究成果的平台,促进国内研究者的学习和交流。
论坛组织委员会:
日程安排:
时间 | 主题 | 讲者 | 主持人 |
---|---|---|---|
13:30-13:35 | 开幕 | 熊英飞、玄跻峰 | |
13:35-14:10 | 教程报告(Tutorials)1: 缺陷修复技术介绍 | 熊英飞 北京大学 | 张成志 |
14:10-14:35 | 特邀学术报告1: 浮点计算精度缺陷的自动修复技术研究 | 毛晓光 国防科技大学 | |
14:35-15:00 | 特邀学术报告2: Contract-base program repair without the contracts | 裴玉 香港理工大学 | |
15:00~15:20 | 茶歇 | ||
15:20-15:45 | 特邀学术报告3: 分而治之, 走向实用程序修复工具的一条可能途径 | 钟浩 上海交通大学 | 蔡彦 |
15:45-16:10 | 特邀学术报告4: Repairing crashes in Android apps | 陈馨慧(Shin Hwei Tan) 南方科技大学 | |
16:10-16:35 | 特邀工业报告1: 面向DevSecOps的代码安全保障体系 | 董国伟 360 | 玄跻峰 |
16:35-17:00 | 特邀工业报告2: 阿里代码缺陷检测探索与实践 | 刘力华(息羽) 阿里 | |
17:00-17:25 | 特邀工业报告3: 代码自动修复: 需求与收益 | 王千祥 华为 | |
17:25~17:30 | 闭幕 | 熊英飞、玄跻峰 |
报告人:熊英飞,北京大学
报告摘要:在本报告中,我将系统性的回顾缺陷修复技术的动机、发展历史、主要方法技术、应用情况和未来主要挑战,为缺陷修复论坛的进一步讨论打下基础。
报告人简介:熊英飞,2009年毕业于日本东京大学,2009-2011在加拿大滑铁卢大学从事博士后研究,2012年加入北京大学,目前任新体制副教授。熊英飞主要在软件工程和程序设计语言开展研究,在缺陷修复领域提出了一系列理论、方法和技术,其中基于差别的修复模型已经成为演化缺陷领域广泛使用的模型之一,而基于统计的缺陷修复技术将程序缺陷修复的准确率提升约40个百分点。他的工作被多个公司和开源项目采用,包括华为公司、Linux内核配置项目等。
报告人:毛晓光,国防科技大学
报告摘要:浮点计算精度缺陷是数值计算中的常见缺陷:当浮点计算引入的误差导致程序输出结果存在较大偏差,不能满足精度需求时,那么程序就存在精度缺陷。现有方法使用更高精度执行来追踪引发精度缺陷的代码片段,采用数学重写和泰勒展开方法来修复精度缺陷。国防科大课题组结合已有方法推出了应用级的精度缺陷自动修复技术。研究过程中发现:在广泛使用的数值程序库中,存在由于函数病态问题引起的精度缺陷,这种精度缺陷更难以检测,同时已有的检测和修复方法已经不适合处理这类精度缺陷。为此,课题组提出了一种依据数学函数性质来检测和修复高浮点误差的方法,研制了精度缺陷自动修复的原型工具AutoRNP,并对20个来自GNU 科学计算库 (GNU Scientific Library)中的数值程序进行修复,成功修复了其中19个程序中的精度缺陷。
报告人简介:毛晓光,国防科技大学教授、博士生导师,计算科学系主任,软件工程学科学术带头人,校教学质量名师。主要从事可信软件、软件维护与保障方向的科学研究和人才培养工作。出版教材6部,发表学术论文百余篇,曾获国家级教学成果二等奖2项、省部级科技进步一二等奖3项、COMPSAC 2012、APSEC 2017最佳论文奖。担任CCF杰出会员、软件工程专委会和形式化方法专委会委员,《软件学报》编委。
报告人:裴玉,香港理工大学
报告摘要:As part of the effort towards improving software correctness and reducing maintenance costs, research on automated program repair (APR) has attracted a lot of attention in the past few years. Among the first APR techniques, generate-and-validate APR proposes fixes by first generating a large amount of candidate fixes and then validating them via regression testing. AutoFix is a generate-and-validate APR developed for the Eiffel programming language, and it reported high success rates in fixing faults from real-world programs. Since AutoFix exploits program contracts (i.e., method pre-/postconditions and class invariants) in fix generation and validation, its success has been mostly attributed to the extra information provided by contracts. In this talk, I will first briefly introduce the AutoFix APR technique, then show that the rationale behind AutoFix could be naturally adapted and effectively applied to fixing faults in Java programs, which typically do not have contracts. We developed a prototype implementation of the adapted technique, called JAID. In experiments with real-world faults from the DEFECTS4J benchmark, JAID produced genuinely correct repairs, equivalent to those written by programmers, for 31 bugs, which is comparable with results produced by other state-of-the-art APR techniques.
报告人简介:Dr Pei received his bachelor's degree in Computer Science in 1999 and his first PhD in Computer Science in 2004, both from Nanjing University, China. From 2004 to 2009, he was an Assistant Professor of the Faculty of Information Technology in Macau University of Science and Technology. In 2015, he obtained his second PhD in Computer Science from ETH Zurich, Switzerland. Dr Pei's primary research goals aim at facilitating the production of high quality software systems in the real world. He has published over a dozen of peer reviewed papers in journals like IEEE TSE and top tier conferences including ICSE, ASE, ISSTA, and VMCAI. His future research plans are directed towards advancing the techniques to automatically test and repair software systems developed in mainstream programming languages and providing tool support for their practical application.
报告人:钟浩,上海交通大学
报告摘要:程序自动修复是软件工程领域近期的研究热点。迄今为止,研究者已经开发了多种工具。虽然工具在实验中修复了很多缺陷,但在修复真实缺陷方面仍存在不足。结合前期发表的相关工作,报告人认为分而治之是一条开发实用程序修复工具的可能途径。本报告主要介绍在ICSE2015、ICSE2018和JSS2018的三项研究工作。这些工作包括两项经验研究和一项将分治法应用到程序修复的最新实践。
报告人简介:钟浩,现为上海交通大学副研。2009年毕业于北京大学,之后加入中科院软件所担任助研/副研。主要研究方向为软件工程,重点关注代码迁徙、文档错误、并发缺陷、缺陷自动修复、规约挖掘等研究内容。曾获ASE2009最佳论文和ACM杰出论文奖。
报告人: 陈馨慧(Shin Hwei Tan),南方科技大学
报告摘要:Android apps are omnipresent, and frequently suffer from crashes — leading to poor user experience and economic loss. Past work focused on automated test generation to detect crashes in Android apps. However, automated repair of crashes has not been studied. In this paper, we propose the first approach to automatically repair Android apps, specifically we propose a technique for fixing crashes in Android apps. Unlike most test-based repair approaches, we do not need a test-suite; instead a single failing test is meticulously analyzed for crash locations and reasons behind these crashes. Our approach hinges on a careful empirical study which seeks to establish common root-causes for crashes in Android apps, and then distills the remedy of these root-causes in the form of eight generic transformation operators. These operators are applied using a search-based repair framework embodied in our repair tool Droix. We also prepare a benchmark DroixBench capturing reproducible crashes in Android apps. Our evaluation of Droix on DroixBench reveals that the automatically produced patches are often syntactically identical to the human patch, and on some rare occasion even better than the human patch (in terms of avoiding regressions). These results confirm our intuition that our proposed transformations form a sufficient set of operators to patch crashes in Android.
报告人简介:陈馨慧,女,南方科技大学计算机科学与工程系助理教授。2010年获伊利诺伊大学厄巴纳-香槟分校学士学位,2012年获伊利诺伊大学厄巴纳-香槟分校硕士学位,2018年毕业于新加坡国立大学,获计算机博士学位。研究方向包括自动程序修复 ,软件测试与软件分析等多个方向。已发表学术论文10 余篇。荣获了2015年Google Anita Borg Memorial Scholarship, 2010年最佳硕士论文奖。
报告人:董国伟,360
报告摘要:以安全缺陷和漏洞在众多安全事件中的重要角色及危害为切入点,结合DevOps的基本原则要求和自主研发的方法工具,提出面向DevSecOps的代码安全保障体系,针对软件开发过程中各个阶段所研制出的不同产品形态,介绍解决其中漏洞和缺陷等安全问题的发现、分析和缓解等技术方法,从源头上保障软件和信息系统的安全性。
报告人简介:董国伟,360企业安全集团代码安全事业部战略研究总监,副研究员,博士,从事信息安全行业近10年,主要研究方向为软件安全分析与测试、代码安全审计和漏洞分析。主持和参与国家自然科学基金、核高基重大专项、国家重点研发计划等国家级和省部级项目10余项;联合出版《软件漏洞分析技术》、《内核漏洞的利用与防范》等专译著5部;在相关领域期刊和会议上发表论文近20篇。
报告人:刘力华(息羽),阿里
报告摘要:阿里巴巴作为国内最大的互联网平台,需要从代码、基础设施等方面保证平台的稳定性。为了降低故障率,提高软件工程师的代码质量,从2016年开始正式推行《阿里巴巴集团开发规约》,并发布了配套的规约扫描修复插件,一定层度的提高了代码质量,降低了故障率。然而,仅通过规则插件的方式去识别代码缺陷是远远不够的,我们开始与浙大等各高校合作,尝试通过数据驱动及智能化的方式去识别代码的潜在缺陷。本报告将以阿里的真实代码为数据基础,介绍目前阿里在代码缺陷领域所做的探索,与学术界一起探讨一下目前存在的问题,并展望一下未来期望与学术界合作的方向。
报告人简介:阿里巴巴代码平台代码智能化负责人,致力于通过智能化方式提高软件工程师的开发效率和交付质量,目前带领团队与各高校一起合作探索缺陷修复、代码推荐等领域的落地。
报告人:王千祥,华为