浅谈软件失效模式与影响分析
2018-11-21赵昶宇刘云卿
赵昶宇,刘云卿
浅谈软件失效模式与影响分析
赵昶宇,刘云卿
(天津津航计算技术研究所,天津 300308)
软件失效模式与影响分析应贯穿于软件的整个研制周期,可以帮助设计者较早发现设计缺陷并提出改进措施和避错容错方案。按照软件产品的生命周期,将软件失效模式与影响分析分为系统级、功能级、接口级和详细级4个层次,并对每个层次的分析方法进行了阐述。
SFMEA;影响分析;分析方法;故障诊断
软件失效模式与影响分析(SFMEA)是提高系统可靠性的重要方法,它分析系统中每一产品可能发生的故障模式及其对系统可能造成的所有影响,是一种自下而上归纳的系统可靠性分析,最底层一级的影响逐级向上传播,直到系统的最顶层。SFMEA关心的重点是“如果软件的单元和部件运行不正确会带来什么样的影响”,它对软件的单元和部件进行失效假设,然后分析到系统一级,得出导致的后果。SFMEA的优势在于它从软件的失效入手,能够从反面角度提供更多的可靠性信息,并采取测试以外的方法来改善软件的可靠性和安全性。本文在对SFMEA理论方法和实施过程研究的基础上,根据产品的生命周期,将SFMEA分为4个层次:系统级SFMEA、功能级SFMEA、接口级SFMEA和详细级SFMEA。层次之间的关系和模型如图1所示。
图1 SEMEA层次模型
1 系统级SFMEA的分析方法
系统级SFMEA主要用来评价软件的体系结构,确保软件结构能够抵御失效所带来的影响,降低软件风险。一般应该在软件项目开发中实施系统级SFMEA,它的分析结果能够为功能级和接口级SFMEA提供指导依据。
在软件的需求分析阶段,通过仔细研究软件的需求规格说明文档,识别软件需求规格说明中规定的任务关键要求和失效的关键因素,并对任务关键要求和失效的关键因素进行重点分析。通过系统级SFMEA分析来保证软件体系结构能够抵御软硬件失效所带来的影响,降低软件风险。需要值得注意的是,系统级SFMEA需要在开发阶段的各个过程中不断地重复进行,后期还需与详细级SFMEA同步进行,在这个过程中一定要充分考虑到SFMEA分析的成本和软件开发的成本。
当软件的原型结构设计完成并且每个软件模块的功能要求确定后,就可以开展系统级SFMEA分析工作。系统级SFMEA分析的目的是鉴定软件结构的安全性和鲁棒性,重点是从系统的角度分析软件各个子模块的输出和各个模块之间匹配的协调性。
根据相应的软件可靠性国标和国军标,将系统失效模式分为以下几类:①输入错误;②输出错误;③错误的返回值(优先顺序、不能返回等);④优先权错误;⑤资源冲突。
2 功能级SFMEA的分析方法
功能级SFMEA用于分析软件中完成某一特定功能的模块,它把潜在的软件错误看成是软件执行上的失效。一个软件具有多种功能,而每一种功能又可能具有多种失效模式,必须针对每一功能模块分别找出全部可能的失效模式。功能级SFMEA的目的是帮助软件设计者对影响软件功能的各种故障都进行周密考虑,有助于找出对系统有重大影响的故障模式并分析其影响程度采取改进措施;也有助于设计者全面系统地了解各个软件模块之间的相互关联关系。功能级SFMEA能够发现潜在软件内部流程设计缺陷、模块间配合和交互过程中的问题,能够遍历各种缺陷对系统的所有影响,并发现需求规格中没有明确但又必须明确的可靠性问题。
在进行功能级SFMEA分析时,通常可采用“黑盒子”方法,将各个软件模块看作一个内部代码未知的“黑盒子”,“黑盒子”的功能是已知的,然后对软件模块的失效模式进行定义和分类。分析过程中不仅应考虑软件功能实现的问题及其导致的处理过程失效,还应考虑其他环境因素导致的处理过程及输出结果失效。比如数据或消息交互过程中的通信故障、软件处理过程中的异常丢包、数据存储过程中的存储介质失效、人为误操作等。
对软件功能进行SFMEA的对象可以是一项处理流程,也可以是一系列的处理流程;可以是纯软件过程,也可以是软硬件结合的处理流程。选择分析的重点在业务处理相关、状态机复杂、处理过程复杂、多进程多模块之间的交互等。在进行分析之前,应先熟悉模块的架构、功能和处理流程,并对功能进行分解,划分出模块的功能流图。对软件流图中的每一个步骤,应列出其所有输出条件(能够执行该功能或到达该状态的所有先决条件),但不限于应用场景、用户操作、输入参数和传入的消息等。此外,还应充分考虑软件流图中的每一个步骤的故障模式,判断其发生的可能性,并对故障模式的全面性和正确性进行评审。
3 接口级SFMEA的分析方法
接口级SFMEA用于分析影响软件模块之间或者软件和系统硬件之间的失效。对于软件接口模型,可以利用基于行为的失效模式影响分析来找出失效模式和影响,为失效模式的影响分析提供定性和定量的信息和数据。
接口级SFMEA的分析方法和步骤具体为:①对所要分析的软件接口模型的失效模型进行定义和分类;②对接口模型进行行为描述;③对软件结构分解后的接口级元素进行失效模式与影响分析,采用表1这样的形式填表。
表1 接口级SFMEA分析表格
组件功能失效模式原因失效影响严重度 局部影响上层影响系统影响
软件接口的失效模式可分为以下几种:①模块的参数单位与模块接收的输入变量单位不一致;②模块的参数属性与模块接收的输入变量属性不一致;③模块的参数个数与模块接收的输入变量数量不一致;④模块的参数次序与模块接收的输入变量次序不一致;⑤传递给被调用模块的变量单位与该模块参数的单位不一致;⑥传递给被调用模块的变量属性与该模块参数的属性不匹配;⑦传递给被调用模块的变量数量与该模块参数的数量不相同;⑧传递给被调用模块的变量次序与该模块参数的次序不一致;⑨修改了只作为输入值的变量;⑩全局变量在所有引用它们的模块中有不相同的定义;⑪存在把常数作为变量传送的情况。
4 详细级SFMEA的分析方法
详细级SFMEA的工作是在软件详细设计阶段后期进行,其主要依据是软件详细设计说明。详细级SFMEA可以确定模块设计是否达到软件的安全性要求,识别具体的失效情况,确定失效的根本原因。详细级SFMEA针对每个模块推测每个变量和算法的失效模式,通过代码跟踪这些失效模式产生的影响,将得到的结果与软件风险分析相比较从而识别出潜在的失效。
穷尽分析某模块的所有变量是没有必要也是不现实的,而且还使分析重点不够突出。在软件开发过程中,根据不同需要定义不同类型变量,所以不同类型的变量有着不同的作用以及重要性,SFMEA中重点关注以下类型变量:①有多个函数进行调用的全局变量发生失效,那么系统将会受到连锁影响,需要对这部分全局变量进行深人分析。②外部的参数变量。人工设置的参数合适与否直接影响着系统的运行。③算法输出变量。对于软件,算法是重要组成部分,计算出的结果直接控制系统的动作,算法的失效模式转化成计算出的相关变量的失效。④软件接口变量,包括软件和软件之间(函数调用、进程通信等)、软件和硬件之间(设置数模转换端口到指定值)、硬件和软件之间(软件读取温度传感器)、硬件和硬件之间的失效。硬件受到环境影响,其在传输过程中会出现差错,硬件输入的变量是在实际中常常出现问题的变量。
常用的详细级SFMEA的分析方法有以下3种。
4.1 危险-原因-关键软件变量关系分析
通过确定危险所对应的输入、输出变量值的对应范围来标识、定位可能的软件缺陷,并在软件的可靠性和安全性设计中采取相应的措施,可采用表2这样的格式。
表2 危险-原因-关键软件变量关系分析表
失效模式关键软件变量 危险原因变量1变量2…变量n 危险1原因1对应值范围对应值范围…对应值范围 …………… 危险2原因1对应值范围对应值范围…对应值范围 原因2对应值范围对应值范围…对应值范围 ……………
4.2 矩阵分析法
矩阵分析法是以软件的功能和逻辑为主要的分析对象,在软件的概要设计完成后开始,在以后的各开发周期反复地进行,分析结论指导设计和测试,达到将软件缺陷消灭在设计的测试阶段,提高软件的可靠性和安全性。矩阵分析法可采用表3这样的格式。
4.3 变量失效模式分析
详细级SFMEA不仅要考虑软件本身的失效模式比如赋值错、变量调用错误等,还要考虑输入数据的错误,并根据具体开发语言和编译环境来确定其失效模式。变量失效模式分析可采用表4这样的格式。
5 结束语
随着舰载火控系统的不断发展,测试性设计在舰载火控系统乃至整个武器系统总体性能设计中的地位和作用越来越突出,产品必须进行测试性设计。舰载火控系统设计性能中的高可靠性、高维修性和高测试性的结合,可达到提高舰载火控系统可用性和降低系统寿命周期费用的目的,这正是舰载火控系统追求的最终目标。
表3 矩阵分析表
失效模式关键软件变量 输出变量1输出变量2…输出变量n 输出变量1失效模式1输出值输出值…输出值 失效模式2………… 执行逻辑失效模式1输出值输出值…输出值 失效模式2………… ……………… ……………
表4 软件变量失效模式分析表
变量类型失效模式代码 布尔量False(本应为True)F True(本应为False)T 数值量太小L 太大H ………
[1]张仝伟,石柱.SFMEA方法在飞行控制软件中的应用[J].航天控制,2007,25(2):58-63.
[2]吴邦国,唐任仲.软件FMEA技术研究[J].机电工程,2004,21(3):8-12.
[3]刘正高,王志梅.软件FMEA技术的应用策略[J].质量与可靠,2005(6):36-38.
2095-6835(2018)21-0001-02
TP311.5
A
10.15913/j.cnki.kjycx.2018.21.001
赵昶宇(1982—),男,陕西汉中人,工学硕士,高级工程师,主要从事嵌入式系统软件测试方面的研究。
〔编辑:严丽琴〕