基于动态网络分析理论的大规模软件故障预测模型与可视化界面实现

2015-04-16 01:30胡晓晔
电脑与电信 2015年9期
关键词:调用动态矩阵

胡晓晔

(宝鸡文理学院教学设备与实验室管理处,陕西 宝鸡 721007)

1 概述

随着人们对软件系统功能需求的不断增加,软件系统变得越来越庞大和复杂,尤其是软件系统的缺陷和漏洞很难避免。软件系统在达到一定规模之后,随着软件的长时间运行,软件系统模块存在“老化”的特点,总是面临各种故障或者失效问题,或者由于内在的缺陷漏洞从而导致受到不同程度的攻击。总而言之,现代社会的正常运作越来越依赖于基础设施的软件系统的安全可靠的运行。

软件系统的可信性问题已经成为国际上普遍关注的问题。现代大规模软件系统导致其产生可信问题的原因总结起来有:

(1)软件规模越来越复杂,人为配置以及使用不当,或者软件存在内在缺陷。

(2)软件的开发和运行环境已经由传统的静态封闭环境发展为开放多变的互联网环境,而恶意代码的大量存在会破坏软件系统的正常运行。

为了解决系统面临的迫切的可信问题,国内外众多组织机构已成立全球的计算平台和可信计算联盟组织,正致力于解决面临的安全和可信问题。

基于上述背景,本文将基于复杂网络研究的理论基础,着重研究大规模软件系统中的故障预测与定位问题,主要包括大规模软件系统的动态与静态分析方法,基于复杂网络的故障预测与定位方法,以及结果的可视化界面显示部分。

2 大规模软件系统故障预测模型的理论分析

2.1 基本原理

本文基于复杂网络理论,将大规模软件系统的动态运行信息和静态信息提取出来,再将软件的动态运行方法调用序列所映射的调用关系网络进行分析,并利用可视化界面直观地展示出来,进而达到故障与异常的检测与定位。

本文提出了一种基于调用动态网络的系统检测机制,通过本文实现的大规模软件故障预测与定位系统完成了调用关系网络的生成,并利用本模型对网络进行实时分析和监控。模型基本性质有:

(1)复杂网络适应性:基于K核分解算法对网络静态结果分析,能够形象地显示出大规模复杂网络的层次结构信息与核心节点,更加难得的是此思想可以分析超大规模的网络,这一点在利用K-core分解全美各航线大规模节点数据上已经得到了充分的体现,因此说我们提出的模型系统可以用来分析超大规模网络系统,具有可移植的良好特性;

(2)不同的时间片段特性:由于我们的模型是利用实时监控的原理可以用来监控网络中每一个时间段内的状态改变,记入下每一个状态对应调用关系网络,利用该网络就可以分析所监控软件的未来发展趋势。

2.2 大规模软件系统故障预测方法与理论

2.2.1 动态网络分析方法简介

系统模型的故障预测与定位整体按照以下流程:

(1)对软件运行过程进行持续的监控;

(2)将监控得到的数据经过处理后生成相应的系统某一时间段内的方法调用关系图;

(3)对被监控软件进行基本功能块的划分,根据划分结果生成相应的特征网络与入口函数;

(4)对软件的动态运行行为进行持续监控,生成相应的时间片段Δti内系统的调用关系网络Gi;

(5)根据动态网络结构演化公式G’i+1=f(Gi,Δti+1)来预测软件下一时间段内的状态G’i+1;

(6)根据动态网络结构测量公式d=g(G’i+1,Gi+1)来对软件Δti+1内得到的监控状态Gi+1同预测状态G’i+1的差异进行测量;

如果测量公式得到的差异值超过了我们设定的阈值,则认为被监控软件在Δti+1在当前功能块发生了异常。

2.2.2 调用关系网络的矩阵表示形式

调用关系网络的数据结构可以有邻接矩阵和加权矩阵两种形式。

邻接矩阵:为了能够准确地检测到矩阵元素的变化,本文在邻接矩阵的基础上做了一些限定,定义矩阵中的每一个位置(a,b)代表确定的含义,这样避免出现同构图的邻接矩阵相似的情况。

加权矩阵:增加了加权矩阵的分析,主要了是为了图形效果的需要,并加入了随机噪声的影响,使得两幅图像的对比度更加明显。在加权图中的噪声波动的影响较去重图要强很多,通过对比分析,我们可以更加深入地研究调用关系生成网络的故障与异常发生机制。

2.2.3 模型建立

大规模复杂网络对应了软件系统的不断衍变周期,用户不断对软件提出新的指令,使得软件系统对此作出反应,每一次反应都会产生一个新的状态,软件状态随运行时间的增加也变得更加复杂,为了对软件状态加以记录,并加以分析,我们首先为模型中对应的动态调用网络结构演变过程定义为一个映射函数:

该函数的意义就是根据软件运行所产生的数据,把这些数据划分成为一个个最小的时间切片,测量这个时间切片内对应的特征网络的状态,由此可见:

式中:

Gk——为对应功能模块的特征网络时间切片。

由于我们所用的函数公式都是统一的,所以不必担心时间切片的一致性,因此可以推算出下一时刻的动态网络的时间切片,由此可以使用特征网络Gk作为同一个功能块内的预测动态时间切片G’i+1,并且由于时间切片Gk是在系统的动态运行监控过程中生成的,保证了Gk的合理性。前一个值与后一个值只要网络调用不同就会发生变化,研究这个变化其实就是分析复杂网络的动态特性,进而达到对软件系统故障与异常的监控与定位。

3 预测模型实现与可视化界面的设计

3.1 大规模软件系统研究框架

大规模软件故障预测与定位系统的研究框架如图1所示:

图1 研究框架图

大规模软件系统研究框架系统一共分为5个子模块:监控模块:对软件行为进行持续监控,得到软件运行时的方法执行信息,以dat文件的格式存储;

数据处理模块:对监控数据进行处理,通过重构trace来获得软件运行时的方法调用序列,生成K核分解之后的调用关系网络;

故障注入模块:给被监控系统注入威布尔分布的概率故障;

故障分析模块:按照预测模型动态分析方法进行故障的分析工作;

显示模块:进行调用关系网络与故障分析结果的可视化。

3.2 数据库设计与数据处理模块

3.2.1 数据库表设计

根据之前的数据,所获得的实验数据格式如图2所示:

图2 实验数据格式

其中每个字段的意义如表1所示:

表1 实验数据格式说明

所获得数据按照格式存入指定的目录中,对数据的进一步处理在下一节中介绍。

3.2.2 数据处理模块介绍

数据处理模块的主要功能为:首先建立并初始化数据库;其次将监控数据按照格式进行解析后并存入数据库中;最后以trace为单位,通过trace重构获得方法调用序列。

在之前提到的网络动态系统分析中,首先要获得网络的数据也就是trace信息,在数据库部分我们已经对trace有了一个大致的认识,在这里对trace做一个比较细致的介绍,比如数据格式里的traceId、eoi、ess等字段,为了能够得到本文需要的方法调用关系,首先要进行基于trace信息的数据分析,重构运行时的trace路径。

下面给出一些本文中用到的术语定义:

方法(operation):为了实现特定服务而定义在组件中的一些函数。

执行(execution):运行时方法的一次执行过程。

路径(trace):每一次请求系统提供服务,都会执行一系列嵌套的方法,本文把这一系列的执行过程称之为“路径”。

在监控的过程中,对于执行服务请求的线程附加一个特有的traceId,同时将其加入到同一个trace的所有的数据记录之中。

3.3 故障预测模块

通过把读入的调用关系网络对应矩阵转化为其对应的节点矩阵,输出其对应的二范数,然后把每次试验中的所有数据都做此处理,呈现出总体变化图像,首先是第一条正常情况下的曲线;再输出第二条异常情况下的曲线,二者加以对比。

3.4 系统显示模块

分别从动态和静态分析理论来显示和分析对应的调用关系网络,并显示其数据库对应的trace文本信息。通过观察生成的软件调用关系网络来分析并预测其间发生的异常与故障,进而实现模型的监控功能。此处将添加两个动态图,分别为加权图、和去重图。而注入加权的目的主要是为了突出去重图的优良特性。

4 结束语

本文提出了一种基于动态网络分析理论的大规模软件故障预测模型并建立了相应的可视化界面,此模型可以实现大规模软件故障的预测,设计故障注入实验对模型进行了验证,取得了良好的效果,证明了此模型的有效性。

由于java的矩阵处理能力较MATLAB相比较弱,所以在本界面模块中采用了混合编程,但java本身和matlab的接口并不及C或C++和matlab的多,因此效率有待提高。以后可以根据实际需要,在C或C++平台上开发程序。

利用2范数做动态分析时,尽管取得了比较满意的精度,但在一些特殊trace内部调用关系网络的结构性改变存在着误报的风险,尽管对异常情况进行实际返回值与返回类型检查可以避免误报,但是整个检测系统的开销时间将增加,会导致灵敏性下降。在后续的开发中可以利用其它的矩阵分析理论解决这个问题。

[1]刘克,单志广,王戟,等.“可信软件基础研究”重大研究计划综述[J].中国科学基金,2008,22(3):145-151.

[2]赵广元.MATLAB与控制系统仿真实践[M].北京:北京航空航天大学出版社,2009.

[3]范立锋,乔世权,程文彬,等.JSP程序设计[M].北京:人民邮电出版社,2009.

[4]李建刚,秦兴桥,郑雨贝,等.JSP网络编程技术与实践[M].北京:清华大学出版社,2008.

[5]张新曼.精通JSP[M].北京:人民邮电出版社,2007.

[6]詹静,张焕国.可信平台模块自动化测试研究[J].计算机研究与发展,2009,46(11):1839-1846.

[7]Haohua Zhang,Hai Zhao,Wei Cai,et al.Using the K-core decomposition to analyze the static structure of large-scale software systems[J].Supercomput,2009,10(3):127-140.

[8]Ignacio Alvarez-Hamelin,Luca Dall’Asta,Alain Barrat,et al.K-core decomposition:a tool for the visualization of large scale networks[J].ACM Computing Surveys,2006,11(2):789-796.

猜你喜欢
调用动态矩阵
国内动态
国内动态
国内动态
核电项目物项调用管理的应用研究
动态
LabWindows/CVI下基于ActiveX技术的Excel调用
基于系统调用的恶意软件检测技术研究
初等行变换与初等列变换并用求逆矩阵
矩阵
矩阵