写点什么

质量意味着什么?

2009 年 4 月 28 日

质量在软件开发中意味着什么?对于现在业界使用的‘质量’一词, Mike Bria 认为:我们用之强调的是“没有缺陷”,而不是日常生活中约定俗成的“有价值”。

他接着建议:

“质量”应该被用来衡量交付给客户的功能上和美学上的实用性,而不是衡量软件的缺陷数目。没有缺陷是理所应当的,而且这也是作为专业人士所应该做到的。

因此我建议身为软件专业人士和业务人士的我们,请不要将“质量”定义为“对缺陷数目的衡量”。

Mike 认为如果我们把质量更多的视为对客户要求的满足程度,而不只是较少的缺陷数,人们编写的脆弱代码就会更少一些。他也认为如果软件宣称的高质量只是缺陷数比较少,那么就很少有客户会认可该软件为一款高质量的软件。而这(缺陷数比较少)只是软件的最低验收标准。

Lisa Crispin,《 Agile Testing: A Practical Guide for Testers and Agile Teams 》一书的合著者,评论道“我从来都不喜欢量化缺陷,所以很难想出一个合适的名词来称呼”。

Christian Vest Hansen 引用了 Robert Glass 的回复,认为“质量”是:

…一组属性的集合:移植性、可靠性、高效性、易用性、可测试性、易理解性与易修改性。

这些属性中的各项在不同的项目里面都会体现出不同的重要性,但是单独的各项却不能构成为质量。有些项目可能根本不用关心移植性,但是,只考虑可靠性、不顾其他属性的产品并不能算是高质量的产品。

James Bach 认为对质量的传统看法——“产品的质量是由它的开发团队构建出来的。开发团队通过在代码编写过程中严格遵循工程实践来构建质量,这样产品才能满足用户所有需求。”,其实是一个与软件开发并不相吻合的比喻。他提出了一个新的比喻作为替代:

产品是动态调整得到的结果,如同花园受到各种因素的影响。要得到高质量的产品,就需要随着时间流逝,进行维护和除草等工作。与真正的园丁一样,在耕种我们的“庄稼”的时候,我们做不到全知全能。在工作的同时,我们会去检查产品的情况和状态。我们试着去预测问题,然后解决发生的问题。我们试着去弄清楚我们的技能可以做到的与不能做到的,然后相应地调整客户的期望。我们知道我们的产品总会腐烂的,而客户的喜好千差万别。而且,我们知道即使是最好的庄稼也可能被拙劣的厨师糟蹋了。在很大程度上,质量并不是我们所能掌控的。

多少年过去,看过很多成功和失败的产品,也看过先成功后失败的产品,在我看来,质量倏忽即逝。 有时产品的质量足够好,甚至可能非常好。只可惜都耐不住时光荏苒,终究是无可奈何花落去。

最后, JB Rainsberger 提醒大家:“当我们停止追求客观的、可度量的质量,我们就会回过头来满足某些特定的人的需要,我认为那样(客观的可度量的质量)更能帮助我们交付更适合的、更有益的软件。”

对于质量是什么,大家并没有清晰的共识。但是,大家都赞同质量不是对缺陷数目的衡量。作者们也都认为我们需要实事求是,必须承认一旦有了缺陷就不能再奢论质量。

查看英文原文 What does Quality Mean?

2009 年 4 月 28 日 06:191884
用户头像

发布了 76 篇内容, 共 17.9 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
  • “TDD 已死”之论战调查

    Ruby on Rails的作者DHH最近发出“TDD已死”的言论,这在技术社区引起了轩澜大波,一些技术人员开始纷纷发表各自的看法表示支持或者反对。

  • James Shore 谈保持真正的敏捷

    在一次非正式的访谈中,InfoQ跟James聊了一些最近跟他密切相关的话题,包括他的《敏捷开发艺术》一书,还有他的一些观点,如:现在敏捷越来越水,看板可能并不是全部。

  • 新春福利 | C++ 好书荐读

    希望今天的推荐能给你提供多一些的参考方向,从而进一步提升自己。

    2020 年 1 月 29 日

  • 精读 2017 年 EMNLP 最佳长论文之一

    机器学习的研究人员近期发现,数据中可能蕴含着一些社会赋予的偏见,而机器学习算法很有可能会放大这些偏见。

    2017 年 11 月 6 日

  • 反馈、无反馈、不和谐的反馈

    反馈在敏捷开发中的重要性是首屈一指的。从单元测试,持续集成,每日站立会议,回顾会议直到sprint结束时候的演示,它在敏捷方法中无处不在。那么除了这些以外,是不是还有一些不完整的反馈循环呢?

  • 高品质软件工艺

    Tarcio Saraiva 和 Adam Crough 在澳大利亚墨尔本第一次大会上讨论了高品质软件工艺。InfoQ请他们讨论了什么是软件质量,并请他们解释了质量能够带来的商业利益,以及如何进行管理。InfoQ还请他们谈了谈测试在交付高品质软件时的角色,持续交付对质量有怎样的支撑,并请他们为想要交付高品质软件产品的组织提了些建议。

  • 不堪重负的宣言

    根据定义,宣言是公开声明的原则和意图,描述了一组动机、论证和需要。最流行的宣言之一是敏捷宣言,但自此宣言迅速泛滥。

  • 采用敏捷需要面面俱到

    最近InfoQ曾报道过Jim Shore的文章《敏捷的衰落》,指出组织中有这样一种倾向,只是在名义上采用“敏捷”,而没有采用如何真正成为敏捷的实践。社区领导人比如Joshua Kerievsky、Martin Fowler和Ron Jeffries,则在Shore的基础上更进一步,纷纷就这一情况发表了自己的看法。

  • 好书荐读:小众书也有看头儿

    送你一份书单,希望对你有用。

    2020 年 3 月 25 日

  • 精益求精——敏捷宣言的第五项价值?

    人称“Bob大叔”的Robert Martin再次掀起了讨论“编程的职业水准”的声浪,他提出“敏捷宣言”应该加入第五项价值:“精益求精胜过按部就班”。

  • 结束语 | 送君千里,终须一别

    专栏到今天就要结束了,我实现了最初给自己立下的flag,你怎么样呢?

    2019 年 2 月 20 日

  • 腾讯织云智能监控实践

    演讲嘉宾 吴树生,腾讯高级工程师。 内容介绍 监控系统经历大数据转型后迎来AI浪潮。这个主题分享腾讯织云监控的演进过程和考量因素。结合实际案例场景展示织云从用户端到IAAS层的立体化监控理念和数据化DevOps理念。同时分享织云在AIOps领域的智能检测、根因分析和ROOT根源分析实践场景,展望未来监控转型方向。

    2018 年 9 月 12 日

  • 为什么测试在敏捷项目中重要

    敏捷正在改变团队成员之间协作和完成工作的方式。很多人认为测试的角色正在消亡,但我认为它正在增长,并且正在转变成为一种更好、更完善、更有效的测试。测试角色将极大的帮助我们重新定义事情完成的方式和顺序,从而在敏捷过程中获得最好的结果。

  • “完成”意味着“可交付”吗?

    在很多敏捷论坛和博客上都有大量关于“完成”和“可交付”不同之处的讨论。尽管它们听上去含义相同,但在一些讨论列表和博客上认为,二者都是被人广泛误解和错误使用的词汇。下面我们集中看看别人是怎么理解“完成”的。

  • 结课测试 | 关于产品的这些知识,你都掌握了吗?

    为了帮助你检测自己的学习效果,我特别给你准备了一套结课测试题。

    2020 年 6 月 19 日

  • 实干家 vs. 理论家:可以工作的软件胜过面面俱到的文档

    在《你是实干家还是理论家?》一文中,Coding Horror的Jeff Atwood对敏捷宣言中的“可以工作的软件胜于面面俱到的文档”产生了共鸣。他通过引用John Taber的一篇文章,对交通运输学科研究和交通运输建设工程进行了对比。

  • 《What Drives Quality》作者访谈录

    不论软件产品应用的领域是什么,不论我们用怎样的方式构建它,质量都是所有软件产品最为关键的方面。Ben Linders发布了一本新书,名为《What Drives Quality》,他在书中提供了具体的例子和可执行的建议,帮助我们甄别和提高软件产品的质量。

发现更多内容

Docker基础与实战,看这一篇就够了

AI乔治

Java Docker spring 架构

对话机器人70年:科幻与现实的交融

华为云开发者社区

AI 机器人 对话

他在滕王阁上醒来,见到智慧视觉第一城

脑极体

智慧公安二维码报警定位系统,高速路二维码定位报警开发

13530558032

百度的五年乌镇行旅:AI如何穿越过漫漫时光,成为世界的发展新动能?

脑极体

架构师训练营第 1 期 - 第 9 周 - 学习总结

wgl

极客大学架构师训练营

甲方日常 56

句子

工作 随笔杂谈 日常

Appium上下文和H5测试(一)

清菡

App

从前世今生聊一聊,大厂为啥亲睐时序数据库

华为云开发者社区

数据库 场景 时序

牛逼!支付宝超级 App 的架构演进

周老师

Java 编程 程序员 架构 面试

图解 | 不得错过的Binder浅析(二)

哈利迪

android

经典之作——《数学之美》第二版-吴军

计算机与AI

数学

面试专题-Java基础面试技术

李浩宇/Alex

区块链应用场景有哪些?区块链应用开发

t13823115967

区块链应用场景有哪些 区块链应用开发

耗子尾汁,你居然还不懂什么是架构师?那你编码为了什么?还不看阿里人怎么判定吗?

小Q

Java 学习 编程 架构 面试

面试 | 程序猿面试,Elasticsearch被坑被虐的体无完肤...

Java架构师迁哥

《华为数据之道》读书笔记:第 2 章 建立企业级数据综合治理体系

方志

数据中台 数据仓库 数字化转型 数据治理

第一周 架构方法 作业一 「架构师训练营 3 期」

feiyun123

极客大学架构师训练营 架构方法

【薪火计划】05 - 坦诚是领导力的根基

brave heart

管理

彻底搞懂 IO 底层原理

vivo互联网技术

Java Netty 服务器 语法

区块链+数字版权:区块链助力版权保护

13530558032

架构师训练营第九周作业

四夕晖

折半查找和插值查找

ilovealt

算法和数据结构

架构师训练营第 1 期 - 第 9 周 - 命题作业

wgl

MySQL如何实现万亿级数据存储?

冰河

MySQL 分布式 微服务 高可用 mycat

区块链农产品溯源解决方案,农产品追溯系统价格

13530558032

公安情报大数据研判分析系统大数据可视化平台搭建

13530558032

如何在ForeSpider数据采集器中设置代理IP

前嗅大数据

大数据 爬虫 数据采集 代理IP 代理IP设置

市值管理机器人、自动跑k线机器人开发

t13823115967

市值管理机器人 自动跑k线机器人开发

SpringCloud Alibaba微服务实战十 - 服务网关SpringCloud Gateway

AI乔治

Java 架构 微服务 Spring Cloud

上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

Crud的程序员

程序员 架构 算法

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

质量意味着什么?-InfoQ