软件可靠性安全性技术课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《软件可靠性安全性技术课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 可靠性 安全性 技术 课件
- 资源描述:
-
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 方法
展开阅读全文