在基于CMM实施软件过程改善时,有些根本的思想认识问题解决不了,往往会使实施的周期比较长,效果不好,甚至导致过程改善的失败或中止。软件企业的高层领导、企业的过程改善主管、销售人员、项目经理及一般的开发人员都需要对这些问题统一认识,在此基础上才能消除各方面的阻力,把握好过程改善的方向,控制好过程改善的进度。笔者在总结了3年的实施CMM的经验教训后,归纳了如下几个思想认识问题,供拟准备进行过程改善或正在进行过程改善的软件企业同行参考: CMM不是万能的,只有CMM是不行的,还要技术(开发方法、工具)人员二个要素一起改善
在软件工程发展的历史进程中,人们为了解决软件危机,尝试了采用诸如形式化描述语言、结构化开发方法、CASE工具、构件化开发方法等等各种解决方案,但是效果并不那么显著,CMU SEI提出了软件过程能力成熟度模型(CMM)基于过程的角度来解决软件危机。那么是否实施了CMM,软件企业的开发能力就一定能提高,一定能带来经济效益呢?答案是否定的。如果企业里要带来经济效益必须要结合软件过程、工具、开发方法、人员等多种因素一起提高,才能保证带来经济效益,因为人员、技术和过程是支撑软件开发平台的三条腿,少了那一条都不行。大家也都知道木桶原理,一个木桶可存槠水的最大容量是由最短的那根木头决定的。在企业的开发能力中过程、技术(含工具、方法)、人员都是主要的因子,都需要全面提高,只关注一个方面,而忽略了其他方面,都是有害的。
在开始实施CMM时,最容易犯的一个错误就是"唯管理论"或孤立地只抓过程改善,忽略了开发技术与人员的提高,过分强调管理的作用,实施了半年或一年后,发现企业的生产能力并没有得到明显的改善,这时反对的声音就会成为主流,过程改善就难以继续进行了。有的企业采用面向对象的开发方法进行软件开发,但是企业内并没有对面向对象技术真正了解的专家,虽然也采用RUP过程、也采用ROSE等开发工具,但是仅仅是形似,没有做到真正的OO方法,没有得到OO方法的精髓,这种问题仅仅依靠过程改善是无法解决的。还有的企业开发人员的积极性很差,工作热情很低,企业的激励机制没有起到很好的作用,这种问题也是依靠CMM无法解决的。
管理就是预防,管理的作用是隐性的,不都是立竿见影的,大家要有耐心
在实施CMM时,企业的管理层在开始时往往会对过程改善期望值太高,希望短时间内效果显著,上面我们谈到了,效果显著与否不是由一个方面的要素决定的,需要多个因素共同改善。而管理的最大作用是预防,防患于未然。
任何的管理的改善都是符合J曲线的,即在改善的初期企业的运行效率可能会下降,甚至可能会出现一些混乱的局面,不过渡过了这段时间就会看到效果。所以在改善的初期大家要有这个思想准备,要有耐心。
坚持活学活用,以我为主
机械照搬CMM的条文是在实施CMM时常犯的错误。在国内的软件企业中,都是从作坊式的软件组织逐步发展过来的,也没有经过软件工程化阶段,甚至也没有什么标准、规范。真正超过10年软件工程经验的人员更是比较少的,加上大家不愿从事管理,因而有的企业所组建SEPG的人员中可能在工程经验方面是有欠缺的,又没有真正的有实践经验的专家进行指导,所以对CMM的理解就不可能一下就很深刻,不敢裁剪CMM,容易机械照搬CMM条文,其实这恰恰违背了CMM的精神,CMM是软件工程经验的集大成,是从实践中总结出来,用以指导实践的,CMM本身也在更新版本,不断完善。每个企业都有自己的特点,就象微软的MSF,那是微软自己内部的管理过程标准,是微软的产品开发经验总结,有些内容是CMM中没有的,完全可以借鉴过来使用,所以只要可以提高企业自己的软件管理水平,就应该大胆地来尝试。
在推行CMM时,所以遇到的阻力,很大程度上是由于照搬CMM的条文,不切合项目组的实际,没有具体情况具体分析。实际上,一线的管理人员、开发人员最了解实际。谁了解实际,谁有发言权。所以在制定CMM规程标准时,尤其是在制定大家要执行的操作规程、模板和记录表样时,一定要得到执行者的认同,否则就容易造成执行和沟通的障碍,你硬要推,表面上看来似乎大伙也照规程做了,其实是表面文章,对改善没有实际帮助,以导致SPI工作受阻。
要改良式不要革命式
以革命的方式来实施CMM,期望通过一场运动来解决过程能力的问题,一种可能是不懂CMM,不晓得管理的改进是循序渐进的,一种可能是明知故犯,期望在短期内通过CMM评估,单纯追求市场上的轰动效应。有的企业在短时间内虽通过了CMM几级评估,我想恐怕由于没有实效而得不到大家的认同而难以将这种"水平"持续下去。一个企业引入CMM之后会从本质上影响企业的文化,改变大家的思想与做事方法。有人曾形象得将过程改进比喻为减肥,你是可以依靠减肥药在短时间内减轻体重,但如果不从根本上改善饮食、生活、运动的习惯,那么体重将会在短时间内恢复到原来,我认为这个比喻是十分形象的。
革命的方式与改良的方式我都曾经尝试过,效果差异很大。所以我总结一条就是让大家在"小步快跑"中接受变革,这样风险最小,效果最好。
CMM与企业的创新文化是不矛盾的
软件企业的有些管理人员,也包括一些开发人员往往抱怨或认为严格的管理会束缚他们的创新,他们认为在CMM中提倡的一种按部就班,什么活动都要做计划、按规程标准来做,对企业的创新文化会起负面作用。在我遇到的开发人员中,越是技术钻研越深的人持这种观点的越多。我想形成这种观点主要有二个原因:一是企业在推行CMM时,过分机械,没有从实际出发,不能与实践紧密结合,挫伤了开发人员的积极性。比如说在分析与设计阶段,需要开发人员能够发挥创意的成分更大一些,如果你要求他们一定就要按统一的文档标准来写文档,甚至字号大小、缩进格式一点也不能差,这的确很难做到,可能你需要在项目组配备文档支持人员,有他们来做这些完善工作,降低分析与设计人员的这些工作量。二是这类人员缺少真正的软件工程经验,做的大项目太少,经历的失败太少。关于这一点是不要争论的,CMM是软件工程经验与教训的集大成,我们无需再去重复那些失败。
软件企业必须形成创新的文化,事实CMM本身也一种软件工程管理的创新,而技术创新是必须进行管理才能使其有效地转化为生产力,转化为企业的实际效益,达到效益最大化,这是最根本的。
要勇于实践,也要允许犯错误
CMM就是软件工程经验与教训的总结。在实施CMM的过程中,肯定会走些弯路,甚至于要犯错误,由此许多人会议论纷纷,一直会反映到高层经理处,这时不要犹豫,要敢于尝试,更不能因为有困难就打退堂鼓,现在大家都是"摸着石头过河",不下水,是没有办法过河的,临渊慕鱼不如退而结网。要少说不,少说难,勇于实践,有错就改。对于软件企业的领导尤其要注意这一点,不要因为在过程中的一些实践失败,就对项目经理、SEPG等人员有偏见,要提倡这种文化。
管理过程改进是组织内所有人的事情,而并非仅仅是SEPG的事情
按照CMM专家的建议,在一个组织内专职从事软件过程改善的人数应为组织总人数的2-3%,根据这一建议,我们企业内一开始就配备专职的软件工程过程组(SEPG),这些员工专职负责企业的软件过程改善工作,另外我们根据需要组织一些技术任务组(TWG),他们会兼职的参与特定过程规程、标准的制定、试点和修改完善工作。在这种情况,可能会出现如下的问题:
SEPG成了最忙的人,TWG的任务往往会由于那些兼职的人员以工作忙为理由一拖再拖,最后还是由SEPG的成员替代TWG做工作;
企业的非开发人员对管理过程改进的效果一下没有明确地感受到,甚至看到由于加了些新的活动可能使项目拖期可能会更严重,于是他们可能就会将这些抱怨反馈到企业的高层经理,在推行过程中经常会听到:我这个项目时间太紧,当前不适合使用CMM;
高层经理迫于市场的压力,甚至可能会提出不合实际的项目工期等等。
推行CMM不仅仅是管理人员的事情,每个人都要积极参与。要改变原来的一些做法:即SEPG是在使劲的推进CMM的工作,而不是大家自觉自愿的来实施CMM。从SEPG的角度来看,要做好培训的工作,首先要解决的大家的思想认识问题,这还是比较难的,有些人的思想还是比较顽固的。
以上是我对前几年推行CMM的过程遇到的思想认识问题的总结,不一定准确,希望各位同行指正。当然管理首先要解决的是思想认识上的问题,不但在主观上要解决,在客观上也要有措施,光说不练是不行的,光练不说也是要否定的。我曾经遇到过类似的问题,有的开发人员或者项目经理在口头上是可以接受变革的,会配合工作的,但是在具体操作,很可能又会遇到事实上的否定,这时作为CMM的推广人员要尽快提出实施的具体措施,尽快落实。任何变革都要涉及到企业内的权利的再分配,不要忽视企业政治,这是客观存在的,所以一定要预防那些光说不练者。
|
相关推荐
【CMM中的软件质量保证实施准则】是软件开发过程中一项至关重要的规范,旨在确保软件产品的质量和过程的稳定性。CMM(Capability Maturity Model,能力成熟度模型)是一种评估和改进软件开发组织能力的方法论,其...
### 实施CMM的关键步骤 1. **现状评估**:识别当前的软件开发过程,确定存在的问题和改进空间。 2. **目标设定**:根据组织的战略目标,确定CMM实施的优先级和阶段性目标。 3. **制定改进计划**:设计详细的改进...
通过借鉴CMM模型,制定并实施软件过程规范,可以有效解决软件过程中的诸多问题,从而推动软件工程水平的整体提升。在这个过程中,不仅需要技术层面的支持,还需要组织层面的文化建设和领导层的全力支持。
自从20世纪70年代初期“软件危机”这一概念被提出以来,学界与业界投入了大量的资源来研究软件工程环境、工具和技术,虽然取得了一系列成就,但是软件质量问题始终未能得到有效解决。当前,人们逐渐认识到,缺乏有效...
为解决这些问题,SEI在2000年推出了CMMI V1.0,整合了各模型的最佳实践,形成了覆盖多领域的统一模型。CMMI V1.3是目前最新的版本,包括CMMI-DEV(开发)、CMMI-ACQ(采购)和CMMI-SVC(服务)三个分支,适应不同...
融合的重要性在于,它认识到仅仅依赖技术进步并不能完全解决软件开发的风险和问题。软件过程改进的理论表明,管理风险同样需要被重视。融合的必要性源于软件开发方法需要不断创新,项目管理中存在着较大的不确定性,...
此外,项目经理还需熟悉开发环境和系统架构,以便在问题出现时能迅速找到解决方案,并高效地调动资源以满足项目需求。 在产品开发流程方面,《软件项目经理必读手册》提供了一个清晰的参考流程,从设计规划到大规模...
安全工程旨在解决信息系统生命周期中的“过程安全”问题,确保业务的稳定和持续运行。 系统工程是信息安全工程的核心理论之一,它是一种处理大型复杂系统的方法,追求总体效果最优。系统工程不仅涉及技术实现,更...
教学过程中将结合案例研究和实际项目,让学生有机会分析和解决实际问题,从而增强其解决实际工作中遇到的复杂问题的能力。 总而言之,《软件项目管理本科教程》通过全面介绍软件项目管理的理论与实践,为软件工程...
企业在采用上述方法时,可能会遇到体系与实际问题脱节的情况。这要求企业不仅要建立体系,还要确保体系能够真正解决问题,实现与实际操作的有效结合。 ### 项目管理体系的作用 项目管理体系的建立不仅涉及流程与...
2. **测试人员的素质**:测试人员应具备协调能力,能与开发团队有效沟通解决问题,保持耐心以应对枯燥的重复性工作,并具备敏锐的错误发现能力,不放过任何潜在问题。 3. **选择测试行业的理由**:软件测试不仅需要...
总结来说,企业信息化项目管理是一个综合性的任务,涉及到企业意识、需求分析、深度应用、问题解决和执行力提升等多个环节。只有全面理解和把握这些要点,才能确保信息化项目的顺利实施,为企业带来真正的价值。
3. **CMM/CMMI实施需求**:为了达到CMM/CMMI模型的要求,企业需要建立和完善SCM体系。这不仅有助于提高软件开发能力成熟度,还有助于增强企业的市场竞争力。 4. **软件外包趋势**:随着全球化的推进,软件外包已经...
综合应用层次要求考生能够对所列的知识内容进行推导证明,能够利用所学知识对问题进行分析、研究、讨论,并且加以解决。 二、能力要求 考生应具备一定的信息安全及相关领域基本知识和项目实施经验,具备安全集成...
2. **CMM的重要性**:通过实施CMM,组织可以识别现有过程中的弱点,并采取相应措施加以改进。这有助于提高软件产品的质量、缩短开发周期并降低成本。 3. **应用实践**:企业应根据自身实际情况选择合适的CMM等级...
解决问题的方法多种多样,关键在于保持冷静,利用已有的资源和技术手段寻找解决方案。 #### 七、赋予测试和质量保证团队力量 为测试和质量保证团队提供支持的方式有很多,例如提供足够的资源、培训机会,鼓励团队...
项目管理知识也是系统分析师必须具备的,这不仅包括项目计划、控制、风险管理和资源配置,还包括对项目管理和软件过程、质量管理的理解,例如CMM(能力成熟度模型)、CMMI(集成能力成熟度模型)等,它们都是系统...
8. **挑战与应对**:讨论在实施CMMI过程中可能遇到的困难,如文化适应、员工抵触、资源投入等,提出解决策略。 9. **CMMI持续改进**:强调CMMI不仅仅是一个一次性项目,而是一个持续改进和学习的过程,鼓励组织形成...
传统的项目管理方法,如PMBOK、CMM/CMMI、ISO9000和6SIGMA等,虽然为项目管理提供了框架和指导,但这些体系往往不能完全解决企业面临的特定问题。因此,IT企业需要对现有的管理方式提出质疑,识别自身面临的挑战,并...
第一讲作为整个课程的开端,主要目的是要建立学生对软件工程原理的正确认识,并理解实施软件工程的重要性和必要性。 软件工程是计算机科学的一个分支,它将工程学的原理应用到软件的开发过程中。随着计算机技术的...