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