- 1、本文档共45页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
hui8 hjoj opkpk 软件代码审查技术 内容 代码审查的概念 代码审查的规程 代码审查的检查单 什么是代码审查? 1. 代码审查的概念 代码审查是组成审查组,依据软件详细设计文档,对照代码检查单,逐行检查软件编码中易出现的错误的方法。 2. 代码审查的规程 2. 代码审查的规程 2.1 进入条件 软件代码无错误通过编译; 软件文档齐备并符合相关标准规范,包括: ?详细设计说明;?代码清单 必要时还应包括:?需求规格说明;?概要设计说明;?数据字典;?软/硬件接口说明;?代码静态分析报告; 以及上述文档引用的其他文档。 2.2 测试内容 检查代码和设计的一致性; 检查代码的逻辑表达的正确性; 检查代码对标准的遵循、可读性; 检查代码结构的合理性。 2.3 实施步骤 软件代码审查按时间顺序分为:计划、提交软件概述、个人审查(会议准备)、会议审查、缺陷修改、回归审查、编写报告。 1.4 实施步骤 1.4.1 计划 1.4.2 提交软件概述 1.4.3 个人审查(会议准备) 1.4.4 会议审查 1.4.5 缺陷修改 1.4.6 回归审查 1.4.7 编写报告 1) 计划 检查进入条件 确定审查内容 确定审查人员 确定审查辅助条件 进度安排 分发审查材料 2) 提交软件概述 在个人审查前,由软件开发方以口头或书面形式提交软件概述,简要介绍待审查软件的基本概况,使审查人员对软件有初步的总体了解。 3) 个人审查(会议准备) 依据软件设计文档,参照代码检查单检查是否存在软件缺陷 记录缺陷的位置、类型、性质等信息,填写个人审查记录 汇总组内各审查人员发现的软件缺陷 4) 会议审查 讲解人:逐句讲解软件代码,并回答审查人员提出的问题; 审查人员:提问和质疑,努力发现被审查软件代码中的缺陷; 记录人:记录在审查会议中发现的所有软件缺陷; 主持人:主持会议,保证会议按计划进行,并在发生争议时起调解作用。 填写“软件代码审查确认缺陷列表”和“软件代码审查问题报告单” 为提高软件代码审查效率并保证审查质量,对会议时间和参加人数作如下规定: (1)每次审查会的参加人数至少3人,最多不超过7人; (2)每次审查会议的时间至少45分钟,最长不超过2小时。 How fast is the code Inspection rate? 500 statements/hour during overview 125 source statement/hour during individual preparation 90-125 statements/hour can be inspected Inspection is therefore an expensive process Inspecting 500 lines costs about 40 man/hours effort = £2800- £ 5.8/per line 5) 缺陷修改 ?? 对于确认并要求修改的软件缺陷,由开发方人员分析缺陷产生的原因,修改相应的软件代码或文档,并编写《软件代码审查更改报告单》。 6) 回归审查 待所有要求修改的软件缺陷修改完成后,组织全部或部分代码的回归审查,检查软件修改是否正确,是否引入新的软件缺陷。回归审查方法与第一次会议审查方法相同。 7) 编写报告 ? 由主持人确认软件是否满足通过准则,并编写《软件代码审查报告》。 通过准则 a.充分评定了全部代码清单,并且全部编码标准被遵守; b.代码准确地实现设计; c.对缺陷的解释已列在缺陷报告上; d.完成并检验了代码审查引起的全部修改。 3. 代码审查的检查单 代码检查单(checklist) 可追溯性 逻辑 数据 接口 注释 文档 例外情况处理 内存 其它 可追溯性 代码是否遵循详细设计? 代码是否与需求一致? 逻辑 赋值顺序 表示优先级的括号用法是否正确? y=(a+b)*c; 写成: y=a+b*c; 代码是否依赖赋值顺序? x=3; y=f(x, x++); 控制 “if…else”和“switch”使用是否正确清晰? 循环能否结束? 复合语句是否被正确地用花括号括起来? Case语句中是否所有可能出现的情况均已考虑? “goto”和“label”是否只有在有恰当理由,而且代码有详细注释的情况下才使用? “if…else”和“switch”使用是否正确清晰? if(r1_count==1) if(r1_temp==0xbb) {r1_ok=1;} if(r1_temp==0xaa) {r1_count=1;} else {r1_c
文档评论(0)