论文部分内容阅读
Internet技术的产生和快速发展极大地影响了软件的构建方法与使用方式,软件形态逐渐从单机环境中的软件产品向网络环境下的软件服务扩展。这样的转变在扩展软件系统应用范围的同时,也为其服务质量的保障带来了新的挑战。云计算及相关技术所带来的全新的、基于互联网的软件开发、交付与运营模式,以按需的动态资源供给方式为软件服务提供运行平台。这种资源管理方式也加大了软件服务运行环境的管理难度。以上这些问题促使在线监测技术成为软件服务质量保障技术中的关键组成部分。 在线监测技术通过在软件服务实际提供软件功能的过程中,捕获软件服务的内部属性、交互行为和运行环境等信息,来及时发现软件服务的异常及其运行环境的改变,为软件服务的运行时质量保障提供了可靠的依据。本文以软件服务及其运行平台作为研究对象,对其中的在线监测技术所存在的问题进行了系统地研究。 基于对软件服务不同侧面监测需求的深入分析,本文提出了一个软件服务的通用在线监测框架。该框架的核心思想是将在线监测功能的实现从主要业务功能的实现中分离开来,尽可能自动化监测的实现。这种方法贯彻了关注点分离的设计准则,将在线监测的实现代码与软件服务原有代码有机地组织在一起,最大限度地降低了在线监测所带来的开发成本。基于该框架本文分别针对软件服务的内部属性、交互行为和运行环境的监测需求,提出了相应的在线监测方法。具体包括: 第一,提出了一种软件服务内部属性的运行时验证方法。在运行时通过在线监测来验证软件服务是否满足给定的若干属性,是发现软件服务中潜在缺陷和错误的一种有效方法。本文所提出的运行时验证方法通过动态地对监测探针进行热部署,有效地减少了监测所带来的性能开销。该方法针对多对象方法调用序列约束这一类内部属性,使用有限自动机来对其进行规约,并据此自动地生成对应的监测探针及验证逻辑。所生成的监测探针将根据程序当前的执行状态被动态地热部署到待验证的软件服务中,以减小验证所带来的性能开销。本文将该方法应用到了一组实际的软件服务中,并进行了实验评估,结果表明该方法能够有效地对运行时验证进行优化。 第二,提出了一种服务交互行为的在线监测方法。该方法通过在线监测捕获的消息序列来检查软件服务使用者与服务之间的交互行为是否满足双方所提出的约束条件。针对服务交互中所存在的调用请求、使用行为和服务质量三方面的监测需求,本文提出了一种基于模式的服务交互约束定义方法并设计了相应的约束描述语言。通过该语言所定义的监测需求被自动转换成对应的监测截取器,并与约束验证逻辑共同组成服务交互行为的在线监测框架。该方法弥补了现有约束定义方法由于过于形式化而难以得到应用的不足,并通过灵活统一的实现机制控制了监测的开销。 第三,提出了一种基于监控模型的运行平台管理方法。软件服务运行平台通过集中地资源管理为软件服务提供了更为灵活的运行时环境,但同时也增加了软件服务运行环境的管理难度。基于平台中被管理对象具有的多样性、异构性、动态性等特点,本文提出了一种基于监控模型的运行平台管理方法。该方法能够屏蔽各个层次监测对象所提供的监测接口及监测数据格式的异构性,从平台管理的需求角度将底层监测信息抽象和组织成从问题域出发的监控模型,并利用模型驱动的思想简化了运行时管理实现的难度,从而为平台的运行时管理提供了可靠的支持。 第四,基于以上的研究工作,本文在一个实际的软件服务运行平台上设计并实现了完整的监控系统,为软件服务及其运行平台的服务质量保障提供了基础和依据。该系统的实现验证了本文所提出的技术框架的可行性,并为后续的研究工作提供了平台基础。