InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

零缺陷系统的圣杯

作者 Vikas Hazrati 译者 石永超 发布于 2011年3月1日

领域
过程 & 实践,
架构 & 设计,
语言 & 开发
主题
质量 ,
软件测试 ,
企业级敏捷 ,
软件工匠 ,
测试 ,
敏捷

尽管零缺陷听上去很动听,但真有这种可能吗?还是说这是一个无法实现的目标?很多组织采用“零缺陷的方法”。这是否真的有意义?

Jim Bird认为,100%完美的成本是异常高昂的。一旦团队去除了90%的缺陷,到达了最佳水平,进一步去除缺陷所得的回报,相对于不成正比的成本而言,会明显降低。Jim引用了Ken Beck和Martin Fowler在《规划极限编程》中提到的观点:

但是,对于大多数软件,我们实际上并不期望它是零缺陷的。任何缺陷,一旦发现,要消除它就要花费时间和精力。这些时间和精力本可以投入到更有价值的新功能上。因此你必须决定做什么。

Michael Dubakov有类似的观点,他认为相比零缺陷思想能带来的好处,它产生的问题可能会更多。Michael说,不良的后果包括:

  • 没有足够的勇气去重构复杂、混乱、到处是缺陷的重要代码。
  • 无法做出重要的决策,而会做出风险相对较小的错误决定。
  • 尽其所能不愿承担责任,这会导致滑稽愚蠢的行为。

Michael认为在现实中,在生产系统中有缺陷是很正常的。这并不意味着团队应该自满,不去修正缺陷。但是,这并不代表所谓的“最后缺陷”是一个海市蜃楼。

Jim认为对于需要修正的缺陷,应该加以选择。通过确认缺陷的严重程度和发生频率,团队首先应该确定缺陷对于业务运作的重要性。下一步,则是在修正缺陷前,考虑诸如“修正成本”和“对于系统其他部分的风险”这样的技术因素。

零缺陷的观点天真地假设:修正缺陷总是好的、正确的。但修正缺陷并不总是一件正确的事情,因为对于任何修正,都会有引入新问题的风险。

Joel Spolsky认为,零缺陷并不是字面上代表的意义。它是说在任何时候,在编写新的代码之前,最高的优先级是消除缺陷。

那么减少缺陷的最佳途径是什么?

Mark Windholtz认为测试驱动开发是至关重要的

测试先行的编码是实现零缺陷目标的基础。测试先行的编码方法,要求在编写生产代码之前,先编写自动化的单元测试,而编写测试代码的时间周期是5~15分钟。

同样地,为了减少缺陷数目,Michael Dubakov建议结合使用TDD、持续集成、自动化回归测试、根本原因分析和高水平的开发技能。

Rolf Gotz提到了开发零缺陷系统的十大原则。其中几条包括:

  • 客户与软件开发人员互敬互爱。
  • 需求的范围要小,要简单,逐步增加。
  • 优先关注高价值的需求。
  • 验收标准是最重要的。
  • 问题本身是第一位的(然后才是需求)。
  • 优先考虑性能需求。

因此,尽管系统应该只有极少数缺陷,但零缺陷是一个永无止境的追求目标。关键在于要了解何时应该停手。就像Jim建议的:

要了解何时停止修正缺陷,何时到达了收益逐渐降低的关口,何时应该把精力集中到更重要的工作上,并不是一件简单的事情。知道哪些缺陷要修正,而哪些不要,或者哪些缺陷是目前不能或者不应该修正的,都不是简单的事情。而且有时候你可能是错误的。

查看英文原文:The Holy Grail of Zero Defect Systems

译者 石永超 是Irdeto BSS软件工程师,CSM,敏捷爱好者,《User Stories Applied中文版》译者之一。

零缺陷系统等于自掘坟墓 发表人 张 宝华 发表于
Re: 零缺陷系统等于自掘坟墓 发表人 Xiong Jeff 发表于
Re: 零缺陷系统等于自掘坟墓 发表人 xu heng 发表于
“零缺陷系统”的最佳实践 发表人 lian peixun 发表于
零缺陷这种口号上的东西弊大于利。 发表人 张 国春 发表于
  1. 返回顶部

    零缺陷系统等于自掘坟墓

    发表人 张 宝华

    无论是中国传统道家理论,还是马克思辩证法都提到过“发展是硬道理”。要以变化的角度审视世界,当前的系统拥有的功能属性集合N,其缺陷因素集合M<N,切M为NULL,但是如果当前的系统需求要添加新功能,那么|N|就会变大,二系统内的属性是互相联系的,这会给原来的系统产生不可控制的缺陷,而弥补这些缺陷的所需要的时间将是难以估计的,除非系统不升级,而不会更新是系统最大的缺陷。零缺陷系统是个悖论,就像0码平台一样。

    所以,洗洗睡吧!!>

  2. 返回顶部

    Re: 零缺陷系统等于自掘坟墓

    发表人 Xiong Jeff

    I simply copy my reply on the original post:

    "Zero Defect" actually means "finding root cause of any defect and improve the process so that similar defect could never happen again".

    It's non-sense talking about if it's worthy or not to fix each and every bug. It's all about recognizing the ineffectiveness and inefficiency in your production process and improving.

  3. 返回顶部

    Re: 零缺陷系统等于自掘坟墓

    发表人 xu heng

    物理学的测不准原理,两个互斥的值,如果一个非常精确,另一个就变的无限大了。

  4. 返回顶部

    “零缺陷系统”的最佳实践

    发表人 lian peixun

    这里作者提出“零缺陷系统”的一些好的实践方法。并不是要让大家去追求所谓的零缺陷系统。良好的实践对于提高系统的质量是非常重要的。

  5. 返回顶部

    零缺陷这种口号上的东西弊大于利。

    发表人 张 国春

    企业决策是杆旗,它怎么指,下面就会怎么干。就算“零缺陷”想体现的是种精益求精的管理理念。但到基层员工那里,往往就因为“零缺陷”几个字,在临交付时通宵达旦,头病医头,脚病医脚。对缺陷的分级和各级别相对数量的管理要更实际。有人可能认为上面放松一寸,下面就会马虎一尺。其实也不尽然。