软件可靠性安全性技术课件.ppt

上传人(卖家):三亚风情 文档编号:3389928 上传时间:2022-08-26 格式:PPT 页数:123 大小:1.73MB
下载 相关 举报
软件可靠性安全性技术课件.ppt_第1页
第1页 / 共123页
软件可靠性安全性技术课件.ppt_第2页
第2页 / 共123页
软件可靠性安全性技术课件.ppt_第3页
第3页 / 共123页
软件可靠性安全性技术课件.ppt_第4页
第4页 / 共123页
软件可靠性安全性技术课件.ppt_第5页
第5页 / 共123页
点击查看更多>>
资源描述

1、1软件可靠性安全性技术 2几个基本术语几个基本术语v 故障故障(Fault)Fault)v 差错差错(Error)Error)v 失效失效(Failure)Failure)v 缺陷缺陷(Defect)Defect)v 失误失误(Mistake)Mistake)v 隐错隐错(Bug)Bug)3软件质量的一个示例软件质量的一个示例 在一段在一段Visual Basic 6.0Visual Basic 6.0编写的程序编写的程序DivisionDivision中,从文本框中,从文本框1 1中输入数中输入数A#A#,从文本框从文本框2 2中输入数中输入数B#B#,计算计算C#=A#/B#C#=A#/B

2、#从文本框从文本框3 3中输出,其程序如下中输出,其程序如下:Public A#,B#,C#Public A#,B#,C#Private Sub Division()Private Sub Division()A#=Val(Text1.Text)A#=Val(Text1.Text)从文本框从文本框1 1中输入中输入 B#=Val(Text2.Text)B#=Val(Text2.Text)从文本框从文本框2 2中输入中输入 C#=A#/B#C#=A#/B#Text3.Text=Text3.Text=StrStr(C#)(C#)从文本框从文本框3 3中输出中输出End SubEnd Sub A#=

3、1A#=1,B#=0B#=0时结果如何?时结果如何?exam14软件可靠性软件可靠性 软件可靠性:在一定条件下软件实现所要求功能的能力。软件可靠性:在一定条件下软件实现所要求功能的能力。关于软件可靠性的误区:软件对一组条件下的运行,如关于软件可靠性的误区:软件对一组条件下的运行,如果是对的,则永远是对的,何有可靠性?果是对的,则永远是对的,何有可靠性?对软件可靠性误区的回答:对已认为满足了功能和性能对软件可靠性误区的回答:对已认为满足了功能和性能要求的软件,为何有的软件在实际的运行中会经常出错?追要求的软件,为何有的软件在实际的运行中会经常出错?追其原因都是对运行中异常的操作、输入、事件无防范

4、处理措其原因都是对运行中异常的操作、输入、事件无防范处理措施,诸如人机交互界面软件对误操作经常死机,通讯软件对施,诸如人机交互界面软件对误操作经常死机,通讯软件对外界干扰经常瘫痪等,这能说不是软件可靠性的问题吗?外界干扰经常瘫痪等,这能说不是软件可靠性的问题吗?5软件可靠性的一个示例软件可靠性的一个示例 前面的前面的exam1exam1就是一个示例。我们再给一个示例。就是一个示例。我们再给一个示例。用用Visual Visual BasicBasic编写一个读入给定数据文件的程序。用户输入的文件名存编写一个读入给定数据文件的程序。用户输入的文件名存放在放在text1.txttext1.txt中

5、,数据文件格式是:第一个数是整型数中,数据文件格式是:第一个数是整型数N N(表明表明以下存放了以下存放了N N个浮点数),后续以空格、逗号或换行为区分符存个浮点数),后续以空格、逗号或换行为区分符存放放N N个浮点数。个浮点数。OpenFileOpenFile()()子程序完成将数据文件中的子程序完成将数据文件中的N N个浮点数个浮点数读出存放在变量数组读出存放在变量数组A#()A#()中。中。6Private Sub Private Sub OpenFileOpenFile()()Dim i,N Dim i,N Open Trim(Text1.Text)For Input As#1 Ope

6、n Trim(Text1.Text)For Input As#1 打开数据文件打开数据文件 Input#1,N Input#1,N 读入数据个数读入数据个数 ReDimReDim A#(1 To N)A#(1 To N)For i=1 To N For i=1 To N Input#1,A#(i)Input#1,A#(i)读入数据读入数据 NextNext Close#1 Close#1 关闭数据文件关闭数据文件End SubEnd Sub 文件不存在或数据格式错误时结果如何?文件不存在或数据格式错误时结果如何?exam27软件安全性软件安全性 软件安全性:软件安全性:对对由于软件的由于软件的

7、缺陷缺陷造成人员伤亡、财产损造成人员伤亡、财产损失等危险失等危险事件事件的的防范防范能力。能力。关于软件安全性的误区:软件只是代码程序和相应文档关于软件安全性的误区:软件只是代码程序和相应文档,软件结果只是对与错,何有安全性?,软件结果只是对与错,何有安全性?对软件安全性误区的回答:对实时嵌入式软件而言,软对软件安全性误区的回答:对实时嵌入式软件而言,软件的指令直接控制着硬件的动作,如果软件不对所控制硬件件的指令直接控制着硬件的动作,如果软件不对所控制硬件的指令进行安全性保护,有何信心保证系统是安全的?由于的指令进行安全性保护,有何信心保证系统是安全的?由于软件的错误造成重大财产损失、严重人员

8、伤亡的实例已屡见软件的错误造成重大财产损失、严重人员伤亡的实例已屡见不鲜,这能说软件没有安全性的问题吗?不鲜,这能说软件没有安全性的问题吗?8软件安全性的实例软件安全性的实例转塔设备的调转控制转塔设备的调转控制9软件可靠性安全性软件可靠性安全性设计准则设计准则10 软件可靠性和安全性设计的一般性指导可参考软件可靠性和安全性设计的一般性指导可参考 GJB/Z 102-1997 GJB/Z 102-1997 软件可靠性和安全性设计准则软件可靠性和安全性设计准则 Q/WE 871-1999 Q/WE 871-1999 软件可靠性和安全性设计指南软件可靠性和安全性设计指南 二院制定的武器系统软件可靠性

9、安全性设计准二院制定的武器系统软件可靠性安全性设计准则,则是结合二院以往地空导弹武器系统软件中实则,则是结合二院以往地空导弹武器系统软件中实际暴露的典型问题,总结整理归纳出的有关软件可靠际暴露的典型问题,总结整理归纳出的有关软件可靠性和安全性设计的具体细则,适用于二院武器系统软性和安全性设计的具体细则,适用于二院武器系统软件开发中可靠性和安全性的设计。件开发中可靠性和安全性的设计。114.4 4.4 圈复杂度的限制圈复杂度的限制“圈复杂度”(Cyclomatic Complexity)反映的是软件模块本身内在的结构复杂度。ABCDEFHIJG12435结点边区域 记:结点数 N,边数 E,区域

10、数 RG,圈复杂度 C。则C=E N+1=RG+1上图中,N=10,E=14,所以 RG=4,C=5。在软件单元测试时,希望能选定最少的测试用例覆盖所有路径,这需要确定模块中的独立路径数,“圈复杂度”就是其独立路径数。如在上图中,C=5,其五条独立路径分别为:ABCEGJ,ABCEFIJ,ABCEFHJ,ABCDJ,ABCDDJ。做为软件模块的“圈复杂度”原则上要求不超过 10。12圈复杂度问题的示例圈复杂度问题的示例圈复杂度115的控制流图 圈复杂度10的控制流图 134.5 4.5 余量的设计余量的设计 应注意关键软件的余量设计,这些余量包括:存储量、应注意关键软件的余量设计,这些余量包括

11、:存储量、IOIO通道吞吐量及处理时间等。在同步时间要求较高的系统中,通道吞吐量及处理时间等。在同步时间要求较高的系统中,处理时间的余量应不少于处理时间的余量应不少于20%20%。如,某系统。如,某系统9 9msms通讯一次,则通讯一次,则该系统的处理时间应小于该系统的处理时间应小于7.27.2msms。余量设计为我们在软件测试时使用一些在线动态测试工余量设计为我们在软件测试时使用一些在线动态测试工具,如具,如CodeTestCodeTest等,提供了必要的应用条件。等,提供了必要的应用条件。144.9.1 4.9.1 谨防实数取整的精度损失谨防实数取整的精度损失 实数取整的转换函数实数取整的

12、转换函数intint()()在在C C中是截取取整的,如果需中是截取取整的,如果需要四舍五入,则必须特殊处理。要四舍五入,则必须特殊处理。例如:例如:float f=1.9;float f=1.9;int int k;k;k=(k=(intint)(f);)(f);则则 k k 是是 1 1,而不是,而不是 2 2。15实数实数四舍五入后四舍五入后取整取整的方法的方法 如果如果 f=0f=0,则则 intint(f+0.5)(f+0.5)是四舍五是四舍五入后的取整结果;入后的取整结果;如果如果 f 0f 0,则则 intint(f 0.5)(f 0.5)是四舍五入是四舍五入后的取整结果。后的取

13、整结果。164.11 4.11 安全关键信息码的设计安全关键信息码的设计 安全关键的信息码应采用具有检错能力的编码。安全关键的信息码应采用具有检错能力的编码。禁止对关键信息用一位的逻辑判别,如用禁止对关键信息用一位的逻辑判别,如用“0”“0”来表示来表示“不起飞不起飞”,用,用“1”“1”来表示来表示“起飞起飞”。对此具有检错能力。对此具有检错能力的编码可以为用二位的逻辑判别,如用的编码可以为用二位的逻辑判别,如用“01”“01”来表示来表示“不起不起飞飞”,用,用“10”“10”来表示来表示“起飞起飞”。显然在有一位可能受干扰。显然在有一位可能受干扰的系统假设下,用一位的逻辑判别无法检测其是

14、否受干扰,的系统假设下,用一位的逻辑判别无法检测其是否受干扰,而二位的逻辑判别则可以检测其是否受干扰,如而二位的逻辑判别则可以检测其是否受干扰,如“00”“00”和和“11”“11”就表示信号受到了干扰。就表示信号受到了干扰。17安全关键信息码应用的实例安全关键信息码应用的实例操作杆的误信号操作杆的误信号184.10 4.10 异常计算的防范设计异常计算的防范设计 在数值计算中,要充分考虑计算中的异常情况,如:在数值计算中,要充分考虑计算中的异常情况,如:(1)(1)在除法计算中,要考虑除数为在除法计算中,要考虑除数为0 0或很小时的计算溢出或很小时的计算溢出的处理,可计算前先进行除数大小的判

15、别检查;的处理,可计算前先进行除数大小的判别检查;(2)(2)在开平方根的计算中,要考虑被开根数是否大于等在开平方根的计算中,要考虑被开根数是否大于等于零,可计算前先进行被开根数的符号判别。于零,可计算前先进行被开根数的符号判别。19异常计算设计问题的实例一异常计算设计问题的实例一有效视线角误差有效视线角误差20异常计算设计问题的实例二异常计算设计问题的实例二214.13 4.13 接口数据的定义接口数据的定义 在通讯接口数据定义时必须明确通讯的数据量、数据格在通讯接口数据定义时必须明确通讯的数据量、数据格式、数据内容、换算要求、传输协议、传输率、误码率。式、数据内容、换算要求、传输协议、传输

16、率、误码率。(1)(1)初始状态要设计为初始状态要设计为0 0位状态。如,位状态。如,“00“00表示状态未定表示状态未定”即应为初始状态。又如,用即应为初始状态。又如,用2 2位表示的:位表示的:“01“01表示状态表示状态1”1”、“10“10表示状态表示状态2”2”、“00“00表示状态未定表示状态未定”,和用,和用1 1位表示的位表示的:“0“0表示状态表示状态1”1”、“1“1表示状态表示状态2”2”,对初始状态的理解是,对初始状态的理解是不一样的。不一样的。22 (2)(2)对交换字各位解释说明其含义时,单一位的解释说对交换字各位解释说明其含义时,单一位的解释说明,不仅要说明为明,

17、不仅要说明为“1”“1”的含义,还要说明为的含义,还要说明为“0”“0”的含义;的含义;多位解释说明时,不仅要说明特定组合的含义,还要说明其多位解释说明时,不仅要说明特定组合的含义,还要说明其它组合的含义。如它组合的含义。如2 2位组合的含义解释说明时,不仅要说明位组合的含义解释说明时,不仅要说明“00“00表示状态未定表示状态未定”、“01“01表示状态表示状态1”1”、“10“10表示状态表示状态2”2”,还要说明,还要说明“11”“11”表示何含义(可能是无意义,但要明确说表示何含义(可能是无意义,但要明确说明,有些是不需要处理而保持以前状态,有些是要进行报警明,有些是不需要处理而保持以

18、前状态,有些是要进行报警或异常错误处理的)。或异常错误处理的)。234.15 4.15 异常处理的设计异常处理的设计 对软件的编程不能只考虑正常情况下的处理,还应充分对软件的编程不能只考虑正常情况下的处理,还应充分考虑可能的异常事件的处理。在软件的设计过程中应专门对考虑可能的异常事件的处理。在软件的设计过程中应专门对可能的异常事件进行分析,这一工作称之为可能的异常事件进行分析,这一工作称之为“软件失效模式软件失效模式及影响分析及影响分析”。24 如,在对数据文件操作时可以考虑的异常事件有:如,在对数据文件操作时可以考虑的异常事件有:(1)(1)错误的文件名或文件数错误的文件名或文件数(2)(2

19、)文件没找到文件没找到(3)(3)错误的文件模式错误的文件模式 (4)(4)文件已经被打开文件已经被打开(5)(5)I/OI/O设备错误设备错误 (6)(6)文件已经存在文件已经存在(7)(7)错误的记录长度错误的记录长度 (8)(8)磁盘满磁盘满(9)(9)超过文件结尾的输入超过文件结尾的输入 (10)(10)错误的记录数错误的记录数(11)(11)错误的文件名错误的文件名 (12)(12)太多的文件太多的文件(13)(13)设备不可使用设备不可使用 (14)(14)权限不允许权限不允许(15)(15)磁盘没准备好磁盘没准备好 (16)(16)不能对不同设备重新命名不能对不同设备重新命名(1

20、7)(17)路径或文件访问错误路径或文件访问错误 (18)(18)没找到路径没找到路径25 显然这显然这1818种模式无需也不必都考虑,可依据实际情况裁剪种模式无需也不必都考虑,可依据实际情况裁剪考虑。如在人机交互软件中用户选择数据文件,则考虑。如在人机交互软件中用户选择数据文件,则“错误的文错误的文件名或文件数件名或文件数”、“文件没找到文件没找到”和和“路径或文件访问错误路径或文件访问错误”是必须要考虑的,需要对此设计相应的处理方法。是必须要考虑的,需要对此设计相应的处理方法。如果是具有运行错误陷阱功能的高级语言,如:如果是具有运行错误陷阱功能的高级语言,如:VBVB、VCVC、AdaAd

21、a等,则错误陷阱的使用是很好的方法。等,则错误陷阱的使用是很好的方法。无可靠性措施的软件无可靠性措施的软件:如当输入的文件不存在时,软件运行被异常终止。用户不知:如当输入的文件不存在时,软件运行被异常终止。用户不知所措,甚至连相关信息都没得到。软件失控了!所措,甚至连相关信息都没得到。软件失控了!有可靠性措施的软件:如当输入的文件不存在时,软件提有可靠性措施的软件:如当输入的文件不存在时,软件提示输入文件不存在的信息,并重新返回到用户输入状态,示输入文件不存在的信息,并重新返回到用户输入状态,等待用户终止输入过程,或重新输入。软件始终处于受控!等待用户终止输入过程,或重新输入。软件始终处于受控

22、!exam3264.17 4.17 变量的命名变量的命名 变量命名要清晰。通常的命名有头字母大写命名法和下变量命名要清晰。通常的命名有头字母大写命名法和下划线命名法。划线命名法。头字母大写命名法如:头字母大写命名法如:InitialValueInitialValue,ObjectPositionObjectPosition等。下划线命名法如:等。下划线命名法如:initial_valueinitial_value,object_positionobject_position等等。现在又流行带类型说明的头 字 母 大 写 命 名 法:如。现在又流行带类型说明的头 字 母 大 写 命 名 法:如i

23、ntInitialValueintInitialValue表明是表明是intint的类型,的类型,flObjectPositionflObjectPosition表明表明是是floatfloat的类型,而用的类型,而用tempInitialValuetempInitialValue来表明其是一个临来表明其是一个临时变量。时变量。变量的命名对程序的理解及维护起着非常重要的作用。变量的命名对程序的理解及维护起着非常重要的作用。27变量命名问题的实例变量命名问题的实例for(for(tchflagtchflag=0;=0;tchflagtchflag14;0&mo0&no10)if(mo11)mp(

24、5);if(no10)mp(6);if(mo0&mo0&no10)else if(mo10)mp(5);else if(no9)mp(6);else /此处进行提示报告 334.22 4.22 函数调用返回的设计函数调用返回的设计 函数的返回必须要有运行状态的标识,以使调用者能识函数的返回必须要有运行状态的标识,以使调用者能识别被调函数的运行状态。别被调函数的运行状态。34函数调用返回设计的示例函数调用返回设计的示例 方法一:可以设置整型函数的返回值,以标识函数的运方法一:可以设置整型函数的返回值,以标识函数的运行状态。如计算三角形面积的函数可设计为:行状态。如计算三角形面积的函数可设计为:i

25、nt TriangleComp(float a,float b,float c,float*s)if()/正常时的计算,面积值赋给正常时的计算,面积值赋给*s return(0);else if()/出现边长小于零的情况出现边长小于零的情况 return(-1);else if()/两边之和小于第三边的情况两边之和小于第三边的情况 return(-2);else/其它情况其它情况 return(-10);int flag;flag=TriangleComp(3,4,5,&s);if(flag0)/异常处理异常处理 else /正常处理正常处理 在调用时可以进行判别在调用时可以进行判别35 方法

26、二:方法二:可以在调用参数中专门设计一个函数运行状态可以在调用参数中专门设计一个函数运行状态的参数。如上述计算三角形面积的函数也可设计为:的参数。如上述计算三角形面积的函数也可设计为:float TriangleComp(float a,float b,float c,int*e)float s;if()/正常时的计算,面积值赋给正常时的计算,面积值赋给s返回返回 *e=0;return(s);else if()/出现边长小于零的情况出现边长小于零的情况 *e=-1;return(0);else if()/两边之和小于第三边的情况两边之和小于第三边的情况 *e=-2;return(0);els

27、e/其它情况其它情况 *e=-10;return(0);int e;float s;s=TriangleComp(3,4,5,&e);if(e0)/异常处理异常处理 else /正常处理正常处理 在调用时可以进行判别在调用时可以进行判别364.23 4.23 函数调用参数的匹配函数调用参数的匹配 函数调用的参数类型、次序和个数必须匹配。类型的匹函数调用的参数类型、次序和个数必须匹配。类型的匹配一是注意配一是注意intint、floatfloat、doubledouble、charchar等类型的匹配,二是等类型的匹配,二是注意指针地址和地址内容的匹配。如,注意指针地址和地址内容的匹配。如,in

28、t funcint func(float(float*)的函数,直接调用的函数,直接调用funcfunc(0)(0),则则funcfunc使用的是使用的是0 0地址单元中的地址单元中的值,而非值,而非0 0值,如要送值,如要送0 0值则应先申请值则应先申请“float angle=0;”float angle=0;”再再调用调用funcfunc(&angle)(&angle)。37函数调用参数匹配问题的实例函数调用参数匹配问题的实例回路测试回路测试384.28 4.28 对对GOTOGOTO语句的限制语句的限制 原则上限制使用跳转(原则上限制使用跳转(GOTOGOTO)语句,在使用语句,在使用

29、GOTOGOTO语句能语句能带来某些好处的地方,一定要控制带来某些好处的地方,一定要控制GOTOGOTO的方向的方向:只允许向下只允许向下GOTOGOTO,不允许向上不允许向上GOTOGOTO;只允许从循环中只允许从循环中GOTOGOTO出去,不允许出去,不允许GOTOGOTO到循环中来。到循环中来。但在即将颁布的国军标中将严格禁止但在即将颁布的国军标中将严格禁止GOTOGOTO语句的使用。语句的使用。394.29.2 4.29.2 中断的嵌套中断的嵌套 中断嵌套分自嵌套和外嵌套。自嵌套就是被自身中断中断嵌套分自嵌套和外嵌套。自嵌套就是被自身中断嵌套,外嵌套就是被其它中断嵌套。嵌套,外嵌套就是

30、被其它中断嵌套。中断的使用除特殊需要外一定要避免嵌套,常用的方法中断的使用除特殊需要外一定要避免嵌套,常用的方法就是进入中断服务程序后关掉不希望嵌套的所有中断。就是进入中断服务程序后关掉不希望嵌套的所有中断。v 自嵌套一定要避免;自嵌套一定要避免;v 必要时的外嵌套要充分考虑中断优先级的影响;必要时的外嵌套要充分考虑中断优先级的影响;v 允许中断和禁止中断的语句位置要独立进行仔细分析。允许中断和禁止中断的语句位置要独立进行仔细分析。404.29.3 4.29.3 中断的返回中断的返回 除特殊需要外一定要避免从中断服务子程序中使用跳转除特殊需要外一定要避免从中断服务子程序中使用跳转语句直接出去,

31、应当使用正常返回语句。因为直接跳出一是语句直接出去,应当使用正常返回语句。因为直接跳出一是影响了堆栈的控制,二是可能破坏跳转处的应有状态。影响了堆栈的控制,二是可能破坏跳转处的应有状态。414.29.4 4.29.4 中断的现场保护中断的现场保护 要充分考虑到中断任何时刻都可能发生的特点,保存好要充分考虑到中断任何时刻都可能发生的特点,保存好需要保存的现场,并在中断服务子程序返回时正确恢复现场需要保存的现场,并在中断服务子程序返回时正确恢复现场。如在主程序中有的程序段是禁止带符号位运算,有的程序。如在主程序中有的程序段是禁止带符号位运算,有的程序段是允许带符号位运算,而中断服务子程序中需要带符

32、号位段是允许带符号位运算,而中断服务子程序中需要带符号位运算,则在中断服务子程序返回时一定要恢复到中断响应时运算,则在中断服务子程序返回时一定要恢复到中断响应时的禁止或允许带符号位运算。的禁止或允许带符号位运算。424.29.5 4.29.5 不用中断源的屏蔽不用中断源的屏蔽 不用中断源一定要进行屏蔽。不用中断源一定要进行屏蔽。不用中断源的软屏蔽应通过编写空处理的对应中断服务不用中断源的软屏蔽应通过编写空处理的对应中断服务子程序来实现。子程序来实现。43不用中断源无空中断服务子程序的实例不用中断源无空中断服务子程序的实例Int03Int03中断不用后,残留允许打开语句,但删除了中断不用后,残留

33、允许打开语句,但删除了Int03Int03的中断服务子程序的中断服务子程序444.29.6 4.29.6 注意对误中断和漏中断的防范注意对误中断和漏中断的防范 在中断的使用中,除了要遵循一般的可靠性安全性设计在中断的使用中,除了要遵循一般的可靠性安全性设计准则外,还应该重点对每一中断的两个故障模式进行认真分准则外,还应该重点对每一中断的两个故障模式进行认真分析。这两个故障模式是:误中断和漏中断。通常是在程序中析。这两个故障模式是:误中断和漏中断。通常是在程序中设计一些特征标识量,在中断响应服务子程序中应首先检查设计一些特征标识量,在中断响应服务子程序中应首先检查相应的特征标识量,以防误中断。在

34、一些依赖于中断响应服相应的特征标识量,以防误中断。在一些依赖于中断响应服务子程序执行结果的关键处理程序中,应首先检查相应的特务子程序执行结果的关键处理程序中,应首先检查相应的特征标识量,以防漏中断。征标识量,以防漏中断。在软件的概要设计阶段,应认真分析哪些处理过程是不在软件的概要设计阶段,应认真分析哪些处理过程是不能被中断打断的,必须以清单方式列表。对这些处理过程应能被中断打断的,必须以清单方式列表。对这些处理过程应在相应程序执行前关闭中断源,执行完后再打开必要的中断在相应程序执行前关闭中断源,执行完后再打开必要的中断源。源。45误中断的实例误中断的实例上传程序被中断打断上传程序被中断打断46

35、漏中断的实例漏中断的实例多通道异步并发多通道异步并发47读取out_queue_end所指指令地址的指令out_queue_end=out_queue_end+1out_queue_end=33MBINT中断服务程序RETURNout_queue_end=out_queue_headout_queue_end=1YNYN读取out_queue_end所指指令地址的指令out_queue_end=out_queue_end+1out_queue_end=33MBINT中断服务程序RETURNout_queue_end=out_queue_headout_queue_end=1YNNY防漏不防误防

36、漏又防误484.30 4.30 看门狗的设计看门狗的设计 看门狗技术是控制运行时间的一种有效方法。看门狗实际看门狗技术是控制运行时间的一种有效方法。看门狗实际上是一种计时装置,当计时启动后看门狗在累计时间,当累计上是一种计时装置,当计时启动后看门狗在累计时间,当累计时间到了规定值时触发到时中断(即狗叫),看门狗在不需要时间到了规定值时触发到时中断(即狗叫),看门狗在不需要时可以关闭。看门狗的设计要首先明确其目的性。如:时可以关闭。看门狗的设计要首先明确其目的性。如:(1)(1)要防某段程序可能的死循环,则在此段程序前启动狗要防某段程序可能的死循环,则在此段程序前启动狗,在此段程序后关闭狗,在狗

37、叫中断中进行超时异常处理。,在此段程序后关闭狗,在狗叫中断中进行超时异常处理。(2)(2)要防外来的信息长时间不来,则在开始等外来信息时要防外来的信息长时间不来,则在开始等外来信息时启动狗,在接收到外来信息时关闭狗,在狗叫中断中进行超时启动狗,在接收到外来信息时关闭狗,在狗叫中断中进行超时异常处理。异常处理。(3)(3)要防计算超时,则在开始计算时启动狗,在计算完毕要防计算超时,则在开始计算时启动狗,在计算完毕后关闭狗,在狗叫中断中进行超时异常处理。后关闭狗,在狗叫中断中进行超时异常处理。显然,不可能要求一个狗可以看管好所有的超时情况。显然,不可能要求一个狗可以看管好所有的超时情况。49看门狗

38、设计问题的实例一看门狗设计问题的实例一 这里,狗叫可能是因为程序某处选这里,狗叫可能是因为程序某处选入死循环,可能是外来信息长时间不来入死循环,可能是外来信息长时间不来,也可能是处理信息超时。如果这里设,也可能是处理信息超时。如果这里设计的定时器是为了检测与外系统的通讯计的定时器是为了检测与外系统的通讯是否出现异常为目的(如规定是否出现异常为目的(如规定1818msms未来未来信息表明通讯异常),显然如此设计就信息表明通讯异常),显然如此设计就有所欠缺。有所欠缺。50看门狗设计问题的实例二看门狗设计问题的实例二总线占用超时控制总线占用超时控制514.31 4.31 避免潜在的死循环避免潜在的死

39、循环 在等待外部信号的程序段中,不允许无限制地等待。正确在等待外部信号的程序段中,不允许无限制地等待。正确的做法应是,或采用循环等待次数控制,或使用定时器,使得的做法应是,或采用循环等待次数控制,或使用定时器,使得规定时间内(无论成功或失败)必须保证退出等待外部信号的规定时间内(无论成功或失败)必须保证退出等待外部信号的程序段。程序段。不允许的设计方法不允许的设计方法建议采用的设计方法建议采用的设计方法524.35 4.35 注意通过双口注意通过双口RAMRAM进行握手进行握手 通过双口通过双口RAMRAM进行信息交换是设计师经常采用的一种设计方进行信息交换是设计师经常采用的一种设计方案。的确

40、双口案。的确双口RAMRAM提供了信息交换双方的方便读写,但仅靠双口提供了信息交换双方的方便读写,但仅靠双口RAMRAM要做到读写的时序要求就要格外小心。要做到读写的时序要求就要格外小心。如此的设计是要避免的:通过双口如此的设计是要避免的:通过双口RAMRAM交换信息,在双口交换信息,在双口RAMRAM中设置了握手信号单元。读方检查到握手信号为中设置了握手信号单元。读方检查到握手信号为0101H H,表明表明对方已准备好数据,再读数据,读完后将握手信号置为对方已准备好数据,再读数据,读完后将握手信号置为0000H H;写写方检查到握手信号为方检查到握手信号为0000H H,表明对方已取走数据,

41、再写数据,写表明对方已取走数据,再写数据,写完数据后再将握手信号置为完数据后再将握手信号置为0101H H,表明自己已准备好数据。表明自己已准备好数据。53 这种设计不一定可靠,可能会出现写方要写握手信号时这种设计不一定可靠,可能会出现写方要写握手信号时,读方正在读握手信号,则写方要写的值写不进去。可靠的,读方正在读握手信号,则写方要写的值写不进去。可靠的设计应用硬件连线保证握手,而不要靠双口设计应用硬件连线保证握手,而不要靠双口RAMRAM中的握手信中的握手信号。如果一定要靠双口号。如果一定要靠双口RAMRAM进行握手,则写握手信号单元数进行握手,则写握手信号单元数据时一定要写完后接着再读出

42、,经验证确实写成功后再进行据时一定要写完后接着再读出,经验证确实写成功后再进行下面的操作,否则需继续写。下面的操作,否则需继续写。当然这必须与避免潜在的死循环的设计准则联合使用。当然这必须与避免潜在的死循环的设计准则联合使用。54可靠的设计方法可靠的设计方法 握手标志置不上的可能握手标志置不上的可能 554.36 4.36 数据采集的数据采集的多路冗余多路冗余设计设计 关键数据的采集可采用多路冗余设计,即可以从多个通讯关键数据的采集可采用多路冗余设计,即可以从多个通讯口对同一数据进行采集,通过表决进行有效数据的裁决。通常口对同一数据进行采集,通过表决进行有效数据的裁决。通常多采用奇数路的冗余设

43、计,如多采用奇数路的冗余设计,如3 3路、路、5 5路等路等。(1)(1)开关量的裁决可采用多数票的裁决,如开关量的裁决可采用多数票的裁决,如3 3取取2 2、5 5取取3 3等。等。(2)(2)模拟量的裁决可采用中间数平均值的裁决,如模拟量的裁决可采用中间数平均值的裁决,如3 3路数的路数的中间值、中间值、5 5路数去掉最大最小值后的平均值等。路数去掉最大最小值后的平均值等。56 关键数据的采集可采用多次冗余设计,即可以从同一通关键数据的采集可采用多次冗余设计,即可以从同一通讯口多次对同一数据进行采集,通过表决进行有效数据的裁讯口多次对同一数据进行采集,通过表决进行有效数据的裁决。通常多采用

44、奇数次的冗余设计,如决。通常多采用奇数次的冗余设计,如3 3次、次、5 5次等。次等。(1)(1)开关量的裁决可采用多数票的裁决,如开关量的裁决可采用多数票的裁决,如3 3取取2 2、5 5取取3 3等,也可采用连续次数的裁决,如等,也可采用连续次数的裁决,如5 5次里连续次里连续3 3次的量被才被次的量被才被认可,当然这种裁决被认可量比简单的认可,当然这种裁决被认可量比简单的5 5取取3 3裁决更严格。裁决更严格。(2)(2)模拟量的裁决可采用中间数平均值的裁决,如模拟量的裁决可采用中间数平均值的裁决,如3 3次数次数的中间值、的中间值、5 5次数去掉最大最小值后的平均值等。次数去掉最大最小

45、值后的平均值等。57 极关键数据的采集亦可采用多路多次的综合冗余设计,极关键数据的采集亦可采用多路多次的综合冗余设计,即可以从多个通讯口对同一数据进行多次采集,通过表决进即可以从多个通讯口对同一数据进行多次采集,通过表决进行有效数据的裁决。行有效数据的裁决。附注:附注:(m+1)/(2m+1)m+1)/(2m+1)冗余措施失效率的计算冗余措施失效率的计算 假设一个过程的失效率是,在假设一个过程的失效率是,在2m+1个相同功能的过程个相同功能的过程中取中取m+1个相同的结果作为最终结果,这种措施称为个相同的结果作为最终结果,这种措施称为(m+1)/(2m+1)冗余措施,在不考虑共因失效的前提下,

46、其失冗余措施,在不考虑共因失效的前提下,其失效率为效率为584.37 4.37 时间飘逸的防范时间飘逸的防范594.38 4.38 TMS320C25TMS320C25的初始化的初始化 采用辅助寄存器对采用辅助寄存器对4 4号单元进行初始化置位号单元进行初始化置位,在常温下是,在常温下是可以的,但在低温条件下(小于可以的,但在低温条件下(小于-5-5)将会出现问题。)将会出现问题。对对4 4号号单元进行初始化置位单元进行初始化置位必须必须采用直接寻址的方式采用直接寻址的方式。60软件可靠性安全性软件可靠性安全性C语言编程准则语言编程准则61 1998 1998年,国际汽车工业软件可靠性协会年,

47、国际汽车工业软件可靠性协会MISRAMISRA组织组织制定了制定了“汽车软件汽车软件C C语言使用指南语言使用指南”的标准。这份标准的标准。这份标准的产生在自动化行业极大地推动了使用的产生在自动化行业极大地推动了使用“安全的安全的C”C”进进行编程。这份标准在汽车行业被广泛接受,同时它也行编程。这份标准在汽车行业被广泛接受,同时它也被其它行业所广泛借鉴。被其它行业所广泛借鉴。利物浦数据研究协会利物浦数据研究协会LDRALDRA作为专业软件测试协会作为专业软件测试协会建立于建立于19751975年。年。LDRA LDRA TestbedTestbed软件测试工具可基于软件测试工具可基于MISRA

48、MISRA的的C C语言使用标准对语言使用标准对C C语言程序进行检查,以帮助语言程序进行检查,以帮助用户们在程序代码上加强行业标准的执行。用户们在程序代码上加强行业标准的执行。在我国,在我国,20052005年颁布实施了年颁布实施了GJB 5369-2005GJB 5369-2005,航航天型号软件天型号软件C C语言安全子集语言安全子集。62Q/WE 905-2005 Q/WE 905-2005 导弹武器系统导弹武器系统C C语言安全子集语言安全子集 本标准完全遵循本标准完全遵循GJBGJB 5369-2005,5369-2005,航天型号软件航天型号软件C C语语言安全子集言安全子集,并

49、在二院型号软件工程实践的基础上,新,并在二院型号软件工程实践的基础上,新补充了补充了2222条强制性准则和条强制性准则和2 2条推荐性准则,将条推荐性准则,将GJBGJB航天型号航天型号软件软件C C语言安全子集中的一条推荐性准则上升为强制性准语言安全子集中的一条推荐性准则上升为强制性准则。附录则。附录B B是相对于是相对于GJBGJB航天型号软件航天型号软件C C语言安全子集新增语言安全子集新增加的附录。加的附录。63准则分类准则分类(1)(1)声明定义类声明定义类 (2)(2)版面书写类版面书写类 (3)(3)分支控制类分支控制类 (4)(4)指针使用类指针使用类 (5)(5)跳转控制类跳

50、转控制类 (6)(6)运算处理类运算处理类 (7)(7)过程调用类过程调用类 (8)(8)语句使用类语句使用类 (9)(9)调用返回类调用返回类(10)(10)程序注释类程序注释类 (11)(11)循环控制类循环控制类 (12)(12)类型转换类类型转换类 (13)(13)初始化类初始化类 (14)(14)比较判断类比较判断类 (15)(15)名称、符号与变量使用类名称、符号与变量使用类644.1.1.154.1.1.15字符型变量必须明确定义是有符号还是无符字符型变量必须明确定义是有符号还是无符号号 void static_p(void)void static_p(void)char c=c

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(软件可靠性安全性技术课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|