CMM与项目管理-CMM与项目管理研讨会心得交流第二事业部寇东概要CMM简介项目管理简介软件项目管理软件工程–需求工程–软件测试问题主管在项目在进行过程中询问项目的进展情况,你挠挠头皮:设计做的差不多了,一部分已经开始编码了。主管不满意了:什么时候能交活?你有些底气不足:至少还得一个多月的时间。主管着急了:就剩两周的时间了,你要花一个月,上一周你还答应可以在三周内完成。六周过去了,你的项目组还在测试,还在修改代码。两个月过去了,项目终于完成了。尽管客户有不少抱怨,但总算做了验收。下一个项目会怎样?SEI的解决方案设定目标度量与跟踪预测与纠正计划与评审理性管理4312理性管理度量与跟踪要求有纪律的工作SEI的解决方案软件项目管理的重要原则:—重视软件质量—始终如一地强调有纪律的工程工作理性管理的四要素–CMM/CMMI/PSP(PersonalSoftwareProcess)/TSP(TeamSoftwareProcess)软件流程Asoftwareprocesscanbedefinedasasetofactivities,methods,practices,andtransformationsthatpeopleusetodevelopandmaintainsoftwareandtheassociatedproducts(e.g.,projectplans,designdocuments,codes,testcases,andusermanuals)。如何工作(软件开发和维护)软件流程能力softwareprocesscapability遵循这样的软件流程,有多大可能可以达到预计的结果。软件流程能力提供了一种有效的手段,可以预计软件组织承担某个项目最有可能的结果是什么样的。软件流程性能softwareprocessperformance代表了遵循这样的软件流程,真正达到的结果是怎样的。软件流程能力表述的是期望的结果,而软件流程性能表述的是实际的结果。软件组织成熟度不成熟的组织最大的特征就是“救火”,只顾、也只能忙于解决眼前的问题,而眼前的问题又往往一个接一个。成熟的组织要有序得多,力图预防问题,而非应付问题,虽然也可能出现意外情况,但对此是早有防范的,是有准备的。成熟与否导致的最终结果就是客户对其能否胜任软件项目的信心有所不同不同。软件流程成熟度softwareprocessmaturity一个特定的流程在多大程度上被明白无误的定义、管理、衡量和控制,以及有多有效。软件组织的软件流程成熟度预示着它的软件流程能力有多大的发展潜力,这不仅指它的软件流程有多丰富,多完备,而且指这些软件流程在最大程度上是一致的,在整个组织范围内,在任何一个项目中,都是被很好的了解和贯彻。CMM概貌CMM是一个阶梯式的模型它根据软件组织的流程成熟度高低分成了5个级别(level),从第一级的初始级一直到第五级的优化级初始级可重复级已定义级可管理级优化级纪律化标准化可预测持续改进指导软件组织逐步成熟的框架任何一个软件组织,在某个时刻,都可以依据一定的标准来被划定处于哪个级别。这个组织就可以知道,它下一步要争取的级别是哪一级。CMM可以说是一个指导软件组织如何一步一步的走向成熟的框架。每一个低的级别都是向更高级别迈进的基础。KPA(KeyProcessArea)—划定组织流程成熟度级别的依据除了初始级外,每个级别都包括若干个KPA,每个KPA又设定了2至4个目标。当某个KPA的所有目标达到时,就可以说该KPA被满足了;当某个级别的所有KPA(除了极个别KPA不是必须的)都被满足时,我们就可以说,已经达到该级别了。KPA归类类别等级管理类组织类工程类优化级技术更新管理过程变更管理缺陷预防可管理级量化过程管理软件质量管理已定义级集成软件管理组间协调组织过程焦点;组织过程定义;培训大纲软件产品工程;同级评审可重复级需求管理;软件项目计划;软件项目跟踪与监督;软件子合同管理;软件质量保证;软件配置管理初始级CMMKPA应用既要利用KPA有重点、有次序的指导流程改进,也不要眼里只有KPA,忘记了现实的状况。有关键流程区,当然还有非关键流程区;所以,千万不要以为,处于某个级别的组织,所要面对的流程只是那几个KPA;要做的流程,其实远远不止这些。可重复级只有6个KPA,没有涉及基本的软件工程活动(如系统设计、软件测试),也没有涉及项目资源(如必须的软硬件和其他设备)采购、客户交流等等,而这些对于做好项目(更不要说要可重复了)也是非常重要的。CMM没有涉及这些流程,是因为它把这些流程归结为“非关键”的,但“非关键”并不等同于可忽略的。CMM内部结构关键过程区表明关键过程的实施和制度化共有特性(commonfeature)与关键实践(keypractice)每个KPA都包含了相关的一系列KP,这些KP提供了达到KPA目标的一个指导。是指导,而非必须。正所谓“条条大路通罗马”,我们完全可以采取其他的做法(Practice)来满足目标,甚至可以是CMM没有提到的Practice。每个KPA的所有KP都按照共有特性(commonfeature)归类将KPA的KP按照共有特性组织起来,完全是为了方便KP共有特性(commonfeature)实施承诺(commitmenttoperform)–实施承诺通常包括是否建立了相关的制度,管理层是否支持等等。实施能力(abilitytoperform)–包括诸如是否有足够的人力资源、培训等等实施活动(activitiesperformed)度量和分析(measurementandanalysis)实施验证(verifyingimplementation)CMM强调KPA达成目标的一贯性和有效性,而不是今天能达到,明天就很难说。CMM第一级:初始级特点:项目的成功与否不是靠合理有效的软件流程来保证的,而是靠个人能力来保证的。无论组织内部的管理高层,还是外部的客户,都无法预见其项目的前景和结果,更不要说将结果控制在预算和进度之内。要求:初始级没有任何KPA,这一点与其他各级不同。在CMM中,只要从事软件生产和维护,该软件组织就自动达到第一级。而再往上就要经过CMM评估了。注意:不要把未经CMM评估与处于初始级两者混淆,有些软件组织虽然没有经过CMM评估,但以CMM的要求看,也许远远超出初始级的标准。CMM第二级:可重复级软件组织能力不再受制于个人,但是也非组织拥有,而是依赖于项目组。项目组从以往的类似项目中归纳成功经验和失败教训,并以此作为指导新项目开展的依据,从而在很大程度上,可以保证类似项目的再次成功。用一个词来概括,那就是“有纪律的”。项目组在其范围内,实施基本的项目管理,并对进度、预算和产品功能进行计划和跟踪,这样,项目的进展处于一种基本可控的状态。一个软件项目不再是一个“魔术般”的黑箱子,而是一些连续的黑箱子。实施CMM2管理层的表率作用。管理层人员必须首先注重自身流程的纪律化。有些项目经理或者质量管理人员,往往首先看到的是“程序员”的自由散漫,一要流程改进,就要求“程序员”遵循这个规矩那个条例,就要写文档,开大会;这不仅违背了CMM的初衷,更败坏了流程改进的名声缺乏群众基础的流程改进,无法取得实效CMM2KPA需求管理(RequirementManagement)软件项目计划(SoftwareProjectPlanning)软件项目跟踪和监控(SoftwareProjectTrackingandOversight)软件转包合同管理(SoftwareSubcontrackManagement)软件质量保障(SoftwareQualityAssurance)软件配置管理(SoftwareConfigurationManagement)。CMM第三级:已定义级是在整个组织范围内,开发和维护软件的流程,包括管理的和工程的,以及这些流程的集成,已被明确地书面定义。各个项目就可以依据这一流程标准进行裁剪,明确其中每一项具体任务和工作的输入、输出、开始和完成的判断标准和条件、操作过程、以及验证措施等等。已定义级不再是一些连续的黑盒;由于每一项具体任务和工作都是可见的,因此外部人员可以随时深入到“黑盒”中,了解项目内部的进展情况,从而也使项目的及时调整和降低风险成为可能。CMM3特点不同项目和历史项目的成功经验和失败教训可以相互比较已定义级组织的能力是属于组织的,而不是项目团队的,更不是成员个人的。为了保证整个组织流程的标准和一致性,通常会有一个跨项目的团队,比如SEPG(SoftwareEngineeringProcessGroup)负责整个组织的流程活动。为了使组织内每一个人明确自己的角色和权责,并能有效实施,整个组织范围内的培训是必不可少的。要建立起这样的流程,对个人的工作要授权,不要过分刻板。常有人把CMM解释为刻板的文档和僵硬的工作规范,这样的理解至少是极端化的。刻板僵硬,以及随之而来的官僚作风,并不是CMM天生使然,而是对CMM的曲解和误用。CMM3KPA组织过程焦点(OrganizationProcessFocus)组织过程定义(OrganizationProcessDefinition)培训大纲(TrainingProgram)集成软件管理(IntegratedSoftwareManagement)软件产品工程(SoftwareProductEngineering)组间协调(IntergroupCoordination)同级评审(PeerReviews)CMM第四级:受管理级定性的比较发展为定量的比较,从而使得人们(无论是内部的,还是外部的)可以更加科学、客观的预测软件项目的进度、预算和质量。定量是指在一定的概率内使结果误差控制在一定的范围内。如:存在90%的可能,进度误差不超过20%。处于受管理级的组织能及时采取纠正和弥补措施。确定要度量些什么。依靠收集和挖掘自身历史数据进行软件度量。CMM4KPA量化过程管理(QuantitativeProcessManagement)软件质量管理(SoftwareQualityManagement)CMM第五级:优化级重点从“建立”进一步转移到“优化”上。优化靠自己的积累、尝试和总结经验教训。具备了自我改进的基础架构和实现系统。尽管组织的内部情况会变化,外部环境和要求也会不同,但组织都可以在原有的基础上进行可控可测的流程优化,因为流程的每一个环节都是可见的、可客观评价的CMM5KPA缺陷预防(DefectPrevention)技术更新管理(TechnologyChangeManagement)过程变更管理(ProcessChangeManagement)CMM各级别关系CMM高级别和低级别之间是存在很强的依赖性的,这样的依赖性不是强加的,而是自然的,符合逻辑和实践检验的。跳跃式前进的结果只能是拔苗助长,导致生产率和质量的下降。不仅成熟度级别之间存在严格的先后关系,在各个KPA之间,即使在同一级别内,也存在严格的先后关系。例如,需求管理是项目计划的基础,而项目计划又是项目跟踪与监控的前提。项目的基本概念项目是一个组织为实现自己既定的目标,在一定的时间、人员和资源约束条件下,所开展的一种具有一定独特性的一次性工作。PMI的定义:Atemporaryendeavorundertakentocreateauniqueproductorservice.在一段时间内为完成某一独特的产品或提供独特的服务所进行努力的过程。现代项目管理知识体系1.项目集成管理确保各种项目工作和项目的成功要素能够很好的协调与配合,以及相应的管理理论、方法、工具。2.项目范围管理计划和界定一个项目或项目阶段需要完成的工作和必须要完成的工作的管理工作的理论、方法、工具。3.项目时间管理又叫项目工期进度管理,是有关如何按时完成项目工作的理论