发明名称 基于层次依赖建模的软件FMEA方法
摘要 本发明公开了一种基于层次依赖建模的软件FMEA方法,包括第一步,从需求出发,对所分析的对象全面深入了解,确定分析目标;第二步,以概要设计为参考,构建系统级层次依赖模型;第三步,选取待分析模块及确定其失效模式,由系统级层次依赖模型可达性节点分析,分析失效影响传播路径和失效原因追踪的路径,确定失效原因和失效影响,提出改进措施;第四步,根据系统级FMEA结果,选取详细级FMEA分析对象;第五步,以选取的分析对象的详细设计或伪代码为依据,构建详细级层次依赖模型;第六步,根据详细级层次依赖模型,选取要分析的关键变量;第七步,确定待分析变量的具体失效模式,由详细级别依赖模型可达性节点分析,分析变量的产生原因及失效影响,提出改进措施。
申请公布号 CN103473400B 申请公布日期 2016.12.28
申请号 CN201310378809.3 申请日期 2013.08.27
申请人 北京航空航天大学 发明人 吴玉美;吴立金;刘斌
分类号 G06F17/50(2006.01)I 主分类号 G06F17/50(2006.01)I
代理机构 北京永创新实专利事务所 11121 代理人 赵文颖
主权项 基于层次依赖建模的软件FMEA方法,具体实现步骤如下:第一步,确定分析目标;通过目标软件的软件需求规格说明文档,利用需求关键性分析方法,识别目标软件的安全关键需求,根据安全关键需求得到安全关键功能;第二步,构建系统级层次依赖关系模型;1)对目标软件进行分解和数据精化;将安全关键功能进行层次分解,分解出子功能;同时对软件进行结构的层次分解,结构分解出软件模块;数据精化辨别出数据在模块之间的传递关系包括交换数据类型、数据取值范围、实时性约束;2)基于分解结果,为节点添加属性,构建层次依赖模型控制依赖关系;(1)增添系统级别层次依赖模型节点的信息通过现有的软件模块关键性分析方法,辨别分解后的模块与分解后功能对应关系以及模块的安全关键性,将功能作为模块的属性;约定:上层模块功能属性是下层功能属性的综合,下层节点的功能属性是上层的功能分解;在层次依赖模型中每个节点采用一个八元组Na=(M,I,O,P,L,G,Q,C)来储存信息,其中:a)M是节点的名称或编号,能唯一标识这个节点,且不为空值;b)I是节点代表的模块的输入变量集合,非空,集合中的每个变量又分别是一个变量模型,变量模型包括变量编号、变量名称、变量类型、变量作用域属性;c)O是节点代表的模块的输出变量集合,其属性与输入变量I相同,即,集合中的每个变量也是一个变量模型,变量模型包括变量编号、变量名称、变量类型、变量作用域属性;d)P是处理过程描述,描述节点所代表的模块的功能流程,可以是文字性描述,也可以是流程图形式,主要用于分析人员对功能有更深刻理解,P可以为空;e)L是层次依赖模型中上层相关联节点的集合,即控制依赖本节点的上层节点集合,L包括上个横向层次中相依赖节点集合L1和上个纵向层次相依赖节点集合L2;f)G是层次依赖模型中节点的功能属性,包括详细描述和功能关键词两个属性,其中功能关键词属性主要由分析人员的通用软件失效模式集确定,功能关键词用于FMEA自动化查找失效模式,详细描述是对功能关键词进行细致的描述,便于分析人员理解;g)Q是层次依赖模型中下一个层次相关联节点的集合,Q包括下个横向层次相依赖节点集合Q1和下个纵向层次相依赖节点集合Q2;h)C表示本节点所处的层次,包括横向层次及纵向层次,采用层次对&lt;横向层次,纵向层次&gt;表示;(2)识别系统级别的层次依赖模型中依赖关系及增添属性模块间的控制依赖关系是指模块间的调用关系或包含关系,用模块间的控制依赖边表示,从代表调用模块或总模块的节点指向代表被调用模块或子模块的节点,用实箭头表示;逆着箭头方向是寻找失效的影响,顺着箭头是寻找失效的可能原因;模块间的数据依赖关系是指模块间的数据传递,在本模型中采用数据传递边表示,数据传递边从代表数据定义模块的节点指向代表数据应用模块的节点,用虚箭头表示;顺着箭头是寻找失效的影响,逆着箭头方向是寻找失效的原因;每个节点间的依赖关系采用一个七元组E=(I,Q,Z,L,P,C,Y)来储存信息,其中:a)I表示的是依赖关系的编号,每个依赖关系都有唯一的编号;b)Q表示的是表示依赖关系箭头的起点的名称或编号,由于不同依赖关系表示方式不同,起点是指箭头连线的起始点,而非依赖关系的起点;c)Z表示的是表示依赖关系箭头的终点的名称或编号,也是指箭头连线的终点,而非依赖关系的终点;d)L表示的是依赖的类型,不同的依赖关系所使用的箭头不同,箭头的起点与终点的含义不同,如控制依赖的起点依赖终点,数据传递是数据由起点传递到终点,终点依赖于起点,类型包括数据传递、控制依赖、同步依赖、通信依赖、控制流向,在系统级层次依赖模型中使用的是控制依赖与数据传递;e)P表示的是依赖的优先级,同一个节点有多条依赖关系时,通过优先级表示此节点被依赖的顺序,默认情况下为0,数值越大,优先级越低;如果在循环依赖的情况下有不同的优先级,影响分析时,优先级越高的首选被遍历,只有在没有更低的依赖关系时循环依赖遍历完成;主要是用于更清楚的表现传播影响路径;在分析失效原因时,优先级低的首选被遍历;f)C表示依赖关系代表的操作的描述,包括:调用、包含、控制流向、数据读、数据写;g)Y表示依赖关系的约束,控制依赖的约束有递归、条件调用,数据依赖的约束有数值限幅、实时性要求,对约束还可以进行详细描述;3)基于数据精化的结果,在只包含控制依赖关系的层次依赖模型中,节点间增加相应的数据传递边;层次依赖模型是一种使用控制依赖和数据依赖表示软件结构的层次关系和数据关系的一种模型,定义为六元组&lt;N,E,Ec,Ed,V,f&gt;表示;其中,N是节点集合;E是节点间的依赖边;Ec为节点间控制依赖边,用实的有向边表示,从调用模块指向被调用模块;Ed为模块间数据传递边,用虚的有向边表示,有向边的方向与模块间数据流动的方向一致;E=Ec∪Ed,<img file="FDA0001041105030000031.GIF" wi="278" he="60" />V是目标软件系统的数据集合;f为从Ed到V上函数f:Ed→V,表示数据依赖边上流动的数据流信息;为降低数据传递的冗余性,在系统级层次依赖模型中,数据传递边只在模型的叶子节点之间构建;通过对目标软件进行分析,在叶子模块间的数据依赖关系表现为以下五种形式:(1)全局变量和数组的数据传递;(2)函数调用形参传递;(3)函数内部静态局部变量的数值传递;(4)函数返回参数的传递;(5)其它公共数据交换模式,如文件、数据库;第三步,选取约定层次,确定约定层次中每个模块的失效模式,由系统级层次依赖模型节点可达性分析,分析失效原因追踪路径和失效影响传播路径,确定失效原因和失效影响,提出改进措施;1)与现有技术一样,首先选定要分析的层次,确定出合理的初始约定层次和最低约定层次;(1)确定初始约定层次它是系统级软件FMEA最终影响的对象;(2)确定约定层次它规定了系统级软件FMEA所要分析的软件的范围,超出这个范围的其他所涉及到的因素都应该划归为软件的运行环境范畴;(3)确定最低约定层次为使最低约定层次能够明确定义,采用如下规定:●所有可获得分析数据的软件单元中最低的层次,它能够有完整的输入,或能够对应到软件中的一个或几个有一定功能的函数;●当软件中某模块的失效将直接导致灾难的(I类)或致命的(II类)的后果时,则最低约定层次至少划分到这一模块所在层次;●确定或预期需要单元测试的最低产品层次,这些软件单元可能导致临界的(III类)或轻度的(IV类)故障;2)获取通用软件失效模式集与确定待分析节点具体失效模式的步骤如下:(1)定义故障判据,它是根据产品的功能、性能指标、使用环境等允许极限进行确定的;本方法故障判据如下:a)软件在规定的条件下和规定时间内,不能完成规定的功能;b)软件在规定的条件下和规定时间内,某些性能指标不能保持在规定的范围内;c)软件在规定的条件下和规定时间内,通过硬件引起对能源和物资的消耗或人员、环境的影响超出了允许范围;d)技术协议或其他文件规定的故障判据;(2)对通过故障判据判定的故障进行分析和抽象,采取了“输入‑输出‑处理‑性能”分类方式对软件中常见失效模式进行总结归类,形成通用的失效模式集S;(3)基于通用的失效模式集S和已经建立的软件系统依赖关系模型中节点的功能属性,分析当前关注的节点所代表的的模块所有可能发生的具体失效模式集T;具体失效模式确定方法有:a)启发式,直接来自于通用失效模式集的失效模式或某些失效模式的进一步细化或变种;对采用现有的软件,可从该软件在过去的使用中所发生的故障模式为基础,再根据该软件使用环境条件的异同进行分析修正,进而得到该软件的故障模式;b)借鉴式,从相似功能和相似结构软件中发生的故障模式作基础,分析判断其故障模式;c)脑力激荡式,通过调查分析软件失效发生机理,即根据常见软件缺陷来预测可能的失效;d)变异式,从软件使用环境,功能、体系结构和维护要求以及可靠性、安全性要求方面入手理解目标软件系统提取特有失效模式;e)索取式,对引进国外货架软件,应向外商索取其故障模式(4)将特有失效模式总结抽象,归结到通用失效模式集S中,为以后分析提供借鉴;3)基于系统层次依赖关系模型进行失效原因分析在层次依赖模型中,按照其控制依赖箭头的正方向,数据传递箭头的反方向,采用深度优先遍历算法,来查找目标软件中导致某一模块失效的所有可能模块;低层次产品的故障模式是紧邻上一层次的故障原因这样对的高层影响的自动生成高层节点的故障模式,同时高层的相应的故障原因也通过低层节点的故障模式自动生成;对于分析到最低层失效原因时将失效原因归结到软件设计缺陷,或者通过详细级确定失效更本质的原因;4)利用系统级层次依赖模型进行软件失效影响分析采用深度优先遍历方法按照其控制依赖箭头的反方向,数据传递箭头的正方向,来查找目标软件中该模块的失效所影响到的所有可能模块对应的节点;低层次的上级影响就是中间层次的故障模式,中间层次的上级影响又是更高层次的故障模式;中间层次和低层次的最终影响同对应的最高层次的最终影响;根据影响到的节点的属性,辨别影响到的节点的某一具体失效模式就是影响结果;每个节点,都有属性加以信息约束,进行寻找可达节点遍历时由功能关键字搜索通用软件失效模式集,将与之相关的所有失效模式查找出来;在遍历过程中需对相关联的节点之间进行功能关键字匹配,判断是否有冗余;5)在系统级FMEA中对影响严酷度的判别首先由研制方从功能角度制定高层功能失效的严酷度,研制方制定功能失效严酷度层次应在分解系统时,功能与结构开始出现不完全对应的一层;分析人员利用层次依赖模型,将影响定位到结构中的模块,高层的模块与功能对应,辨别影响到的高层功能,通过对高层功能的影响程度以及高层功能失效的严酷度确定底层失效的具体严酷度;如果底层失效引起高层功能完全失效,那么严酷度等级应与高层一致,如果部分影响高层功能,即高层功能并未完全失效,那么严酷度等级应该比高层功能失效低;6)改进措施的提出对于软件来讲,改进措施的提出方法主要结合现有的软件可靠性设计方法,在系统级有以下方法:(1)重新设计方法,利用软件工程化思想,采用合适的软件开发过程、开发方法及工具,贯彻软件避错设计原理,重点考虑抽象与逐步求精、模块独立与信息隐藏、健壮性设计、形式化方法;这种重新设计的措施耗费人力物力,所以采用冗余设计;(2)冗余设计,针对系统级的故障模式采取的改进措施有结构容错和时间容错;结构容错包括N‑版本程序设计NVP和恢复块RB两种基本技术以及一致性恢复块、接受表决、N自检程序设计等先进技术;时间容错针对系统级故障模式主要是建立软件系统运行日志和数据副本,设计较完备的数据备份和系统重构机制,以便在出现修改或删除等严重误操作、硬盘损坏、人为或病毒破坏及遭遇灾害时能恢复或重构系统;(3)通过详细级改进,对出现的失效模式进行详细级软件FMEA,由于详细级中通过变量线索一步步向上影响到系统级的功能,在详细级针对变量的故障模式提出的改进措施也是对系统级功能设计的改进;第四步,根据系统级软件FMEA结果,选取详细级FMEA分析对象,为了降低分析人员选取分析模块的随意性,本方法针制定如下选取规则:1)功能重要性选取法,系统的核心模块,实现其主要功能;2)体系重要性选取法,与其它模块有较多的交互,通过耦合度计算度量;3)逻辑复杂性选取法,通过算法空间复杂度和时间复杂度度量;4)专家打分法,FMEA本身离不开分析人员的经验,有经验分析人员直觉出问题的模块也是分析的重点;5)系统级软件FMEA选取法,系统级软件FMEA中查找到的会引起关键用例或功能发生失效的模块,其严酷度或危害度在Ⅱ类(致命的,参见GJB1391)以上;第五步,以选取的分析对象的详细设计或伪代码为依据,构建详细级层次依赖模型;1)辨别分析对象的控制流控制流图是程序依赖图中数据依赖和控制依赖信息的载体,控制流节点中包含对应的存储数据依赖和控制依赖信息的域;2)识别节点,控制依赖关系与数据依赖关系(1)识别详细级层次依赖模型中节点;在详细级依赖模型中包含几种类型的结点:单节点,表示软件中的单语句或某变量;域结点,概括了域中语句间的控制依赖;域节点可分为以下五大类型:1.模块节点,表示系统级结构分解的模块;2.函数节点,用于表述函数整体功能以及相关参数之间传递;3.复合语句节点,表述了一个复合语句整体的实现,实现一定算法功能的语句块也可视为复合语句节点;4.谓词控制节点,表示程序中的策略或分支条件,包括条件语句包括switch语句和循环语句的判断部分,用该语句谓词的标记表示;5.结构化跳转语句节点,包括break、continue、return语句;在详细级层次依赖模型每个域节点从功能出发,也约定上层节点功能属性是下层功能属性的综合,用八元组Na=(M,I,O,P,L,G,Q,C)储存信息,同系统级FMEA中模块节点的定义;变量节点,包括变量ID、变量名称、数据类型、存储类型、作用域、所处的域,别名属性,采用一个七元组表示Nb=(ID,Name,L,CL,Y,SY,BN);其中,a)ID作为一个变量节点的唯一标识;b)Name表示变量的名称,同一个名称的变量可能因为作用域表示不同内容;c)L表示数据类型,数据类型有整型、实型、字符型、数组类型、指针类型、结构体类型、及公用体类型;数据类型决定了变量值的数据类型、表现形式和分配空间的大小以及对变量能执行的操作;每个变量数据类型还应标识是否与时间相关以及时间约束特性;d)CL表示变量的存储类型,在C/C++语言中,变量的存储类型有4种:自动类(auto)、静态类(static)、寄存器类(register)来和外部类(extern);e)Y表示变量的作用域,包括局部变量和全局变量,参数变量视为局部变量;f)SY表示变量属于某个域节点内,表示变量与某个域节点的从属关系;g)BN表示数组变量、指针变量或全局变量、静态变量的别名属性,主要是因为出现在不同的语句中,改变一处其他都会改变;别名属性表示方法为&lt;p,&lt;t,i&gt;,d,r&gt;,并定义如下约束规则:(a)p、t是互为别名的变量编号;它们没有先后顺序之分,但如果其中一个是数组元素,则要把它放在t的位置;(b)i是数组元素t的下标,如果t是普通的指针变量,则i=‑1;如果t为多维数组元素,则可以用将i扩展为多元组的方法,精确表示其下标信息;(c)d是p的解引用级别,p=‑1表示取地址;p=1表示指向;(d)r表示别名关系,r=D表示必然别名,r=P表示可能别名;(e)&lt;*p,&lt;*t,i&gt;,d,r&gt;与&lt;p,&lt;t,i&gt;,d,r&gt;等价,因此在集合中均表示为&lt;p,&lt;t,i&gt;,d,r&gt;;(f)p≠t,即不表示自反性导出的别名对;别名可以准确地表示数组和指针的别名信息;别名问题主要指示了同名变量之间、参数传递之间或指针引用之间的依赖关系;(2)识别详细级层次依赖模型中依赖关系定义1控制依赖令G是一个控制流图,u和w是G中的节点;结点u是控制依赖w的,当且仅当:①在一条从u到w的有向路径P,v是p中任意一个结点,不包括结点U和w,w是v的后必经结点;②w不是u的后必经结点;③控制依赖箭头指向由u指向w;其简单理解为:如果结点u是控制依赖w,那么u必须有两个出口;沿着其中的一个出口,总是导致执行w,而另外一个出口则导致w不被执行;定义2数据依赖设u与v为给定程序中两条不同的语句,如果有一条从u到v的执行路径,同时存在一个在u处定义、v处引用的变量,且该变量在从u到v的执行路径上的其他位置没有被重新定义,则称v数据依赖于u;数据依赖在层次依赖模型中用数据传递表示,由u指向v;定义3同步依赖:设u与v为给定程序不同线程中的两条语句,如果u执行的开始或终止通过线程间同步直接决定v执行的开始或终止,则称v同步依赖于u;定义4通信依赖:设u与v为给定程序不同线程中的两条语句,如果u计算的变量的值通过线程间通信直接影响在v计算的变量的值,则称v通信依赖于u;在详细级层次依赖模型中依赖属性与系统级依赖关系属性定义完全一样,采用一个七元组E=(I,Q,Z,L,P,C,Y)表示;2)节点与依赖关系的精简(1)如果x是条件谓词节点,在信息的传递过程中只充当中介,以它为基础对依赖图进行传递转换,同时删除这个节点以及它依赖于其他节点的依赖边;(2)详细级FMEA中关注的是待分析变量之间的依赖关系,所以依赖模型中的中间媒介变量就可以省略;(3)对全局变量和局部变量的不需要区别处理,只要把没有对外可见性的局部变量节点从依赖模型图中删除即可;(4)两个方法的参数结点之间的数据依赖关系用方法之间的数据依赖来表示;每个过程依赖图只需用过程入口结点表示即可,而不必再展开表示;3)关于变量的依赖关系构建如果从变量定义节点到使用变量的节点之间没有该变量的重新定义并且使用变量的节点包含变量定义节点定义的变量,则称该变量使用节点数据依赖于该变量定义结点;添加数据流边由变量定义节点指向使用变量的节点;在C/C++程序中主要是引用和指针导致别名;对于静态变量、全局变量、静态参数变量,通过别名表示,按别名属性以暗线形式搜索路径;对于变量传递到另一个域节点中,利用变量节点的属于SY属性将变量与相关域节点进行相关联,辨别同名变量的依赖关系;4)关于谓词控制节点的控制依赖构建软件中有三种主要的控制结构,分别为顺序结构,判断结构与循环结构;对各种控制节点的构建;5)关于函数的依赖关系构建(1)辨别函数调用关系在每个调用位置节点和相应的过程入口节点之间加入调用边;如果是条件依赖在依赖约束属性Y中要加以限定;(2)调用关系中构建参数依赖或输入、输出依赖;变量对函数的依赖有四种形式,一种是传值,另一种是传址或传引用;第三种是通过全局变量或静态变量来联系;第四种,被调函数返回值赋值给变量;(3)将形参视为内部局部变量,构建被调用函数内部依赖关系;参数和函数调用点之间规定为形参控制依赖于函数定义入口;(4)对于控制节点和复合语句,可以视为多入口和多出口的函数,出口是通过同名变量;6)内联与递归函数构建方法(1)多态函数时可当做一般函数处理,只是将调用的函数名称展开成几个横向层次,每个横向层次描述每一个多态函数的内部层次模型;分析失效影响和原因时等同的每个多态函数遍历;(2)用函数内联的方法处理将调节点用被调用的函数体替换,在层次依赖模型中,可以视为传引用方式的函数;(3)确定函数之间调用关系以及标记是否条件调用之后,模拟递归子程序的执行过程,分两步分析递归函数A的依赖关系:a)去掉S1到S2且通过call A的路径上的所有语句,然后搭建A的依赖模型图,并求出参数之间的依赖关系;这相当于模拟了递归过程中最后一次对A的调用由于语句S1中的条件不能满足而跳过了call A的执行;b)恢复第一步去掉的语句,建立callA输入与输出的数据传递,增加call A指向A的控制依赖,并标记依赖约束为递归;根据递归中的返回过程,增加call A前面节点到S2后节点的数据传递;定义A为一个递归过程,call A为递归过程A中进行对自己递归调用的语句,S1为callA语句控制依赖的判断语句,S2为语句S1后最近的向后必经语句;(4)间接递归建模过程和处理算法a)求出这些子函数分析的顺序;(a)在调用回路中,逐条断开条件调用边直到某一节点的出度为0;如果去掉所有能去掉的条件调用边,没有找到出度为0的节点,则此递归调用一定不能终止,出现死循环;(b)如果节点A的出度为0,则去除节点A和所有指向A的边,包括条件调用边,然后找下一个出度0的节点,直到列出所有节点为止,如果在此过程中,又出现了回路,转(1);设A0,A1,…,AZ是求得的分析序列;b)计算所有子程序的参数依赖集;(a)按第一步求得的分析顺序算出各个子程序程序依赖图PDG和形参依赖集;在计算A<sub>i</sub>时,如果A<sub>i</sub>→A<sub>j</sub>(c)是在a)的(a)中被断开的条件调用边,则在这次计算中将不考虑A<sub>i</sub>对A<sub>j</sub>的调用,具体处理与直接递归a)相似,如果是被断开的不是条件调用边,直接按关于函数的依赖构建方法;(b)逐次加上在a)的(a)中被断开的条件调用边,增加Ai与Aj之间输入与输出的数据传递,具体处理与直接递归b)相似;7)并发程序层次依赖建模(1)描述程序P的并发程序流图;用cobegin和coend分别表示线程的创建和终止,将cobegin、coend以及共享变量读写语句统称为交互语句;(2)根据交互语句将线程分块,称为线程域;每个线程域用一个节点表示,节点间的边表示交互活动,由此生成线程交互图将每个线程域用一个节点表示,节点间的边表示相应的交互活动,由此生成的图称做线程域交互示意图;(3)给定p个线程{t0,t1,…,tp1}的线程域交互示意图,&lt;Ni,Ei,ns<sup>i</sup>,Fi,Li&gt;,0≤i&lt;p,主程序作为t0处理,根据交互活动的标签,可对由这组线程所构成的并发程序进行可达性分析,生成线程交互可达图;程交互可达图的节点组合,表示并发程序在执行一系列交互活动后所到达的程序状态,用p元组表示,第i个分量为第i个线程即将执行的线程域;可达性分析从初始可达标志ms开始,ms=(n<sub>s</sub><sup>0</sup>,⊥,…,⊥),其中⊥表示任务未激活或已终止,根据可能发生的交互活动,生成所有可能的后继可达标志,后继可达标志与前驱可达标志除发生交互的线程的分量发生变化外,其余分量不变;(4)对任意可达标志m,在m的各线程域分量中出现的语句都有可能在m下执行,m只能与这些语句进行组合;同一语句与不同的程序状态组合生成不同的M‑S对;在依赖模型中表现形式是对节点S进行属性扩充,增加一个程序状态属性M;同一个语句根据所处的不同状态可能产生不同的失效影响路径;M为可达标志集,m为可达标志,表示并发程序在执行一系列交互活动后所到达的程序状态,用p元组表示,第i个分量为第i个线程即将执行的线程域,所有m组成可达标志集M;使用可达标志表示系统状态,即一个m为一个状态,可达标志集M即为系统状态集,所以系统状态属性使用可达标志集M表示;第六步,根据详细级层次依赖模型,选取要分析的关键变量;1)变量类型选取法在软件开发过程中,根据不同需要定义不同类型变量,所以不同类型的变量有着不同的作用以及重要性,FMEA中重点关注一下类型变量:(1)有多个函数进行调用的全局变量;(2)外部的参数变量;(3)算法输出变量;(4)软件接口变量,尤其是硬件输入的变量2)体系结构“度”值选取法根据依赖关系对变量节点、域节点采用内聚度和耦合度算法进行“度”的度量:(1)图的体积(用V表示)假设图中节点的总个数为n个,图的层次为m层,那么这个图的体积V=n*m;(2)内聚度(用COH表示)假设图中边的条数为e条,图的体积为V,那么这个图所代表的模块的内聚度COH=e/V;(3)依赖率(用G表示)用一个依赖图的两个子图A,B分别代表两个模块;假设图A中有n1个节点与B中的节点存在边,图B中有n2个节点与A中的节点存在边;则A对B的依赖率GA=n2/n1,B对A的依赖率GB=n1/n2;(4)耦合度(用COU表示)假设子图A中的节点与子图B中的节点存在的边的条数为e1条,A对B的依赖率为η<sub>A</sub>,那么A对B的耦合度为COUA=e1×η<sub>A</sub>;假设子图B中的节点与子图A中的节点存在的边的条数为e2,B对A的依赖率为η<sub>B</sub>,那么B对A的耦合度为COUB=e2×η<sub>B</sub>;内聚度越大,内部越复杂,其内部体系重要度越高;节点间的相关联程度越大,则耦合度越强,反之亦然;通过分析各个变量与其他节点之间的耦合度,耦合度比较大的其外部依赖关系越复杂,其外部体系重要度更高;如果两个节点耦合度相同,可以计算与之相连节点耦合度之和,与之相连节点耦合度之和越大,则本节点体系重要度越大;3)系统级FMEA选取法对系统级FMEA选取的重要模块,向下追踪原因,逐渐追踪到一组变量集,选择这些波及到的变量作为分析对象,然后逐渐对每个变量进行失效模式分析;第七步,确定待分析变量的具体失效模式,由详细级别依赖模型可达性节点分析,分析变量的产生原因及失效影响,提出改进措施1)详细级变量的失效模式确定详细级分析对象是变量,失效模式的确定依据变量的属性确定;变量具有名字、地址、值、作用域、生存期属性;与现有分析方式一样,根据变量的相关属性,查找详细级通用失效模式集,确定变量的具体失效模式;2)基于详细级层次依赖模型的失效原因分析在对软件失效原因的遍历与失效影响的遍历恰好相反,以当前节点开始,按控制依赖箭头方向,按数据传递箭头反方向遍历;再以下一层被依赖的节点进行迭代搜索,一直搜索到下层没有相依赖的节点或者达到最低约定层次为止;遍历方法与分析方法与系统级一样,下层失效模式是上层的失效原因;软件失效原因是由于软件缺陷在运行时被触发而产生的;3)基于详细级层次依赖模型的失效影响分析此软件失效影响分析问题可以被转化为在系统层次依赖关系模型中图的遍历算法;以当前节点开始,按控制依赖反箭头方向,按数据传递箭头方向遍历;再以上一层所依赖的节点进行迭代搜索,一直搜索到上层没有相依赖的节点或者达到初始约定层次为止;遍历分析方法与过程和系统级一样;4)改进措施提出方法主要利用软件的故障判断和故障处理;软件故障处理包括信息容错和时间容错;信息容错一种方式是通过在数据中外加一部分冗余信息码以达到故障检测、故障屏蔽或容错的目的;外加的一部分信息以编码的形式出现,称为检错码或纠错码;检错和纠错码有奇偶检验码、检验和、海明码、循环冗余校验码;信息容错的另一种方式是对随机存取存储器中的程序和数据,存储在三个或三个以上不同的地方,而访问这些程序和数据都通过表决判断的方式来裁决,即一致表决或多数表决,以防止因数据的偶然性故障造成不可挽回的损失;这种方式用于软件中某些重要的程序和数据中;时间容错是不惜以牺牲时间为代价来换取软件系统高可靠性的一种手段;对于详细级故障模式,用指令复执和程序卷回这种时间容错的改进措施:指令复执是在指令级作重复计算;程序卷回是一种后向恢复技术,是以事先建立恢复点为基础的。
地址 100191 北京市海淀区学院路37号