《CMM与项目管理》由会员分享,可在线阅读,更多相关《CMM与项目管理(89页珍藏版)》请在金锄头文库上搜索。
1、CMM与项目管理 - -CMMCMM与项目管理研讨会心得交流与项目管理研讨会心得交流第二事业部寇东概要lCMM简介l项目管理简介l软件项目管理l软件工程需求工程软件测试问题问题 主管在项目在进行过程中询问项目的进展情况,主管在项目在进行过程中询问项目的进展情况,你挠挠头皮:设计做的差不多了,一部分已经开始编你挠挠头皮:设计做的差不多了,一部分已经开始编码了。码了。 主管不满意了:什么时候能交活?你有些底气不主管不满意了:什么时候能交活?你有些底气不足:至少还得一个多月的时间。主管着急了:就剩两足:至少还得一个多月的时间。主管着急了:就剩两周的时间了,你要花一个月,上一周你还答应可以在周的时间了
2、,你要花一个月,上一周你还答应可以在三周内完成。三周内完成。 六周过去了,你的项目组还在测试,还在修改代六周过去了,你的项目组还在测试,还在修改代码。两个月过去了,项目终于完成了。尽管客户有不码。两个月过去了,项目终于完成了。尽管客户有不少抱怨,但总算做了验收。少抱怨,但总算做了验收。 下一个项目会怎样?下一个项目会怎样?SEI 的解决方案的解决方案设定目标度量与跟踪预测与纠正计划与评审理性管理4312理性管理度量与跟踪要求有纪律的工作要求具体的计划计划评审和协商设定具有短期目标和目的目标的评审和跟踪预测并纠正问题监督经营业绩SEI 的解决方案的解决方案l软件项目管理的重要原则:软件项目管理的
3、重要原则: 重视软件质量重视软件质量 始终如一地强调有纪律的工程工作始终如一地强调有纪律的工程工作l理性管理的四要素理性管理的四要素CMM/CMMI/PSP(Personal Software Process)/TSP(Team Software Process)软件流程软件流程lA software process can be defined A software process can be defined as a set of activitiesas a set of activities,methodsmethods,practicespractices,and transfor
4、mations that and transformations that people use to develop and maintain people use to develop and maintain software and the associated software and the associated productsproducts(e.g.e.g., project plans project plans,design documentsdesign documents,codescodes,test casestest cases,and user manuals
5、and user manuals)。)。l如何工作(软件开发和维护)如何工作(软件开发和维护)软件流程能力软件流程能力software process capabilitysoftware process capabilityl遵循这样的软件流程,有多大可能可以遵循这样的软件流程,有多大可能可以达到预计的结果。达到预计的结果。l软件流程能力提供了一种有效的手段,软件流程能力提供了一种有效的手段,可以预计软件组织承担某个项目最有可可以预计软件组织承担某个项目最有可能的结果是什么样的。能的结果是什么样的。软件流程性能软件流程性能software process performancesoftwar
6、e process performancel代表了遵循这样的软件流程,真正达到代表了遵循这样的软件流程,真正达到的结果是怎样的。的结果是怎样的。l软件流程能力表述的是期望的结果,而软件流程能力表述的是期望的结果,而软件流程性能表述的是实际的结果。软件流程性能表述的是实际的结果。软件组织成熟度软件组织成熟度l不成熟的组织最大的特征就是不成熟的组织最大的特征就是“救火救火”,只顾、,只顾、也只能忙于解决眼前的问题,而眼前的问题又也只能忙于解决眼前的问题,而眼前的问题又往往一个接一个。往往一个接一个。l成熟的组织要有序得多,力图预防问题,而非成熟的组织要有序得多,力图预防问题,而非应付问题,虽然也可
7、能出现意外情况,但对此应付问题,虽然也可能出现意外情况,但对此是早有防范的,是有准备的。是早有防范的,是有准备的。l成熟与否导致的最终结果就是客户对其能否胜成熟与否导致的最终结果就是客户对其能否胜任软件项目的信心有所不同不同。任软件项目的信心有所不同不同。软件流程成熟度软件流程成熟度software process maturitysoftware process maturityl一个特定的流程在多大程度上被明白无误的定一个特定的流程在多大程度上被明白无误的定义、管理、衡量和控制,以及有多有效。义、管理、衡量和控制,以及有多有效。l软件组织的软件流程成熟度预示着它的软件流软件组织的软件流程成
8、熟度预示着它的软件流程能力有多大的发展潜力,这不仅指它的软件程能力有多大的发展潜力,这不仅指它的软件流程有多丰富,多完备,而且指这些软件流程流程有多丰富,多完备,而且指这些软件流程在最大程度上是在最大程度上是一致一致的,在整个组织范围内,的,在整个组织范围内,在在任何一个任何一个项目中,都是被很好的项目中,都是被很好的了解和贯彻了解和贯彻。CMMCMM概貌概貌lCMM CMM 是一个阶梯是一个阶梯式的模型式的模型l它根据软件组织它根据软件组织的流程成熟度高的流程成熟度高低分成了低分成了5 5 个级个级别(别(levellevel),),从从第一级的初始级第一级的初始级一直到第五级的一直到第五级
9、的优化级优化级初始级可重复级已定义级可管理级优化级纪律化标准化可预测持续改进指导软件组织逐步成熟的框架指导软件组织逐步成熟的框架l任何一个软件组织,在某个时刻,都可以依据任何一个软件组织,在某个时刻,都可以依据一定的标准来被划定处于哪个级别。这个组织一定的标准来被划定处于哪个级别。这个组织就可以知道,它下一步要争取的级别是哪一级。就可以知道,它下一步要争取的级别是哪一级。lCMMCMM可以说是一个指导软件组织如何一步一步可以说是一个指导软件组织如何一步一步的走向成熟的框架。每一个低的级别都是向更的走向成熟的框架。每一个低的级别都是向更高级别迈进的基础。高级别迈进的基础。KPAKPA(Key P
10、rocess Area)Key Process Area) 划定组织流程成熟度级别的依据划定组织流程成熟度级别的依据l除了初始级外,每个级别都包括若干除了初始级外,每个级别都包括若干个个KPAKPA,每个每个KPA KPA 又设定了又设定了2 2 至至4 4 个目标。当某个个目标。当某个KPA KPA 的所有目标达到时,就可以说该的所有目标达到时,就可以说该KPA KPA 被满足了;被满足了;l当某个级别的所有当某个级别的所有KPAKPA(除了极个别除了极个别KPA KPA 不是不是必须的)都被满足时,我们就可以说,已经达必须的)都被满足时,我们就可以说,已经达到该级别了。到该级别了。KPA
11、KPA 归类归类类别等级管理类组织类工程类优化级技术更新管理过程变更管理缺陷预防可管理级 量化过程管理软件质量管理已定义级集成软件管理组间协调组织过程焦点;组织过程定义;培训大纲软件产品工程;同级评审可重复级需求管理;软件项目计划;软件项目跟踪与监督;软件子合同管理;软件质量保证;软件配置管理初始级CMM KPACMM KPA应用应用l既要利用既要利用KPA KPA 有重点、有次序的指导流程改进,也不有重点、有次序的指导流程改进,也不要眼里只有要眼里只有KPAKPA,忘记了现实的状况。忘记了现实的状况。l有关键流程区,当然还有非关键流程区;所以,千万有关键流程区,当然还有非关键流程区;所以,千
12、万不要以为,处于某个级别的组织,所要面对的流程只不要以为,处于某个级别的组织,所要面对的流程只是那几个是那几个KPAKPA;要做的流程,其实远远不止这些。要做的流程,其实远远不止这些。l可重复级只有可重复级只有6 6 个个KPAKPA,没有涉及基本的软件工程活动没有涉及基本的软件工程活动l(如系统设计、软件测试),也没有涉及项目资源(如系统设计、软件测试),也没有涉及项目资源(如必须的软硬件和其他设备)采购、客户交流等等,(如必须的软硬件和其他设备)采购、客户交流等等,而这些对于做好项目(更不要说要可重复了)也是非而这些对于做好项目(更不要说要可重复了)也是非常重要的。常重要的。lCMM CM
13、M 没有涉及这些流程,是因为它把这些流程归结为没有涉及这些流程,是因为它把这些流程归结为“非关键非关键”的,但的,但“非关键非关键”并不等同于可忽略的。并不等同于可忽略的。CMMCMM内部结构内部结构l关键过程区表明关键过程的实施和制度化共有特性(共有特性(共有特性(共有特性(common featurecommon featurecommon featurecommon feature)与关键实践(与关键实践(与关键实践(与关键实践(key practicekey practicekey practicekey practice)l每个每个KPA KPA 都包含了相关的一系列都包含了相关的一
14、系列KPKP,这些这些KP KP 提供了达提供了达到到KPA KPA 目标的一个指导。目标的一个指导。l是指导,而非必须。正所谓是指导,而非必须。正所谓“条条大路通罗马条条大路通罗马”,我,我们完全可以采取其他的做法(们完全可以采取其他的做法(PracticePractice)来满足目标,来满足目标,甚至可以是甚至可以是CMM CMM 没有提到的没有提到的PracticePractice。l每个每个KPA KPA 的所有的所有KP KP 都按照都按照共有特性共有特性(common common featurefeature)归类归类l将将KPA KPA 的的KP KP 按照共有特性组织起来,完
15、全是为了方便按照共有特性组织起来,完全是为了方便KP KP 共有特性共有特性(common featurecommon feature)l实施承诺(实施承诺(commitment to performcommitment to perform)实施承诺通常包括是否建立了相关的制度,管理层实施承诺通常包括是否建立了相关的制度,管理层是否支持等等。是否支持等等。l实施能力实施能力(ability to performability to perform)包括诸如是否有足够的人力资源、培训等等包括诸如是否有足够的人力资源、培训等等l实施活动(实施活动(activities performed act
16、ivities performed )l度量和分析(度量和分析( measurement and analysis measurement and analysis )l实施验证(实施验证( verifying implementationverifying implementation)CMM CMM 强调强调lKPA KPA 达成目标的一贯性和有达成目标的一贯性和有效性,而不是今天能达到,效性,而不是今天能达到,明天就很难说。明天就很难说。CMMCMM第一级:初始级第一级:初始级l特点:项目的成功与否不是靠合理有效的软件流程来特点:项目的成功与否不是靠合理有效的软件流程来保证的,而是靠个人
17、能力来保证的。无论组织内部的保证的,而是靠个人能力来保证的。无论组织内部的管理高层,还是外部的客户,都无法预见其项目的前管理高层,还是外部的客户,都无法预见其项目的前景和结果,更不要说将结果控制在预算和进度之内。景和结果,更不要说将结果控制在预算和进度之内。l要求:初始级没有任何要求:初始级没有任何KPAKPA,这一点与其他各级不同。这一点与其他各级不同。在在CMMCMM中,只要从事软件生产和维护,该软件组织就自中,只要从事软件生产和维护,该软件组织就自动达到第一级。而再往上就要经过动达到第一级。而再往上就要经过CMM CMM 评估了。评估了。l注意:不要把未经注意:不要把未经CMM CMM
18、评估与处于初始级两者混淆,评估与处于初始级两者混淆,有些软件组织虽然没有经过有些软件组织虽然没有经过CMM CMM 评估,但以评估,但以CMMCMM的要求的要求看,也许远远超出初始级的标准。看,也许远远超出初始级的标准。CMMCMM第二级:可重复级第二级:可重复级l软件组织能力不再受制于个人,但是也非组织拥有,而是依赖于软件组织能力不再受制于个人,但是也非组织拥有,而是依赖于项目组。项目组从以往的类似项目中归纳成功经验和失败教训,项目组。项目组从以往的类似项目中归纳成功经验和失败教训,并以此作为指导新项目开展的依据,从而在很大程度上,可以保并以此作为指导新项目开展的依据,从而在很大程度上,可以
19、保证类似项目的再次成功。证类似项目的再次成功。l用一个词来概括,那就是用一个词来概括,那就是“有纪律的有纪律的”。项目组在其范围内,实。项目组在其范围内,实施基本的项目管理,并对进度、预算和产品功能进行计划和跟踪,施基本的项目管理,并对进度、预算和产品功能进行计划和跟踪,这样,项目的进展处于一种基本可控的状态。这样,项目的进展处于一种基本可控的状态。l一个软件项目不再是一个一个软件项目不再是一个“魔术般魔术般”的黑箱子,而是一些连续的的黑箱子,而是一些连续的黑箱子。黑箱子。实施实施CMM2CMM2l管理层的表率作用。管理层人员必须首先注重自身流管理层的表率作用。管理层人员必须首先注重自身流程的
20、纪律化。程的纪律化。l有些项目经理或者质量管理人员,往往首先看到的是有些项目经理或者质量管理人员,往往首先看到的是“程序员程序员”的自由散漫,一要流程改进,就要求的自由散漫,一要流程改进,就要求“程程序员序员”遵循这个规矩那个条例,就要写文档,开大会;遵循这个规矩那个条例,就要写文档,开大会;这不仅违背了这不仅违背了CMM CMM 的初衷,更败坏了流程改进的名声的初衷,更败坏了流程改进的名声l缺乏群众基础的流程改进,无法取得实效缺乏群众基础的流程改进,无法取得实效CMM2 KPAl需求管理需求管理(Requirement ManagementRequirement Management)l软件
21、项目计划(软件项目计划(Software Project PlanningSoftware Project Planning)l软件项目跟踪和监控(软件项目跟踪和监控(Software Project Tracking Software Project Tracking and Oversightand Oversight)l软件转包合同管理(软件转包合同管理(SoftwareSoftware Subcontrack Subcontrack ManagementManagement)l软件质量保障软件质量保障(Software Quality AssuranceSoftware Quality
22、 Assurance) l软件配置管理(软件配置管理(Software Configuration Software Configuration ManagementManagement)。)。CMMCMM第三级:已定义级第三级:已定义级l是在整个组织范围内,开发和维护软件的流程,包括管理的和工是在整个组织范围内,开发和维护软件的流程,包括管理的和工程的,以及这些流程的集成,已被明确地书面定义。程的,以及这些流程的集成,已被明确地书面定义。l各个项目就可以依据这一流程标准进行裁剪,明确其中每一项具各个项目就可以依据这一流程标准进行裁剪,明确其中每一项具体任务和工作的输入、输出、开始和完成的判断
23、标准和条件、操体任务和工作的输入、输出、开始和完成的判断标准和条件、操作过程、以及验证措施等等。作过程、以及验证措施等等。l已定义级不再是一些连续的黑盒;由于每一项具体任务和工作都已定义级不再是一些连续的黑盒;由于每一项具体任务和工作都是可见的,因此外部人员可以随时深入到是可见的,因此外部人员可以随时深入到“黑盒黑盒”中,了解项目中,了解项目内部的进展情况,从而也使项目的及时调整和降低风险成为可能。内部的进展情况,从而也使项目的及时调整和降低风险成为可能。CMM3特点l不同项目和历史项目的成功经验和失败教训可以相互比较不同项目和历史项目的成功经验和失败教训可以相互比较l已定义级组织的能力是属于
24、组织的,而不是项目团队的,更不是已定义级组织的能力是属于组织的,而不是项目团队的,更不是成员个人的。成员个人的。l为了保证整个组织流程的标准和一致性,通常会有一个跨项目的为了保证整个组织流程的标准和一致性,通常会有一个跨项目的团队,比如团队,比如SEPGSEPG(Software Engineering Process GroupSoftware Engineering Process Group)负责负责整个组织的流程活动。整个组织的流程活动。l为了使组织内每一个人明确自己的角色和权责,并能有效实施,为了使组织内每一个人明确自己的角色和权责,并能有效实施,整个组织范围内的培训是必不可少的。整
25、个组织范围内的培训是必不可少的。l要建立起这样的流程,对个人的工作要授权,不要过分刻板。要建立起这样的流程,对个人的工作要授权,不要过分刻板。l常有人常有人把把CMM CMM 解释为刻板的文档和僵硬的工作规范,这样的理解解释为刻板的文档和僵硬的工作规范,这样的理解至少是极端化的。刻板僵硬,以及随之而来的官僚作风,并不是至少是极端化的。刻板僵硬,以及随之而来的官僚作风,并不是CMMCMM天生使然,而是对天生使然,而是对CMMCMM的曲解和误用。的曲解和误用。CMM3 KPAl组织过程焦点(OrganizationProcessFocus)l组织过程定义(OrganizationProcessDe
26、finition)l培训大纲(TrainingProgram)l集成软件管理(IntegratedSoftwareManagement)l软件产品工程(SoftwareProductEngineering)l组间协调(IntergroupCoordination)l同级评审(PeerReviews)CMMCMM第四级:受管理第四级:受管理级级l定性的比较发展为定量的比较,从而使得人们(无论定性的比较发展为定量的比较,从而使得人们(无论是内部的,还是外部的)可以更加科学、客观的预测是内部的,还是外部的)可以更加科学、客观的预测软件项目的进度、预算和质量。软件项目的进度、预算和质量。l定量是指在一
27、定的概率内使结果误差控制在一定的范定量是指在一定的概率内使结果误差控制在一定的范围内。如:存在围内。如:存在90%90%的可能,进度误差不超过的可能,进度误差不超过20%20%。l处于受管理级的组织能及时采取纠正和弥补措施。处于受管理级的组织能及时采取纠正和弥补措施。l确定要度量些什么。确定要度量些什么。l依靠收集和挖掘自身历史数据进行软件度量。依靠收集和挖掘自身历史数据进行软件度量。CMM4 KPAl量化过程管理(QuantitativeProcessManagement)l软件质量管理(SoftwareQualityManagement)CMMCMM第五级:优化级第五级:优化级l重点从重点
28、从“建立建立”进一步转移到进一步转移到“优化优化”上。上。l优化靠自己的积累、尝试和总结经验教训。优化靠自己的积累、尝试和总结经验教训。l具备了自我改进的基础架构和实现系统。尽管组织的具备了自我改进的基础架构和实现系统。尽管组织的内部情况会变化,外部环境和要求也会不同,但组织内部情况会变化,外部环境和要求也会不同,但组织都可以在原有的基础上进行可控可测的流程优化,因都可以在原有的基础上进行可控可测的流程优化,因为流程的每一个环节都是可见的、可客观评价的为流程的每一个环节都是可见的、可客观评价的CMM5 KPACMM5 KPAl缺陷预防(DefectPrevention)l技术更新管理(Tech
29、nologyChangeManagement)l过程变更管理(ProcessChangeManagement)CMM各级别关系lCMMCMM高级别和低级别之间是存在很强的依赖性的,这样高级别和低级别之间是存在很强的依赖性的,这样的依赖性不是强加的,而是自然的,符合逻辑和实践的依赖性不是强加的,而是自然的,符合逻辑和实践检验的。检验的。l跳跃式前进的结果只能是拔苗助长,导致生产率和质跳跃式前进的结果只能是拔苗助长,导致生产率和质量的下降。量的下降。l不仅成熟度级别之间存在严格的先后关系,在各个不仅成熟度级别之间存在严格的先后关系,在各个KPA KPA 之间,即使在同一级别内,也存在严格的先后关系
30、。之间,即使在同一级别内,也存在严格的先后关系。例如,需求管理是项目计划的基础,而项目计划又是例如,需求管理是项目计划的基础,而项目计划又是项目跟踪与监控的前提。项目跟踪与监控的前提。项目的基本概念项目的基本概念l项目是一个组织为实现自己既定的目标,在一定的时间、人员和资源约束条件下,所开展的一种具有一定独特性的一次性工作。lPMI的定义的定义:A temporary endeavor undertaken to create a unique product orservice.在一段时间内为完成某一独特的产品或提供独特的服务所进行努力的过程。现代项目管理知识体系现代项目管理知识体系l1项目
31、集成管理确保各种项目工作和项目的成功要素能够很好的协调与配合,以及相应的管理理论、方法、工具。l2项目范围管理计划和界定一个项目或项目阶段需要完成的工作和必须要完成的工作的管理工作的理论、方法、工具。l3项目时间管理又叫项目工期进度管理,是有关如何按时完成项目工作的理论、方法、工具。l4项目成本管理又叫项目选价管理,是如何在不超出项目预算的情况下完成整个项目工作,所需的管理理论、方法、工具。l5项目质量管理如何确保项目质量,以及保证项目质量所需的管理理论、方法、工具。现代项目管理知识体系现代项目管理知识体系l6项目人力资源管理如何更有效地利用项目所涉及的人力资源,以及在项目人力资源管理方面所需
32、的管理理论、方法、工具。l7项目沟通管理如何有效、及时地生成、收集、储存、处理和最有效的使用项目信息,以及在项目信息和沟通管理方面所需的管理理论、方法、工具。8项目风险管理如何识别项目风险、分析项目风险和应对项目风险,以及项目风险管理所需的管理理论方法、工具。l9项目采购管理也叫做项目获得管理,是有关从项目组织外部寻求和获得各种商品与劳务的管理,以及这一管理所需的理论、方法、工具。许多项目涉及到承包商为购买方工作的情况。在这种情况下,购买方提供最初的产品描述,也成为工作说明(SOW)项目管理的过程项目管理的过程l现代项目管理理论认为任何项目都是由两个过程构成:其一是项目的实现过程其二是项目的管
33、理过程l现代项目管理将整个项目的全部工作看成是由一系列项目阶段构成的一个完整的项目生命周期。项目工作阶段项目工作阶段l项目的定义与决策阶段项目的定义与决策阶段l项目的计划和设计阶段项目的计划和设计阶段工期计划、成本计划、质量计划、资源计划和集成计划l项目的实施与控制阶段项目的实施与控制阶段l项目的完工与交付阶段项目的完工与交付阶段项目管理过程项目管理过程l一个项目的全过程或项目阶段都需要有一个相对应的项目管理过程。这种项目管理过程一般由五个不同的管理具体工作过程构成。l起始过程起始过程l计划过程计划过程l实施过程实施过程l控制过程控制过程l收尾过程收尾过程管理过程间相互关系起始过程各管理工作过
34、程之间的相互联系各管理工作过程之间的相互联系结束过程控制过程实施过程过程计划过程起始过程计划过程实施过程控制过程管理过程间交叉重叠关系控制过程计划过程实施过程结束过程起始过程活动过程阶段始点阶段终点时间一个项目阶段中管理工作过程的交叉、重叠关系图示一个项目阶段中管理工作过程的交叉、重叠关系图示项目阶段间管理过程关系(前面的阶段)(后面的阶段)项目阶段之间的管理工作过程间的相互作用项目阶段之间的管理工作过程间的相互作用项目设计阶段项目实施阶段起始过程起始过程计划过程计划过程实施过程控制过程结束过程结束过程实施过程控制过程如何执行项目l必须遵循那些经试验证明效果良好的方法谨慎地执行每个工程任务l必
35、须用文档正确地记录工作产品,以便其他人员能够查阅它们。l项目任务必须经过仔细规划,并将它们分配给执行项目的人员,然后在项目执行的同时对它们进行跟踪。l换句话说,要成功地执行较大规模的项目,必须在软件工程和项目管理这两方面增强正规程度和严格程度。软件项目的管理过程l软件项目主要涉及两方面的任务:软件工程和项目管理。l软件工程方面涉及系统的建立,并重点关注如何分析需求、设计、测试、编码等问题。l项目管理方面涉及如何设置里程碑、组织全体人员、管理风险、监督进展等规划和控制软件工程的行为,以满足项目在成本、进度和质量方面的目标。过程的定义过程的定义l从技术上讲,对于某个任务的一个过程,它由执行该任务时
36、应当遵循的一个步骤序列组成。l对一个组织而言,它建议其工程师和项目经理使用的过程就远非一个步骤序列了;它们涵盖了工程师们和项目经理所掌握的成功地执行项目的实践。l通过过程就可能将好的经验同所有人共享,包括公司中新来的员工。l这些过程有助于管理人员和工程师借鉴过去的成功经验,从而避开导致失败的陷阱。为什么必须遵循过程为什么必须遵循过程l过程代表着集体的智慧,使用它们可以增加成功的机会。l过程可能会包含一些多余的步骤,但是你事先不可能完全知道哪些步骤是不必要的,因些捷径可能会增加风险。l如果没有采用过程,你就不能很好好预测项目的结果。如果没有定义过程,你和组织就不能进行有效地学习。而学习和提高是当
37、今知识世界必有可少的事情。l过程减少了你须考虑的问题。检查表(checklist)必须会涵盖80%要做的事情,大大地减少了你的任务,因而你只须完成剩下的20%。项目管理项目管理与与CMMl有效的过程有助于成功地执行一个项目l软件CMM提出了有效过程特征的框架。lCMM是目前使用最为普遍的软件过程改进框架之一(现在其他常用框架有ISO9001)。项目管理与项目管理与项目管理与项目管理与CMM2 KPACMM2 KPAl第2级(可重复等级)KPA的目标l明确地表明第2级的重点几乎全部在项目管理上。l在这些目标指导下,你建立一个项目计划并用文档记录它,l根据计划评估正在进行的项目的绩效,l并在实际绩
38、效明显地偏离计划时采取相应的措施。l需求用文档正确地记录下来,并对需求的变更进行正确的管理。l所有工作产品都在控制之中,并根据一个事先制定好的配置管理计划正确地管理对产品的变列。l执行评审与审计。确保遵循计划的过程和标们标准。l如果项目的某些部分被转包给其他软件开发商,则也要对被转包的工作进行正确地监督。项目管理与项目管理与CMM3 KPAl第第3级(已定义级)中级(已定义级)中3个个KPA的目标的目标l重点强调组织管理和过程管理问题。l对于达到第3级能力成熟度的组织中的项目,它使用专用型的标准过程,并重用以往项目的资源、数据和经验进行规划。l执行项目的各小组通过良好定义的接口和机制进行愉快地
39、合作。正确地执行评审以标识出工作产品中存在的缺陷,并为执行评审和随后的任务提供充分的支持。项目管理项目管理与与CMM4 KPAl第第4级(已管理级)上级(已管理级)上KPA的目标的目标l在第4级上,组织的过程能力用量化术语表示,过程能力用于设定一个项目的量化目标。l有关项目绩效方面的数据在当前的基础之上进行收集并与以往的绩效进行比较;如果觉察到明显的偏差,则采取正确的行动恢复对项目的控制。l第4级的一个关键特点是在当前基础上使用统计过程控制技术,以便在需要时可以评估每种任务并采取正确的行动。项目管理与项目管理与CMM5 KPAl第5级上的3个KPA重点强调过程能力的改进。在这3个KPA中,故障
40、预防KPA对项目管理影响最大。l这个KPA要求通过系统地分析故障的原因,然后消除那原因,从而前瞻性地预防故障。l如果能够预防故障进入软件,则可以减去排除它们的工作量,从而提高质量和生产率。软件项目管理建议软件项目管理建议l执行一个项目的全部责任由项目经理负责。l他必须确保项目团队在规定的成本内按时将高质量的软件交付给客户。l为了帮助项目经理实现这一责任,必须得到组织的支持(权力下放)。Software Engineering Process Groupl软件企业应该设立质量部门,其下辖一个软件工程过程小组(softwareengineeringprocessgroup,简称SEPG)。lSEP
41、G负责协调所有过程任务,包括过程定义、过程改进以及过程部署。l它还管理所有与过程使用相关的信息和数据(诸如过程数据库和过程能力基准)l提交产品的全部责任(包括质量)属于项目团队,但是SEPG使得项目团队能够轻松地遵循正确的过程。SEPG对项目的支持对项目的支持lSEPG还形成了一个独立地监督过程问题和质量问题的渠道,并通过这个渠道向高级管理层报告这些问题。l因为“过程不能依靠过程本身得到坚持”,所以SEPG有助于确保已义的过程得以实现并成为标准的实践。lSPEG要制定定期独立审计的计划,并对它们进行管理,以确保已定义的过程和标准得以遵守。Software Quality AdvisorlSEP
42、G除了提供过程培训外,还提供了一个与项目相关的成员,称为软件质量顾问称为软件质量顾问(softwarequalityadvisor)。l质量顾问帮助定义过程和遵循过程,确保过程得以遵守,帮助分析数据,并提供任何需的过程培训。l因为顾问非常精通于项目过程、指南等等,所以顾问的主要帮助在对项目规划的过程中。顾问还评审目计划,以确保它包含了全部的关键要素。软件项目管理过程软件项目管理过程l项目经理执行的一系列任务可以在项目管理项目管理(projectmanagement)过程中加以规定。l这是一个非常标准化的过程,有五个主要阶段:l项目启动l项目规划l项目执行l项目监控l项目收尾项目项目启动和规划规
43、划阶段l 执行项目启动和管理任务 制定一个包含进度的项目计划执行项目计划和进度计划的评审获得高级管理人员的授权定义和评审配置管理计划使项目团队适应项目管理计划l牵涉到客户、一个SEPG代表以及项目的业务经理l开始的标志是签定了项目合同或者得到了项目授权。而收尾的标志是已经用文档记录了项目计划,并且小组对它们进行了评审项目执行,监控阶段项目执行,监控阶段l在这一阶段团阶的其他成员也要参与。l开始的标志是项目计划已经完成并得到了批准,而结尾的标志是所有交付的工和产品为客户所接受。项目收尾阶段项目收尾阶段l主要是在客户接受工作产品之后对项目进行系统的总结。l这里的主要目标是从经验中进行学习,以便能够
44、改进过程,项目完成后的数据分析构成了这一阶段的主要任务;对度量标准进行了分析,过程资源(诸如模板和指南等材料可用于帮助管理过程本身)被收集起来供以后使用,并记录有关的经验教训。软件项目管理l公共知识库l软件配置管理l工作量与进度估算l质量规划l风险控制l项目启动l项目计划l项目评审l项目监控l项目收尾问题问题l每个项目经理都在他自己的领域内努力工作,力争建立最优的项目过程来执行其项目和产生他能够实现的估计l尽管其他团队在早些时候已经执行过类似的项目,并且他们的经验和数据能够极大地减轻项目经理的痛苦。但项目经理们不仅从头开始重新投资他们的规划工作,而且他们“计划”重蹈他们之前的项目经理犯过的同样
45、的错误解决方案解决方案l建立一个所有项目的管理人员都能够访问的公建立一个所有项目的管理人员都能够访问的公共知识库(共知识库(institutional memory)l过程数据库(过程数据库(process database, PDB)保存已完成项目的绩效数据。保存已完成项目的绩效数据。l过程能力基准(过程能力基准(process capability baseline,PCB)概括各个项目的绩效,定量地规定遵循过程所能达概括各个项目的绩效,定量地规定遵循过程所能达到的结果范围。如果遵循相同的过程,就可以预测到的结果范围。如果遵循相同的过程,就可以预测出项目的结果范围。出项目的结果范围。l过程
46、资源(过程资源(process asset)文档,诸如检查表、模板、方法以及所吸取的经验教训文档,诸如检查表、模板、方法以及所吸取的经验教训即总结以往经验的材料,它们能帮助项目经理和工程师有效即总结以往经验的材料,它们能帮助项目经理和工程师有效地使用过程地使用过程PDB中保存的数据中保存的数据l项目特征项目特征名称、项目经理、业务部门、遵循的过程名称、项目经理、业务部门、遵循的过程应用领域、平台、编程语言、应用领域、平台、编程语言、DBMSDBMS目标、风险、团队规模目标、风险、团队规模l项目进度和工作量项目进度和工作量l项目规模项目规模代代码码行行数数( (Line Line Of Of C
47、ode,LOC)Code,LOC);复复杂杂度度(简简单单/ /中中等等/ /复复杂杂);功功能能点(点(Function Point)l故障故障在各种故障检测任务中发现的故障数量在各种故障检测任务中发现的故障数量在不同阶段增加的故障数在不同阶段增加的故障数从从需需求求评评审审、设设计计评评审审、代代码码评评审审到到单单元元测测试试及及其其他他阶阶段段中中发发现现的的故障数故障数l备注备注关于估计的备注(如:将程序分类成简单关于估计的备注(如:将程序分类成简单/中等中等/复杂三类的指标)复杂三类的指标)关于风险管理的备注(如:风险认识在项目执行过程中的变化)关于风险管理的备注(如:风险认识在项
48、目执行过程中的变化)过程能力基准(过程能力基准(PCB)l过程的能力是指在遵循过程的情况下可对项目期望的结果范围;一个稳定的过程的能力可以由过程以往的绩效所决定。l过程能力基准表示在某些时间点上过程能力的量化瞬态图l软件质量;生产率;进度计划;工作量分布;故障引入率/排除率;质量成本过程资源过程资源l指南、检查表和模板指南、检查表和模板l简化过程使用,减少工作量,提高生产率简化过程使用,减少工作量,提高生产率l知识库知识库项目管理计划,配置管理计划,进度计划,培训材料等需求设计编码规范评审、检查和测试质量保证和生产率软件配置管理(CM)l对变更进行系统地控制l管理计算机软件产品的进化的纪律l给
49、出程序的状态:何时开始测试或发行?l处理并发变更;取消变更;防止未授权变更或删除l提供需求变更申请和程序变更之间的可跟踪性l取消需求变更;显示相关变更l收集当前系统的所有源代码、文档和其他信息配置管理机制l文件命名约定l版本控制l变更申请跟踪l访问控制l变更协调l变更登记配置管理过程l配置管理规划l状态转移管理l变更申请管理l状态监督l配置审计配置项l需求规范、设计文档、源代码、测试计划、测试脚本、测试程序、测试数据、项目使用的标准(诸如编码标准和设计标准)、验收计划lCM计划和项目计划等文档l用户手册等用户文档l培训材料等文档l合同文件(包括支持工具,诸如编译器或者内部工具)l质量记录(评审
50、记录、测试记录)lCM记录(版本记录、状态跟踪记录)l客户提供的任何产品或者购买的任何东西(如果将要成为发布的软件的一部分)配置管理规划l确定配置项和规定用来控制和实现其变更的程序l定义命名机制和编码机制,目录结构,访问限制,变更控制过程l定义CC或CCB的责任和权限,配置项状态的跟踪方法,将配置项移入基准库的时机状态转移管理l正在开发-正在评审-基线状态l在状态变更时将配置从一个目录移到另一个目录,然后在完成变更后建立新版本。变更申请管理l接受变更申请(影响分析之后)建立一种跟踪机制检查需要进行变更的配置项执行变更注册配置项在项目的整个生命期内维护该项目状态监督与配置审计l状态监督除了检查配
51、置项的状态外,项目还必须检查变更申请的状态。l配置审计的目的是确保项目执行确实遵循CM过程。工作量与进度估算l项目工作分解结构(WBS)l工作量估计工作量估计l进度估计进度估计l进度计划进度计划项目工作分解结构(WBS)l将项目及其主要交付结果层层分解,划分成一些较小、更容易安排时间与费用等单元活动,这种方法称之为项目工作分解结构。l项目工作分解结构有两种表达方式:图形式和清单式。项目工作分解结构的方法l按项目的主要交付结果分;l按产品本身的结构分;l按实施项目的时间顺序分;l按组织的职责分;工作量估计工作量估计l用多种方法进行估计,验证主要估计方法的正确性,减少风险l自底向上估计方法l自顶向
52、下估计方法l用例点方法自底向上估计方法l找出程序,并将程序分为简单(S)、中等复杂(M)和复杂程序(C)l根据PCB求得S/M/C程序的构建工作量。l用PDB中类似项目的数据定主S/M/C程序的构建工作量。l用PCB中S/M/C程序的平均构建工作量。l用项目特有因素优化S/M/C程序的构建工作量。l用S/M/C程序的工作量及其程序数求得总的构建工作量。l用PCB给定的工作量分布情况或者PCB中给定的类似项目,估计其他任务工作量和总工作量。l基于项目特有的因素优化估计。自顶向下估计方法l求以功能点为单位的软件的总规模。l用项目专用能力基准、基本过程能力基准或同类项目的生产率数据,确定项目的生产率
53、水平。l根据生产率和规模估计求总工作量估计。l使用过程能力基准或者同类项目中的工作量分布数据估计各阶段的工作量。l考虑项目特有的因素,优化工作量估计。用例点方法l事务定义为任务的原子集,要么全部执行,要么不个都不执行。l根据包含事务数将用例分为简单用例(1-3)、中等复杂用例(4-7)和复杂用例(7+)。l简单用例分配因子为5,中等复杂用例分配因子为10。而复杂用例分配因子为15。l根据应用中用例因子的加权和求得总的未经调整的用例点(unadjustedusecasepoint,简称UUCP)用例点方法l根据根据技术因素及其权重表技术因素及其权重表调整原始UUP以反映项目的复杂性和项目工作人员
54、的经验(技术复杂性因子TCF)。l根据根据团队的环境因素及其权重团队的环境因素及其权重表,并用05评定每个因素,计算出环境因子(EF)l最终的用例点(usecasepoint,简称UCP):UCP=UUCPTCFEF技术因素及其权重表技术因素及其权重表lTCF=0.6+(0.01TFactor)环境因素及其权重环境因素及其权重表lEF=1.4+(-0.03EFactor)环境因素及其权重环境因素及其权重l对于经验有关的因素,0表示没有该主题的经验,5表示专家水平,而3则表示平均水平。l对于积极性,0表示没有项目积极性,5表示积极性高。而3则表示平均水平。l对于需求的稳定性,0表示非常不稳定的需
55、求,5表示不变的需求,而3则表示中等稳定程序。l对于兼职型工作人员,0表示兼职型技术人员,5表示全职工作人员,而3则表示平均值。l对于编程语言的难度,0表示易掌握的编程语言,5表示非常难的编程语言,而3则表示一般难度的编程语言。用例点方法l进行工作量估计时,一般在整个生命期中为每个UCP分配20人时,由此得出的估计是很粗的。l需要对它按如下步骤做进一步精化。计算有多少个因素的值小于3,有多少个因素的值大于3。如果值小于3的因素总数很少,则每个UCP分配20人时是合适的。如果有很多,则每个UCP分配28人时。换句话说,每个UCP分配2028人时,而项目经理可以根据各种因素决定使用哪个值。进度估计
56、进度估计l即估算完成各个活动所需的时间。l影响活动工期的因素有:意外事件小组成员的工作熟练程度与工作效率资源供应情况l活动历时估算方法类比法专家判断法资料统计法资料严重不足时,可用经验公式估算大概的工期:(乐观的估计+4*最有可能的估计+最悲观的估计)/6绘制优先网络图l召集项目组的主要成员参加,集体绘制;l确保每一个活动都有前任活动与后续活动;l暂时不要考虑活动需要多长时间;l用及时贴、胶带纸或磁铁卡片等既可固定又可方便移动的道具。关键路径l在项目网络图中,从左到右把时间相加,时间最长的那条路径就是关键路径,它表明了完成项目所需的最短时间l关键路径在实施项目的不同线路上通过顺推(左到右)和逆
57、推(右到左)两种方式来确定l在非关键路径上的活动,在其最晚的完成时间,也就是及时贴右下角的数字大,它们之间的差即为浮动时间。l关键路径上的任务分配给最能干、最负责任的人员;有浮动时间的活动,训练新人,运用新技术l在项目进行过程中,关键路径有可能由于活动的推迟而发生变化进度计划进度计划l建议的进度应当在以人月为单位的总工作量的平方根左右;例如,如果估计的工作量为50人月,则一个由78个专职工作78个月的进度计划比较合适。l一般来说,设计大概占进度的40%(20%用于概要设计,20%用于详细设计),构建占40%,而集成和系统测度占20%。设计、构建、集成和测试阶段的人力分配分别是1:2:1(因此这些阶段的工作量分配为1:2:1)。质量规划l软件质量:已交付软件中每个单位规模的故障数。l软件故障:某种使软件表现出与客户的要求或者需要不一致的方式进行运转的问题l故障可以在软件过程的任何阶段引入;故障排除成本与故障潜伏时间成正比;在每个可引入故障的阶段之后执行质量控制l故障排除任务包括需求评审、设计评审、代码评审、单元测试、集成测试、系统测试和验收测试质量管理的量化l故障排除效率(defectremovalofficiency,简称DRE):QC任务检测到的故障数占现有总故障数的百分比。l故障预测(defectpredition)。这种方法根据已交付软件的故障密度设定质量目标。