09软件代码审查技术精要课件.ppt

上传人(卖家):晟晟文业 文档编号:4841567 上传时间:2023-01-17 格式:PPT 页数:45 大小:314.50KB
下载 相关 举报
09软件代码审查技术精要课件.ppt_第1页
第1页 / 共45页
09软件代码审查技术精要课件.ppt_第2页
第2页 / 共45页
09软件代码审查技术精要课件.ppt_第3页
第3页 / 共45页
09软件代码审查技术精要课件.ppt_第4页
第4页 / 共45页
09软件代码审查技术精要课件.ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

1、软件代码审查技术北京航空航天大学可靠性与系统工程学院2023-1-17内容内容1.代码审查的概念2.代码审查的规程3.代码审查的检查单什么是代码审查?什么是代码审查?软件测试软件测试静态测试静态测试动态测试动态测试人工检查人工检查自动静态分析自动静态分析白盒测试白盒测试黑盒测试黑盒测试审查审查走查走查评审评审2023-1-171.代码审查的概念代码审查的概念 代码审查是组成审查组,依据软件详细设计文档,对照代码检查单,逐行检查软件编码中易出现的错误的方法。2.代码审查的规程代码审查的规程2023-1-172.代码审查的规程代码审查的规程进入条件测试内容实施步骤2023-1-172.1 进入条件

2、进入条件软件代码无错误通过编译;软件文档齐备并符合相关标准规范,包括:详细设计说明;详细设计说明;代码清单代码清单必要时还应包括:必要时还应包括:需求规格说明;需求规格说明;概要设计说概要设计说明;明;数据字典;数据字典;软软/硬件接口说明;硬件接口说明;代码静态代码静态分析报告;分析报告;以及上述文档引用的其他文档。以及上述文档引用的其他文档。2023-1-17检查代码和设计的一致性;检查代码和设计的一致性;检查代码的逻辑表达的正确性;检查代码的逻辑表达的正确性;检查代码对标准的遵循、可读性;检查代码对标准的遵循、可读性;检查代码结构的合理性。检查代码结构的合理性。2.2 测试内容测试内容2

3、023-1-17 软件代码审查软件代码审查按时间顺序按时间顺序分为:计划、分为:计划、提交软件概述、个人审查(会议准备)、提交软件概述、个人审查(会议准备)、会议审查、缺陷修改、回归审查、编写报会议审查、缺陷修改、回归审查、编写报告。告。2.3 实施步骤实施步骤2023-1-171.4.1 计划计划1.4.2 提交软件概述提交软件概述1.4.3 个人审查(会议准备)个人审查(会议准备)1.4.4 会议审查会议审查1.4.5 缺陷修改缺陷修改1.4.6 回归审查回归审查1.4.7 编写报告编写报告 1.4 实施步骤实施步骤2023-1-17l检查进入条件检查进入条件l确定审查内容确定审查内容 l

4、确定审查人员确定审查人员 l确定审查辅助条件确定审查辅助条件 l进度安排进度安排l分发审查材料分发审查材料 1)计划计划编写编写代码审查计划代码审查计划2023-1-17 在个人审查前,由软件开发方以口头或在个人审查前,由软件开发方以口头或书面形式提交软件概述,简要介绍待审查书面形式提交软件概述,简要介绍待审查软件的基本概况,使审查人员对软件有初软件的基本概况,使审查人员对软件有初步的总体了解。步的总体了解。2)提交软件概述提交软件概述2023-1-17l依据软件设计文档,参照代码检查单检查是依据软件设计文档,参照代码检查单检查是否存在软件缺陷否存在软件缺陷 l记录缺陷的位置、类型、性质等信息

5、,填写记录缺陷的位置、类型、性质等信息,填写个人审查记录个人审查记录 l汇总组内各审查人员发现的软件缺陷汇总组内各审查人员发现的软件缺陷 3)个人审查个人审查(会议准备会议准备)2023-1-17l讲解人:讲解人:逐句讲解软件代码,并回答审查人逐句讲解软件代码,并回答审查人员提出的问题;员提出的问题;l审查人员:审查人员:提问和质疑,努力发现被审查软提问和质疑,努力发现被审查软件代码中的缺陷;件代码中的缺陷;l记录人:记录人:记录在审查会议中发现的所有软件记录在审查会议中发现的所有软件缺陷缺陷;l主持人:主持人:主持会议,保证会议按计划进行,主持会议,保证会议按计划进行,并在发生争议时起调解作

6、用。并在发生争议时起调解作用。l填写“软件代码审查确认缺陷列表”和“软件代码审查问题报告单”4)会议审查会议审查2023-1-17 为提高软件代码审查效率并保证审查质量,对会议时间和参加人数作如下规定:(1)每次审查会的参加人数至少3人,最多不超过7人;(2)每次审查会议的时间至少45分钟,最长不超过2小时。2023-1-17How fast is the code Inspection rate?l500 statements/hour during overviewl125 source statement/hour during individual preparationl90-125

7、 statements/hour can be inspectedlInspection is therefore an expensive processlInspecting 500 lines costs about 40 man/hours effort=2800-5.8/per line2023-1-17 对于确认并要求修改的软件缺陷,由开发方对于确认并要求修改的软件缺陷,由开发方人员分析缺陷产生的原因,修改相应的软件代人员分析缺陷产生的原因,修改相应的软件代码或文档,并编写码或文档,并编写软件代码审查更改报告单软件代码审查更改报告单。5)缺陷修改缺陷修改2023-1-17 待所有要

8、求修改的软件缺陷修改完成后待所有要求修改的软件缺陷修改完成后,组织全部或部分代码的回归审查,组织全部或部分代码的回归审查,检查软件检查软件修改是否正确,是否引入新的软件缺陷修改是否正确,是否引入新的软件缺陷。回。回归审查方法与第一次会议审查方法相同。归审查方法与第一次会议审查方法相同。6)回归审查回归审查2023-1-17 由主持人确认软件是否满足通过准则,并编由主持人确认软件是否满足通过准则,并编写写软件代码审查报告软件代码审查报告。7)编写报告编写报告2023-1-17通过准则通过准则3.代码审查的检查单代码审查的检查单2023-1-17代码检查单(代码检查单(checklist)l可追溯

9、性l逻辑l数据l接口l注释l文档l例外情况处理l内存l其它2023-1-17可追溯性可追溯性1.代码是否遵循详细设计?2.代码是否与需求一致?2023-1-17逻辑逻辑1.赋值顺序a.表示优先级的括号用法是否正确?y=(a+b)*c;写成:y=a+b*c;b.代码是否依赖赋值顺序?x=3;y=f(x,x+);2023-1-172.控制a.“ifelse”和“switch”使用是否正确清晰?b.循环能否结束?c.复合语句是否被正确地用花括号括起来?d.Case语句中是否所有可能出现的情况均已考虑?e.“goto”和“label”是否只有在有恰当理由,而且代码有详细注释的情况下才使用?2023-1

10、-17“if ifelse”else”和和“switch”switch”使用是否正确清晰?使用是否正确清晰?if(r1_count=1)if(r1_temp=0 xbb)r1_ok=1;if(r1_temp=0 xaa)r1_count=1;else r1_count=0;if(vb0)vbif(vb0)vb=100;/=100;/最小表速限制在最小表速限制在1001002023-1-17禁止对实数类型的量做是否相等的比较禁止对实数类型的量做是否相等的比较如下代码:如下代码:intint P=1000;P=1000;float d=0.435f;float d=0.435f;intint H=

11、435;H=435;if(H=(P if(H=(P*d)d)i=1;i=1;else else i=2;i=2;到底走哪个分支?到底走哪个分支?走此分支?走此分支?H=435P*d=1000*0.435=435是否相等?是否相等?2023-1-17if(DVLvdtZDemand 50)wf-=200;接收数据出错情况下数控对流量的跟踪接收数据出错情况下数控对流量的跟踪缺少对流量的最大、最小值保护,这样有缺少对流量的最大、最小值保护,这样有出现负流量的可能。出现负流量的可能。2023-1-17循环能否结束循环能否结束?for(;)if(received=0 xcc)break;2023-1-1

12、7复合语句是否被正确地用花括号括起来复合语句是否被正确地用花括号括起来?if(state_1.eof=0&status.eof=1)status.eof=0;k=1;else status.eof=1;k=0;2023-1-17switch(month)/*先计算某月以前月份的总天数*/case 1:sum=0;break;case 2:sum=31;break;case 4:sum=90;break;case 12:sum=334;break;2023-1-17数据数据1.变量a.变量在使用前是否已初始化?b.变量类型是否匹配?c.变量的声明是否按组划分为外部和内部的?d.每个命名是否仅用于

13、一个用途?int m3_ps;if(m3_ps=1250)m3_ps=0;Char sFlag;Int iTemp;sFlag=iTemp;2023-1-17避免局部变量与全局变量同名避免局部变量与全局变量同名unsigned int Fire_Command;void static_p(void)unsigned int Fire_Command;Fire_Command=2;2023-1-172.常量a.常量名是否都大写?b.常量是否都是通过“#define”定义?c.用于多个文件中的常量是否在一个INCLUDE头文件中定义?#define PI 3.1415#define PI 3.14

14、152023-1-173.指针a.定义为指针的变量是否作为指针使用(而不是作为整数)?b.指针是否初始化?c.释放内存后是否将指针立即设置为NULL(或0)(大多数编译器释放内存时不将指针清空)?d.传递指针到另一个函数的代码是否首先检查了指针的有效性(非零)?e.通过指针写入动态分配内存的代码是否首先检查了指针的有效性(非零)?intint *p;p;*p=100;p=100;2023-1-174.其它a.宏的命名是否都大写?b.数组是否越界(上下界)?unsigned intunsigned int HistoryRecord9;HistoryRecord9;if(stime42=1800

15、)if(stime42=1800)HistoryRecord9=1;HistoryRecord9=1;stime42=0 stime42=0 造成了数组造成了数组HistoryRecordHistoryRecord越界的错误。越界的错误。2023-1-17接口接口1.在所有的函数及过程调用中,参数的个数都正确吗?2.形参与实参类型匹配吗?3.参数顺序正确否?4.如果访问共享内存,是否具有相同的共享内存结构模式?void three_hellos(void three_hellos(charchar c c)void main(voidvoid main(void)float t=0.3;flo

16、at t=0.3;three_hellos(three_hellos(t t);/);/*调用此函数调用此函数*/2023-1-17注释注释1.注释是否与代码一致?2.用于理解代码的注释是否提供了必要的信息?3.除最明显的声明外,是否所有声明都有注释?2023-1-17文档文档1.软件文档是否与软件代码一致?2.是否对数组和变量的作用进行了描述?2023-1-17例外情况处理例外情况处理1.是否所有可能的错误情况都已加以考虑?2.在继续函数调用后代码之前是否检查了其返回值(指示请求成功或失败)?2023-1-17switch(month)/*先计算某月以前月份的总天数*/case 1:sum=

17、0;break;case 2:sum=31;break;case 11:sum=304;break;case 12:sum=334;break;default:printf(data error);break;2023-1-17内存内存1.在向动态分配内存写入之前是否检查了内存申请是否成功?2.若采用动态分配内存,内存空间分配是否正确?3.当内存空间不再需要时,是否被明确地释放?intint *p;p;p=new intp=new int;if(!pif(!p)2023-1-17其它其它1.所有不能归于上述类型的2023-1-17l走查,有用例lF(x,x)lP29,30 if()lP31 if else if 有误lExtern 函数变量lP38 全局未变l野指针 指向l接口问题编译能通过吗?p=new int;野野 delete内存泄漏导致的失效内存泄漏导致的失效#include

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

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

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


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

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


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