如何进一步提高同行评审的效果
很多项目都会遇到同样的问题,评审流程很正规,评审准则等也事先进行了讨论和评审,与会人员也花了足够的时间理解待评审的工作产品。但在项目结束后经过质量的回溯,就会发现有些产品缺陷其实应该在评审会上就被发现,也就是说评审的效果还不非常好的的。如果遇到这种情况,还可以从以下两个方面来进一步提高。
首先,防止落入检查表的误区。同行评审的准则其实就是检查表中所要检查的内容。当人们使用检查表的时候,往往注意力就只集中于该表上所罗列的检查项,而这些检查项也往往集中与工作产品本身,而忽略了其他各种边界的情况。如果是升级某个系统,就要考虑新系统与原有系统之间的接口是否匹配;如果是新开发的项目,也要考虑客户原有数据如何导入的问题。总之可以将软件测试中边界值的理论从微观的函数或方法的级别扩展到更大的范畴。
同行评审的准则是汇总了与会人员填写评审准备表中的内容,因此,在评审准备表的模板中可以事先增加一些关于各种边界信息,提醒不同角色的与会人员,从不同角度对各种边界进行思考。
其次,工作产品的漏测率是与抽样率是成反比的。如何提高同行评审的抽样率呢?首先大家要知道同行评审所使用的抽样就是同行评审准则中记录的每个检查项。只要检查项覆盖面足够,那么同行评审自然就会有效果。如果评审主持人收集回来的评审准备表中反馈的内容太少,那就没有必要继续进行评审,因为这样的评审只能是走过场。
评审的主持人和作者可以先将工作产品的内容进行分解,与WBS的分解方法相同,然后再将与会人员的反馈对应到每个分解出来的待评审的功能点,以此来判断检查项的覆盖率是否足够。例如表1所示:
表1- xxx概要设计文档评审覆盖率分析表
待评审的功能点 | 功能完整性 | 技术复杂度 | 可维护性 | 产品性能 |
功能点A1 | X | X | ||
功能点A2 | X | X | ||
功能点A3 | X | X | ||
功能点A4 | X | |||
功能点B1 | X | X | X | |
功能点B2 | X | |||
功能点B3 | X | X | ||
…… |
通过一个类似这样表格,主持人就会发现有那些地方大家还没有考虑到,没有考虑到的地方可以在评审会上集中讨论,或者在同行评审的准备阶段让与会人员还需要继续提出建议。
如果提高同行评审的效率
要提高同行评审的效率,首先就要知道以往评审的度量信息,通过对度量的数据进行分析,找到可以改进的关键点,这其实就是CMMI进行过程改进的方法。在之前已经提到同行评审准备阶段就需要明确收集相关度量的信息,本文将举些常用的例子给大家参考。
? 同行评审发现缺陷数量
有些时候与会人员为了应付评审,在填写评审准备表时只为了凑数量,而不注重质量,那么可以通过对本次评审发现问题的数量进行分类统计,如果某次评审发现的问题较少,那么有可能(只是有可能)是评审准备的工作没有做好。
? 同行评审ROI(投资回报率)
同行评审ROI是对评审效果的直接衡量。
投资回报率:在同行评审中就是所有与会人员花费在本次评审中的成本与本次评审所发现缺陷所具有的价值之间的比例。也就是每投入1块钱在同行评审上可以得到多少钱的回报。公式如下:
与会人员在本次评审所花费的时间UT=本次评审准备工作的时间+开会的时间+[ 如果会后某些人员还需要对缺陷进行跟进的时间 ]
与会人员在本次评审所花费的成本UA=该人员的单位小时成本 * UT
所有与会人员在本次评审总的花费PC(元)=UA1 + UA2 +UA3+……
公司可以通过一段时间的积累或讨论,按照不同工作产品、不同的严重程度来评估该缺陷如果没有被及时发现,那么其返工的成本为多少。例如:在对需求文档和设计文档进行评审时,发现同等级别严重程度的缺陷,其返工的成本是不同的,需求评审所发现的缺陷价值更高。
返工成本RC(元)=D1+D2+D3+……
同行评审ROI=返工成本RC / 所有与会人员在本次评审总的花费PC
在项目组内通过对同行评审ROI的度量可以看到每次评审的效果,如下图所示,详细设计的投资回报率是负数,但这并不能够确定本次评审的效果不好,也可能是该设计文档写的太完美了,造成与会人员发现不了问题。
? 同行评审抽样率
如表1所示,经过经工作产品的分解,统计该表格有多少检查项CI,有多少项是被覆盖的CC。
同行评审抽样率=被覆盖的检查项CC / 总检查项CI * 100%
如下图所示,本项目的覆盖率都达到70%以上,符合公司的要求。
这只是举了几个关于同行评审度量的例子,关于度量的理论,以及如何所制定的各种度量指标不是本文所要关注的内容。项目管理人员只需要通过度量分析的结果,关注有异常发生的点,并使用多个度量指标对其进行综合分析,找到问题的根源,才能发现在同行评审中存在的问题。
至此,整个软件同行评审的流程、方法和技巧都介绍完了。希望广大软件从业人员可以了解同行评审的重要性,以及如何才能将评审会开好并达到预期的目的。如需了解更多软件工程的知识,也可以访问我的个人网站www.zhang-jin.net与我进行交流。