一种软件故障报警监测方法技术

技术编号:16175607 阅读:29 留言:0更新日期:2017-09-09 02:49
本发明专利技术涉及一种软件故障报警监测方法,包括以下步骤:步骤A:为每一个软件模块分配静态模块编码;步骤B:在软件模块中为每一个故障报警信息分配一个静态故障编码;步骤C:软件运行时在软件模块执行之前分配动态模块编码;步骤D:在软件模块执行时首先记录当前模块编码;步骤E:在软件模块运行时检查和搜集故障报警信息;步骤F:检测到故障信息后将系统全部内部状态记录到外部存储器,系统导向安全处理;步骤G:软件模块正常执行结束时擦除记录的当前模块编码;步骤H:使用故障分析诊断工具进行分析。与现有技术相比,本发明专利技术在软件故障时导向安全处理,并且能够快速定位故障位置,分析报警原因,提高了软件的安全性和可维护性。

【技术实现步骤摘要】
一种软件故障报警监测方法
本专利技术涉及软件故障监测技术,尤其是涉及一种软件故障报警监测方法。
技术介绍
对于涉及到生命攸关功能的软件,软件的故障可能导致极其灾难性的后果,因此对软件安全性极度关注,该类软件被称为安全苛求软件。安全苛求软件可能包含了非常复杂的处理逻辑,人工的分析和测试并不能检查出所有的风险,为了保证软件始终运行在期望的设计空间内,引入契约式设计技术。契约式设计是一种可以提高系统安全性的一种技术。契约由前置条件,后置条件,不变项组成。前置条件在每个操作(函数)最开始检查,为了执行操作必须为真;后置条件是函数保证做到的事情,是函数完成的状态;不变项在函数执行前必须为真,在函数执行结束后也必须为真。对于安全苛求软件,软件始终运行在期望且确定的状态空间内,每个函数的契约在运行时都必须满足,如果契约违背则系统处于预期设计空间之外,软件需要导向安全处理。在软件运行时记录故障报警产生的位置是一个比较复杂问题,因为函数模块调用关系的是非常复杂的,一个子模块可以被不同层次的父模块调用,可以在同一模块中被调用多次,甚至被循环调用上万次,模块的位置是在软件运行时根据实时状态动态决定的。分析报警原因也比较复杂,报警的产生是瞬时系统内部状态和外部输入共同导致的,产生异常数据的源头可能不在报警模块中,可能是多个模块组合影响的结果,这类问题采用人工分析的代价非常大。
技术实现思路
本专利技术的目的就是为了克服上述现有技术存在的缺陷而提供一种软件故障报警监测方法,在软件故障时导向安全处理,并且能够快速定位故障位置,分析报警原因,提高了软件的安全性和可维护性。本专利技术的目的可以通过以下技术方案来实现:一种软件故障报警监测方法,包括以下步骤:步骤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中,从模块信息序列表删除一条模块编码时,如果模块信息序列表为空本文档来自技高网...
一种软件故障报警监测方法

【技术保护点】
一种软件故障报警监测方法,其特征在于,包括以下步骤:步骤A:为每一个软件模块分配静态模块编码;步骤B:在软件模块中为每一个故障报警信息分配一个静态故障编码;步骤C:软件运行时在软件模块执行之前分配动态模块编码;步骤D:在软件模块执行时首先记录当前模块编码;步骤E:在软件模块运行时检查和搜集故障报警信息;步骤F:检测到故障信息后将系统全部内部状态记录到外部存储器,系统导向安全处理;步骤G:软件模块正常执行结束时擦除记录的当前模块编码;步骤H:使用故障分析诊断工具进行分析。

【技术特征摘要】
1.一种软件故障报警监测方法,其特征在于,包括以下步骤:步骤A:为每一个软件模块分配静态模块编码;步骤B:在软件模块中为每一个故障报警信息分配一个静态故障编码;步骤C:软件运行时在软件模块执行之前分配动态模块编码;步骤D:在软件模块执行时首先记录当前模块编码;步骤E:在软件模块运行时检查和搜集故障报警信息;步骤F:检测到故障信息后将系统全部内部状态记录到外部存储器,系统导向安全处理;步骤G:软件模块正常执行结束时擦除记录的当前模块编码;步骤H:使用故障分析诊断工具进行分析。2.根据权利要求1所述的一种软件故障报警监测方法,其特征在于,所述的步骤A中的静态模块编码是全局唯一且不重复的模块标志。3.根据权利要求1所述的一种软件故障报警监测方法,其特征在于,所述的步骤B中的静态故障编码为在模块内部是唯一且不重复的错误标志。4.根据权利要求1所述的一种软件故障报警监测方法,其特征在于,所述的步骤C中的动态模块编码是由父模块A向被其调用子模块B临时分配动态模块编码。5.根据权利要求4所述的一种软件故障报警监测方法,其特征在于,所述的子模块在同一父模块中获得的动态模块编码是不重复的,子模块在同一父模块中被多次调用时,每次子模块将被分配唯一的且不重复的动态模块编码;同一子模块在不同父模块中被调用时,只要求子模块在同一父模块中获得的动态模块编码是不重复的。6.根据权利要求4所述的一种软件故障报警监测方法,其特征在于,所述的父模块通过形参传递动态模块编码给子模块。7.根据权利要求1所述的一种软件故障报警监测方法,其特征在于,所述的步骤D中的当前模块编码是由静态模块编码与动态模块编码组成的有序对,当前模块编码是系统运行时当前模块在父模块中执行的唯一相对路径。8.根据权利要求7所述的一种软件故障报警监测方法,其特征在于,存储所述的当前模块编码的集合称为模块信息序列表,每记录一条当前模块编码时,在模块信息序列表尾部插入一...

【专利技术属性】
技术研发人员:左辉陈祥夏庭锴吕新军
申请(专利权)人:卡斯柯信号有限公司
类型:发明
国别省市:上海,31

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

1