新闻中心
为什么99%的软件开发团队都做不好同行评审?
同行评审的概况与重要价值
在我过去16年CMMI评估师职业生涯中,评估过的近200家企业里, 每家企业都做同行评审,但是大部分企业做的都不好,包括通过CMMI5级的企业。
大部分企业都是这么做同行评审的:预审、评审、 解决。预审就是事先把评审的内容发给评审人员进行评审,并记录评审中发现的问题。评审,就是开评审会,在会上确认预审中发现的问题,并指派专人进行解决。解决,就是把评审中确认的问题由专人进行解决并关闭,确保被评审内容的正确性。
有人说,我就是这样做评审的啊!这是按照CMMI的要求做的同行评审,难道不对吗?
我说,不完全对!因为你没有评价同行评审的效果。
什么是同行评审的效果?从根本上来说,就是被你评审的工作产品中的缺陷,是不是100%都被发现了?缺陷移除率是多少?
举例来说,假设你评审了500行Java代码,找出了10个缺陷,这10个缺陷是不是代表了这500行代码里所有潜在的缺陷?如果所有潜在缺陷是40个,那么你的缺陷移除率只有25%,远远没有达到业界可接受的70%的水平。
同行评审并不只是找出缺陷,而是要找出所有潜在的缺陷,这才是评审的目的。我们不仅要关注同行评审的过程,更要关注过程的结果。
NO.1节约成本
有人问,关注缺陷移除率有这么重要吗?
我说,非常重要!
我们知道,降低软件开发成本的核心在于减少返工。根据缺陷成本放大理论,缺陷拖的时间越长,后期修复的成本也越高。一个需求的缺陷,交付以后再去修复的话,成本可能会放大几十倍甚至上百倍!
NO.2缺陷移除时机
所以,要降低软件开发成本,必须在缺陷注入的时候就把它找到并修复,即尽早移除缺陷。移除缺陷的活动有两种,同行评审和测试。评审在前,测试在后。
所以,在同行评审时确保所有潜在的缺陷都被发现并解决,对降低软件成本非常重要。同时,消除缺陷和减少返工,也提高了产品质量、缩短了开发周期,所以关注同行评审缺陷移除率对整个项目的成功都非常重要。
以某百强企业为例, 其全年共32个项目,平均每个项目12个迭代,每个迭代平均产生26个缺陷,全年共产生9984个缺陷。
通过项目完成后缺陷注入阶段数据的统计,发现每个项目测试前同行评审的缺陷移除率平均值是40%。
假设有一种方法能使同行评审缺陷移除率提高到70%,则全年返工成本可以降低50%, 600万的返工成本可以节省300万,相当于节省了17-20%的总开发成本。
NO.3企业应用
哇!既然缺陷移除率这么神奇,那么为什么企业不用呢?
企业也不是不用,但是大部分企业都是在项目结项以后计算同行评审的缺陷移除率。例如,项目结项后,收集到的数据是在需求评审、设计评审、代码走查、测试和客户使用活动中分别发现了5个、4个、9个、6个、1个缺陷,就可以算出在需求阶段注入了25个缺陷。如果需求评审发现了10个缺陷,那么需求评审的缺陷移除率就是40%。虽然通过这种方法我们也可以知道需求评审的缺陷移除率太低,但是这种计算是事后诸葛亮,不能在需求评审的当时知道缺陷移除率的情况,,从而在缺陷移除率低于70%时,打回重新评审,最终提高缺陷移除率,降低开发成本、提高质量和缩短开发周期。
那为什么不在需求评审的当时计算同行评审的缺陷移除率呢?这里有个难点就是你不知道有多少潜在的缺陷。例如,当你评审500行Java代码,发现了10个缺陷,那你知道代码里到底有多少个潜在的缺陷吗?
这个问题的本质,就和预测濒临灭绝的东北虎的数量一样。在过去20年中,几位业界大师们针对预测同行评审潜在缺陷数进行了不同的研究,提出了不同的方法。感谢CoCode工具平台,在前人的基础上,使用最新的统计和AI技术, 为大家提供了免费的同行评审分析工具, 使项目团队在短短的几秒钟之内就可以计算出当下的同行评审缺陷移除率,解决了软件行业的一大难题!
林肯说过,“One penny saved is one penny earned.” (省一分钱就等于是挣了一分钱!) 希望软件企业都能把评审分析等工具使用起来,投入零成本或很小的成本,就可以降低20%左右的整体开发成本。
以上内容转载自公众号《CMMI论坛》