With the rapid development of software industry, software systems are getting more and more complex and error-prone. Although project teams spend much resources and effort on software testing before releasing products, in reality, released software still contains bugs. Some bugs manifest as crashes in the field. Software crash means unexpected termination of a software system during runtime. With the increasing number of crash reports, traditional crash-handling methods should be improved. In this project, we will explore methods for automated analysis, clustering and debugging of software crashes. We plan to analyze the possible causes and characteristics of software crashes, and a method for clustering similar crash reports that are caused by the same bug. We will also propose methods for reproducing crash reports (to help developers replicate the crashing scenarios), as well as methods for locating crashing faults. We will evaluate the proposed method on large-scale, real-world projects. We believe such a project could help industry improve software product quality and reduce the damage caused by software crashes.
随着软件产业的发展,软件系统正变得越来越复杂,软件失效的可能性也越来越大。在各样软件失效中,软件崩溃(Software Crash)造成的影响相对较大。软件崩溃是指软件在运行过程中不正常地停止工作的现象。现在工业界广泛采用的软件质量保证技术很难保证软件崩溃不会发生。同时,随着软件崩溃报告的数量的增加,传统的崩溃处理方法已经很难适应。在本项目中, 我们将研究有效的软件崩溃分析、聚类与调试方法。我们将深入分析崩溃产生的原因及特性,并提出相似崩溃报告的聚类方法(即将由相同的软件缺陷造成的崩溃报告聚成一类)。我们也将提出崩溃的重现方法(即帮助程序员快速复制、重现崩溃情形),和导致崩溃的缺陷的定位方法(即帮助程序员找到出错的地方)。我们将在实际软件项目中验证所提出的方法。我们相信关于软件崩溃的研究能够帮助企业提高软件质量,减少崩溃带来的损失。
随着软件产业的发展,软件系统正变得越来越复杂,软件失效的可能性也越来越大。在各样软件失效中,软件崩溃(Software Crash)造成的影响相对较大。软件崩溃是指软件在运行过程中不正常地停止工作的现象。现在工业界广泛采用的软件质量保证技术很难保证软件崩溃不会发生。同时,随着软件崩溃报告的数量的增加,传统的崩溃处理方法已经很难适应。在本项目中, 我们研究了软件崩溃分析、聚类与调试方法。着重研究了以下问题:.. 如何复制软件崩溃过程:我们研究了如何在软件崩溃发生后,能自动地、高效地重现崩溃场景,复制软件崩溃产生的过程。 我们提出了ReCrash,一个基于程序监控和符号执行的测试数据生成方法,能有效地生成导致软件崩溃的数据。项目成果发表在2014年的自动化软件国际会议(ASE 2014)上。我们也研究了基于函数执行序列和执行日志的程序监控技术,成果发表在POPL 2016和ICSE 2015会议中。.. 如何定位导致崩溃的缺陷:我们研究了如何定位导致崩溃的缺陷,以排除错误,修复程序。我们提出了CrashLocator,一个基于统计的缺陷定位技术,可以利用软件崩溃时的调用栈信息,迅速、有效地定位包含缺陷的函数。项目成果发表在2014年的国际软件测试和分析会议(ISSTA 2014)上。.. 如何更有效地测试软件系统:我们以C语言编译器为例,研究了如何更有效地测试软件系统,以发现可能导致软件崩溃的缺陷。我们分析了针对C语言编译器的自动化测试技术,我们也研究了软件测试时间的预测和测试优化问题。项目成果发表在2016年和2013年的国际软件工程会议(ICSE 2016, ICSE 2013)上。..在本项目支持下,我们已经在软件崩溃和软件测试相关的研究上取得了一些成果,在国际知名软件工程会议上发表了10多篇学术论文, 获得了两项ACM杰出论文奖(ASE 2014和ISSTA 2014)。我们将在今后研究中继续此方面的研究,争取更多的成绩, 希望能够切实帮助企业提高软件质量,减少由于软件崩溃而带来的损失。
{{i.achievement_title}}
数据更新时间:2023-05-31
论大数据环境对情报学发展的影响
监管的非对称性、盈余管理模式选择与证监会执法效率?
黄河流域水资源利用时空演变特征及驱动要素
生物炭用量对东北黑土理化性质和溶解有机质特性的影响
资源型地区产业结构调整对水资源利用效率影响的实证分析—来自中国10个资源型省份的经验证据
软件崩溃自动化分析的关键技术研究
基于机器学习的软件调试技术研究
软件测试和调试过程中的测试用例演化技术研究
面向运行环境依赖缺陷的软件自动化调试技术研究