关键词:
自适应系统
软件质量
错误处理
环境建模
软件测试
动态容错
摘要:
面对着日益开放、复杂、难以预测的软件运行环境,软件系统常须随着环境的变化,自主地调整其自身的行为来应对环境的变化,以持续满足其业务需求。具有这种能力的软件系统称为自适应系统。自适应系统在运行时,常常以“感知一决策-适应”的方式与其运行环境之间进行复杂的交互,而这种交互的复杂性也会为自适应系统带来新的质量问题,包括系统感知到的环境和真实的环境之间存在的不一致性、环境的变化可能超出系统设计时的预期而导致的适应策略不完备性、以及对系统自适应硬件动作的操控存在的不精确性等。传统的软件错误处理技术直接应用于自适应系统有较大的局限性,比如:难以对环境以及其变化规律系统性的理解和建模,使得模型检验不够完备;忽略了系统的自适应动作对环境的影响,使得测试的结果不够精确;对系统硬件层面的一些操作认识不足,使得动态容错不可行等。其原因在于传统的软件错误处理技术简单地把系统与环境之间的互动关系作为系统普通输入输出所导致的。本文认为在自适应系统中,环境与系统应该处于同等重要的地位,并且应从系统设计、开发到运行阶段都显式地考虑环境对于系统的影响。为此,本文提出了一套基于显式环境模型的自适应软件系统错误处理技术,主要工作如下:1.给出了一种面向自适应软件系统的显式环境建模方法。环境模型是由动态环境状态和状态迁移关系组成的标号迁移系统,并作为在软件系统运行时刻的显式组成部分加以维护。相对于传统途径下直接以传感数据表示的环境信息和仅通过简单推理得出的环境状态,本文的环境模型具有更加丰富的语义信息,既能描述出系统设计时对环境情境的预期,也易于描述出环境情境之间的变化规律。2.提出了一个面向自适应系统的自动化测试用例生成技术。基于上述显式环境模型,通过对环境的状态进行符号化,使得自动化测试用例生成工具可以操作和理解环境状态,然后将被测程序重定向到环境模型,并使用动态符号执行的技术自动化生成测试用例。该技术被用于云计算应用的环境相关自动测试,实验结果表明,该技术一方面显著提高了测试的代码覆盖率,另一方面也大幅度减少了误报,从而提高了测试结果的精确性。3.提出了一种自适应系统运行时错误发现和修复技术,其针对目标是一类和系统运行时失效有着很强关联性的错误,即同步丢失错误。基于上述显式环境模型,本文首先形式化地定义了同步丢失错误,进而给出了基于显式环境模型的动态错误自动发现和修复的支撑机制,最后还给出了一种对系统运行时刻错误修复能力进行预测的静态分析算法。实验结果表明,这种错误修复技术可以显著降低系统运行时失效的概率。4.实现了一个面向机器人小车应用的自适应软件中间件平台原型。该平台支持上述显式环境建模,使得开发者可以方便地编写基于规则的自适应系统;同时也对上述两项错误处理技术提供了支撑。此外,该平台向下屏蔽各种对硬件操作的细节,同时集成了传感器不一致性的检测消解以及硬件操控的误差补偿技术;向上提供了一个不依赖于具体硬件平台、编程语言、通讯协议的自适应系统编程模型接口,简化了自适应小车应用软件的开发。