软件可靠性资料.ppt

  1. 1、本文档共125页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * “4.6.2.2 谨防长度操作符sizeof的副作用” 实验说明 如下代码: int x = 1; int y = 2; int a = 3; a = sizeof(x=y); …… x到底等于几? 现在x=1还是2? exam6 * 编程准则违背的 典型实例 * “4.8.1.4 禁止使用不起作用的语句” (二院补充) 的典型实例 该准则在某软件中以“x-0;”的形式违背了,而经过确认是由于编程人员误将“x=0;”的“=”号写成了“-”号所致,其结果是导致变量x的赋值失败。 * “4.6.1.15 禁止在条件判别语句中使用赋值操作符” 的典型实例一 该准则在某软件中以“if(the_i=5)”的形式违背了,而经过确认是由于编程人员误将“if(the_i==5)”的“==”写成了“=”所致,其结果是该判别条件无论变量the_i为何值都将执行该分支的处理。 * “4.6.1.15 禁止在条件判别语句中使用赋值操作符” 的典型实例二 在某软件中有如下语句: if((uiSendLen == 0x55AA) (uiRecvLen == 0x66BB) (uiBaud = 0x77CC)) 其中将条件(uiBaud==0x77CC)判别误写为(uiBaud=0x77CC)的赋值,后果是即使uiBaud不为 0x77CC,其他条件满足仍能走入真分支。 * “4.14.1.4 逻辑判别表达式如果存在运算项, 必须要使用括号” (二院补充) 的典型实例 该准则在某软件中以“if(tbc0x80==0x80)”的形式违背了,导致当tbc=0x80时条件判别走不成立的分支。正确的写法应该是“if((tbc0x80)==0x80)”。 exam7 * “4.12.1.2 禁止对指针变量赋值类型不匹配” (二院补充) 的典型实例 在某软件中,变量定义如下: unsigned long *p; unsigned char q[50]; 程序中有如下的使用: p = q[1]; * “4.2.1.4 逻辑表达式的连接必须使用括号” 的典型实例 在某软件中 if((S1[0].Coun7S1[0].Coun=1)||(S1[1].Coun7S1[1].Coun=1) (B3Leav == 7)) {……} 从程序结构上猜想,应该是: 在 (B3Leav == 7) 条件下, 或 (S1[0].Coun7S1[0].Coun=1) 或 (S1[0].Coun7S1[0].Coun=1) 如果是此,就应该 if(((S1[0].Coun7S1[0].Coun=1)||(S1[1].Coun7S1[1].Coun=1)) (B3Leav == 7)) {……} * “4.6.1.9 赋值类型必须匹配” 的典型实例 在某软件中ADData[]是定义为signed char类型,程序中: ADData[i]=(signed char)*AD402; /* 读12位带符号的AD采样值 */ ADData[i]=ADData[i]0xfff; 在标准C中,signed char类型变量是8位的,有效范围[-128,127],对8位变量赋12位数值在标准C中是取后8位。ADData[]应定义为int类型。 * “4.6.1.2 数组的使用必须保证不会出现越界” 的典型实例 在某软件中是如下定义的: unsigned char Ykd[6]; 但程序中是如下使用的: for (n=0 ; n7 ; n++) { Ykd[n] = 0x0 ; 按定义,Ykd只有6个元素,即Ykd[0]、Ykd[1]、……、Ykd[5],而是使用中却用到了Ykd[6]。 * “4.14.1.5 禁止对无符号数进行大于等于零 或小于零的比较” (二院补充) 的典型实例 在某软件中有如下语句: unsigned long s_addr; s_addr=(unsigned long)hostGetByName(compName); while (s_addr==ERROR) ERROR在vxWorks.h被定义为-1,用unsigned long类型数与ERROE进行比较总是不成立的。 * “4.13.1.4

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档