首页 理论教育敏捷开发评审控制图的运用及其效果

敏捷开发评审控制图的运用及其效果

【摘要】:评审控制图的使用,重点在于关注执行过程中的不稳定及不受控现象,因此当出现以下情况时,就需要及时加以分析和管理。针对这些可能的原因,及时采取有效的补救措施可以使得敏捷开发的过程在早期也能得到较好的质量控制和管理。评审控制图的熟练应用对于项目组而言是一个非常便于使用且可产生实效的质量控制工具。

既然称之为敏捷开发,那么它更注重的一定是效率,开发的速度与项目的质量从来都是一对矛盾体,那么如何在既确保质量的前提下实现快速开发,这就需要在敏捷中也引入评审并且重视评审的作用。

评审,我们注重的不是形式,而是作用。在敏捷开发的过程中,即使运用适合的控制图进行管理,那么也就尽可能在评审的同时加强了效率、质量的控制,从而有可能花费更少的精力获得更高的效果。

评审控制图的使用,重点在于关注执行过程中的不稳定及不受控现象,因此当出现以下情况时,就需要及时加以分析和管理。

(1)单点落于3δ控制限以外。

(2) 3个连续相继的数值中至少有2个落在中心线的同一侧,且距离中心线超过2个δ单位。

(3) 5个连续相继的数值中至少有4个落在中心线的同一侧,且距离中心线超过1个δ单位。

(4)至少8个连续相继的数值落在中心线的同一侧。

在同一个组织中技术会签与技术会议的评审控制图的差别未必一定很明显,这些评审控制图的制作应尽量基于类似项目的历史数据,以便于能更有效地为后续项目实际数据进行分析和及时采取必要的预防纠正措施提供数据支撑。

因为之前的评审控制图是以技术、会签的数据为基础的,所以下面就对代码走查的会签评审效率数据进行分析。这是一组实际项目的数据,以编码阶段的评审效率为例,分别对代码A、B、C、D组织了四次技术的会签评审(也即代码走查),这四次技术评审所涉及的功能个数略有差异,分别为4个、5个、10个和3个。相应的评审准备工作量、计划总工作量、实际总工作量和加权缺陷总数见表4。

表4 实际项目编码阶段的评审数据

上述实际项目编码阶段的评审数据在评审控制图中的落点位置如图3所示。(www.chuimin.cn)

可以很明显地看出,代码B的评审数据较为异常,直接落在了3δ控制限以外,因此这项评审活动应该加以重点关注。我们来看一下该数据产生的情况,评审效率=加权缺陷总数/实际工作量(人时),而代码B会签评审发现的加权缺陷总数为3个,看上去与其他几段代码会签评审发现的加权缺陷总数也相当,但是其实际花费的评审时间却比较少,因此评审效率从数据上看比通常的该阶段评审效率要高。虽然在通常的理解上,评审效率高应该是一个不错的结果,但是对于使用评审控制图来进行评审活动的分析而言,数据异常就应该引起警觉。因为如果在代码走查阶段花费太少的评审时间,极有可能会将代码的隐患遗留到后续的测试阶段或者交付阶段。因此当代码走查评审的效率异常高时,也应该要进行分析,必要的时候要安排有经验的人员再次进行代码评审。

图3 实际项目编码阶段评审数据在评审控制图中的展示

试想,如果不采用评审控制图进行评审数据的分析,那么更多的实际情况就是,如果组织要求必须要做某个阶段的评审,那么项目团队就按组织体系文件的要求去完成评审活动,至于评审的有效性、评审工作本身是否有改进机会,一般都不会作为关注对象。结果往往就是评审的形式做了,但评审真正的效果未能达成预期,这也就是为什么很多情况下,评审活动往往容易被项目组忽视的原因。只有结合数据的统计和分析,才能更有效地使得评审活动的开展卓有成效。

那么对于评审活动中出现的异常及不稳定的可能因素,一般我们认为可包括:

(1)评审的实际总工作量投入太少,评审的准备时间不够充分。

(2)评审人员不适合或者没有掌握必要的评审技巧。

针对这些可能的原因,及时采取有效的补救措施可以使得敏捷开发的过程在早期也能得到较好的质量控制和管理。

我们看到表3中的每一组数据都可以被单独应用于分析和控制。当然对于一个组织而言,也没必要对所有的数据都加以控制和分析,可以根据组织本身的项目特点、人员分布、技术/过程成熟度等因素,选择需求、设计、编码、测试中的某个阶段的评审活动加以控制和分析,这样既满足了敏捷开发快速适应需求变化和迭代的需求,也有效引入了评审活动,实现了高效的质量控制。评审控制图的熟练应用对于项目组而言是一个非常便于使用且可产生实效的质量控制工具。

这里我们还需要说明的是,对于评审控制图的建立,也就是形成评审控制图的数据,应根据组织的成熟度情况,至少每半年或者一年进行一次更新,当然也可以根据实际需要,制作单个项目的评审控制图,这样会更有利于特定控制图在同类项目中的有效应用。

评审控制图虽然是一个通用的概念,但如何运用好这个工具也是质量管理工作不断深入和与开发团队密切配合的结果,质量管理团队应该更多地为开发团队提供有效的质量管理工具,以共同寻求项目开发过程中项目质量与开发速度的平衡。