一种软件故障报警监测方法与流程

文档序号:11230304阅读:480来源:国知局
一种软件故障报警监测方法与流程

本发明涉及软件故障监测技术,尤其是涉及一种软件故障报警监测方法。



背景技术:

对于涉及到生命攸关功能的软件,软件的故障可能导致极其灾难性的后果,因此对软件安全性极度关注,该类软件被称为安全苛求软件。

安全苛求软件可能包含了非常复杂的处理逻辑,人工的分析和测试并不能检查出所有的风险,为了保证软件始终运行在期望的设计空间内,引入契约式设计技术。

契约式设计是一种可以提高系统安全性的一种技术。契约由前置条件,后置条件,不变项组成。前置条件在每个操作(函数)最开始检查,为了执行操作必须为真;后置条件是函数保证做到的事情,是函数完成的状态;不变项在函数执行前必须为真,在函数执行结束后也必须为真。对于安全苛求软件,软件始终运行在期望且确定的状态空间内,每个函数的契约在运行时都必须满足,如果契约违背则系统处于预期设计空间之外,软件需要导向安全处理。

在软件运行时记录故障报警产生的位置是一个比较复杂问题,因为函数模块调用关系的是非常复杂的,一个子模块可以被不同层次的父模块调用,可以在同一模块中被调用多次,甚至被循环调用上万次,模块的位置是在软件运行时根据实时状态动态决定的。

分析报警原因也比较复杂,报警的产生是瞬时系统内部状态和外部输入共同导致的,产生异常数据的源头可能不在报警模块中,可能是多个模块组合影响的结果,这类问题采用人工分析的代价非常大。



技术实现要素:

本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种软件故障报警监测方法,在软件故障时导向安全处理,并且能够快速定位故障位置,分析报警原因,提高了软件的安全性和可维护性。

本发明的目的可以通过以下技术方案来实现:

一种软件故障报警监测方法,包括以下步骤:

步骤a:为每一个软件模块分配静态模块编码;

步骤b:在软件模块中为每一个故障报警信息分配一个静态故障编码;

步骤c:软件运行时在软件模块执行之前分配动态模块编码;

步骤d:在软件模块执行时首先记录当前模块编码;

步骤e:在软件模块运行时检查和搜集故障报警信息;

步骤f:检测到故障信息后将系统全部内部状态记录到外部存储器,系统导向安全处理;

步骤g:软件模块正常执行结束时擦除记录的当前模块编码;

步骤h:使用故障分析诊断工具进行分析。

所述的步骤a中的静态模块编码是全局唯一且不重复的模块标志。

所述的步骤b中的静态故障编码为在模块内部是唯一且不重复的错误标志。

所述的步骤c中的动态模块编码是由父模块a向被其调用子模块b临时分配动态模块编码。

所述的子模块在同一父模块中获得的动态模块编码是不重复的,子模块在同一父模块中被多次调用时,每次子模块将被分配唯一的且不重复的动态模块编码;同一子模块在不同父模块中被调用时,只要求子模块在同一父模块中获得的动态模块编码是不重复的。

所述的父模块通过形参传递动态模块编码给子模块。

所述的步骤d中的当前模块编码是由静态模块编码与动态模块编码组成的有序对,当前模块编码是系统运行时当前模块在父模块中执行的唯一相对路径。

存储所述的当前模块编码的集合称为模块信息序列表,每记录一条当前模块编码时,在模块信息序列表尾部插入一条数据,当模块信息序列表存满时,记录模块信息序列表溢出事件。

所述的步骤e中,在软件模块运行时检查和搜集故障报警信息具体为:在软件模块运行时检查前置、后置和不变项条件是否全部成立,结果为否定时产生异常报警,故障搜集模块将搜集所有异常报警信息。

所述的故障搜集模块首先记录自身模块编码到模块信息序列表,然后记录故障异常报警信息对应的故障编码到模块信息序列表。

所述的步骤f中系统全部内部状态是系统运行所使用的全部全局变量,包含模块信息序列表数据。

所述的步骤g具体为:没有异常报警信息发生时,模块正常执行结束,结束前最后一个动作是从模块信息序列表擦除记录的当前模块编码。

所述的从模块信息序列表擦除记录的当前模块编码具体为:

通过删除模块信息序列表尾部最后一条数据实现,当模块信息序列表为空时,记录模块信息序列表为空事件。

所述的唯一相对路径通过模块信息序列表存储的相对路径有序序列来表示,即是从系统运行的最顶层模块到当前执行模块的相对路径,按照执行顺序组成有序序列。

故障发生时异常报警信息的唯一绝对路径,通过模块执行时的唯一绝对路径,加上故障编码表示。

所述的步骤h中使用故障分析诊断工具进行分析具体为:读取外部存储器中保存的模块信息序列表数据,判断故障发生时异常报警信息的唯一绝对对路径,根据此时系统内部状态进行原因分析。

与现有技术相比,本发明具有以下优点:

本发明所述方法利用模块的相对路径组合定位报警产生的位置,能够适应复杂的程序动态调用关系,可以不限容量的增加报警事件,报告故障坐标更加精确。

采用本发明所述方法,将故障产生瞬间的系统内部状态记录到外部存储器,便于使用专用的故障分析诊断工具复现故障场景,快速分析故障原因。

附图说明

图1为本发明功能模块流程图;

图2为本发明故障报警搜集模块流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

本发明所要解决的技术问题,是实时监测软件故障报警,并且为分析问题提供故障瞬间的软件内部状态。

如图.1所示流程是一个具有监测故障报警能力的功能模块流程图。

步骤a中,在软件设计阶段,为每一个软件模块分配静态模块编码,静态模块编码全局统一编码,只在模块内部可见和使用。

步骤b中,在软件设计阶段,每一条报警信息在模块中被分配一条静态的故障编码。

步骤c中,模块的输入参数接口中包含一个参数代表动态模块编码;模块中如果调用了子模块,每次调用的子模块将被赋予不同的编号,通过该编号是可以反向推导子模块执行的时序,该编号作为参数传递给子模块作为其动态模块编码。

步骤d中,在模块中静态模块编码和动态模块编码组合成为当前模块编码,当前模块编码代表模块在父模块中执行的唯一相对路径;功能模块执行的第一个动作是将当前模块编码记录到模块信息序列表。然后模块执行功能相关逻辑和契约检查。

步骤e中,模块执行功能相关逻辑时模块检查契约(前置条件,后置条件,不变项)是否违背,如果契约违背将生成报警信息,在检查契约之后,所有的故障报警事件都通过接口参数传输到故障搜集模块中。

如图2所示流程是故障搜集模块的处理流程。

步骤f中,故障搜集模块也通过静态模块编码和动态模块编码来唯一标识路径信息。故障搜集模块检查到故障报警时,转入软件安全侧处理;如果没有报警则返回上层模块。软件安全侧处理将中断软件正常运行,首先记录故障信息到模块信息序列表,然后设置标志位表明存在故障信息,并且将系统的全部内部状态记录到外部存储器,最后调用专用模块中断软件运行将系统导向安全侧。

步骤g中,模块正常执行的最后一个动作是将当前模块编码从模块信息序列表中删除。如果在模块的第一个和最后一个动作之间发生故障报警事件,模块的正常逻辑将不会正确执行。

其中步骤d中,向模块信息序列表写入一条模块编码时,如果模块信息序列表已满,将生成表溢出事件,如果不存在报警信息则在表尾插入一条数据。步骤g中,从模块信息序列表删除一条模块编码时,如果模块信息序列表为空,将生成表空出事件,如果不存在报警信息则在表尾删除一条数据。向模块信息序列表写入、删除一条数据在模块中是成对出现的。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1