论文部分内容阅读
随着软件技术在各个领域应用的不断拓宽和加深,以及软件技术本身的不断发展,软件的数量、规模与复杂性也在不断的增长。特别是在网络环境下,“软件即服务”逐渐从概念转化为现实,各种服务软件的质量也变得越来越重要。如何提高服务软件的健壮性、安全性、可用性和运行时可管理性,成为一个迫切需要解决的问题。
运行时监测与分析通过在运行时刻收集软件运行中的事件与状态信息,与预先定义的规约或约束进行校验,以此判断软件运行的状态和行为是否正常。由于运行时监测分析可以获取软件实际运行时的一些内部状态、外部行为以及上下文环境等真实场景的信息,突破了静态时刻的一些技术面临的没有真实数据和状态信息的局限性。
运行时监测与分析需要解决以下几个关键问题:(1)如何对运行时关注的系统特性即约束进行描述和定义,并将其作为在运行时校验的依据。依据不同的抽象层次,这些约束有不同的描述方法:可以是抽象的纯形式化描述,也可以是具体的程序代码。采用何种方法描述约束,对运行时监测分析技术的用户可用性和实现复杂性都有影响;(2)具体的监测技术多种,这些技术在性能、适用范围等方面各有优劣,不同的约束可能需要不同的监测技术,如何实现各种监测技术并综合利用它们进行约束的校验与分析,也是很重要的问题;(3)运行时监测分析会对系统的性能造成影响,因此需要评估不同监测技术对软件性能的影响,以减少性能损失。
本文考察了各种监测对象,分析了多种监测和验证分析方法,据此提出并实现了一个运行时监测与分析框架。本文工作的特点是:1)监测的目标不仅包括资源、性能等传统的监测内容,还可监测分析与应用业务逻辑相关的约束;2)监测方法多样化,综合使用了各种监测技术,提供了运行时监测的各种机制实现,方便灵活的选择和使用;3)实现了多种不同的分析方法,来进行约束的验证与分析;4)约束的部署和去除比较灵活,以尽量减少运行时的性能开销。