Modern large-scale software always have complex logic, and hard to debug when encounter failures. Despite of its requirement in high reliability, it’s not impossible but difficult for traditional program analysis method to ensure the reliability of software due to the limitation of analysis capability in scalability. In this project, we try to explore the software failure diagnose techniques from the perspective of “big code”. By mining knowledge and patterns in different levels from source code based on big data analysis techniques, such as statistics and machine learning, we are going to study how to effectively combine big code driven method with traditional program analysis method. The main topic of our project consists of two dimensions. The horizontal dimension focus on log. Based on the characteristics of logging behavior in source code as well as in evolving history, we can automatically improve logging practices; Then we dig out the relationship between software defects and related logs to prune the possible paths in postmortem failure diagnose; Besides, we extend the pattern mining from log to error handling in software, thus improving the failure diagnosis capability for software. The vertical dimension is towards a typical software failure diagnose, misconfiguration. we first focus on automatic understanding of configuration constraints to improve software capabilities for misconfiguration prevention and diagnosis. Based on the empirical studies on many software configurations, we will study a comprehensive classification for configuration options, and propose an injection-based method to evaluate and enhance system reaction abilities. Furthermore, we will investigate an method to generate test case for configuration testing, as well as a reverse diagnosis method based on abnormal log sequence. In conclude, we will implement the related automatic tools, to support the quality assurance of large-scale software.
现代大规模软件具有自身逻辑复杂、出错后难以分析调试等特点,已有的程序分析方法受限于软件规模,难以保证软件的可靠性。课题从代码大数据入手,基于统计分析和机器学习等方法,在代码中挖掘不同层面的知识和模式,研究“大代码”和程序分析的相结合的故障诊断新技术。研究分纵横两个维度,横向围绕故障诊断的重要手段日志展开,从软件版本和演化历史中分析和挖掘日志特征,增强日志代码质量;建立软件缺陷与出错日志的关联关系,指导故障诊断中的路径剪枝;并从日志扩展到一般的出错处理模式,提升软件的故障诊断能力;纵向选取典型的软件配置故障,研究配置约束理解技术,实现自动化配置约束分析与提取,提升配置故障的预防和诊断能力;分析和总结全面的配置类型,提出基于故障注入的系统反应能力评估与增强方法;在此基础上,设计面向配置的测试用例生成方法和基于异常日志序列的反向诊断方法。实现相应的自动化工具,为大规模软件质量保证提供有效手段。
本课题针对大规模软件系统代码缺陷多、交互易出错、配置管理难等问题,研究软件故障诊断问题,探索了代码大数据分析和动静态程序相结合的手段,主要从诊断信息增强和配置管理两方面构建了创新技术体系。具体如下:(1)提出基于演化历史的故障诊断信息分析和增强方法,增强日志代码质量和诊断能力,日志演化能力提升50%;在此基础上,研究了软件错误处理规则自动化挖掘方法,在包括Linux在内的数十款软件中检测并修复上百个错误处理缺陷,准确率超过90%;(2)研究了配置缺陷检测问题,分析和总结配置相关的性能属性,提出配置缺陷检测的测试框架和测试预言,检测准确率超过80%;(3)设计了配置依赖理解和自动化提取方法,准确率相比已有方法提升25%;分析和总结配置依赖代码模式,提出了跨软件配置依赖提取方法,准确率接近90%;(4)研究了配置调优问题,针对多软件资源竞争场景和多意图调优场景,设计和实现了相应的配置推荐和调优方法,有效检测和消解软件冲突,支持用户在性能调优时兼顾其他软件意图;(5)完成了配置演化实证研究,对云环境软件的配置演化历史展开源代码级别的深入研究,分析总结了16种代码模式;(6)设计了配置故障自动化生成和注入方法,分析和评估系统对于配置故障的反应能力,并提出了对应的增强方法。本课题共发表论文22篇,包括CCF A类会议和期刊论文10篇,CCF B类5篇,进入SCI检索7篇,EI检索19篇,一篇获ICPC最佳论文提名,实现了系列工具集原型,申请和授权国家发明专利10项。培养博士研究生8人,硕士研究生7人, 一人获全军优秀博士论文,一人获CCF优秀博士论文提名。申请人获2019 CCF NASAC青年软件创新奖,2021 CCF技术发明二等奖和2019湖南省技术发明一等奖。
{{i.achievement_title}}
数据更新时间:2023-05-31
论大数据环境对情报学发展的影响
圆柏大痣小蜂雌成虫触角、下颚须及产卵器感器超微结构观察
资源型地区产业结构调整对水资源利用效率影响的实证分析—来自中国10个资源型省份的经验证据
多源数据驱动CNN-GRU模型的公交客流量分类预测
混采地震数据高效高精度分离处理方法研究进展
基于大规模数据驱动的轧钢过程故障诊断及自愈控制
数据驱动的代码注释自动生成方法研究
基于软件基因的恶意代码检测与分析技术研究
数据驱动的大规模图像自动标注关键技术研究