求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
 
软件质量的“奥秘”
 

2010-11-10 作者:fasiondog 来源:fasiondog的blog

 

注:下面此文中提到的质量的行政与情感色彩,只是温伯格从心理学的角度揭示和探究组织内管理改进的方式,请勿以此来片面的理解“质量”,并作为自己无法开发出高质量产品的借口。关于质量的客观定义,请参见朱少民老师的文章,建议先读朱老师的文章再读此文,以免对质量产生误解:
质量的定义总会带有政治的和情感的色彩吗?

什么是质量?似乎已经有了非常多的答案,从“质量就是零缺陷”、“质量就是满足客户需求”一直到“质量是满足客户需求的程度”,仿佛我们已经找到了答案。可是这些答案为什么总是无法解决我心中的困惑?

  • “满足客户需求是我们唯一的目标”作为公司的质量方针已经这么多年,可是为什么在软件开发中我们始终还只能不断的喊着“从客户的角度”的口号,而“从客户的角度”出发的思想却始终无法在开发团队中落实?
  • 项目经理们一旦受到了进度的压力,什么质量、什么从客户角度出发就被他们毫不犹豫的扔到了九霄云外?
  • 为什么在公司提高过程符合度的重压下,过程符合度指标急速上升,而有的团队质量却没有根本性的进步?
  • 为什么有的产品终于实现了第一次开发达到了进度零偏差,但实际却偷偷拿着另外的版本提供给客户,并因此得到了公司的嘉奖?再后,进行审计时发现,获得嘉奖的产品其开发过程审计结果也一般般,甚至是同一个部门中比较落后的团队,其他开发团队对此更是嗤之以鼻!
  • ……

虚伪的质量

最被大家认可的质量定义“质量就是满足客户需求的程度”,以前从未对此表示过怀疑,一切都如此的自然,就好像质量天经地义就应该是这样。我的思考和理解也就停留在“客户是不同的,需要区分”、“满足的程度应该如何衡量”等诸如此类上,但它却始终没能解决我心中的困惑,我也没能成功将它和我们软件开发中存在的各式各样的奇特现象联系在一起,除了在无计可施时,向着开发和测试人员喊喊“你们要从客户的角度考虑问题”的口号,就毫无办法!直到一天看到了大师温伯格的三卷套(《质量.软件.管理》),才明白这一切的根本,没有谁比温伯格更深刻的揭示了“质量”的奥秘。而这奥秘对我来说,无异于当头棒喝,将所有的困惑打在了一起,又一个个解了开来,也能让我更冷静的看待开发中存在的种种问题,从而能够更好的处理这些看似简单却复杂的质量问题。究竟什么是质量的奥秘呢,上面的质量定义中究竟隐藏了什么让我们看不真切呢?答案竟然如此简单和虚伪:“质量就是对某个人而言的价值,它的背后是行政和情感!”。“行政和情感”意味着,质量好并不仅仅是缺陷少、功能多或者是服务好,一切在于客户的感受!一个容易忽视的例子是:我每次去买衣服时,最害怕的是什么,是怕服务员太热情,总是一见面就拉着我介绍这介绍那,她们的介绍总是那么详细以至于我总是心里发毛,为什么?我对名牌和款式实在是所知甚少,而她们的介绍几乎总是让我感觉自己是那么无知,而这让我很自卑(以前一直没意识到),于是每当看到太过热情的服务员我几乎每次都选择了逃避,我会告诉她,我只是随便逛逛。是她们的服务不好吗?显然不是,我会说她们服务得很好,可是这对我来说却不是什么好的购物感受,我却不能说她们的服务质量很好,因为她们显然没有达到她们的目的-卖出,而我也同样没有得到我想要的-买进。一切在于客户的感受,这和以客户为中心的思想并没有什么区别,只是事情的关键在于质量的行政和情感本质,当这从软件组织向外看时,没有什么稀奇,但是一旦以它的目光看回开发组织的内部,事情就不那么简单了,它揭示了软件质量的“不确定性”之外的另一个重要特性——层次性。而如何破除内部质量层次的封闭性将是一个软件组织实现真正的“以客户为中心”的关键,否则“以客户为中心”就只能沦落为一句口号。

质量的层次性

传统的质量体系中,质量的层次一般指的是由质量方针、质量手册/组织手册、流程、方法/工具/指导书/标准等构成的经典的质量金字塔模型中的分层等级,不过这个金字塔模型主要表达的是质量管理系统本身的构成,却无法表达和解释出质量系统之所以能够运作并对产品产生影响的原因和系统原理。这里,并不想讨论质量管理系统本身,而是希望能够解释和理解开发高质量的软件产品本后的某些驱动因素,而正是这些因素对一个软件组织能否真正达成“以客户为中心”的目标起着重要的作用。

那么,这里所希望表达的质量的层次性究竟指的是什么呢?前文提到,所有质量的定义背后都隐藏着“行政和情感”的因素,当沿着这种目光向一个开发组织的内部看去,情况就会变得非常有趣。从情感的角度看,任何一个稳定的团队都是由一群拥有某种潜在共同价值观的人们所组成的,这种价值观影响并促成了一个团队独特的质量观,并且在一个团队中,总有某些权威人士的潜在质量观深刻的影响着整个团队的质量观,通常这些人士都是团队的Leader或是技术的权威;从组织的角度看,任何组织都有一定的组织结构,稍微复杂一点的组织,其组成结构都具有一定的层次。正是这种人与人之间的等级关系和组织结构的层次关系,使人们的质量观也构成了某种层次,这种质量的层次性并不是产品本身所体现和具有的客观存在的质量属性,而是由上述两个原因所产生的一种附加属性(或特征)。

这种附加的质量层次性,有两个显著的特点:

  1. 团队leader(或团队内的某些权威,后面为了简单起见,都只说团队Leader)对一个团队的潜在质量观起着重要的作用;
  2. 所处环境和地位的影响,对处于不同层次的团队或人员的真实质量观有着决定性的作用,尤其是那些涉及到他们生存和发展的因素。这里最经典而有力的证据就是人们常说的一句话:“屁股决定思想”!(指的是人在什么位置说什么话)

第一个特点,这里没有什么特别需要说明的。关于第二个特点,则不但揭示了不同软件开发方法论选择不同道路的原因以及其背后成功的核心因素,也有助于理解组织结构变革背后的原因和考虑因素。

在早期,典型的软件产品开发组织结构,是以研发团队为核心开发新的软件产品(现在也还有,如新的概念性的产品,这里只是为了说明方面,不用过分计较),并向客户进行推销,如下图所示:

由于研发人员的质量观(如华丽的界面/新技术的追求……)和实际客户(如带来利润/降低成本/操作维护简单/修复时间短……)有着明显的差别,所以,随着人们逐渐认识到这个问题后,提出“以客户为中心”的观点,要求人们实现充分了解客户的实际期望,于是上面的图可以简单的转化为下图所示。但是,如下图所示,由于研发人员所处的位置并不能真正充分的和客户直接接触,客户的质量观并不能有效的影响研发人员的思想和行动,真正影响研发人员思想的除了研发人员本身的追求和喜好外,更重要的组织实际对研发的绩效要求,如果考核进度,那么牺牲的就是更少的缺陷,如果考核的是过程,那么过程符合的情况会很好,而进度和少的缺陷则往往被丢弃。究竟应该怎么办呢?如何才能让客户的期望,落实到研发中去呢?

(待续)

注:此部分感觉没有描述得特别清楚,后续可能修改,如有建议欢迎讨论。



论软件项目质量管理
软件质量保证(SQA)
有效的软件质量管理
评审的主要优点
同行评审常见问题解答
软件测试过程和质量的度量
更多...   


CMMI体系与实践
软件开发过程指南
软件开发过程中的质量管理实践
以"我"为中心的过程改进
软件质量管理
量化项目和过程管理


某航空研究所 CMMI体系实践
某知名软件服务商 代码评审
中国气象局 CMMI ML3实践
北京 CMMI体系与实践
电讯盈科 CMMI体系与过程
ADI-美国模拟器件 CMMI实践
更多...