论软件质量

何为“软件质量”?也许你会说,这有什么好讲的,谁还不知道什么叫质量啊?!但你确定,你真的能讲清楚么?
我最近一直在琢磨这个问题,越琢磨越意识到“软件质量”的本身定义在很大程度上揭示了软件开发巨大而独特的挑战。
几年前,在一家某知名软件公司做评估访谈时,我问了所有参与者这样三个问题:
-    “对你们公司来讲,你认为软件质量是什么?”
-    “你经常听到的软件质量评价是什么?”
-    “在你的日常工作中,哪些工作直接或间接和质量保障相关?”
第一个问题的答案五花八门,同一个组织不同的人会给出完全不同的定义。有人认为质量就是可靠;有人认为是满足目的好用;有人用量化的泄露缺陷率来定义质量;有人用客户的满意作为好的质量标准;还有其它诸多不同说法。
这些答案看似都有道理,但显然格局不够,它们不能直接和组织的商业目标关联起来,不能看到质量保障活动如何推动组织的业务发展;它们也不能用来统一组织内部所有部门、团队的工作策略、方法。
CMMI 2.0强调的是价值,仔细想想,软件质量应该和价值密切关联的。而软件价值(质量)又有两个重要特性:
1.主观性:价值和质量是由使用者在使用的那一刻决定的,使用者生活经历、过往体验不同意味着质量感觉的差异。
2.动态性,价值和质量要求会随着时间不断发生变化,总的趋势是越来越高。
这里,必须提到一位名叫Gerald Weinberg的计算机科学家,他为软件工程做出过重要贡献。其中有一本名为“Quality Software Management: Anticipating Change. Vol. 1: Systems Thinking”的书对我影响很大,这本书用独特系统的眼光展示了软件质量管理世界,让我对软件质量有了全新认识。

image.png

  Weinberg是这样定义质量的:
Quality is value to some person. 
质量是给一些人带来的价值
  他是这样定义价值的:
What are people willing to pay (do) to havetheir requirements met.
价值意味着有人愿意为实现他们的需求买单。
  思考一下的话,这个简单定义是很有道理的。软件产品是服务于人的,而人的差异是显而易见的,比如有人惯用金蝶,有人习惯用友;有人喜欢Window,有人更爱Linux;这样的例子举不胜举,人对软件产品的接纳程度往往和他(她)自身背景有很大关系。
Weinberg的定义其实有点理想化。毕竟众口难调,任何一个软件产品不可能满足所有人的喜好。后来测试专家James Bach给Weinberg的定义加了两个字:
Quality is value to some person who matters
  什么是who matters?也就是说我们开发软件不是为了所有人的需要,而只是为了满足那些重要的相关干系人(借用一下CMMI词汇)的需求。从开发角度来讲,干系人不仅仅是客户和市场,像老板啦,运维啦,等等啦都对质量有自己看法,他们的看法也不容忽视。
在开发一个软件产品时,如果我们能够清楚定义出who matters,那么我们质量保障的关注点会清晰许多,重要决策也会理性许多。
理性可以减少一些质量管理中政治和个人情绪的影响。质量决策往往会受政治和个人情绪的影响,毕竟是人来开发软件,那么谁能保证个人偏好不会影响产品设计决策?谁能保证个人观念不会影响质量决策?谁能保证缺陷报告中不包含让测试人员不爽的bug?谁能保证用户体验不是我们自己的体验?
Weinberg和Bach的质量定义,解决了质量的主观性问题,可惜没有有效解决动态性问题。
记得90年代初,我刚刚开始用互联网,那个时候的网速其实是蜗牛速度。下载一个网页需要好几分钟。但是和为看新闻买份报纸来回三十分钟比,这几分钟简直就是神速了。出去倒杯咖啡,回来再开始看,觉得有网络的日子真心好。而今天,如果网页不能秒刷,我们会恨恨的抱怨着,什么破网!
亚马逊的大boss贝索斯在2018年致股东的公开信中用divinely discontent描述顾客的期望,从人的本性来讲,他们的期望从来都不是静止的,现在的增速是超过以前任何时候的。这也要求我们改善的周期要比以往任何时候都要快。在今天这个世界上,谁都不能满足于过往的成就,因为客户不会买你旧账。(这类废话我其实也能说得很好,就是没人引用)
贝索斯这段话,指出了什么是质量的核心内涵,软件质量之所以难以定义,是因为任何软件产品都不是一成不变的,人民群众对美好生活的追求,逼着你不断开发出更好、更高质量的软件产品。世间武功唯快不破,所以像贝索斯这样能率领亚马逊快速成长不足为奇。任正非提出的“一切以客户为中心” ,为他们去调整、为他们去学习改进,和他们一起成长,精髓都是一样一样的。
  最近另一位软件测试牛人Michael Bolton给Weinberg和Bach的定义又加了三个字:
Quality is value to some person, at some time, who matters.
质量是给一些重要干系人在某个时间带来的价值。
  不论你是开发人员还是质量保障人员,都应逐字品味这句话,它会开拓你的眼界。本文仅局限于软件质量定义的讨论,后面准备发一篇“软件质量十大灵魂拷问”,深入探讨下软件质量管理的问题及方法。
  CMMI 2.0的GOV实践域中第一条实践(也是一级实践)要求领导者识别所需方法(过程、技术、工具)以实现战略目标,听起来简单,有多少真正做到了呢?仅仅局限于功能和局限于传统内在质量的老板,很难让质量团队成为业务快速发展的助力器。


原创 丛斌博士 大家可以关注老丛讲桌

点击关闭
  • CMMI认证客服

    CMMI3认证客服

    CMMI咨询

    CMMI4认证