分配给缺陷修复的总容量的平衡百分比等于缺陷注入率。
当然,有许多因素会影响该比率,其中包括:团队正在开发哪种产品,他们使用什么技术和技术实践,团队的技能水平,公司文化等等。
考虑到B团队,如果他们平均每完成10个工作单元就创建8个返工单元,那么工作这8个单元将创建新的6.4个返工单元。我们可以估计他们最终将要花费的总工作量为几何级数的总和:
10 + 8 + 6.4 + 5.12 + ...
错误的数量将随时间呈指数下降,但是B团队的指数具有如此大的系数,以至于它会非常缓慢地变为零。实际上,上述系列中前三个项的总和仅为24.4;前五个中的33.6;在前10名中,有45名;因此,B小组总结:缺陷注入率0.8;缺陷注入率0.8。功能发展,10/50 = 20%;修复缺陷,占80%。他们的可持续能力分配是20/80。
相比之下,A队的状况要好得多。他们的进度看起来像这样:
40 + 10 + 2.5 + 0.625 + ...
该系列的总和为53 1/3,因此A组的特征开发分配为40 /(53 1/3)= 75%,缺陷修复分配为25%,与缺陷注入率为10/40 = 0.25匹配。
实际上,在前三个之后,A队系列赛中的所有术语都可以忽略不计。实际上,这意味着Team A可以通过几个维护版本来解决所有的错误,而第二个版本的范围很小。这也造成了任何团队都可以做到的幻想。但不是B队。
在阅读戴维·安德森(David Anderson)的新书《看板》(Kanban)时,我就想到了这种等效性。(这本书是在另一个主题上,但是也解决了质量问题。)在讨论软件质量时,Anderson引用了Capers Jones的这本书“软件评估,基准和最佳实践”:
“ ...在2000年...为北美团队测量的软件质量...范围从每个功能点6个缺陷降低到每100个功能点少于3个缺陷,范围是200到1。 中点大约是每个缺陷1个缺陷0.6到1.0个功能点。这意味着团队通常花费90%以上的精力来修复缺陷。 “他引用了一个公司的一位同事提供的示例,该公司花费90%的时间来修复错误。 。
安德森从缺陷注入率到固定虚拟机容量分配的流畅程度(失败需求是术语)表明软件质量研究人员很清楚这两件事的等效性,并且可能已经有一段时间了。
我要在这里提出的推理路线中的关键词是“平衡”和“可持续”。如果我们放弃了可持续性,那么有一种显而易见的方法可以欺骗这些数字:您进行了初始编码,然后继续进行其他地方的编码,然后再由其他人来维护。或者,您将技术债务还清并转嫁给新的所有者。
显然,没有特别的分配适合所有团队。如果我们决定必须在漏洞上花费20%,那么,如果团队的缺陷注入率极低,那么他们将根本没有足够的漏洞来填补时间,而如果团队的漏洞注入率很高,那么他们的漏洞就可以解决。将继续积累。
我在这里使用的数学方法得到了简化。我忽略了诸如交易成本(计划和预算会议,验尸等)之类的东西,这会在一定程度上影响百分比。我也省略了模拟维持一种产品并同时开发另一种产品的方程式。但是结论仍然成立。在技术实践方面,如单元测试,持续集成,代码审查等,请尽您所能来降低缺陷注入率,从而降低故障需求。如果您每10个功能只能创建一个错误,那么您将有大量的空闲时间来开发新功能并满足您的客户的需求。