1、软件质量管理,Part9 软件评审,第9章 软件评审,9.1 为什么需要评审9.2 软件评审的角色和职能9.3 评审的内容9.4 评审的方法和技术9.5 评审流程,什么是评审(Review),评审是对所有人工静态分析技术和具体文档检查技术的统称,通常通过深入阅读和理解被检查文档来完成。文档检查有多种不同的技术,可以通过检查的强度、形式、必需的资源(人员和时间)以及它们的目的来区分。,9.1 为什么需要评审,9.1 为什么需要评审,从成本上来衡量 缺陷发现得越晚纠正费用越高,而软件评审的重要目的就是通过软件评审尽早的产品中的缺陷,减少大量的后期返工。,9.1 为什么需要评审,从技术上来衡量 前一
2、阶段的错误自然会导致后一阶段的工作结果中有相应的错误,而且错误会逐渐累积,越来越多。,为什么要评审,降低消除缺陷的成本,早期发现并消除缺陷,可以提高开发的生产率缩短开发时间降低整个软件开发周期的成本降低系统运行的故障率团队学习,改进团队工作方法,9.1 为什么需要评审,为什么要评审,IBM公司报道,进行1个小时的评审可节约20小时的测试,如果在发布的产品中遗留了审查所发现的缺陷,则所需的返工时间为82小时贝尔北方研究中心审查了250万行实时系统的程序代码,避免了平均每个缺陷33小时的维护费用。通过审查发现缺陷的效率是测试的2-4倍,9.1 为什么需要评审,评审的成本和收益,评审的成本大概占整个
3、开发预算的10%15%。成本包括评审过程本身、评审数据分析和过程改进的工作量。估计节约的成本约为14%25%,这一计算包括评审自身的工作量。如果能够系统地使用并有效地开展评审,70%以上的文档缺陷都能够在它们遗漏到下一道工序前被发现和修复。,9.1 为什么需要评审,评审的时机:文档完成后越早越好评审是测试软件产品(包括代码)的一种方式,可以在动态测试之前执行。在软件开发周期早期发现的缺陷,其修复代价往往要比在运行测试时发现的缺陷修复代价要低的多。,评审的对象:任何软件工作产品任何软件工作产品都可以被评审,包括需求规格说明、设计说明、代码、测试计划、测试规格说明、测试用例、测试脚本、用户指南及网
4、页。,9.1 为什么需要评审,9.2软件评审的角色和职能,安排会议与评审员开预备会议,确定每个人都清楚角色和职责协调会议进程安排确保会议议题确保会议记录跟踪会后问题进展情况和项目组长沟通评审情况,确保即将评审的文档已经准备好于项目组长、协调人一起定义评审小组的成员。,评审员的选择应该包括上一级和下一级文档作者熟悉评审内容,为评审做好准备在评审会上关注问题而不针对个人主要问题和次要问题可以分别被讨论在会议前或者会议后可以就存在问题提出建设性的意见和建议明确自己的角色和责任做好接受错误的准备,主持人,与评审有关的管理工作计划、准备并保证评审有序进行且满足目标收集评审数据发布评审报告,An impo
5、rtant role,9.2软件评审的角色和职能,作者,提交评审的文档的作者或主要负责人,9.2软件评审的角色和职能,评审人,几个(一般不超过5个)在各自准备后来检查评审对象的技术专家。,9.2软件评审的角色和职能,9.3 评审的内容,管理评审技术评审文档评审过程评审,9.3.1 管理评审,“由最高管理者就质量方针和目标,对质量体系的现状和适应性进行正式评价。”,9.3.1 管理评审,质量管理体系运行状况 内、外部审核结果 改进、预防和纠正措施的状况 上次管理评审提出的改进措施实施情况及验证信息,管理评审,质量体系的总体评价 质量管理体系及其过程的改进 产品是否符合要求的评价,有关产品的改进
6、新资源的需求的决定和措施,输入,输出,对质量体系进行回顾和总结并确保其适宜性、有效性和充分性,9.3.2 技术评审,评审的目的 评审的内容 评审检查单 其他必需文档,技术评审,技术评审报告会议的基本信息 存在的问题和建议措施 评审结论和意见问题跟踪表技术评审问答记录,输入,输出,目的是确保需求说明、设计说明书与最初用户提出的要求保持一致。,9.3.3 文档评审,1)正确性2)完整性3)一致性4)有效性5)易测性6)模块化-系统和文档描述必须深入到模块。模块化指的是模块的独立性7)清晰性8)可行性9)可靠性10)可追溯性,进行格式和内容两方面评审,保证文档具有正确性、完整性、一致性、有效性、易测
7、性、清晰性、可行性、可靠性、可追溯性,9.3.4 过程评审,过程评审的目的:评估主要的质量保证流程考虑如何处理/解决评审过程中发现的不符合问题总结和共享好的经验指出需要进一步完善和改进的地方评审技术后,评审小组需要提交一份评审报告,其中包括:评审记录评审后,对现有流程的说明和注释评审小组的建议,9.3.4 过程评审,过程评审流程,思考问题,文档评审与技术评审的主要区别是什么?,9.4 评审的方法和技术,评审的方法评审的技术,评审类型,主要的评审类型有以下几种:临时评审( Ad hoc review)轮查(Pass-round)走查(walkthrough)小组评审(Group Review)审
8、查(inspection),9.4.1 评审的方法,(1)临时评审( Ad hoc review),非正式的过程结果不需要明确的文档化用于平常的小组合作,9.4.1 评审的方法,(2)轮查(Pass-round),作者将需要的评审内容发给各位评审员,并收集他们的反馈意见反馈一般不及时,9.4.1 评审的方法,(3)走查(walkthrough),作者主导会议,非正式评审常见使用场景讨论准备时间最少,测试报告、发现的问题等的文档化无严格要求主要目的:发现文档中的缺陷,含糊的表达和问题适合小型开发团队,用于检查不是很重要的文档,9.4.1 评审的方法,(4)审查(inspection),最正式的检
9、查和评估方法,由受过专门训练的人员主持,有正式流程。使用审查标准和检查表重点:发现文档的不清晰点和可能的缺陷、度量文档质量、改进产品质量和开发流程会前准备,会后形成正式的审查报告和发现问题列表有正式的跟踪过程,9.4.1 评审的方法,(5)小组评审(Group Review),有计划、结构化参与者在会前提前拿到评审材料独立研究评审后期问题跟踪和分析被简化甚至忽略,9.4.1 评审的方法,走查、审查、技术评审,走查、审查、技术评审都是由一组同事来组成评审组成员完成的,因此,也称作同行评审(peer review),9.4.1 评审的方法,如何选择正确的评审方法?选择评审方法最有效的标准是:“对于
10、最可能产生风险的工作成果,要采用最正式的评审方法。” 例如:核心代码的失效也会带来很严重的后果,所以也应该采用审查或小组评审的方法进行评审,而一般的代码,则可以采用临时评审、同行评审等比较随意的评审方法。,9.4.2 评审的技术,缺陷检查表它列出了容易出现的典型错误,是评审的一个重要组成部分。 规则集类似于缺陷检查表,通常是业界通用的规范或者企业自定义的各种规则的集合。 评审工具的使用合理的利用工具,如NASA开发的ARM(自动需求度量) 从不同角色理解不同的角色对产品/文档的理解是不一样的。 场景按照用户使用场景对产品/文档进行评审。,9.4.2 评审的技术,通用评审过程,计划概述准备评审会
11、议返工和追踪,评审,评审过程-计划(Plan),计划阶段主要工作:选择人员并确定角色,从不同的角度评审定义进入/退出准则(对更正式的评审)确定评审的关注点如有开会,要确定时间和地点,9.5 评审流程,评审过程-概述(Kick-off),概述阶段主要工作:向参加评审的人分发文档向参加评审的人解释陪评审文档的信息及计划的评审重点和目的对更正式的评审,还要解释进入准则,9.5 评审流程,评审过程-准备,准备阶段主要工作:参评人员在评审之前各自独自准备,记录潜在的缺陷、问题和意见,9.5 评审流程,评审过程-评审会议,评审会议阶段主要工作:讨论并以文档形式做好会议记录参会者只需简单记录缺陷、给出处理缺
12、陷的建议,9.5 评审流程,评审会议通用准则,会议时间2小时如1或多个专家缺席,可取消对事不对人主持人不应该同时做为评审人员。,9.5 评审流程,评审中发现的问题必须划分不同的权重。,缺陷的级别:严重缺陷:评审对象不能满足它的目的,在批准评审对象之前必须修正重要缺陷:影响评审对象的可用性,批准评审对象之前应该修改一般缺陷:小的偏差,基本不影响使用好的:没有缺陷,9.5 评审流程,评审过程-返工和跟踪,经理决定接受评审团队的建议还是采用其他方法。跟踪缺陷的修改。改进评审过程。,9.5 评审流程,评审团队应该对评审对象给出最后的意见。,评审结论:接受:无需修改有条件接受:需要修改,但不需要进一步评
13、审不接受:需要进一步的评审或其它的检查措施评审未完成:评审未完成,还需后续会议,会议最后,所有参加人员需要签署最后的会议纪要。,9.5 评审流程,检查表,确保评审完整性及高效的一个重要工具是检查表(checklist),检查表(check list) 是为每种文档专门构造的条目清单,或者是需要在进行某项活动之前所必须完成的准备清单,用来收集数据、检查和掌握整个过程的关键点,其方法有效、简单、处理便捷。检查表的使用程度主要依赖于检查表的专业属性、使用者对检查表的熟悉程度,以及它的可操作性。,9.5 评审流程,生活中的check list,9.5 评审流程,某软件升级产品发布的检查表,9.5 评审
14、流程,9.6 如何实施成功的评审,解决不成功评审的主观因素:对所有的工程师进行评审的培训,使评审深入人心预防个人冲突,尽量避免对作者有人身攻击的工程师加入评审小组将评审活动加入到项目计划中,并为评审分配足够的资源收集以前的评审数据,了解哪一种评审方法最为有效将评审列入个人的时间表中,确保评审员有充分的时间为评审做准备和参加评审,解决不成功评审的客观因素:异步评审-如共享文档、邮件评审分布式评审-如视频会议,9.6 如何实施成功的评审,工作任务步骤,1.协调员发email,通知会议安排2.协调员组织会议,确定会议议程3.项目组人员准备需求规格说明书4.评审人员进行评审5.填写评审记录表,任务1:
15、协调员发email,通知会议安排,每个小组选出一个协调员角色。每小组选出一个项目组成员,负责项目需求规格说明书的准备。每个小组要选出一个记录员,做会议记录其他小组成员作为SQA评审员,老师作为用户方代表出席。协调员确定所有参加人员名单,然后使用邮箱发一封通知邮件。用户方代表(教师)邮箱:,2.协调员组织会议,确定会议议程,随机抽取一个小组,进行现场会议。协调员为会议的主持人。协调员公布会议流程。,3.项目组人员准备需求规格说明书,每个小组扮演项目组成员角色的同学,从你们小组的SVN仓库中,update出需求规格说明书,作为你们要接受评审的需求规格说明书,4.评审人员进行评审,由协调员主持会议。现在召开评审会议。会议记录人员从SVN服务器中update(或checkout)出小组会议记录文档,进行填写会议纪要。然后提交到SVN服务器。评审原则按照文档评审原则进行。,5.填写评审记录表,每个小组在评审后,从SVN服务器上update(或checkout)出你们小组的评审记录表,填写后,提交到SVN服务器。,