国网河南省电力公司开封供电公司 河南开封 475000
摘要:本文主要集中探讨了参数化运行时的监控要点和监控的方法,明晰了参数化运行时最重要的过程和环节,希望能够为同行提供积极有效的参考。
关键词:参数化;运行;监控
一、前言
在参数化运行的时候,如果没有进行科学合理的监控,运行过程中就容易出现问题,因此,必须要针对参数化运行进行有效的监控,明确其监控的要点,提高运行效果。
二、软件运行监控技术现状
近年来,随着因特网向社会各角落的渗透式扩张,普适计算、网格计算等新型应用模式不断涌现,软件的规模日趋庞大,复杂性日益增加,使得软件系统变得越来越难以驾驭,这给软件系统的可信性带来了新的问题和挑战。尤其是当开放性成为了Internet上软件的主要特征之后,运行在Internet环
境下的应用系统的高层业务目标、系统结构和运行环境等均会不断发生变化。传统的软件容错技术也越来越难以应对软件的这些变化性。在新的应用背景下,为了保证软件的运行行为及其结果符合相关涉众的预期(即目标与实现相一致),许多研究人员提出通过增强系统的自适应(self-adaptive)能力加以实现。以IBM提出的自治计算为代表的自适应软件模型已得到了学术界和产业界的广泛关注。
软件运行时监控是实现自适应重配置目标的基础。软件运行时监控技术通过实时收集和分析目标系统的运行时状态和行为信息,来判断系统的运行时行为是否满足系统的属性规约,从而发现系统的缺陷、异常和一些QoS(Quality ofService)状况,为软件系统的动态自适应调整和演化等活动提供决策依据。自运行时监控技术提出以来,学术界和产业界都给予了广泛的关注,并提出了很多有代表性的方法。但是现有的很多方法,都将系统的监控逻辑与业务功能逻辑混杂在一起,不仅重载,使得系统的开发和维护工作变得相当的复杂和容易出错,且不利于软件复用。
三、运行时验证的原理及分类
运行时验证是一种检测系统的运行情况,然后对系统是否符合给定的属性或规范进行判定的验证技术。与运行时验证相关的开发及应用的过程也是研究的内容。
对一个系统进行运行时验证,需要将被验证的系统置于监控下。对被测系统进行检测的模块被称为监控器。监控器接收系统的运行踪迹,并根据给定的属性,对系统行为是否满足这些属性做出判定。
本质上,模型检测解决的是语言包含问题,而运行时验证解决的则是字符串包含的问题,相比而言,其复杂度要小的多。
根据不同的划分标准,运行时验证技术有不同的分类。根据监控器与被检测系统是否同时运行,运行时验证技术分为在线验证和离线验证:在线验证是指监控器与系统同时运行,实时地对系统进行监控;而离线验证,则是对系统的运行记录进行离线的分析。
四、参数化运行时监控方法
1、单一整体监控
单一整体监控,即由参数化性质生成一个单一的参数化监控器,用该监控器监控整个程序的运行,处理程序中出现的所有参数化事件。该方法的监控原理图如图1所示。
图1 单一整体监控原理图
该监控过程可分为两个阶段:(1)静态阶段,即目标程序执行之前,根据参数化性质规约,自动生成参数化监控器和相关监控脚本,并将监控代码插装到目标程序中。(2)运行时阶段,在该阶段中,提取系统运行时相关信息,完成变量赋值集合的提取与绑定,检查属性规约是否被满足,如果检测到性质背离,则给出性质背离信息,下面具体说明。
(一)静态阶段
监控代码的插装:该过程与非参数化运行时监控相同,目前最普遍的方式是使用面向方面编程来实现源代码的插装,J-LO中率先将面向方面技术应用于运行时监控中。然而tracematches体现了面向方面插装与运行时监控技术之间
更加紧密的关系。tracematches是AspectJ语言的一种扩展,能捕获事件的正则模式和表示aspect语义,从而可以通过编译器将其自动植入程序中,因此,一些运行时监控工具,如MOP依赖于AspectJ完成代码插装。参数化监控器的构造:参数化监控器的构造也是基于自动机理论,通常将性质公式转化为交错Buch自动机,与一般的非参数化的自动机不同的是,前者中每个状态都为抽象状态,在系统执行过程中,抽象状态将绑定不同的变量赋值,从而对应于不同的具体状态。对于性质公式φ,先求出其闭包cl(φ),其对应的参数化自动机A(φ)=〈Σ,Q,q0,δ,F〉,由于每个状态的后继状态可以为无穷多个,因此引入一个split操作,把公式分解为两个部分,第一部分是为了公式φ最终被满足,必须在当前状态处被满足的那部分子公式,第二部分为需要在未来某个时刻被满足的部分子公式。对于性质公式φ,先求出其闭包cl(φ),则cl(φ)即为公式φ对应的参数化交错自动机的抽象状态集合,其初始状态为q0=φ,迁移关系通过split(Q)得到,其得到结果的第一部分为迁移边上标记的公式,第二部分即为迁移边指向的状态。
(二)运行时阶段
由于监控器的每个抽象状态都可能对应于许多不同的具体状态,因此,创建完整的对应于不同的具体状态的自动机是比较复杂的,通常采用on-the-fly的方式把具体的变量赋值与抽象的监控器状态关联起来,同时判断抽象迁移的使能情况。监控过程中,从初始状态出发,识别当前状态所满足的命题集,基于该状态和其满足的命题集提取变量赋值集合,根据参数化监控器确定迁移的使能情况,迁移发生时,绑定变量赋值,产生一个新的格局,其中包含与监控器抽象状态关联的具体状态,直到性质公式被完全实例化后,判断性质公式是否被满足或是否最终到达一个可接受状态。如J-LO中使用DLTL来描述其待验证的性质规约,然后借助于交错自动机实现监控,将待验证的性质公式作为自动机的初始格局,然后根据变量赋值提取与绑定生成其后继格局,直到执行轨迹终止。若最终生成的格局是属于自动机的可接受状态集,则表明系统执行满足性质规约,否则发生性质背离。
2、分散式监控
分散式监控与单一整体监控不同,它将变量绑定与性质检查分开处理,在监控过程中,生成多个监控器,每个监控器对应一个参数实例。在性质检查过程中跟踪该参数实例的状态。这一类监控方法的具体监控原理图如图2所示。
图2 分散式监控原理图
与单一整体监控方法类似,该监控方法也可分为静态和运行时两个阶
论文作者:赵鑫
论文发表刊物:《基层建设》2015年18期供稿
论文发表时间:2016/1/12
标签:监控器论文; 状态论文; 参数论文; 自动机论文; 系统论文; 性质论文; 公式论文; 《基层建设》2015年18期供稿论文;