当前位置: 首页 > 专利查询>同济大学专利>正文

一种程序运行时的监测点优化部署方法技术

技术编号:10405207 阅读:138 留言:0更新日期:2014-09-10 14:18
本发明专利技术涉及一种程序运行时的监测点优化部署方法,包括:步骤S1:将被监测执行的程序代码用层次结构模型表示;步骤S2:读取模块信息,设一个监测点部署方案作为初始解;步骤S3:构造评价监测点的目标函数E(M),并计算初始解的目标函数值并保存:步骤S4:读取模块信息、初始解及目标函数值,进行模拟退火算法,得到一个优化的监测点部署方案。与现有技术相比,本发明专利技术具有过程简单灵活、实用性强、效率高等优点,解决了程序运行时的监测点部署不合理的问题。

【技术实现步骤摘要】
一种程序运行时的监测点优化部署方法
本专利技术涉及一种监测点部署方法,尤其是涉及一种程序运行时的监测点优化部署方法。
技术介绍
在程序运行时的验证中,通常从系统程序需求中产生监测器,监测器在程序结构设置的位置为监测点,监测器通过监测程序的执行来检查程序运行过程是否满足系统程序需求,一方面监测器需要在程序运行时检测到错误,另一方面需要及时发现错误,为错误修复提供充足的时间和空间,这些都跟监测点的部署方案有着密切关系,监测点的部署方案既需要将程序中的各部分都覆盖到,又需要考虑监测点、监测区域、监测时间之间的最优权衡,因此如果合理部署程序中监测点的方法也越来越受到技术人员的重视,并提出了一些主张:1)Havelund等人在“Synthesizingmonitorsforsafetyproperties”一文中提出了一种算法,它读进一条过去时线性时序逻辑的表达式然后动态生成与表达式对应的代码,这条代码将在线性时间内分析完有限长度的执行序列,得出结果判定序列是否满足用户制定的规约。这算法在文章中被称为监视器合成算法,在PathExplorer项目中有实现,这是一个还在开发中的运行时验证的工具,该文章还提到将来还会开发算法来描述其他的逻辑来更好地适用于实时系统,或者发现多线程系统的潜在错误。2)Bonakdarpour等人在“Samplingbasedruntimeverification”中提出了“时间触发采样”的运行时验证,每隔一段长度的时间内触发采样动作,这个采样间隔由设计者视情况而定。在另一方面该文章将该采样间隔设置为所有变量变化的最短的时间间隔,这样能在一次采样中能捕捉带所有相关变量的变化,从而还原被测系统的状态。该文章解决了怎样在减小空间开销(变量变化记录缓冲区)同时,最大化采集间隔的优化问题。该文章的优化层面立足于已制定好系统规约,在文章算法讨论范围内的变量都是参与LTL规约计算的变量,从而用相对较少的记录空间较好地还原系统的状态变化。3)Stoller等人在“Runtimeverificationwithstateestimation”一文中基于“时间触发采样”的运行时验证方案,发现有时采样系统执行时在状态序列中会有事件记录的损失,对精确地进行运行时验证提出了一项挑战。该文使用隐马尔科夫模型对系统的执行模型进行建模,通过Baum-Welch算法从系统执行序列的实例调整隐马尔科夫模型的相关参数,如隐状态间的变迁概率,从而为估计某一个序列的生成的概率做准备。该文假设系统执行序列中的损失部分长度为L,然后根据LTL规约生成的FSM来估计某一条执行序列中的空缺应该填上怎样的事件节点从而满足相关的FSM,然后使用事先训练好的隐马尔科夫模型来估计所有可能发生的序列的概率之和。
技术实现思路
本专利技术的目的就是为了克服上述现有技术存在的缺陷而提供一种可靠性高的程序运行时的监测点优化部署方法。本专利技术的目的可以通过以下技术方案来实现:一种程序运行时的监测点优化部署方法,包括:步骤S1:将被监测的程序代码用层次结构模型表示,即划分为不同模块,包括1个顶层模块m0和多个子模块m,获得树状结构有向层次图,树状结构作为模块信息进行保存;步骤S2:读取模块信息,设一个监测点部署方案作为初始解,记录要固定监测的模块;步骤S3:构造评价监测点的目标函数E(M),并计算初始解的目标函数值并保存:E(M)=G(m0)*∑c(mx)/(1+∑r(mx)),mx∈M(1)其中,mx是模块集M中的第x个子模块,c(mx)是子模块mx的监测开销,r(mx)是子模块mx的监测冗余度,G(m0)-1=p(m0),G(m0)是顶层模块m0的监测粒度,p(m0)表示的是在当前观测策略下顶层模块m0被分成多少部分;步骤S4:读取模块信息、初始解及目标函数值,进行模拟退火算法,得到一个优化的监测点部署方案。在当前观测策略下顶层模块m0被分成多少部分采用p(m0)表示,p(m0)是指一个程序代码在监测上被划分的程度,定义如下:其中,d(m)是子模块m的深度,O(m0)是顶层模块m0中被监测的子模块的集合,H(m)是子模块m下一层子模块的集合,s(m)、Next(m)分别表示子模块m的下一层子模块中确定被监测的子模块和子模块集合。所述的监测冗余度r(mx)是指各级子模块补充说明上级模块的程度,定义如下:其中,Path(m')为关于模块m'的节点集合,Paths(m')表示从模块m'出发的所有路径的集合,假设存在模块m1,而且存在模块节点集合Path(m1)={m1,m2,...,md+1},其中每一个mk∈H(mk-1),d为模块m1深度,k=1,2,3,...,d+1,从模块m1出发的所有路径的集合为Paths(m1),Path(m1)∈Paths(m1);假设存在模块mx和my,其中mx∈H(my),f(mx)为在模块mx发生故障的概率,定义为f(mx)=f(my)/Next(my),Next(my)表示模块my的下一层级子模块总数。所述的步骤S4中模拟退火算法具体步骤为:401:给定初始温度T0,初始迭代次数i0,初始解为第一次迭代的当前解,当前能量E0为初始解的目标函数值;402:对当前解中的每一个可以细化监测的模块计算候选得到当前解的邻域,并记录在缓冲中;403:若邻域不为空,执行步骤404,若邻域为空,则模拟退火算法结束,输出当前解;404:根据当前解的邻域中每一个成员方案的监测开销,选择开销最小的作为新解;405:计算新解的监测冗余度、监测粒度和监测开销,进而计算新解的目标函数值,即新解的能量E1;406:当E1<E0或当E1≥E0,计算概率Pr[accept]=exp(-(E1-E0)/T),Pr[accept]<R,R为一个在0到1之间均匀分布的随机数,则接受新解为当前解,即令E0=E1,调整固定监测模块集合,删除邻域中有关被细化监测的模块的相关选解,当前迭代次数i=i-1,并执行步骤408;407:当E1≥E0,Pr[accept]≥R,当前迭代次数i=i-1;408:若i>0,返回步骤402,若i=0,令当前温度T=0.95T,迭代次数本文档来自技高网
...
一种程序运行时的监测点优化部署方法

【技术保护点】
一种程序运行时的监测点优化部署方法,其特征在于,包括:步骤S1:将被监测的程序代码用层次结构模型表示,即划分为不同模块,包括1个顶层模块m0和多个子模块m,获得树状结构有向层次图,树状结构作为模块信息进行保存;步骤S2:读取模块信息,设一个监测点部署方案作为初始解,记录要固定监测的模块;步骤S3:构造评价监测点的目标函数E(M),并计算初始解的目标函数值并保存:E(M)=G(m0)*∑c(mx)/(1+∑r(mx)),mx∈M (1)其中,mx是模块集M中的第x个子模块,c(mx)是子模块mx的监测开销,r(mx)是子模块mx的监测冗余度,G(m0)‑1=p(m0),G(m0)是顶层模块m0的监测粒度,p(m)表示的是在当前观测策略下模块m被分成多少部分:步骤S4:读取模块信息、初始解及目标函数值,进行模拟退火算法,得到一个优化的监测点部署方案。

【技术特征摘要】
1.一种程序运行时的监测点优化部署方法,其特征在于,包括:步骤S1:将被监测的程序代码用层次结构模型表示,即划分为不同模块,包括1个顶层模块m0和多个子模块m,获得树状结构有向层次图,树状结构作为模块信息进行保存;步骤S2:读取模块信息,设一个监测点部署方案作为初始解,记录要固定监测的模块;步骤S3:构造评价监测点的目标函数E(M),并计算初始解的目标函数值并保存:E(M)=G(m0)*Σc(mx)/(1+∑r(mx)),mx∈M(1)其中,mx是模块集M中的第x个子模块,c(mx)是子模块mx的监测开销,r(mx)是子模块mx的监测冗余度,G(m0)-1=p(m0),G(m0)是顶层模块m0的监测粒度,p(m0)表示的是在当前观测策略下顶层模块m0被分成多少部分;步骤S4:读取模块信息、初始解及目标函数值,进行模拟退火算法,得到一个优化的监测点部署方案。2.根据权利要求1所述的一种程序运行时的监测点优化部署方法,其特征在于,在当前观测策略下顶层模块m0被分成多少部分采用p(m0)表示,p(m0)是指一个程序代码在监测上被划分的程度,定义如下:其中,d(m)是子模块m的深度,O(m0)是顶层模块m0中被监测的子模块的集合,H(m)是子模块m下一层子模块的集合,s(m)、Next(m)分别表示子模块m的下一层子模块中确定被监测的子模块和子模块集合。3.根据权利要求2所述的一种程序运行时的监测点优化部署方法,其特征在于,所述的监测冗余度r(mx)是指各级子模块补充说明上级模块的程...

【专利技术属性】
技术研发人员:罗怡桂刘岩顾文迪
申请(专利权)人:同济大学
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1