近年来中国的软件业蓬勃发展,颇有星星之火可以燎原之势。然而在众多企业不断引进新技术的同时,软件业的管理理念却相对滞后,类似手工作坊模式的生产模式依旧,“软件工厂”成了可望而不可及的目标。针对于此,企业对高级软件项目经理人求贤若渴,试图改进其内部落后的管理模式。在一些成功的软件项目调查中显示,有效的软件质量管理在项目中起了至关重要的作用,甚至对企业管理、企业文化也产生了深远的影响。
一、质量概念中的两大要素
著名美国质量管理专家Philip B.Crosby于1961年提出了“零缺陷”的概念,并被称之“质量革命”。1979年他出版了《Quality is e》一书,阐述了他的新的质量管理思想,并认为“质量就是符合需求”。经过近几十年软件开发思想的积累,关于质量的概念不断深入,Crosby的质量定义用更为精确与更具实际操作性的方式表示就是:质量是相对于某个(某些)人而言的价值。此定义明确提出了质量的相对性,也明确了质量不能脱离人而抽象存在的性质。这些进步对于我们正视软件开发中实际发生的质量问题是非常重要的。
质量的相对性可以解释为一个用户认为某个软件产品质量完全过关,而另一个用户则可能认为质量并不完全过关。有关质量的定义会带有人的情感的因素,因为它是通过一系列人的决策,才能确定到底需要听取哪些人的意见以及这些意见中哪些是相对重要的。然而大多数人却并没有察觉到质量中的非理性因素,同时软件开发者也希望对于质量管理是可以绝对理性的,这也是质量管理往往流于形式而无实际效果的原因。在质量管理中运用理性进行判断与决策正是本文所要讨论的目的。
在质量概念中还有一个要素是值得注意的,那就是质量的经济性。根据Crosby的质量定义,“符合需求”的代价是指第一次把事情做对所花费的成本,总是最经济的。而“不符合要求”的代价是必须进行补救使企业产生额外的支出,包括时间、金钱和精力,由此产生了质量损失,成本相应增加。
因此,质量经济学被软件开发管理者提了出来。
于是时间、成本与质量在项目管理中常常相提并论。那么如何在时间、成本、质量这三个方面找到均可以满意的模式,并恪守这种模式,持续地进行管理工作呢?这也就是质量管理的最终目标。
二、软件质量管理和软件过程能力成熟度模型
软件质量管理是管理者在对软件质量进行一系列度量之后做出的各种决策,促使软件产品在时间、成本内符合标准。软件质量度量是软件度量的一个子集合,其在于产品、过程和项目的质量。
Crosby根据产品的质量,对大多数组织生产过程进行研究,第一次提出了成熟度进程阶段的思想。Radice等人将Crosby关于质量规划的层次阶段划分方法进行了推广,运用到软件项目开发中,针对软件组织的开发过程,建立了一个成熟度模型,包括过程成熟度(CMM)的五个层次。虽然此模型是针对软件过程的,但实际上却应用于软件产业的质量过程和质量管理标准。
(1)初始层次。该层次特征:无序的;成本费用、进度及质量均不可度量、无质量管理。
(2)可重复验证的层次。该层次特征:机械性有序的;对成本费用、进度及质量开始进行控制、非正式的质量管理。
(3)经过定义的层次。该层次特征:可定性的;对成本费用、进度及质量进行有意识的控制、非正式的质量管理朝正式的质量管理进化。
(4)得到管理的层次。该层次特征:可定量的;对成本费喟、进度、质量有了合理的统计控制;正式而有效的质量管理。
(5)经过优化的层次。该层次特征:可稳定、持续发展的;对于软件生产自动化和持续改进奠定了良好的基础;成熟的质量管理。
每一个成熟度等级都为过程继续改进提供了一个基石。每一个等级包含一组过程目标,当目标得到满足时,能使软件过程的一些重要组成部分相对稳定下来。每达到成熟度框架的一个等级,就建立起了软件过程的一个不同的组成部分,以保证软件组织的过程能力的持续增长。虽然这五个层次是由前向后依次进化的,但也不等于说处于第一层次的软件组织一无是处,而达到最高层次的则可以高枕无忧。真正的意义在于我们如何在实际的软件项目管理中认识自己所处的形式,通过建立质量管理模型,向上一个层次的模式进行转化,而即使是已达到第四或第五层次的组织,也应不时地建立管理模型以预测之后可能会遇到的问题。因为CMM五层阶梯进化并非只是单向的,逆向也是经常发生的,所以建立与控制当前形式下的模型是各个软件组织向高一层次进化或是保持优势的方法之一。[next]
三、质量管理中的两种控制模式
1.汇聚控制模型
在软件项目管理中,用户的需求与软件开发的方式的变化始终都是持续不断发生的,由此,软件质量更像是在运动中的目标。质量管理就如同向一个运动中的目标射击,那么通常会采用的方法是汇聚。汇聚控制模型就是无论目标是不是在运动,采用方式越多,达到目标的可能性也就会越大。
在初始层次上的软件组织应用更像一种自然选择。在这个层次上,找不到任何有效的采用集中式工具开发群体,也找不到任何对工具进行评估或发布的集成式方法。各种工具只是简单地从这个程序员(或开发团队) 散播到另一个程序员(或开发团队)那里,而这种散播过程的进行完全是由个人之间的随机交流决定的。随着环境的不断变化,各种方法都要接受考验。虽然通过自然选择式的汇聚控制策略可以保证对不同环境的适应性,但是这样的过程不仅代价昂贵也需要相当长的时间。不像在初始层次上的软件组织那样类似自然选择,这一层次上的组织领导者会积极地进行干预,主动地采用汇聚控制模型。但是在可重复验证层次上的组织领导者尽管意识到了质量管理是有用的,却不肯投入时间与成本去实现质量管理。即使愿意花时间与成本进行管理,也并不理解其管理背后真正的目标和价值。更多的是一种积极状态下的例行公事。在这一层次上,可以说汇聚策略中的类似自然选择的成分已经消失,人为地汇聚控制虽然有时候并不是那么明确其目的,但仍然会在一定的时间与成本之内得到不错的效益。
经过优化的层次上的软件组织会有意识地应用汇聚控制模型,并且会明确运用汇聚控制模型来提高质量管理的效率。例如某家软件企业向政府交通部门提供了好几种相应的软件,并且组建一个小组对这些软件进行评估。这个小组将软件应用到所有的实际场合进行试验,然后从中挑选出一两个最出色的向交通部门推荐。用这种方法不断进行筛选,直到某一个能够最合适,这是汇聚式控制模型的最基本方法。
汇聚式控制模型无论在哪一个层次上都有应用,只是应用的方式各有不同。无论是否有意识地应用汇聚式控制模型进行质量管理,都表明:只要愿意为不断的尝试付出代价,最终总是能够获得所希望得到的软件系统。这是一种最实际的方法,有时甚至是能够想到的惟一方法。
2.反馈式控制模型
如上所述,软件质量像是在运动中的目标,反馈式控制方法就是由研究如何提高击中运动中的目标的命中率而产生的,并且作为一种实用工程模型已存在了相当长的时间。
在这种模型中,控制者可以对性能(亦即从系统输出到控制者的那个箭头)进行衡量,进而根据其衡量的结果来决定下一步如何进行控制。因此,从一定意义上说,管理的实质就是控制者的行为。为了能够通过反馈式控制方法对一个工程项目进行质量管理,管理的任务就是对生产所需产品的过程进行控制。管理者首先对产出做出计划,然后对实际进度情况进行监测。管理者将根据实际情况与原定计划的偏差,决定具体采取何种措施,作为反馈回到控制的过程之中。但在实际的控制行为中,仍然会犯一些错误,如对最终的结果缺乏事先的计划、对工程的实际进行情况熟视无睹、没有将观测结果与目标做出较、没有采取相应的措施以使实际进程回到预定轨道等。为了避免这些错误,项目管理者在工作中还需加入其他要素。为了进行规划,管理者必须了解自己需要的是什么,如何才能获得它们;为了能够很好地观察,产品需要是可见与稳定的。
在建立反馈式质量控制模型时,需要应用统计控制与度量分析等数学方法。Deming是一位将统计方法应用于质量控制的咨询专家。他说:“统计质量控制是统计原理和技术的一次实践,这种方法可以用于生产的所有阶段以及维护和服务,其目的是满足经济的需求。”诸如SPC(统计过程控制)、头脑风暴法、鱼刺图、PARETO原理、层次图等方法都是统计控制理论和度量理论的一些基本方法。
常用的头脑风暴法(Brainstorming),其一般步骤可以概括为:确定质量问题;尽可能找出影响质量问题的因素;找出各原因之间的关系,在因果图上以因果关系用箭头联接起来;根据对结果影响的程度,将认为有显著影响的因素标出来;在因果图上标上必要的信息。
此方法包含两项活动:一是用头脑风暴法找原因;二是对原因进行系统整理、归类,再根据概念间的层次关系整理成用来表示质量波动特性与其潜在原因的关系的一种图表。
根据此作用图同时可以转换成一整套方程组,可以建立一个相应的数学模型。方法如下:先将每个箭头替换成一个等号,如果某个节点至少被一个箭头所指向,就可以建立一个方程,而对应于该节点的测量数量将被放在方程的左侧。
例如:相对进展=F()其含义便是,相对进展取决于某些其他的测量数值,其中每一个数值对应于某个指向该节点箭头的起始节点。由图可以得出:相对进展=F(已完成的生产性工作量,待完成的工作量)。
在作用图中,带黑色圆点的箭头表示这些作用是逆向变化的,用数学运算表示,如减法和除法。如图可以得出:函数F是一个减法运算:相对进展=已完成的生产性工作量一待完成的工作量。
另外,为了确定方程的具体形式,还须进行一些实际测量,并进行相应的估算。当将所有关系的符号进行了如上转换之后,就可以得到一组方程组,而这些方程组也就相应描述了作用图所代表的系统状况。
值得注意的是,这些方程组有时是线性的,而有时是非线性的,而非线性就是导致质量管理发生偏差的罪魁祸首。
然而有很多软件项目管理者会常常忽视反馈式控制模型中的非线性因素。在现实中还有许多外界的因素干扰,以至于模型中线性的成分在大多数情况下只是一个理想状态。再以上图为例,“相对进展”由“完成的富有成果性工作”和“待完成的工作量”两个因素所决定。然而到达某一个时间点(临界点),“待完成的工作量”越多就越会影响到“完成富有成果性的工作”,从而再间接影响到“相对进展”。