一、
过程、过程改进、基于模型的过程改进
随着科学技术的发展和管理能力的提升,软件和服务都处在一个快速发展的黄金时期,但是这些变化带来了新的功能、方便和复杂性。随着系统复杂性的增长,用于开发系统的过程也随之变得复杂,过程的复杂使得开发过程中需要跨越不同的组织、学科、公司,过程的复杂性必然导致执行该过程的人员的增加,需要更多的不同专业的人员,而人员的差异和数量必定会对过程中的协调管理带来新的挑战。为了解决这些日益突出的矛盾,很多国际组织推出了他们的解决方法,典型的有ISO、CMMI。
过程-可以描述为一系列活动的集合,将这些活动串联起来,最终达到工作的目标。
在上述的定义中,可以看到任何带有目的性的一系列活动的集合都可以称之为过程,由于一个复杂过程中的活动常常还可以继续分解成更多的子活动的集合,那么这通常被称之为子过程。
在每个过程中都有活动、产品、角色,这三个要素。先说说这三个要素。
A. 活动是过程中要执行的工作。过程中的活动具有很强的目的性,一个已定义的过程中是不应该存在无缘无故的活动。由于活动具有目的性,也决定了活动的根本——输入与输出。输入对应了活动的前提条件,而输出则对应了活动的目标的结果。
B. 工作产品的英文名称是“Work Product”,由于中文翻译的问题很多人容易把过程中的“工作产品”当作商店柜台上出售的最终产物。其实,在过程中的一切产出都可以成为工作产品,它包含了文档、可执行文件、代码、计划等等。在一系列的工作产品中对于最终交给客户的往往又称为交付件或最终产品,而过程中其他的产出则对应为“中间产品”。由于中文翻译的问题,“工作产品”在某些地方也称之为“工件”。
C. 角色-最容易理解,也就是活动的执行主体-人。由于不同的活动需要不同的相关技能,在过程定义中,便将人按照一定的职责划分,便于理解和指导人们掌握不同的技能。它的本质是对掌握某一类技能并被赋予某类职责的人的抽象。
ISO、CMMI在推行过程中都强调了一个词“过程改进”, 过程改进是由Deming、Crosby和Juran等人的质量管理工作发展起来的,其目标是增加工作的过程能力。从本质上说,过程能力是指一个过程产生预计结果的固有能力。随着过程能力的提高,过程变得可预测和可度量,并控制或消除了造成质量低劣和生产率不高的主要因素。稳定地改进组织的过程能力,该组织就会变得“成熟”。成熟度改进需要强有力的管理层支持,而且需要得到始终如一的长期关注,因为过程改进是一个持续的过程。而且我们还有必要改变管理人员和实践人员的基本工作方式。
而且CMMI中提出的“基于模型的过程改进”是使用一个模型来指导一个组织的过程改进。SEI通过长时间的研究和改进建立的CMMI模型,这些模型为过程需求提供了一个公共集合,结合了最好的实践和实践性的知识,并且采用了一种可用来指导过程改进优先顺序的格式来表示。运用模型,组织可以通过已证明的能提高过程能力的实践来修改和创建过程。
EPG即工程过程组(Engineering Process Group),协助对组织使用的软件过程进行定义、维护和改进的一个专家组。EPG是过程改进的主要执行人。
二、 企业的商业目标与过程改进
很多企业和组织都有自己的商业目标,如:提供高质量的产品和服务、创造价值最大化、建立高知名品牌
、增加市场份额、成为行业领先者 。在西方,特别是西欧、日本(自认为是西方国家的东方国家)、美国他们普遍将商业目标的进化分成三个阶段:产品提供——全面质量管理——提供高质量服务,一般他们认为从工业化开始到二战结束是产品提供阶段,二战后到20世纪80年代后期是全面质量管理阶段,20世纪90年代开始到现在是高质量服务阶段。中国由于闭关多年,导致目前实际是一个产品制造大国,目前来看中国的大部分企业在经营理念上落后欧美50年。
在二战后日本出现了三井、三菱、东芝、松下、丰田、本田、日产、日本电器、川崎重工、日立等一系列的国际知名企业,这些企业在他们所在的行业有着很好的质量口碑。他们的成功都有一个概念就是“全面质量管理”,70年代末Deming
在日本提出了“全面质量管理”并迅速得到日本企业的支持,这些企业在推行“全面质量管理”后大都取得了巨大的成功。很快西欧和美国也看到了“全面质量管理”的效益,“全面质量管理”很快地在这些发达国家得到普及和推广。
“提供高质量服务”这个概念是在经济全球化中得到壮大的,在“产品提供”这个阶段中服务基本就是指的是产品的售后服务,在“全面质量管理”这个阶段服务被延伸到直接提供管理和技术支持这个领域,“提供高质量服务”时对服务有了全新的解释,通过组合全面的产品、管理以及技术给以解决方案的方式给客户提服务,服务商不一定是所有产品的生产商,但是他提供服务的载体是一个全面的(产品、管理方法、技术支持)解决方案,中国台湾的电子工业的OEM、ODM生产模式就是在美国“提供高质量服务”时代产生的。
目前我们中国很多企业也在做全面的质量管理的概念导入,典型的特点就是通过ISO认证的企业就像雨后春笋一般,但是我们也要看到,在中国ISO和市场上的商品一样,只是标了一个价格你就能拥有东西(还是一个十分廉价的商品),在中国ISO对企业来说不是管理能力和质量的提高,只是在企业的证书队列和牌照队列中多了个展台(中国企业的门头或者展览室中都有很多政府部门颁布的这个那个奖牌和证书,个人认为中国的很多部委在奖牌和证书的颁发上是十分可悲和无耻的,中国政府在市场经济和正常的企业秩序中有,我一直很疑惑?),有ISO证书与企业的管理水平以及产品质量基本没有相关性。在我看中国ISO的堕落来是中国工业化中最大的败笔。在2007年国际爆发了对于“MADE
IN CHINA”产品的妖魔化,从我看到和了解的一些外贸公司来看这些并不是妖魔化,而是中国产品质量问题的量变导致质变的实际表现。
目前,在经济全球化的高呼中,有一些中国的企业意识到了管理、质量以及服务的价值,并做了很多改进,如:较早通过CMMI等级5的东软股份,他们提出了“软件就是服务”的经营理念;中石化在一个广告中提出了“提供全面润滑服务”的经营理念;华为通过过程改进和引入CMMI使自己的产品开始向全球提供服务……,但是不得不承认大部分的中国企业在管理和质量理念平均落后西方发达国家达30年之多。
为了实现经营理念改变的目标,必须清楚了解我们的产品或服务是如何产生的。要想改进,必须理解所使用的管理或者质量过程的可变性,这样当我们调整这些过程的时候,我们就能知道怎样做是有利的。简单的说,我们应该使用产品和过程中的可度量数据来管理业务。
那么,我们怎么知道数据是否合理和准确呢?我们如何将这些收集的数据进行比对呢?一般为了进行有效比较,我们先建立统一工作模式,并收集相关数据,并分析我们采用的过程是否增值了产品和服务。而判断的依据是我们建立了一个标准和度量的基线。
如果没有良好的项目管理和基本的专业技术,项目就不能有效的运作,而混乱的工作状态那就更谈不上过程改进。其实就想软件工程对软件企业是不可违背的一样,没有好的管理和项目执行,那么我们通过什么载体去向客户提去表达我们的商业目标,也就是光说不练是不行的。
我们要想达到具有竞争力的水平就必须不断的改进。这个就是过程改进的驱动因素也是过程改进真正起作用的地方。对于研发为主的企业,过程改进活动关注改进过程的能力和组织的成熟度来推动组织大发展和实现过程改进或者商业目标。过程改进活动能提供帮助定义和标准化过程、提高工作效率、减少返工、度量组织的性能和利用数据来管理业务。过程改进保证了能给组织带来可度量的收益,特别是在工作量的估计和高质量产品的交付能力上。我们如果简单的来说就是过程改进的目的就是为了提供先进的生产率。
虽然过程改进是解决大范围的商业目标的一种正确的、可用的和显著的方法,但是企业的任何改进或者提出新的商业目标中应该更多的考虑公司现有状况和资源,要改主要目标是什么,不能带有有“好快少省”和改进可以解决一切问题的思想。
三、 过程与方法论
在过程的定义中“将活动串联起来”隐含着一个问题-即如何把活动串联起来?大家应该都知道,各个活动按不同的顺序执行可能出现完全不同的效果。因此,好的过程应该是一系列互相协调一致的、能产出更好结果的活动的集合。由此可见,一个企业所追求的“好的流程”实际上就是寻找和认定适合企业自身特点的管理方法,对企业而言“好的过程”这不能仅仅是管理的需要,应该是和每个参与过程的干系人都十分相关,“看菜吃饭,量体裁衣”就是这个道理。
“好的过程”究竟是怎样的?管理人员和工程人员的认识往往是有冲突或者对立的,一个致力于发展的企业必然会不断的努力寻找“好的过程”,直到企业管理能力持续地优化,而这正是“持续改进”的意义所在。
方法论-是研究方法的理论,或者说是方法的系统论。它的任务是研究和批评具体的方法,是将某一领域分散的各种具体方法组织起来并给予理论上的说明。
可见,方法论包含了两个方面:研究和批评具体的方法;研究如何将某一领域的各种具体方法组织和协调起来,并给出基本的原理。
过程与方法论的关系 现在来看看过程和方法论之间到底是什么关系? 一个软件组织为了提高客户满意度、提高生产率必定会不断的追寻一个“好的过程”。在这个过程里包含了一系列协调一致的活动即子过程的串列,每个活动都有自己一系列的特定的实现技术及工具,那么这些技术和工具应该怎样如何选定和使用呢?这就是方法论所研究的对象了。
方法论除了选定某个特定活动的特定技术外,更要的是如何将这些零散、具体的技术组织起来,让它们协调一致的共同发挥更大的作用。从这里可以看出,对一个软件组织来说,割裂的研究单个实现技术是没有意义的,必须将一系列的活动以及它们的可选技术结合起来进行研究。大多数的软件组织以及开发人员本身并没有这么多的时间来系统的研究各种方法以及它们之间的关系,这项艰巨的任务显然落在了那些方法论学者的身上,而对于软件组织以及开发人员,大多数的时候,只需要实行拿来主义,然后再在这一套方法论的指导思想(基本原理)上,制定自己的开发过程以及基于自己的实践不断的优化和改进某项活动的具体特定技术,形成自己的开发过程。可见,在软件组织没有自己过程的初期,只需要关注那些方法论研究的结果。
从上面的分析中,只要有方法论就足够了,还要自己定义的过程干什么?其实,方法论更多的关注选定技术的方法和基本原理,它所生成的结果往往是一系列的方法集合以及它们之间的联系顺序,但是,它对每个方法的输入、输出、工作产品、模板等往往没有非常明晰的定义,而缺少这些会使人们在执行时不知所措,尤其是在没有理解方法论背后本身的原理时。可以这样做一个粗略的总结:方法论是“好的过程”背后的基础,过程则是方法论在具体组织的特化和落实。对一个组织来说,脱离方法论背后的基本原理孤立的研究单个活动的技术,在初期意义不大。在没有理解方法论的基本原理和目标时,争论方法论本身没有意义,尤其是仅对不同方法论中的单个技术进行比较、争论时。
CMMI算不算方法论? 在我看来,CMMI还算不上方法论,至少它不是严格意义上的方法论,因为它缺少了方法论中一个重要的因素:“将各种具体方法协调和组织起来”。我想这也应该是各种软件企业在直接推行CMMI时,造成各式各样困惑的原因——缺少了以方法论为基础的过程。当然这不是说CMMI没有用,只是说它没办法直接拿来用。其实,这也和CMMI的起缘有莫大的关系,因为CMMI的诞生直接来源于美国国防部对软件组织评估的需要,它必须回答谁是好的、谁是不够好的问题。将这个问题变换了描述,改成了这样“什么样的软件企业是好的”。这个问题和“什么是人”一样,无法直接给出定义,于是改道而行,SEI采用了回答“什么是人”一样方式回答了这个问题,它通过尽量描述一个好的软件组织都有什么样的特征、都做了哪些活动来给出了能力成熟的模型。也难怪有人将其称之为“字典”。
为什么大部分企业中定义的“已定义过程”里没有“技术”? 为什么?关键是缺少方法论的支撑,即使它表面上看起来都满足了CMMI的特征!当然,还有另外一种情况,就是对大型的软件企业来说,过程是要全公司范围内遵守的,为了满足各式的项目要求,必须提高过程的抽象程度,减少对具体活动如何实现的说明。当然这样的后果,和CMMI一样,提高了普及性,却让大家总感觉缺少了什么。对于这样的软件企业,真正要做好,其下的各个部门必须有自己的方法论(技术)去支撑公司的过程,权当是一个特化的过程吧。缺少了这个,是很难把过程真正定义好的。CMMI模型的主要目的是用来评价和者检查某个企业的符合程度,而每个企业都有特性,所以CMMI中的每个模型只是将过程中的活动罗列出来即要做什么,并没有说我们怎么去串联这些活动。CMMI没有具体要求我们怎么做,他只说我们要做这些活动。那么我们过程改进的重点就告诉大家我们要做什么和怎么做。就是为企业提供一个“好的过程”,“好的过程”必须是符合企业的特性。我们在导入各种管理模式时不只是关注要做什么,更多的是要关注要怎么做。我们对这些管理方法的使用上,要能拿来了就要用起来,用起来就要获取相应的效果。
四、 企业如何进行过程改进
基于CMMI-SE/SW模型的过程改进,现在CMMI这个单词在中国很热门,连我们的所谓政府部门也开始资助,过了CMMI给企业多少补助,我是看到一家又一家企业为了拿到这个补助,随便几个月就能从混乱管理到CMMI3,没有几个月尽然是CMMI5了。现在我对企业拥有CMMI5这个证书的认识已经麻木了,甚至可以直截了当的说大部分过5级的企业连3级成熟度还没有达到。
我们又如何基于CMMI-SE/SW(阶段式)模型进行过程改进呢。下列我们先了解CMMI的模型结构。
表-1
已管理级, CMM成熟度2级,他包含以下几个过程域:REQM、PP、PMC、MA、CM、PPQA。除了REQM是工程类的其他都是管理类和支持类。从我几年的CMMI经历来看起始这个是我们目前最难做的几个过程域,如果这几个过程域踏踏实实做好的话,企业在持续过程改进是十分有益的,这几个过程域是项目管理也是CMMI持续的基石。
已定义级,CMMI成熟度3级,包含2级所有过程域,多了OPD、OPF、OT、RD、TS、PI、VER、VAL、IPM、RSKM、DAR,可以看到3级时更多的是工程类和过程管理类。
定量管理级,CMMI成熟度4级,包含3级所有过程域,只多了QPM和OPP,但是这个等级跨越是十分困难。你要证明企业内部的一些过程是稳定的,需要建立预测模型和过程能力基线。需要企业有大量的项目度量数据的积累,并通过统计学的方法去建立上述模型和基线。如果企业没有按照等级2中支持类和管理类去真正的建立管理和度量体系,企业是不能证明是稳定的,也无法实现定量管理。
持续优化级,CMMI成熟度5级,包含4级所有过程域,只多了OID和CAR。其实当企业达到了等级4的时候,要到5级就很顺利,主要就是时间,我们在已经稳定的过程中,通过原因分析找到我们可以提高性能的根本原因,通过技术/过程革新改进去提高性能。这样就能使得企业持续优化。当到了4级想要提高性能是十分困难的,一般必须借助与技术和过程的革新改进才能有显著的性能提升。
上面我们简单说了CMMI的模型的主要内容和不同等级的差异,那么企业如何进行过程改进呢?过程改进和项目是一样的,要有过程改进的计划,特别是从导入一个先的过程时,我们必须建立一个切实有效的过程改进计划。
过程改进的人员:建立过程改进组(EPG组),EPG的组成通常的包括的专职人员是在各个研发领域过程改进理论与实践的领先者,或者专家。除此之外,还包括大量兼职人员,他们工作在组织研发领域的各个岗位,他们参与过程改进,一方面作为过程改进的“客户”提供需求和建议,一方面作为“过程”的执行者促进实施。
过程改进的目标:作为过程改进组的领导,EPG组长担负着十分重要的责任。他需要领会高层管理者对于组织发展的意图,从中领悟过程改进的趋势与目标,继而为所有参与过程改进的员工指明方向,将所有人的关注和力量聚焦于一点。
过程改进的计划:为了将过程改进的目标和企业战略发展结合起来,就需要对过程改进有一个远景的规划,这个计划是众多员工工作动力的源泉和目标。
那么我们EPG应该要建立一个过程改进的目标,这个目标一般分长期和短期两中。如CMMI等级5是我们的长期3~5年的目标,CMMI等级2是年度目标。为达到目标我们需要建立一个可实现的计划来完成这些目标。
分配职责:在计划中我们也需要明确EPG的构成和职责,我们一般专职的EPG成员会只有少量的几个,但是更多的成员来自公司各个阶层的精英,他们是兼职的,而且随着过程改进重点的变化也应该会不断的变化。
过程改进的策略:在过程中EPG组必须明确过程改进应该自下而上的,而我们推广过程改进的成果必须是自上而下的。我们应该从基层的需求和公司的现状去进行过程改进,切不可脱离实际的改进,这样无异与闭门造车。
一个集成过程改进计划可以明确各种活动的目的和商业目标。通过跨越更大范围的学科和各种过程改进活动的集成,就更容易把同时包括实践人员和主管人员团结在一个共同目标下。有了过程改进的重点和目标,我们就能统一思想,高效地安排和使用匮乏的资源,并为跨越不同学科的过程改进提供一种共同语言。但是并不是每种模型都能成为改进的重点,如果该重点没有包含使组织成功的关键学科,那么我们就不能达到过程改进所需要的广度。也就是说我们过程改进计划中需要使改进的结果能被大部人接受并能得到实践。
EPG的职责:
A. 定义组织过程
B. 试运行和推广组织过程
C. 建立组织度量能力,建立组织过程性能和模型。
D. 评估已定义过程和组织能力
E. 识别、收集并分析过程和技术改进提议
F. 实施过程和技术改进
G. 试运行和推广过程和技术改进成果
H. 推动组织革新改进
I. 进行原因分析,持续优化组织性能
定义组织流程:我们过程改进的最终目的是定义出公司统一的标准过程,建立统一的过程的目标、消除不一致性、减少重复、增加清晰度和理解、提供公共术语、提供一致的风格
、建立统一的构造规则 、维护公共构件。
ISO在运作的失败主要原因就是很多公司没有进行过程改进,而是直接套用ISO标准中的一些文档,这些文档或者标准过程就是我们上面说的没有“技术”的标准。在基于模型的过程改进中,我们更多的关注点就是建立公司的最佳标准过程,但是由于组织的复杂性和技术的多样性,在建立标准过程时,我们不能在过程文件中描述各样实践,更多的是将共性的活动抽象到标准过程文件中,并通过建立拥有技术符合“流程”的使用手册来支撑我们的标准过程。我们就是在不同的组织或技术中求同存异,同是我们归纳出来的标准过程文件,异是我们的特定组织或者技术学科中的特定操作方法。也就是我们前面所说的不仅仅知道要做什么还要明确怎么做,这样的标准过程才有实施的意义。
CMMI模型的基本特点就是“过程域”。从上述表-1中我们可以看到CMMI模型包含的“过程域”。那么什么是过程域呢?
“过程域”目的:我们下面将以“需求管理”为例子进行说明。 “需求管理”过程的目的是“管理项目的产品和产品构件的需求,并识别需求与项目计划和工作产品之间的不一致性。”是直接说明该过程域在过程改进后应该达到的目标。
“过程域”的介绍:是说明执行这个活动的时机、策略,这些介绍有助于EPG理解该“过程域”的目的。
图-1,过程域的主要内容
“过程域”的关系过程域:是介绍与该“过程域”相关的其他过程域。
“过程域”的特性目标:是为到达该“过程域”相关能力和成熟度需要达到的目标。
“过程域”的特性实践:是达到“过程域”目标需要执行的“子过程”,“子实践”就是构成“子过程”的带有目标的活动。而“典型工作产
”就是我们“子过程”的输出工作产品。
“过程域”的共性实践:是每个过程域都不需进行共性子过程,他的描述就是我们如何进行该子过程。
对需求管理进行过程时我们只需要关注过程域的要求,建立一个依据模型结合企业特点的标准过程文件就可以了。
我们在定义企业的标准过程文件时要考虑哪些“过程域”被选择、哪些要合并、哪些要替代。这个是我们在基于集成模型过程改进中最大的挑战。为了实现一个集成模型能处理好系统工程和软件关注的问题,折衷和改变显然是必须的。我们为了保持每个源模型都有价值部分的想法,使得集成模型变的十分庞大。这样的范围扩展将为过程改进提供更多的指导。因为如果照搬模型那么过程改进成功的概论是十分低的。我们要考虑企业实际状况将“子过程”和“活动”重新排序,并通过其他的管理方法或技术来替代模型中提出的子过程和子实践。
在表-1中,我们可以清晰的将“过程域”分成几个类别,这些类别我们可以通过分组的形式建立EPG小组,然后进行分组改进。
过程改进的评审:我们为了判断和检查过程改进的成果和成果的符合性的时候,需要对过程改进的成果进行评审,过程改进成果的评审我们更可以把这个看作是所有共利者对标准过程可执行性的审查,并且如果通过评审让来得到各干系人对这些标准过程的承诺。在此我不多说如何评审,我们一般采用技术评审会的方式。
过程改进的总结和持续过程改进 而我们为了判断和检查过程改进的成果和成果的符合性的时候我们进行了评审,评审是过程改进过程中的阶段总结和评价。对提出的可以改进部分给出一个新的过程改进计划,在标准过程制定好并运行后,EPG需要更多的收集项目数据,进行分析和总结并去寻找过程改进的机会。
而在每个项目结束后EPG也需要将该项目所有成果进行分析,将可用与经验传递的资料和成果纳入组织财富库,以使项目间可以进行学习交流和新项目开展的参考依据。
过程改进应该是一个只有开始没有终点的活动,而且更多的实践中已经证明了过程改进是企业发展的最佳途径。在人资源不充足的公司或许过程改进的目标不高,但是企业在不断的改进,不断地保持竞争力。就向朱熹说过的:“勿以善小而不为”一样,只要有好处我们就要做。
|