来自国防科技大学的贾周阳博士论文,入选2022年度“CCF优秀博士学位论文奖”初评名单!
https://www.ccf.org.cn/Focus/2022-12-08/781244.shtml
在“互联网 +”的浪潮中,信息化建设是众多领域发展的必然趋势,计算机软 件系统逐渐成为行业知识、技术诀窍和商业模式的重要载体,并将作为一种基础 设施被广泛部署。随着功能需求的不断增强,软件系统的复杂度也持续提升,主 要表现在软件自身代码规模的快速增长,以及软件与复杂环境间的频繁交互。一 方面,软件代码规模的增长,帮助软件提供更好服务的同时,也向软件引入了更 多的缺陷;另一方面,软件与环境的交互,导致环境中的各种异常状态可能传播 至软件内部,进而产生数据丢失、软件崩溃等严重后果。
软件系统复杂度的提升为其可靠性带来新的挑战,传统可靠性保证技术难以 分析复杂软硬件环境对大规模软件的影响。为应对这一挑战,本文通过代码大数 据分析和动、静态程序分析相结合的手段,利用机器学习、数据挖掘、统计分析 等技术,提升大规模软件在复杂软硬件环境中的可靠性。
环境中不同的异常场景对软件的影响程度不同,软件可以根据受影响程度采 取不同的异常处理方式:环境异常未直接影响软件时,软件应避免异常状态进入 软件内部;异常状态已经进入软件时,软件应避免异常状态进一步传播;异常状 态导致软件退出时,软件应避免残留状态影响操作系统;其他未知异常导致软件 发生故障时,软件应为故障诊断提供足够线索。本文针对以上四种异常处理方式 所对应的异常场景,探索了大规模软件系统在复杂环境中的可靠性提升技术:
面向第三方库异常演化的依赖缺陷检测。软件依赖于第三方库以避免重复 开发,库在演化的过程中可能会破坏兼容性。此时软件应当使用正确的库版本, 以避免库的异常演化影响软件内部运行。已有工作或检测库的演化是否破坏兼容 性,或帮助软件适应库的演化,但无法避免软件失效的发生。本文针对上述问题, 收集第三方库演化历史中的不兼容改变,通过定义启发式规则,检测软件依赖缺 陷,以避免软件依赖错误库版本,最终设计并实现了自动化工具 DepOwl。本文 从 StackOverflow 中选取了 38 个真实的兼容性失效问题对 DepOwl 进行评估,发 现 DepOwl 可以避免其中的 35 个。本文进一步将 DepOwl 应用于 Ubuntu-19.10 的 软件仓库进行评估,DepOwl 检测到 77 个可能导致兼容性失效的软件依赖缺陷。
面向环境资源异常的错误处理缺陷检测。软件通过库提供的应用程序编程 接口 (API) 与环境资源进行交互,当资源异常时 API 返回错误。软件应当对 API 的错误进行适当处理,以避免上述异常在软件中传播,对软件产生更大影响。已 有的错误处理缺陷检测工具需要错误规约作为输入,人工输入错误规约需要领域:知识,而自动生成错误规约难以达到很高的准确率。本文针对上述问题,通过挖 掘开发人员的错误处理行为,形成错误处理规则,进而利用错误处理规则自动检 测软件中的错误处理缺陷,最终设计并实现了自动化工具 EH-Miner。本文上报了 EH-Miner 检测出的 142 个错误处理缺陷给软件开发人员,其中 106 个缺陷已经被 确认且修复。此外,本文还将 EH-Miner 应用于 Linux Kernel,并上报 68 个错误处 理缺陷给内核开发团队,其中 42 个缺陷已经被确认或修复。
面向软件异常退出的中断处理缺陷检测。软件在运行过程中随时可能接收 到操作系统发出的异常中断信号,如软硬件中出现致命错误、用户强制退出等。 当遇到需要退出的中断时,软件应当进行必要的清理操作,以避免软件残留状态 影响操作系统或其他软件。本文系统研究了软件在异常退出时可能缺失的清理行 为,以及缺失行为导致的后果、产生的影响以及修复的方法。本文通过对比软件 正常退出和异常退出时的行为序列,检测软件异常退出时缺失的清理行为,以帮 助用户修复软件异常退出导致的问题,最终设计并实现了自动化工具 SafeExit。 本文将 SafeExit 应用于来自 10 个软件领域的 38 款开源软件。SafeExit 从 36 款软 件中检测出正常退出时的 133 种清理行为,并在 292 个模拟的异常退出中检测出 2861 个缺失清理行为。
意图敏感的软件故障诊断日志自动增强。面对复杂环境中难以预测的未知 异常,已有技术无法保证大规模软件的绝对正确,软件会不可避免地发生故障。 当故障发生后,适当的日志信息可以极大帮助开发人员进行故障诊断并减少系统 恢复时间。已有日志相关工作通过总结软件易错代码模式,或学习已有日志代码 的代码特征增强日志质量,但已有工作难以理解开发人员添加日志代码的意图。 本文针对上述问题,提出意图敏感的软件故障诊断日志自动增强方法,以帮助开 发人员进行故障诊断,缩短系统修复时间,最终设计并实现了自动化日志增强工 具 iLog。本文在六款软件上对 iLog 的有效性展开了评估,结果显示,iLog 的准确 性相比两个已有最好的日志增强工具分别提升 43% 和 16%。
针对复杂软硬件环境中的不同异常场景,本文设计并实现了自动化工具集, 以检测实际软件中应对环境异常的不足,最小化环境异常在软件系统中的影响边 界。同时工具集具有良好的可扩展性,能够支持大规模软件的自动化分析,最终 实现复杂环境下的大规模软件系统可靠性提升。