APP下载

一种基于探针的软件事件监控设计

2016-01-29郁立虎

关键词:故障分析探针

郁立虎, 何 勰

(上海船舶运输科学研究所 航运技术与安全国家重点实验室, 上海 200135)



一种基于探针的软件事件监控设计

郁立虎,何勰

(上海船舶运输科学研究所 航运技术与安全国家重点实验室, 上海 200135)

摘要:针对当前船舶电力系统控制软件的规模更加庞大、体系结构更加复杂、细粒度对软件进行监控更为困难的特点,主要介绍基于探针定位和程序运行的散点、树型软件事件监测模型的构建方法,获取监测事件的执行情况。在程序插桩、数据挖掘等技术的基础上,开发特定的计算机分析程序,最大限度地为软件开发者和使用者提供准确、丰富的数据支持。实例研究探针事件链监测模型在军用船舶电力监控系统中的应用,表明其在故障排查上大大缩短了排查时间。

关键词:探针; 程序插桩; 事件监测模型; 故障分析

0引言

船舶电力控制系统正朝着控制规模大、复杂程度高的方向发展,同时,很多控制软件都要求具有极高的可靠性和安全性,以免造成重大生命和财产损失。

软件调试时需要编程人员进行大量的人机交互工作。其中故障定位是调试过程中最为耗时和费力的活动之一,通过审查源程序的语义和结构,结合分析程序的执行过程和结果,辅助开发人员找到软件故障原因。大型软件的设计、开发和测试阶段会按照流程投入大量精力,但仍不能保证复杂系统代码执行对所有可能的输入、输出而言都是正确的,因此发展出了一系列以发现软件可靠性方面缺陷为目的的可靠性测试技术[1]。目前,基于测试的软件故障定位技术可分为基于执行覆盖的故障定位(Coverage-Based Fault Localization)、基于依赖关系的故障定位(Dependency-Based Fault Localization)和基于模型的故障定位(Model-Based Fault Localization)等。

软件产品在规定的条件下能在规定的时间内完成规定功能的能力即为软件的可靠性[2]。目前比较流行的在软件开发过程中应用的软件可靠性分析方法是故障树分析法(Fault Tree Analysis,FTA)。该方法是在系统设计过程中通过对可能造成系统失效的因素进行分析、画出逻辑图,确定系统失效原因的各种可能组合方式或其发生概率,进而采取纠正措施,提高系统的可靠性。其从顶级故障出发查找发生故障的所有可能原因,属于一种演绎方法[3]。这里在故障定位、查错设计和故障树分析法的理论基础上,结合探针及独立开发的计算机辅助程序,提出散点事件监测模型(Scatter Event Monitoring Model,SEMM)和树型事件监测模型(Tree Event Monitoring Model,TEMM),将故障扩展为任意普通事件,对任意事件进行监测。该模型可广泛应用于船舶电力控制系统的软件调试、故障定位等阶段,尤其在概率性软件缺陷排查方面能发挥重要作用。

1事件监测概述

1.1 事件监测问题的提出

当前船舶电力控制系统软件多采用C语言或PL/M语言编写,具有兼容性好、指令功能强、工作效率高等优点。但随着控制系统的逻辑越来越复杂、功能越来越强大,控制程序的调试和故障排除变得越来越困难。根据电气和电子工程师协会(Institute of Electrical and Electronics Engineers, IEEE)标准定义,故障是隐藏在程序中的不正确(或不完善)的指令、过程或数据定义,隐藏于程序的某条语句或分散的若干条语句中。故障定位的粒度既可以是程序语句,也可以是程序的分支、函数、方法或类等程序实体。

调试人员在现场调度时,难免会遇到控制系统发出的期望之外的控制指令。一般而言,这类故障没有周期性和规律性可循,给调试人员的调试工作增加了难度。目前市面上的软件监控分析工具偏重于实现软件性能的分析与优化,缺乏对软件运行过程执行控制的关注。此外,大部分研究侧重于粗粒度的软件运行过程执行控制,如线程控制、函数控制等。因此,迫切需要有合适的监测软件在程序运行时进行细粒度监测,以给出当时情况下的其他特征数据、共调试人员参考,进而快速定位故障原因。

软件运行时监控方法是一种能及时了解运行软件系统的状态、提高软件可靠性的重要手段和方法[4]。了解了系统的状态就能准确分析和定位软件系统的故障,也只有在了解系统状态的前提下才能准确分析被监控软件的行为,并与其被期望的行为进行比较,进而判断软件是否处于可靠状态。

1.2 事件监测的思路

软件的动态行为一般可通过软件执行时,观察其内存变化来监视。程序每执行一条语句,都会从一种状态进入另一种状态,称为状态转移。软件运行时监控方法通常需要在目标程序中插入监控代码(即“程序插桩”),以获取程序运行时的各种数据。程序插桩是一种了解程序执行行为的强大机制,是指在保持目的程序原有逻辑的完整性的基础上往程序中插入一些探针(这些探针本质上就是进行信息采集的代码段,可以是赋值语句或采集覆盖信息的函数调用),通过探针的执行抛出程序运行时的特征数据,对这些数据进行分析,获取程序的控制流和数据流信息,进而得到逻辑覆盖等动态信息。

软件运行状态实时采集技术,研究了静态性能数据和动态性能数据相互融合的优势,提高了软件运行状态数据的全面性和准确性,涉及到的主要技术是多线程并发的探针定位技术。软件运行过程实时分析主要研究了函数执行分析、控制流分析、执行路径追踪、数据可视化呈现方法和数据分析优化方法[5]。

2散点事件监测模型及树型事件监测模型

2.1 散点事件监测模型

散点事件监测模型是用来在主监测事件发生时,控制程序监测其他若干散点事件的发生情况的模型。在船舶电力监控系统中,可将控制程序的任意条执行语句作为一个事件,该事件既可以是由传感器采集的控制对象的状态信号、反馈信息或故障事件,也可以是控制系统内部的标志变量变化或控制指令的发出等。例如,当控制系统发出机组分闸指令这一主监测事件时,利用该模型监测机组的遥控状态、控制方式、运行状态、技术参数及故障信号等散点事件。

针对散点事件监测模型开发的简易上位机接收软件的主界面见图1。

图1 散点事件监测模型上位机软件主界面

1) 在上位机数据库中根据探针编号配置事件表,确定事件号、信息描述等信息。

2) 根据确定的监测事件选择主监测事件和辅助监测事件,事件点选择界面见图2。在事件配置表中,对事件的描述应尽可能详细,适当地增加控制程序中探针处的代码,使调试人员对探针的执行更为直观。

图2 事件点选择界面

3) 连接好各设备开始检测,当散点事件监测模型的事件发生时,实时显示在主界面上,并手动或自动保存数据,为以后的统计分析提供源数据。

2.2 树型事件监测模型

树型事件监测模型的基本原理如下,监测事件树见图3:

图3 监测事件树

(1) 根据故障树分析技术原理,将某主监测事件定义为第一阶,即树的第一行,称为根事件;

(2) 将导致该事件发生的若干直接原因(包括硬件故障、环境因素、人为操作等)并列为第二阶,即树的第二行;

(3) 用适当的符号表示第二阶事件,并用逻辑门把它们与主监测事件联结起来,凡用逻辑门联结形成的事件均称为中间事件或节事件;

(4) 将第二阶中间事件发生的直接原因事件列为第三阶,两阶之间同样用事件符号和逻辑门联系;

(5) 以此类推,直到所有引起主监测事件发生的直接原因—叶事件出现。

3事件监测实施要点

3.1 监测事件的确定

监测事件分为主监测事件和辅助监测事件,其中主监测事件是调试人员想要获取的根事件。该事件既可以是1个变量发生了变化或1个模拟量数值达到了预设阈值,也可以是控制器发出了某项指令或控制程序执行到了某个特定位置等。船舶电力系统中具有代表性的故障是“主开关跳闸”,针对该故障,可将主开关状态作为主监测事件,当开关由合闸状态变为分闸状态时,将采集到的其他辅助监测事件状态传输到上位机输出,以此来分析造成主开关跳闸的原因。

3.2 探针位置的选择

确定了监测事件后,可根据程序逻辑确定探针的位置和探针个数。插入探针是通过在所选的探针位置点位插入探针代码实现的,其中探针位置的选择是探针定位技术必须考虑的关键问题[6]。通常探针位置的选择应满足能充分采集到所需信息的基础上,使代码的膨胀率及对程序的影响最小。因此,探针位置通常选择以下部位:if,else if,else等条件语句分支处;输入/输出语句之前;函数调用语句之前;return语句之前;监测变量变化之后。

3.3 事件数据的记录

一旦确定了监测事件,就可通过上位机开发辅助程序,记录和解析控制器发来的探针信息。首先结合插入的探针编号,利用数据库配置好各监测事件的事件号,将控制器传来的探针信息记录到数据库中,并解析出事件的发生情况,确定程序的执行轨迹。将日积月累的数据与当前的数据分析和数据挖掘技术相结合总结、归纳出监测对象规律性内容,从而更好地保证船舶电力系统正常运行。随着智能化和网络化在工业过程控制领域日益深入,数据分析在过程控制中发挥的作用日渐凸显。数据挖掘作为从数据中提取有用信息的一项新兴技术和学科,涉及多方面的理论基础。其综合利用统计学、模式识别技术、机器学习方法、专家系统、遗传算法、粗糙集、模糊集和聚类方法等算法,从生产过程中产生的海量数据中提取可信赖、有用、可被理解的知识,最终指导生产过程的数据处理过程。

4事件链模型的实际应用

4.1 事件链模型概述

事件链模型是树型事件监测模型或其变形模型与散点事件监测模型在实际应用中的结合模型。当根事件发生时,在依据程序逻辑找出导致该根事件发生的叶事件后,事件树中就产生了1条从根事件到叶事件的事件链。在该事件链上,每个事件都是发生的,也正是基于此才找到了叶事件。树型事件监测模型的变形模型是指事件树的各阶(行)之间不一定具有因果关系,也可能是根据程序逻辑画出的事件逻辑树的模型。如图4中的控制方式、最小备用、故障增机、功率增机、失电增机等信号均应用散点事件监测。

4.2 事件链模型具体实施思路

事件链模型具体实施思路为:控制器开辟出一块存储空间,用作网络地址;采集的数据量、用于计算的标识量及输出的控制量等均对应着一个网络地址;运用未利用到的网络地址存储探针信息(该类地址称为探针地址),程序执行到某一处时根据探针编号将探针地址的相应位置1,若1个网络地址占用2个字节,则1个网络地址可存储16个探针;最后将该网络地址上传至现场总线网中,上层软件接收现场总线网数据,识别探针标志,即可知程序执行情况。图5为独立开发的简易辅助上位机解析软件界面。

4.3 事件链模型实例

以1#机组合闸为例,依据控制程序逻辑,画出其事件链模型图(见图4)。

图4 机组合闸事件链模型图

1) 在控制程序中分别插入探针,以获取以下事件的发生情况:1#机组开关合闸;1#控制器发出合闸指令;1#机组人工合闸或未知;1#机组处于遥控状态;1#机组控制方式为自动;1#机组为最小备用机组;有故障增机信号;有功率增机信号;有失电增机信号。

2) 为探针号、事件号、事件描述、探针地址及探针位号等信息配置数据库。

3) 打开事件监测软件,当1#机组合闸发生时,解析出各事件的发生情况,得出产生1#机组合闸这一事件的事件链。即,若软件某时刻读到1#控制器上传的地址0x8030中的数据为0x2607,则说明1#机组开关由断开变为闭合状态,即事件(1)发生了,同时解析出事件(2),事件(4)~事件(7)发生。由事件链模型图可知,这是由于控制器发出故障增机信号且1#机组处于遥控状态、控制方式自动且为最小备用机组,导致1#机组控制器发出了合闸指令继而使得断路器合闸。将数据记录到数据库中,同时显示在软件界面上。

该模型的使用严格按照流程设计:

(1) 确定监测的事件;

(2) 根据控制程序画出事件树图,确定出所有节事件、叶事件,在不影响源程序逻辑和完整性的基础上插入探针;

(3) 根据以上内容配置数据库表开发软件来解析、显示、记录和统计事件数据。

软件界面左上方显示加载数据库中配置好的监测事件(根事件),选择1个或多个监测事件加入到监测事件表中,确认后将与根事件有关的事件信号加入到右上方列表中(这些事件信息是根据画出的事件树和插入的探针信息配置在数据库表中的)。点击“连接设备”按钮,将监测软件与各控制器等监测设备连接起来,“开始监测”后即实时解析各根事件的发生情况。右下方显示,当根事件发生时,给出产生根事件的一条事件链。

图5 事件链模型监测上位机软件界面

5结语

针对船舶电力控制系统程序的热点问题,重点提出了散点事件监测模型和树型监测模型的软件设计方法。在船舶电力控制系统程序中,可方便地应用这2种模型实现软件的快速调试、测试、故障定位和事件监测。该软件为挖掘出监控对象的规律内容提供了数据支撑,在军用船舶电力系统的实际应用中取得了良好效果,给调试人员分析概率性软件缺陷问题带来很大便利。

软件运行时监控技术作为保证软件可靠性的重要手段已得到研究人员的普遍关注,但其尚不能将软件系统中所有的缺陷和错误都排除掉。随着对船舶电力控制系统研究的不断深入、软件技术的不断进步,运行时监控技术也将得到不断发展,从而更好地为船舶自动化领域服务。

参考文献:

[1]李军锋,任世鹏.软件可靠性及其测试分析[J].软件导刊,2010,9(8):46-48.

[2]GB/T 3187—1994.可靠性、维修性术语[S].

[3]李祥明,吴学军,王玮,等.一种基于故障树分析的软件设计方法[J].兵工自动化,2011,30(8):85-91.

[4]郭长国,朱俊,初宁.一种分布式软件运行时监控机制[J].计算机与数字工程,2008,36(11):33-35.

[5]姚化壮.软件运行过程实时监控分析方法研究[D].北京:中国科学院软件研究所,2013.

[6]孙红利,王忠民,王文浪.嵌入式软件语句覆盖率测试插桩技术[J].计算机应用,2010,30(10):2738-2740.

An Event Monitoring Design with Code Instrumentation

YuLihu,HeXie

(State Key Laboratory of Navigation and Safety Technology, Shanghai Ship & Shipping Research

Institute,Shanghai 200135,China)

Abstract:The code instrumentation technology is introduced in the ship power monitoring system software, which needs monitoring of its own operation because its getting bigger in scale and more complex in structure. The event monitoring model for software with tree structure is built and principles of setting probes and break points are proposed. The event analysis program is developed with data mining technology for software engineers to d troubleshooting. The design has been used in marine ship power monitoring systems, which noticeably reduced the time for fault identification.

Key words:probe; code instrumentation; event monitoring model; fault analysis

中图分类号:TP311.52

文献标志码:A

文章编号:1674-5949(2015)04-038-06

作者简介:郁立虎(1986—),男,山东济宁人,工程师,主要从事船舶电站监控系统相关技术研究。

收稿日期:2015-10-13

猜你喜欢

故障分析探针
多通道Taqman-探针荧光定量PCR鉴定MRSA方法的建立
S2315综合治疗台控制面板设置方法及常见故障分析
380V小电流接地系统单相接地故障分析与查找
变频器控制回路抗干扰措施及调试故障处理
关于火电厂汽轮机故障分析方法与检修的探讨
发射台中央控制系统典型故障分析及维护
超短波定向机电源系统故障分析
BOPIM-dma作为BSA Site Ⅰ特异性探针的研究及其应用
新型生物素标记的苦杏仁苷活性探针的合成
透射电子显微镜中的扫描探针装置