项目名称: 基于机器学习的软件调试技术研究
项目编号: No.61272102
项目类型: 面上项目
立项/批准年度: 2013
项目学科: 自动化技术、计算机技术
项目作者: 赵建军
作者单位: 上海交通大学
项目金额: 83万元
中文摘要: 软件调试是提高程序正确性的重要手段,但其自动化程度仍有待提高。已有的基于程序分析的自动调试方法虽然取得了一定的成果,但存在其固有的局限性。同时,机器学习方法已广泛应用于软件工程领域,并在软件调试等细粒度的工程活动中展现出良好的应用前景。本课题通过将机器学习及统计分析的方法应用到软件调试过程中,提出一套新的自动化调试技术,用于支持整个软件系统的调试过程。该技术采用人工神经网络、关联规则学习、最近邻搜索等机器学习方法,基于程序代码的静态数据、程序运行时的动态数据以及程序员在调试过程中所使用的信息构建相应的模型,提供五个方面的自动化以及半自动化的调试功能:静态警告排序、大规模程序的缺陷定位、并发程序的错误重现、自动推荐断点和程序自动修复。该技术能大大提高软件调试的自动化程度,提高调试过程的效率,降低软件维护的成本。
中文关键词: 程序调试;软件维护;程序分析;软件测试;缺陷定位
英文摘要: Software debugging remains to be an important technique to improve the correctness of programs. As debugging is generally tedious and time-consuming, better automation of debugging is desirable. Existing automatic debugging techniques, which are mainly based on program analyses, have alleviated this problem to some extent. However, there exist some intrinsic limitations of this kind of techniques. Meanwhile, machine learning-based techniques have been used extensively in software engineering and showed promising results of their applications to fine-grained activities, such as software debugging. By applying machine learning and statistical analysis techniques to software debugging, our research proposes a suite of novel automatic debugging techniques to support the whole process of debugging. Specifically, our research builds corresponding models by applying techniques, including artificial neural network, association rule mining, nearest neighbor query, etc., to the data collected through static analyses, runtime dynamic monitoring, and programmers' behavior recording. Then the models are used to support software debugging in five aspects: static warning prioritization, fault localization of large-scale systems, concurrency bug reproduction, automatic breakpoint recommendation, and automatic program repair. Ou
英文关键词: Program Debugging;Software Maintenance;Program Analysis;Software Testing;Bug Localization