CMMWord文档下载推荐.docx
- 文档编号:20259806
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:38
- 大小:243.75KB
CMMWord文档下载推荐.docx
《CMMWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《CMMWord文档下载推荐.docx(38页珍藏版)》请在冰豆网上搜索。
坚持活学活用,以我为主。
机械照搬CMM的条文是在实施CMM时常犯的错误。
CMM是软件工程经验的集大成,是从实践中总结出来,用以指导实践的,CMM本身也在更新版本,不断完善。
每个企业都有自己的特点,就象微软的MSF,那是微软自己内部的管理过程标准,是微软的产品开发经验总结,有些内容是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
直到198x年,人们还错误地认为,“只要有好的SE方法/工具,就可以开发出高质量的软件,就可以提高软件生产率”。
现在,人们认识到,“如果软件开发组织不能良好地定义/管理其软件过程,它就往往不能从SE中充分获益,从而也得不到预期的结果”。
即只重SE方法/工具,不重SE管理,不行。
有句名言叫“拥有工具的傻子还是傻子”(呵呵,还有句名言叫“格言总是情绪的”,因此认为自己SE意识不强的朋友,不要认为这句话是骂你的哟),用来说明重视SE管理的重要性。
软件过程=工程过程+管理过程
软件工程学=方法/技术+工具/环境+标准/规范+管理/控制
前二者关注工程过程,后二者关注管理过程。
过程:
“为实现给定目标所执行的一系列步骤”。
软件过程:
“人们用以开发/维护软件及其相关产品的一系列活动,包括〖软件工程活动〗和〖软件管理活动〗,自然,其中一定会涉及有关的方法/技术”。
其中“相关产品”指项目计划、设计文档、代码、测试用例等,它们在CMM中常被称为“软件工作产品”。
这里提〖软件过程〗“一定会涉及有关的方法/技术”。
于是,应该这样理解,即“CMM本身不是特定软件过程的定义”,CMM只是建议如何“一步一个台阶”地改进〖软件过程〗。
软件过程能力:
〖软件开发组织/项目组〗通过执行其〖软件过程〗能够实现〖预期结果〗的〖程度〗。
软件过程性能:
〖软件开发组织/项目组〗通过执行其〖软件过程〗所得到的〖实际结果〗。
软件过程能力是〖最可能的预期结果〗,可对〖软件开发组织/项目组〗而言。
软件过程性能是〖已得到的实际结果〗,可对〖软件开发组织/项目组/某个软件项目〗而言。
软件过程成熟度:
一个特定软件过程被明确/有效地定义/管理/测量/控制的程度。
CMM侧重于软件开发组织中的有关软件过程的宏观管理,for软件开发组织。
PSP侧重于软件开发组织中的个体软件过程的微观优化,for软件开发个人(和小型群组)。
为什么把个人和小型群组并列呢?
因为它们的共同实质是“合作的规模小”。
个人开发也需要“合作”哟,你把需求分析做完向自己交接,自己和自己“合作”嘛。
CMM和PSP二者相互补充/相互支持,因为如果众多个体没有好的过程意识和高的过程能力,整个开发组织的软件能力成熟度也不可能高。
从事纯粹的软件开发的组织,其实是比较少的,这些组织,往往还进行软件采办业务/系统工程产品开发业务等,于是出现了一种将系统工程、软件工程、软件采办等集成在一起的CMM——它就是CMMI
我国的SE专家基于CMM1.1,参照CMM2.0和有关资料,提出了符合我国国情的CSCMM。
CSCMM与CMM的主要区别:
在等级1和等级2之间插入了一个“基本级”,使成熟度等级更加均匀。
意义:
以免软件开发组织长时间达不到2级,会是之失去信心。
0.初始级。
没有定义软件过程。
1.基本级。
定义了软件过程但执行可能不一致。
2.可重复级。
定义了软件过程且执行基本一致。
3.已定义级。
工程过程/管理过程都明确/妥善定义,并且文档化/标准化,成为软件开发组织的〖标准软件过程〗。
组织内所有软件开发项目均采用该〖标准软件过程〗的〖经批准的剪裁版本〗。
4.定量管理级。
在开发过程中,能详细采集软件过程/软件产品的度量数据,从而对〖成本/进度/质量〗定量预测/定量控制。
(可见,“定量管理级”这个名字比“已管理级”更传神。
)
5.优化级。
能根据〖实践总结/新的技术〗,对〖标准软件过程〗不断改进。
温昱注:
上面体现的“定量”比“定性”更难更高级的思想,和数学/化学倒是一样的。
另外,〖标准软件过程〗由开发组织来定,CMM并不对“用什么方法/技术”做建议。
其实,既然优化级就是“能根据〖实践总结/新的技术〗对〖标准软件过程〗不断改进”,更能看出CMM是独立于任何老技术/新技术的。
呵呵,永不失效。
在软件开发组织中,软件过程要规范化/具体化。
在软件开发组织中,要通过正式文档/文件和培训,将其软件过程准确无误地告知所有员工,新员工要进行特别培训。
CMM的组织结构:
它推荐在最高领导之下设立SEPG(软工过程组)、SQA(质量保证组)、SEG(软工组)。
提示:
三个组构成了软件开发中的“立法”、“监督”、“执法”体系,体现了西方文化的法治观念。
CMM(CapabilityMaturityModel软件能力成熟度模型)为软件企业的过程能力提供了一个阶梯式的进化框架,它基于过去所有软件工程成果的过程改善的框架,吸取了以往软件工程的经验教训。
它指明了一个成熟的软件组织在软件开发方面需要管理的那些主要工作、这些工作之间的关系、以及以怎样的先后次序一步一步的做好这些工作,使软件组织走向成熟。
是目前国际上最流行也是最实用的软件生产过程标准,理解CMM需要注意以下几点:
1.他仅指明该做什么,而没有指明如何做,他不是方法论(温昱注1:
见后),但我们在学习CMM时,可以从中学到分析问题的方法。
2.他仅指明该做的关键内容,他仅描述软件过程的本质属性,而并非面面俱到。
抓问题主要方面的思想贯穿在整个CMM模型中。
3.软件过程是指软件工程过程、软件管理过程和软件组织的过程三者的有机结合(温昱注2:
见后)。
软件工程过程是我们理解的常规的软件的需求分析、设计、编码、测试等过程,软件管理过程是指为使软件过程顺利进行而进行和管理活动的集合。
上述两个过程是以软件工程组为主的活动。
软件组织的过程是企业级的对软件的组织活动,是以企业为主的活动。
4.他是从软件过程的角度考虑问题,而并非关注软件开发工具。
这与框架软件生存周期无关,也与所采用的开发技术(温昱注1:
见后)无关。
5.CMM为改善整个企业的软件过程提供了指南,而并非针对某个具体项目。
SW-CMM并不能保证在这个过程框架下,产品开发百分之百的成功。
产品的成功是多种因素的组合,例如市场等因素。
6.CMM1.1是针对大型软件企业(500人以上)的,对小型的软件企业(50人以下)需要裁减。
7.SW-CMM的过程的不断改进基于许多小的、进化的步骤而不是革命性的创新。
8.基于CMM的过程改善投资力度大、周期长,而技术投资则可能在短期内有较快回报。
单独依靠技术改进可能在短期内有较快回报,但最终可能一无所获。
温昱注1:
方法论是通过一组选定的〖方法〗和〖技术〗,来解决问题的策略。
方法论=方法(们)+技术(们)。
因此,这里提CMM“不是方法论”,“与所采用的开发技术无关”,是正确的。
我见过有人提“CMM是方法论”,不对。
当然,软件过程和方法/技术有关哟。
温昱注2:
软件工程=工程过程+管理过程。
软件工程学=方法/技术+工具/环境+标准/规范+管理/控制。
但是,这里却提“软件过程是指软件工程过程、软件管理过程和软件组织的过程三者的有机结合”。
我认为它和前一观点并不矛盾,后一观点只是把〖管理过程〗分成了〖软件工程组的管理过程〗和〖整个企业的管理过程〗,又换了个名字叫“组织过程”而已。
四、软件企业如何有效地推行CMM
软件项目管理是针对软件开发进行的项目管理,它既有项目管理的共性,也有其特殊性。
它的特殊性主要表现在软件项目的开发过程及其项目的最终产品--软件产品上。
国内开展软件项目规范管理的时间并不长,软件企业各级管理者对软件项目管理的认识也很不够。
目前很多软件项目的成功主要归功于技术高手的个人努力,或者碰巧由一位有能力的项目经理来管理项目,偶然性的因素很大。
随着市场竞争的日趋激烈,市场环境的日益成熟,特别是在中国进入WTO后,国内软件企业与国外软件企业的竞争,以及开拓国外市场的需要,软件项目管理不完善的问题便越来越突出,软件项目管理显得越来越重要。
为此,许多企业引进了目前世界上较完善的公认软件业标准CMM(软件能力成熟度模型SoftwareCapabilityMaturityModel),希望通过CMM的实施来提高公司的软件项目管理水平。
但是,由于对软件项目管理的认识不足,人们对CMM的期望值也很大,对CMM的实施普遍存在以下误区:
1.CMM能很快提高企业的软件产品质量;
2.CMM能解决软件开发过程中的所有问题;
3.迫于市场压力去拿一张CMM评估证书,而不去考虑CMM的真正作用;
4.技术水平比管理水平更重要,当技术水平提高时,再考虑实施CMM
5.……
当抱着以上想法去实施CMM时,其效果便可想而知。
而当有些企业认识到软件项目管理不能立竿见影地解决他们面临的问题时,他们当初对CMM实施的信心便开始动摇,就有可能走上形式化的死循环。
那么,CMM是什么呢?
从内容上看,CMM标准分5个级别,每一级别由一些关键过程域(KPA)组成,也就是说,CMM的管理方式是基于过程的管理方式。
每一个KPA都有目标(GOAL)要求,要通过CMM某级别的评估,必须达到本级别所有KPA的所有目标要求,以及本级别以下级别的所有KPA的所有目标要求。
如过CMM三级,要达到CMML3的要求,也要达到CMML2的要求。
对于如何达到目标要求,CMM标准又规定了以下五方面内容:
1.执行约定:
实施本KPA的方针要求与高级管理者的承诺与支持;
2.执行能力:
实施的先决条件,包括组织结构、资源、培训等方面的要求;
3.执行的活动:
为实现一个KPA要求所必须的角色和规程。
包括制定计划,进行工作,跟踪,并在必要时采取纠正措施;
4.测量和分析:
采集数据表明过程的状态,预防问题的发生。
5.实施验证:
确保已建立流程的实施。
包括三级验证,即高级管理者、主管和项目经理,SQA对过程相关活动的实施进行验证。
总之,CMM规定了要达到的目标,实施需要的条件(约定、能力),需要做的工作(过程活动、测量和验证)。
而具体如何去实现,则须根据公司实际,可以八仙过海,各显神通。
正如,规范化管理不会制约开发人员的创造力,而是使开发人员的创造力在正确且明确的轨道上,得到更充分、更有效的发挥,实施CMM的真正目的,是使公司的软件项目管理潜能,在借鉴成功企业的经验,结合本公司实际后,得到完全的展现,从而保证软件开发过程和软件产品的质量。
推行CMM,相当于在企业内引入一种新的软件项目管理的方式,是软件项目管理的一场变革。
它的成功,有赖于大多数组织成员,特别是各级管理者的赞同、支持和配合。
所以,在实施CMM之前,公司应对面对的变革阻力有充分的认识和准备。
首当其冲的,便是对CMM的正确认识。
正如前面所介绍的,由于CMM推广在国内才起步不久,其真正作用目前还没有得到充分的证实。
所以,过高、过分的期望,或者是怀疑、抵制的情绪,普遍存在。
由于CMM实施的是一项长期的管理工作,不能一蹴而就,所以前者也会对CMM的真正落实实施起阻碍作用。
因为,当他们意识到CMM不是万能的,不能满足他们过高、过分的期望时,他们反过来会否定CMM的意义和作用,从起初热情的拥护者转向坚决的反对者。
所以,CMM的正确认识是推行CMM前必须达到的共识。
解决对CMM正确认识的方法可以通过理智而循序渐进的宣传和培训活动来实现。
为什么要强调理智呢?
正确的认识是为了有一个正确的态度。
当一个人的情绪过于激动时,就不能冷静地、理智地思考问题。
情绪的影响能较快地产生反响,但持续的时间不长。
反之,理智、冷静的接受的观点,能较长时间的保持。
CMM实施是一项长期的工作,不能凭一时的冲动,需要持久、稳定的推动力。
所以培训和宣传要考虑采用条理清楚、说理充分的方式。
培训和宣传工作也不是能一步就到位的,有一个对CMM标准逐步深入了解的过程。
而且循序渐进的宣传和培训就像不断加深的记忆,起到了强化的作用,有助于对人们对CMM的认识深入而持久,不会轻易改变。
其次,是管理与技术的对立与统一。
CMM是软件项目管理的一个标准,软件项目能否成功,技术因素也是关键。
技术水平直接影响着软件项目管理的方式方法,对管理起着制约作用。
反过来,成功的软件项目管理则对技术的进步起到保障的作用,巩固技术改进的成果,使技术的积累与提升沿着正常的轨道有效地发展。
没有管理的技术进步,也是不能持久的。
目前,绝大多数企业的项目经理都是技术出身,所谓“技而优则仕”。
重技术,轻管理的现象普遍存在。
而且技术对项目质量立竿见影的效果,也使项目经理对软件项目管理的缓慢而持久的对项目质量的保障作用持怀疑态度,或者说有只关注眼前利益,而不顾长远的利益的心态。
这里,我想补充说一下,为什么CMM标准2级只有管理方面的内容,而到3级才引入软件工程、技术管理方面的概念。
CMM标准的5级,就像是台阶,每上升一级,代表者软件过程能力的成熟,软件项目管理水平的提高。
下面的台阶是向上走的基础。
CMM2主要关注的是需求的管理(注意:
是管理,而不是需求分析等技术)、项目策划、项目跟踪与监督、软件配置管理和软件质量保证。
这里,没有技术的内容在里面。
为什么呢?
因为只有建立了管理的机制,技术的进步才能有保障;
只有有了管理的基础,才能实现技术的积累与提升。
项目经理是实施CMM的中坚力量,项目经理管理意识的提高是实施CMM成功的关键。
为此,企业应建立有效的引导、激励机制,加强项目经理的管理知识及其应用的培训,并逐步建立有效的项目经理选拔培养制度。
既然是变革,必然就有新观念、新概念的引进。
前面已谈到CMM的正确认识对消除变革阻力、有效推行CMM的重要性。
这是在较高层次上对CMM进行抽象后的认识,它起到的是统一思想的作用。
在具体的实施过程中,会遇到CMM标准中的各种新的名词(实际上就是新的概念,新的管理思想的引入),包括CMM的组成结构。
概念的理解是CMM标准理解的重要组成部分,概念不理解,就不能很好地理解标准要求。
如何在操作中体现和落实这些思想,是我们实施过程中要去克服的。
如果不能很好地处理这个问题,容易使人沮丧,从而有可能逐步丧失对CMM实施的信心。
有人认为,只要SEPG成员(SEPG:
软件工程过程组SoftwareEngineeringProcessGroup,负责CMM实施的小组,主要工作有组织过程的制定、维护和改进的组织工作)理解CMM标准要求(包括理解CMM标准中的各种概念)就可以了。
其他人员,包括各级管理者、项目经理、开发人员不需要理解这些要求和概念,只要告诉他们如何去做就可以了。
本人对这种说法持否定态度。
如果不理解CMM标准要求,不理解各种概念的真正含义,只知其然,而不知其所以然,实施者如何能把CMM标准在具体工作中真正落实。
就像只告诉你怎么走,而不告诉你往那里去,你将如何处理遇到的意外情况?
如果所说的行不通,怎么办?
你又如何根据实际情况有效地到达目的地?
也许在某些行业,这种“只告诉你如何做,不告诉你为什么要这么做”的方式是有效的,但这种方式绝对不适用于软件企业。
为什么?
因为人的差异。
我们要根据不同的人采取不同的激励方式。
因为CMM推行本身就是引导和激励企业全体开发人员的持久的支持和参与,所以要根据开发人员本身的价值和他们的追求采取相应的CMM推行措施。
开发人员的整体素质相对较高,从事的又是创造性很强的软件开发工作,自主性相对较强。
让他们理解标准要求,理解各种概念,对于调动他们的积极性,从而有效的实施CMM是非常有帮助的。
另一方面,CMM标准的核心管理思想,过程改进,也只有在全体实施者理解标准要求的基础上,积极参与的过程中才能实现。
SEPG制定的初始过程文件可能是最好的、理想的,但绝对不可能是最适用的、最可行的、最可操作的。
这需要各级实施者在使用文件定义过程的基础上,结合标准要求进行过程改进,从而找到符合标准要求的、适用于本企业的软件管理方式。
所以,对各级人员进行CMM标准理解的培训非常重要。
培训可以分为不同层次进行,一层一层逐步从抽象到具体。
培训的方式也可以有演讲、座谈、案例讲解、讨论小组、实际操作中的指导等不同的方式。
总而言之,有效推行CMM的关键,在于充分理解CMM标准的要求后,结合企业软件项目开发的实际,找出适合于本企业的软件项目管理方法。
CMM标准的实施,重在解决企业软件项目开发过程中存在的问题,实现软件开发过程的持续改进。
企业应当充分认识到推行前及推行过程中可能遇到的困难和阻力,并根据企业实际,采取有效的措施。
只有这样,才能使推行CMM真正成为企业提高软件项目管理水平,保证软件产品质量,从而提高企业市场竞争力的有效手段
五、CMM“六步曲”--CMM实施技术问题分析
一些正在实施CMM2级的企业发现有大量的重复性工作要做,原因何在?
没有做好需求开发是产生这一问题的主要原因!
1需求管理与需求工程
需求开发和需求管理是需求工程的两部分,如果没有做好需求开发,那么从需求管理的角度看就会出现重复性的工作。
导致需求开发欠佳的主要原因有以下几点:
◆缺乏良好的需求规格说明编写模板
分析一些企业的CMM实施过程,从表面上看,它们的确遵循了先推荐方案再进行评审的基本选择原则,但由于缺乏经验,实际选定的方案常常缺乏客观性,同时在企业的工程和管理机制里又缺乏实践反馈的方法和过程来不断地改进原有的方案。
一般来说,大家在一起工作的时间长了,就会形成一种“默契”,而这很可能给以后的工程和管理工作埋下很多隐患,一旦出现意见分歧时,这种默契就不复存在。
如果按CMM的要求去做,大量类似的重复工作就会因此出现。
改进的方法之一是在整个工程和管理过程中,既保持文档和产品的一致性,又反向追踪需求规格说明更改的程度,并持续改进需求规格说明编写模板。
◆较严重地忽略了非功能性需求
目前,国内的软件客户很少主动提出非功能性需求,但随着客户的逐渐成熟,软件客户对软件的非功能性需求也会越来越高,这就对软件开发商提出了更高的要求。
不做好非功能性需求的规格说明编写工作,同样会陷入大量重复工作的包围之中。
如果缺乏非功能性需求的规格说明,将会使一些基础问题直到软件生命的中期才被发现,这将导致大量的文档和产品需要更改,由此带来严重的工程和管理难题。
改进的方法之一是调用有相当软件调试和维护背景的资深人员参与需求规格说明的编写,他们的丰富经验往往可以较好地弥补设计开发人员在这方面存在的不足。
◆缺乏对需求文档的配置管理
采用两个需求规格说明编写模板是一种不错的做法:
一份给软件客户看,一份留给软件开发小组内部使用,前者的目标是让客户较容易理解,后者则更加专业化。
在这种情况下,两个需求规格说明都应纳入配置管理的范畴以便从管理的角度保持
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CMM
![提示](https://static.bdocx.com/images/bang_tan.gif)