UML软件工程组织

CMM与质量管理
作者:郝志安
一、CMM的产生

软件能力成熟度(the Capability Maturity Model for Software, 简称CMM)是美国软件工程研究所(Software Engineering Institute, 缩写为SEI)首先提出的。SEI是美国国防部设立,SEI的任务是提供一系列技术管理方法来提高软件工程水平,保证美国防部能够通过成本、进度和质量的预估和改进获得并且支持其精准的软件系统。

任务包含四个目标:

1、 通过对实践和技术(或为未充分应用的技术和实践)的定义、评估和成熟预测,以加快导入和推广高成效的软件工程的实践和技术。

2、 在软件工程和技术转型方面维护一个长期有效的资格认证工作

3、 使工业和政府组织通过自己的直接努力实现软件工程的有规划的改进

4、 促进软件工程持续不断的应用所采纳的优秀标准

二、CMM的管理思想基础

CMM的基本思想是基于已有60多年历史的产品质量原理。休哈特(Walter Shewart)在30年代发表了统计质量控制原理,戴明(W.Edwards)和朱兰(Joseph Juran)的关于质量的著作又进一步发展和论证了该原理。实际上,将质量原理变为成熟度框架的思想是克劳斯比(Philip Crosby),他在著作《质量免费》(Quality is Free)中首先提出,他的质量管理成熟度网络描绘了采用质量实践时的5个进化阶段,而该框架后来又由IBM的拉迪斯(Rom Radice)和他的同事们在汉弗莱(Watts Humphrey)指导下进一步改进以适应软件过程的需要。1986年,汉弗莱将此成熟框架带到了SEI并增加了成熟度等级的概念,将这些原理应用于软件开发,发展成为软件过程成熟度框架,形成了当前软件产业界正在使用的框架。

汉弗莱的成熟度框架早期版本发表在1987年的SEI技术报告。该报告中还发表了初步的成熟度提问单,这个提问单作为工具给软件组织提供了软件过程评估的一种方法。1987年又进一步研制了软件过程评估和软件能力评价两种方法,以便估计软件过程成熟度。自1990年以来,SEI基于几年来将框架运用到软件过程改进方面的经验,进一步扩展和精炼了该模型,目前,软件能力成熟度模型2.0版已经修订问世。

然而企业最终目的是把自己的产品或服务提供给顾客,让顾客满意,尽力使这个过程不断反复、且能够不断壮大,才能源源不断创造利润。所以,我们应该明白:

第一、企业的使命是为顾客创造价值,努力地为顾客创造价值就是企业的成功之路。

第二、能为顾客带来价值的是企业的各种作业。而一个作业是由一系列能为顾客创造价值的活动组成的,构成一个作业的各种活动是由员工完成的,但是各种活动本身对顾客来说毫无意义,顾客关心的是这些活动的结果。也就是说,只有各种活动组合在一起构成一个完整的作业才能创造价值,顾客并不关心怎样组合这些活动。因此,出于对顾客利益的考虑,作业的构造要努力做到“复杂其中,简便其表”。

第三、企业事业的成功来自优异的作业绩效。尽管优质的产品或服务、杰出的人才和优秀的战略对企业来说必不可少,但并不能保证企业的成功。因为,产品或服务、人才和战略只有存在于能为顾客带来价值的各种作业之中,才能对企业事业的成功有所贡献。也就是说,只有通过作业把这些高质量的要素结合在一起,它们才具有实质性的意义。这种高绩效的作业,则是企业优势的集中体现。

第四,优异的作业绩效是通过科学的作业设计、适当的人员配置和良好的工作环境的共同作用达到的。因为,科学的作业设计能够灵敏地对顾客的需求变化做出反应,它是作业本身有效性的根本保证;适当的人员组合能获得集体智慧和战斗力;良好的环境则能激发员工的工作热情,促使员工它们不断超越自己。 对于软件企业来说,它的成功来自优异的软件开发过程,要想取得优异的软件开发过程,就得按照以上四点要求进行管理和改进软件企业过程。所以,可以认为CMM模型其实质就是一种新兴的管理思想和方法,它蕴涵的是当今欧美乃至日本日趋盛行的“Continuos Improvement”管理哲学,现已渗透到各行各业的具体管理中去,是现代企业管理发展方向之一。

连续改进(Continuos Improvement)的含义是:以超前的视野预见过程执行实施中可能的引起要素(包括特定的设计、作业方式及其与之相联系的成本要素),籍先期规范制约的各种手段作出最大可能效果创出(最优成本/效益比)的预期调整,并以相应的效果计量和评估方法相配合,以确保实际过程以预期的低成本运作的先导式控制。我个人认为,着眼于软件过程的CMM是连续改进的表现,而着重于软件过程评估和软件能力评价与改进相呼应,CMM模型中蕴涵的思想就是防止项目失败的思想,也就是我们所说的连续改进的思想所在。

三、连续改进(Continuos Improvement)

虽然软件工程师和管理人员通常详尽地知道他们的问题所在,但是哪些改进是当前最重要的问题,他们可能彼此有不同的意见。而且缺乏一个组织的改进策略,管理人员和专业人员之间在首先采取什么改进措施上很难达成一致意见。经过深入的调查和研究,终于认识到软件过程的改进不可能一朝一夕就能成功,需要持续不断的进行软件过程改进,软件过程改进是在一系列微小、不断发展的,而不是革命性的创新步骤中实现的。这正是连续改进思想的体现。

当同类事物之间存在着微少差异时就会产生变异性。当一个过程或系统的资源存在着变异性时,相应的系统输出也会有变异性。例如,当原材料或所制造的部件质量有偏差时,最终产品的质量也会发生变化。正所谓“进废品,出废品”。所以,研究连续改进,就需要关注系统所使用资源的变异性及所采用生产过程的变异性。任何系统都会表现出变异性。一定程度的变异是自然的,这种变异并不一定意味着系统不稳定或质量低劣或成本偏高,但是太多的或反常的变异则表明系统不稳定——其输出的质量是不一致或不可预知的。这对于任何一个公司都是一种危险的情况,因为不稳定的质量将会影响顾客的满意度。要保持客户的满意,必须改进产品质量、降低产品的成本、增强产品的营销水平。要改进产品质量、降低产品的成本、增强产品的营销水平,必须减少系统的变异。研究连续改进过程就是明确系统中的变异在哪里发生,为什么发生。一旦了解到引起变异的原因,就可以寻找一些方法去减少这种变异,以稳定企业运行过程,使企业得到改进。

1、连续改进循环

如果只解决一个小问题,只稍微改变一下具体过程,而后就置之不理直到问题出现,这是远远不够的。正如“连续改进”这一名称所暗示的:必须不断进行。连续改进意味着时常对系统进行分析,一丝不苟地收集数据并加以研究,一丝不苟地测试偏差,每位公司员工都把连续改进作为其工作的一部分看待。持续改进应该视为一个循环。参与持续改进的各团队需要长期连续地在这个循环中活动。也就是说,当一个问题看来已经解决之时,而员工的参与并没有终结,仍然有另一个改进要实施,有另一个系统要分析,或有另一个创意要专题研究。

2、强化过程改进

面临的下一步是使实施的变革成为系统的一个标准部分。团队应该着手出一份简单的报告,说明测试过程中的新规则以及所做改进对系统的影响。报告要列出变革后的优点,包括新系统实施和维护的计划,以确定新系统达到新的绩效水平。如果团队的建议被管理者接受并付诸实施,以后,团队需要按照计划监视系统。你将能指出存在的问题,发现在什么地方工作人员又回到了旧的工作方式。这一步的目标是使新过程变成标准的操作规则。切记,在实施变革过程中,认真地培训和支持是必要的。

3、继续连续改进循环

当你确信新的过程得到强化并成为工作过程的一个自然组成部分时,就要准备开始下一个持续改进循环。你将要从分析系统开始,因为上一循环的变革可能已经改变。

4、总结

企业的管理者一定明白企业的生存取决于你比其它企业给顾客提供更好服务的能力。通过更快地响应顾客的需要,提供更高质量的服务就可以达到生存的目标。一旦你和你的员工进入持续改进循环,你将拥有更好的信息、更新鲜的创意、更好的过程和质量控制,你将达到梦想的“意想不到的高水平的绩效”。


版权所有:UML软件工程组织