软件可靠性设计与分析

上传人:gb****c 文档编号:243385307 上传时间:2024-09-22 格式:PPT 页数:84 大小:467.50KB
返回 下载 相关 举报
软件可靠性设计与分析_第1页
第1页 / 共84页
软件可靠性设计与分析_第2页
第2页 / 共84页
软件可靠性设计与分析_第3页
第3页 / 共84页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,软件可靠性分析与设计,1,软件可靠性分析与设计,2,软件可靠性分析与设计的原因,软件在使用中发生失效(不可靠)会导致任务的失败,甚至导致灾难性的后果。因此,应在软件设计过程中,对可能发生的失效进行分析,采取必要的措施避免将引起失效的缺陷引入软件,为失效纠正措施的制定提供依据,同时为避免类似问题的发生提供借鉴。,这些工作将会大大提高使用中软件的可靠性,减少由于软件失效带来的各种损失。,3,Myers,设计原则,Myers,专家提出了在可靠性设计中必须遵循的两个原则:,控制程序的复杂程度,使系统中的各个模块具有最大的独立性,使程序具有合理的层次结构,当模块或单元之间的相互作用无法避免时,务必使其联系尽量简单,以防止在模块和单元之间产生未知的边际效应,是与用户保持紧密联系,4,软件可靠性设计,软件可靠性设计的实质是在常规的软件设计中,应用各种必须的方法和技术,使程序设计在兼顾用户的各种需求时,全面满足软件的可靠性要求。,软件的可靠性设计应和软件的常规设计,紧密地结合,贯穿,于常规设计过程的,始终,。,这里所指的设计是,广义的设计,,它包括了从需求分析开始,直至实现的全过程。,5,软件可靠性设计的四种类型,软件避错,设计,避错设计是使软件产品在设计过程中,不发生错误或少发生错误的一种设计方法。的设计原则是控制和减少程序的复杂性。,体现了以预防为主的思想,,软件可靠性设计的,首要方法,各个阶段都要进行避错,从开发方法、工具等多处着手,避免需求错误,深入研究用户的需求(用户申明的和未申明的),用户早期介入,如采用原型技术,选择好的开发方法,结构化方法:包括分析、设计、实现,面向对象的方法:包括分析、设计、实现,基于部件的开发方法(,COMPONENT BASED,),快速原型法,7,软件避错设计准则,(1),模块化与模块独立,假设函数,C(X),定义了问题,X,的复杂性,函数,E(X),定义了求解问题,X,需要花费的工作量(按时间计),对于问题,P1,和问题,P2,,如果,C(P1) C(P2),,则有,E(P1) E(P2),。,人类求解问题的实践同时又揭示了另一个有趣的性质:,(P1+ P2) C(P1) +C(P2),由上面三个式子可得:,E(P1+ P2) E (P1) + E (P2),这个结论导致所谓的,“,分治法,”,-,将一个复杂问题分割成若干个可管理的小问题后更易于求解,模块化正是以此为据。,模块的独立程序可以由两个定性标准度量,这两个标准分别称为内聚和耦合。耦合衡量不同模块彼此间互相依赖的紧密程度。内聚衡量一个模块内部各个元素彼此结合的紧密程度。,8,软件避错设计准则,(2),抽象和逐步求精,抽象是抽出事物的本质特性而暂时不考虑它们的细节,举例,抽象,该,CAD,软件系统配有能与绘图员进行可视化通信的图形界面,能用鼠标代替绘图工具画各种直线和曲线;能完成所有几何计算以及所有截面视图和辅助视图的设计。,抽象, CAD,软件任务;,用户界面子任务;,创建二维图形子任务;,管理图形文件子任务;,END CAD,抽象,III,软件工程过程的每一步都是对软件解法的抽象层次的一次精化,9,软件避错设计准则,(3),信息隐蔽和局部化,信息隐藏原理指出:应该这样设计和确定模块,使得一个模块内包含的信息对于不需要这些信息的模块来说,是不能访问的。,“,只有需要才能知道,”,如果绝大多数数据和过程对于软件的其他部分而言是隐蔽的,那么在修改期间由于疏忽而引入的错误就很少可能传播到软件的其它部分,局部化是指把一些关系密切的软件元素物理地放得彼此靠近,局部变量,10,启发规则,改进软件结构提高模块独立性,模块规模应该适中,深度、宽度、扇出和扇入都应适当,深度表示软件结构中控制的层数,它往往能粗略地标志一个系统的大小和复杂程度。,宽度是软件结构内同一层次上的模块总数的最大值。,扇入是指有多少个上级模块直接调用它,扇入越大则共享该模块的上级模块数目越多,这是有好处的。,扇出是一个模块直接调用的模块数目,扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块。,C,A,H,B,E,G,F,D,I,其中,E,函数扇入数为,2,,扇出数为,3,。,11,圈复杂度,115,的控制流图,圈复杂度,10,的控制流图,12,启发规则,模块的作用域应该在控制域之内,力争降低模块接口的复杂程度,QUAD-ROOT(TBL,X) =QUAD-ROOT(A,B,C,ROOT1,ROOT2),设计单入口单出口的模块,模块功能应该可以预测,13,软件避错设计,慎重使用容易引入缺陷的结构和技术,浮点数,指针,动态内存分配,并行,递归,中断,继承,别名,默认输入的处理,14,GJB/Z 102-97,软件可靠性和安全性设计准则,5.12,防错程序设计,软件查错设计,16,软件查错设计,软件查错设计是指在设计中赋予程序某些特殊的功能,使程序,在运行中自动查找,存在错误的一种设计方法。,被动式错误检测,在程序的若干部位设置检测点,等待错误征兆的出现,主动式错误检测,对程序状态主动进行检查,17,被动式错误检测,检测原则,相互怀疑原则,:在设计任何一个单元、模块时,假设其它单元、模块存在着错误;,立即检测原则,:当错误征兆出现后,要尽快查明,以限制错误的损害并降低排错的难度。,负效应,所设置的,“,接收判据,”,不可能与预期的正确结果完全吻合,导致,错判,或,漏判,;,软件增加了冗余可能降低可靠性,18,被动式错误检测的实施方法,看门狗定时器,当出现潜在不安全的系统状态或有可能转移到这种状态时,将系统转移到规定的安全状态。,循环等待次数控制,配合硬件进行处理的设计,如:电源失效、电磁干扰、系统不稳定、接口故障、干扰信号,以及错误操作等。,按照已知的数据极限检查数据;,按照变量间恒定关系检验;,检查所有多值数据的有效性;,对冗余的输入数据进行一致性检验;,19,看门狗的设计,看门狗技术是控制运行时间的一种有效方法。看门狗实际上是一种计时装置,当计时启动后看门狗在累计时间,当累计时间到了规定值时触发到时中断(即狗叫),看门狗在不需要时可以关闭。看门狗的设计要首先明确其目的性。如:,(1),要防某段程序可能的死循环,则在此段程序前启动狗,在此段程序后关闭狗,在狗叫中断中进行超时异常处理。,(2),要防外来的信息长时间不来,则在开始等外来信息时启动狗,在接收到外来信息时关闭狗,在狗叫中断中进行超时异常处理。,(3),要防计算超时,则在开始计算时启动狗,在计算完毕后关闭狗,在狗叫中断中进行超时异常处理。,显然,不可能要求一个狗可以看管好所有的超时情况,。,20,避免潜在的死循环,在等待外部信号的程序段中,不允许无限制地等待。正确的做法应是,或采用循环等待次数控制,或使用定时器,使得规定时间内(无论成功或失败)必须保证退出等待外部信号的程序段。,不允许的设计方法,建议采用的设计方法,21,注意通过双口,RAM,进行握手,通过双口,RAM,进行信息交换是设计师经常采用的一种设计方案。的确双口,RAM,提供了信息交换双方的方便读写,但仅靠双口,RAM,要做到读写的时序要求就要格外小心。,如此的设计是要避免的:通过双口,RAM,交换信息,在双口,RAM,中设置了握手信号单元。读方检查到握手信号为,01H,,表明对方已准备好数据,再读数据,读完后将握手信号置为,00H,;写方检查到握手信号为,00H,,表明对方已取走数据,再写数据,写完数据后再将握手信号置为,01H,,表明自己已准备好数据。,这种设计不一定可靠,可能会出现写方要写握手信号时,读方正在读握手信号,则写方要写的值写不进去。可靠的设计应用硬件连线保证握手,而不要靠双口,RAM,中的握手信号。如果一定要靠双口,RAM,进行握手,则写握手信号单元数据时一定要写完后接着再读出,经验证确实写成功后再进行下面的操作,否则需继续写。,当然这必须与避免潜在的死循环的设计准则联合使用。,22,可靠的设计方法,握手标志置不上的可能,23,数据采集的多路冗余设计,关键数据的采集可采用多路冗余设计,即可以从多个通讯口对同一数据进行采集,通过表决进行有效数据的裁决。通常多采用奇数路的冗余设计,如,3,路、,5,路等。,(1),开关量的裁决可采用多数票的裁决,如,3,取,2,、,5,取,3,等。,(2),模拟量的裁决可采用中间数平均值的裁决,如,3,路数的中间值、,5,路数去掉最大最小值后的平均值等。,24,主动式错误检测,软件,BIT,对,ROM,中的代码进行和检验(,sum check,);,检测,RAM,,以保证正确的操作用数码;,检测内存的正确性,以确保正确操作;,对关键及重要的函数功能及逻辑功能进行典型较核。,据统计,将硬件看门狗定时器及软件,BIT,相结合,一般可检测出,98,的故障。,主动式错误检测可作为周期性任务来安排,也可作为一个低优先级的任务来执行。,25,故障恢复措施,完全恢复(依靠冗余备份),降级恢复(只提供重要的功能),立即停止程序运行(安全停机),记载错误,将发生错误时的状态记录在一个外部文件上,然后让系统恢复运行,再由维护人员对记录进行深入的分析研究。,26,软件改错设计,27,软件改错设计,改错设计,是指在设计中,赋予程序自我改正错误、减少错误危害程度的能力的一种设计方法。,改正错误的前提是已经准确地找出软件错误的起因和部位(故障检测与故障定位合称,故障诊断,),程序又有能力修改、剔除有错误的语句。,现阶段仅限于减少软件错误造成的有害影响,或将有害影响限制在一个较小的范围。常采用,故障隔离技术,。,现阶段没有人的参与几乎不可能,28,故障隔离,权限最小化原则,是实现故障隔离的主要思想。,为了限制故障的蔓延,要求对过程和数据加以严格的定义和限制。例如,针对操作系统的故障隔离方法:,不允许一个用户的应用程序引用或修改其它用户的应用程序或数据;,绝对不允许一个应用程序引用或修改操作系统的编码或操作系统内部的数据;,保护应用程序及其数据,使其不致由于操作系统的错误而引起程序和数据的偶然变更;,应用程序绝对不能终止系统工作、不能诱发操作系统去改变其它的应用程序或数据;,29,软件容错设计,30,软件容错设计,软件容错设计是指在设计中赋予程序某种特殊的功能,使程序在错误已被触发的情况下,系统仍然具有正常运行能力的一种设计方法。,时间容错,结构容错,信息容错,31,时间容错,所谓,“,时间容错,”,就是不惜以牺牲时间为代价来换取软件系统高可靠性的一种手段,它包括,指令的重复执行和程序,(,一个模块或一个子程序,),重复执行,,两种常被采用而行之有效的方法,指令重复执行是当应用软件系统检查出正在执行的指令出错误后,让当前指令重复执行,n,次,(n=3),,若故障是瞬时性的干扰,在指令重复执行时间内,故障有可能不再复现,这时程序就可以继续往前执行下去。这时指令执行时间比正常时大,n,倍,程序,(,一个模块或一个子程序,),重复执行是当应用软件系统检查出正在执行的程序出错误后,中断当前正在运行的软件,反复调用,n,次,(n= 3),运行出错的程序,(,一个模块或一个子程序,),。在反复调用过程中若故障不再复现,这时程序继续从中断的地址往,F,执行。这时所需的运行时间比重复执行,n,条指令的时间要大得多,对于复执不成功的情况,通常的处理办法是发出,中断,,转入错误处理程序,或对程序进行复算,或重新组合系统,或放弃程序处理。,32,For (i=0,iTTA,规定的时间不能完成发送,即,TSTSA,HeadA,错,TailA,错,中间字节错,67,SFMEA,实例,(,5/5,),编号,失效模式,失效影响,严重性,措施,1,A,由于其它中断或其它原因,无法按时进入通讯中断。,导致通讯无法进行。,非常严重,由,A,的通讯外程序采取措施保证按时进入通讯子程序 。,2,A,的通讯程序在规定的时间内未能完成发送,/,接收。,通讯周期将被打乱,通讯混乱。,非常严重,在,A,中设置定时器,或通过计数控制,以保证规定时间内返回。,3,A,发送头字节,HeadA,由于外干扰出现错误。,B,执行错误的命令。,严重,B,接收,A,的头字节后,判别头字节的合法性。,4,5,A,发中断后,由于外干扰,,B,没能响应中断。,B,无法进入通讯程序,因此无法接收,A,发送的数据。,严重,在,A,中设置定时器,当在允许的时间后仍无,B,的响应信息,放弃此帧通讯。,详细级,SFMEA,步骤,分析每个软件模块的输入输出变量和算法的失效模式,追踪每个失效模式对软件系统的影响直至输出,最后将最终的软件状态与预先定义的软件危险状态对比判断是否存在危险的软件失效。,建立变量映射关系,软件模块使用哪些变量、变量类型、输入变量来源,建立软件线索,变量经过一系列处理到系统输出变量之间的映射关系,确定软件失效模式,变量及算法的失效模式,失效影响分析,由模块追溯到系统影响,69,软件故障树分析,(,SFTA,),Software Fault Tree Analysis,70,软件故障树分析,(,SFTA,),软件故障树分析(,SFTA,)是一种,自顶向下,的软件可靠性分析方法,即从软件系统不希望发生的事件(,顶事件),,特别是对人员和设备的安全及可靠性产生重大影响的事件开始,向下逐步追查导致顶事件发生的原因,直至基本事件(,底事件,),从而确定软件故障原因的各种可能组合方式和(或)发生概率。,71,SFTA,步骤,软件故障树的建立,软件故障树的定性分析,软件故障树的定量分析,72,软件故障树的建立,建立软件故障树通常采用演绎法,:,首先选择要分析的顶事件(即不希望发生的故障事件)作为故障树的,“,根,”,;,然后分析导致顶事件发生的直接原因(包括所有事件或条件),并用适当的逻辑门与顶事件相连,作为故障树的,“,节,”,;,按照这个方法逐步深入,一直追溯到导致顶事件发生的全部原因(底层的基本事件)为止。这些底层的基本事件称为底事件,构成故障树的,“,叶,”,。,73,故障树符号,(,部分,),与门,: 只有所有输入事件都发生时才能导致输出事件发生。,或门:,输入事件中至少有一个发生时,就能导致输出事件发生。,顶事件或中间事件,:表示需进一步分析的事件。,顶事件,是不希望发生的系统不可靠或不安全事件。,中间事件,是故障树中除底事件和顶事件之外的所有事件。,基本事件:,即底事件,对于故障树中的基本事件不必作更深入的分析,未展开事件,:由于发生概率较小,或由于信息不足,不能作更深层的分析的事件。,入三角形:,表示树的部分分支在另外地方绘制,用以简化故障树;,出三角形:,表示该树是在另外部分绘制的一颗故障树的子树,用以简化故障树。,74,故障树分析示例,ATM,系统结构,75,76,软件故障树定性分析,目的,软件故障树分析最重要的意义在于,根据分析的结果找出关键性的事故发生的原因,指导软件可靠性、安全性设计以及软件测试,从而提高软件的可靠性和安全性。,方法,识别所有最小割集,并对最小割集进行定性比较,对最小割集及底事件的重要性进行排序。,77,软件故障树定性分析,割集,:能引起顶事件发生的基本事件集合。,最小割集,:不包含任何冗余因素的割集。如果去掉最小割集中的任何事件或条件,它就不再成为割集。,阶数越小的最小割集越重要;,低阶最小割集所包含的底事件比高阶最小割集中的底事件重要;,在不同最小割集中重复出现次数越多的底事件越重要。,78,最小割集:,A1 A2,A3,79,下行法,步骤,1,2,3,4,F,1,F,2,A,1,F,2,A,1,A,1,A,1,A,2,F,2,A,1,A,3,A,1,A,3,A,2,A,1,A,1,A,2,A,2,A,3,A,2,A,3,最小割集:,A1 A2,A3,80,上行法,F,1,A,1,A,2,F,2,A,1,A,3,G1,F1F2=(A,1,A,2,)(A,1,A,3,),= A,1,+A,1,A,3,+A,1,A,2,+ A,2,A,3,最小割集:,A1 A2,A3,81,软件故障树定量分析,目的,软件故障树定量分析的目的是计算或估计软件故障顶事件发生的概率。,方法,如果每一个底事件的发生概率是已知的,可根据软件故障树的逻辑关系,计算顶事件的发生概率。,软件故障树分析的,重点在于定性分析,,而非定量分析。,82,2.2.4 SFMEA,与,SFTA,的区别与联系,SFMEA,SFTA,区别,分析方法,由系统的最低分析层次,分析潜在的失效模式及原因,自底向上分析对系统产生的影响,即,由因到果,。,是一种自顶向下的分析方法,从系统不希望发生的事件(顶事件)开始,向下逐步追查导致顶事件发生的原因,直到基本事件(底事件),即,由果到因,。,分析级别,SFMEA,分析的最低级别可以是实现一定功能的,模块,。,最低分析级别可以是程序的,语句,。,分析对象,SFMEA,用于分析系统和子系统所有可能的失效模式和原因。,SFTA,只分析顶层的故障事件。,联系,将,SFMEA,和,SFTA,相综合,是一种有效的软件可靠性分析方法。,小结,软件可靠性设计和分析是软件可靠性工程的重要内容;,软件可靠性设计包括避错设计、查错设计、改错设计和容错设计;,软件可靠性分析包括软件失效模式和影响分析、软件故障树分析、软件,Petri,网分析和软件潜藏分析。,84,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!