[转]简述CMMI 2级的7个PA

时间:2020-12-02 17:41:33

一个处于"无序化"生产的软件公司,要进行过程改进,首要是改进什么呢?

[转]简述CMMI 2级的7个PA
原文出处----http://www.umlonline.cn/school/thread-85-1-1.html

做任何事情都需要计划,做软件开发这样复杂的工作更加需要计划,所以2级中有项目计划(PP)以及项目计划跟踪与控制(PMC)两个PA,分别对指定计划以及计划的执行给出了详细的标准。
人是会死的,需求是会变的。需求变更是每个软件公司最头疼的问题,需求变更也是导致项目进度拖延、成本高涨的主要原因。如何管理好需求呢?需求管理(RM)给出了详细的指引。
软件生产越来越复杂,有时候我们需要采购一些组件,用于项目中。另外一个方面,纯软件的项目比例也慢慢缩小,很多软件是基于一定的硬件的,而不少硬件也是需要采购的。如何采购到合适的软硬件,如何保证采购工作不影响项目成功呢?供应商协议管理(SAM)会给你一个解答。
软件是比较难进行量化管理的,但作为公司的管理者,总会想知道成本、进度、缺陷方面的一些数据,以了解项目的情况。CMMI2级,已经对度量提出了要求,详细情况见度量(MA)这个PA。
如何保证软件生产过程中各类工作产品协调一致,配置管理(CM)会给出指导。
如何保证每个工作产品以及生产工作产品的过程是遵照规定执行的呢?产品与过程质量保证(PPQA)有明确的指引。

2级一共有以下PA:
1)项目计划(PP)
2)项目计划跟踪与控制(PMC)
3)需求管理(RM)
4)供应商协议管理(SAM)
5)度量(MA)
6)配置管理(CM)
7)产品与过程质量保证(PPQA)

1 项目计划(Project Planning)

大家都明白这样的一个道理:做事情要有计划,有一个不成熟的计划总比没有计划要好,软件开发这么复杂的活动,更加需要计划。那么应该怎样做好一个计划呢?

如果对项目的范围、规模、性质、任务、工作量、费用等都不了解的情况下,是不可能做出计划的,所以做好计划的第一步就是要把这些东西搞清楚。
PP这个PA的第一个Specific Goals,中文大意是:建立和维护用于项目计划的各类参数的估算,英文原文是:Estimates of project planning parameters are established and maintained.

下面我们再详细看看,到底做计划之前,需要搞清楚什么东西?

SP1.1:Estimate the Scope of the Project. 估计项目的范围,如项目的目标、任务、工作产品等。这里通常就是指WBS(top-level work breakdown structure),试想一下,我们做计划之前不是常常要先对任务进行分解吗?

SP1.2: Establish Estimates of Work Product and Task Atrributes. 估计工作产品及任务的属性。做计划的时,我们会先列出这个项目要产生的工作产品,以及这个项目要完成的任务等,然后我们需要分析这些任务、工作产品的规模、工作量、复杂度、代码行数等所谓的属性。CMMI并没有规定一定要分析什么属性,具体由企业自己来选择适合自己需要分析的属性。在CMM模型的时候,项目计划这个PA硬性规定了需要分析的几大属性,CMMI模型中已经改进,不再强制要求。分析这些属性的目的是对任务、工作产品等更加了解,以便于做好计划。

SP1.3 Define the project life-cycle phases upon which to scope the planning effort. 定义项目生命周期。写计划的其中一个步骤是要考虑用什么生命周期模型,是瀑布型?螺旋?还是别的?选择怎样的模型,CMMI并没有规定,企业可以选择常见的生命周期模型,也可以自己定义自己的模型。

SP1.4 Estimate the project effort and cost for the work products and task based on estimation rationale. 可以把SP1.4看作是SP1.2的延续,要根据工作产品及任务的属性估算出项目的规模和成本。

SG1说的是如何准备估算的问题,为做计划打好基础,而SG2说的就是要建立计划了。

SG2:A project plan is established and maintained as the basis for managing the project. 中文大意是:建立和维护项目计划,这个计划要作为项目管理的基础。那么项目计划要包含什么内容呢?

SP2.1 Establish and maintain the project's budget and schedule. 建立和维护项目的预算和进度。

SP2.2 Identify and analyze project riskes. 识别和分析项目风险。

SP2.3 Plan then managemanet of project data. 计划对项目数据的管理。
什么是"项目数据"呢?在项目开发过程中,会产生各类文档、代码等,我们再写项目计划的时候,要考虑好如何管理开发过程中产生的工作产品、数据等,例如存放的位置、访问权限控制。通常我们需要文档分类存放,设定一些个人工作区、项目组共享区等,计划好这些东西的管理,目的就是为了让工作更加有条理。
细心的人可能会发现,这个SP怎么有点象CM这个PA呢?没错,CM也讲的也是管理工作产品,与这个SP是有相似之处的,CM是从配置管理的角度来讲述的,而这个SP就从项目管理的角度来讲述的。详细情况,我们再论述CM的时候再谈。

SP 2.4 Plan for necessary resources to perform the project . 计划必要的资源来执行计划。
资源包括:人、计算机、设备、工具、办公室等。

SP 2.5 Plan for knowledge and skills needed to perform the project. 计划需要的知识和技能来执行计划。
这点经常是做计划的时候被遗忘的,项目经理应该根据项目组成员情况和项目的特点,找出项目组还没有掌握的知识和技能,安排需要的培训,让项目组成员掌握相应的技能。

SP 2.6 Plan the involvement of indentified stakeholders. 识别干系人并计划他们的参与。
计划要考虑客户、高层领导、与本项目相关的第三方等相关人员可能的参与,规划他们参与的时间点,参与的工作产品等。例如:要计划客户什么时候参与需求调研,计划客户什么时候需要准备好软硬件环境,以便安装系统等。

SP 2.7 Establish and maintain the overall project plan content. 建立和维护全面的项目计划内容。就是就是要把上面提到的SP2.1到SP2.6的内容全部要写下来,要文档化。

到现在为止,似乎项目计划就完成了,是这样吗?项目计划只由一个人制定的吗?只跟一个人有关系吗?
SG3:Commitments to the project plan are established and maintained. 建立和维护对项目计划的承诺。项目计划要被相关的人评审和认可。

SP 3.1 Review all plans that affect the project to understand project commitments. 项目计划可能会有好多个子计划,如开发计划、测试计划、培训计划等,这些计划都应该被相关人员复查,保证大家理解一致。

SP 3.2 Reconcile the project plan to reflect available and estimated resources. 调整计划,使计划在有限的资源内是可行的。计划要受到资源的限制,通过评审要发现不协调的地方,适当调整计划,保证计划可行。

SP 3.3 Obtain commitment from relevant stakeholders responsible for performing and supporting plan excecution. 得到相关人员的承诺,保证执行和支持计划。计划通过评审,就以为这所有参加评审的人承诺按照计划的要求完成自己的任务,同时他也会支持他人按计划完成任务。

PP有三个SG,分别是建立估算、建立计划、取得承诺,大家如果仔细阅读每个SP,大家会发现做好一个计划是不容易的,要考虑的东西很多。另外,还必须用这个计划来管理项目,更详细的内容我们看计划跟踪与控制这个PA吧。

2 项目跟踪和控制(Project Monitoring and Control)

计划不是用来看的,是用来执行的。PP讲述了如何做计划,PMC讲述的就是如何跟踪计划的执行并在实际情况偏离计划时采取纠正行动。

我们先看看SG1,SG1讲述的是如何根据计划来跟踪计划的执行问题。
SG1: Actual performance and progress of the project are monitored against the project plan.
中文大意是:根据计划,跟踪项目的实际性能和过程。

那么我们要跟踪计划什么内容呢?简单的说,计划里面写了什么东西,就要跟踪什么东西。我们回顾一下PP是怎样说项目计划有什么内容的?计划要有估算、进度、数据包的管理、技能准备、干系人的参与等内容,所以项目跟踪也需要踪以上内容。

SP 1.1 Monitor the actual values of the project planning parameters against the project plan. 项目计划的参数就是指项目的范围、规模、性质、任务、工作量、费用等,每个企业都可以根据实际需要确定这些参数。在项目进行过程中,要密切关注这些参数的实际情况与计划估计的情况是否一致。

SP 1.2 Monitor commitments against those identified in the project plan. 简单地说就是要跟踪项目成员承诺的任务是否按时间按要求完成,跟踪干系人是否能完成承诺的事情,如:第三方是否能如期交付软件、硬件、接口等。

SP 1.3 Monitor risk against those identified in the project plan. 跟踪项目计划中已经识别出来的风险,要考虑风险是否发生了变化,同时也要考虑有没有新的风险产生。

SP 1.4 Monitor the management of project data against the project plan. 项目计划中计划了数据包的管理,实际项目进展中,要落实这些工作。什么是数据包,请参考"项目计划"这个帖的说明。

SP 1.5 Monitor stakeholder involvement against the project plan. 跟踪项目干系人的参与。如计划了什么时候要开始什么任务,什么时候客户要开始准备系统环境等,需要依据计划去跟踪。

SP 1.6 Periodicall review the project's progress,performance,and issues. 定期检查项目的进度、性能和问题。定期并不是指按照一定周期,只有有计划去检查,在某些时间点去做检查,就叫定期。另外什么是项目性能?简单的说就是项目按计划执行的实际能力,如任务完成能力、项目组成员的实际水平、文档的质量、代码的质量等。那什么是"issues(问题)"呢?凡是影响项目不能按计划进行的情况,都是问题。

SP 1.7 Review the accomplishments and results of the project at selected project milestones. 在项目选定的里程碑检查项目情况。项目里程碑一般会是:需求确定、架构设计完成、软件发布等关键路径上的关键节点。SP1.6强调的是定期去检查项目状况,SP1.7强调的是要在关键节点检查项目状况,两个SP是有某种程度的重叠的。

SG1讲述的是如何跟踪计划执行的,而SG2讲述的是当实际情况明显偏离计划的时候,要采取纠正行动。

SG2: Corrective actions are managed to closure when the project 's performance or results deviate significantly from the plan.
中文大意是:项目的性能或者结果明显偏离计划时,要采取纠正措施保证按计划进行。

SP 2.1 Collect and analyze the issues and determine the corrective actions necessary to address the issues. 收集和分析问题,并确定必要的纠正措施来解决这些问题。

SP 2.2 Take corrective action on identified issues. 针对识别出来的问题实施纠正行动。

SP 2.3 Manage corrective actions to closure. 管理纠正行动保证问题被解决。

实际情况与计划情况有偏差是正常的,原因可能是计划本身做得不太好,也可能是实际工作没有到位。SG2强调的是要分析原因,找出问题根源,采取适当的行动,解决问题,使项目按照计划进行。
通常情况下,偏离计划的情况大多数是进度推迟、预算变大等超出计划估计的情况,作为项目管理者不应该轻易改变计划,而使计划与实际一致,而是应该努力改善实际情况,否则计划的意义就丧失了。但凡事也有例外,确实有可能做计划的时候定了一个"不可能完成"的计划,这是就确实需要变更计划。但凡是涉及到预算变更、关键节点推迟等关键变化,公司应该制定严格的变更控制制度,公司高层应该参与这些关键变更的评审,以保证计划的严肃性。

在3级的IPM还有4级的QPM,做项目计划的时候合理性会越来越得到保障,另外用于管理项目的参数也会越来越多,并且会有量化的管理目标。详细的内容以后再论述。

3 需求管理(Requirements Management)


人是会死的,需求是会变的。相信大家都经历了很多需求变更的痛苦,项目被拖延,成本高涨,十有七八是需求管理没有做好导致的。有哪一些需求管理方面的常见问题呢,这里列举一下:
1.因为项目进度赶等原因,在很多需求还没有明确情况下,便开始开发的工作。
2.开始客户只能提出模糊的需求,客户喜欢先让你做个东西给他看,然后他才可能逐渐提出真正的需求,而需求调研人员,对此没有什么好的处理办法。
3.客户以种种原因不签需求,项目组在不签需求的情况下,便开始开发工作。
4.客户不承认之前提出来的需求,项目组又不能得失客户,项目成员苦不堪言。
5.需求经常变化,无法控制。
6.设计、代码与需求不对应,特别是需求变更时,不知道应该修改哪部分,也不知道会有哪些影响。
......

这方面的问题可真是"罄竹难书"了,需求管理这个PA提供了能解决以上大部分问题的最佳实践。

RM(Requirements Management)只有一个Specific Goals:Manage Requirements
Requirements are managed and inconsistencies with project plans and work products are identified.

中文大意是:
管理需求并且识别出需求与项目计划、工作产品不一致的地方。
这句话有两层意思:
1.需求要被管理,被管理的意思又有两层:一是需求要被确认,二是要控制需求变更
2.需求要用来指导下游的工作产品,如:计划、设计、测试等

下面简单介绍一下这个Specific Goals下的5个Specific Practice:

第一个SP是:理解需求。
开发者应该理解客户的需求,如果这点做不到,后面的工作是没有意义的。所以,那种在没有理解需求的情况下,就仓促开发的做法是不合适的。
当然,如果想通过做原型来获取需求不在此列,另外,大家也千万不要误解,在没有完全理解需求前一定不能开展开发工作,如果部分需求已经掌握,有部分需求还没有掌握,那也是可以先开展已掌握部分需求的设计、编码工作的,这时需要考虑没有确定部分的需求对这些工作可能带来的影响。
这个SP的英文原文是:Develop an understanding with the requirements providers on the meaning of the requirements.

第二个SP是:确认需求,就是要和客户签署需求。
我想大家都非常理解这点的重要性,但大家可能会说,说得容易,客户就是不签,咋办?客户不签需求,主要是两方面的原因:
1)客户不确定需求。
2)客户担心签了需求后,他就不好变了。
对于原因一,解决办法就是大家需要把SP1理解需求做好,如何把需求理解做好,更详细的内容可以参考3级的需求开发(RD),这里先不详细解说。
对于原因二,要消除客户的顾虑,首先签署需求不是单方面的约束,其实也是对开发方的约束,就是说我们要承诺做出这样的一个东西,如果做不出来,客户可以追究我们的责任,另外一个方面,要跟客户说清楚,需求是可以变的,现在签署只是标志着当前的一个工作里程碑,当前签订的需求,是我们后续工作的一个基准。
大家可能又会问如果只能确定一部分需求,客户还是不愿意签,咋办?那就先签确定部分的需求呗!
这个SP的英文原文是:Obtain commitment to the requirements from the project participants.

第三个SP是:管理需求变更。
需求不是不可以变,只不过需要管理。客户今天说改这,明天改那,后天又不算数,咋办?怎样才算管理需求变更呢?
1.要充分理解客户提出来的需求变更,深究其原因,不能客户一说变就变,超过一半的客户变更要求,其实都是不合理的,或者是有其它更好的替代办法的。
2.客户提出来的变更要求,要书面记录,并让客户确认,和客户讨论需求变更过程来往的邮件要保存好,和客户面谈、聊电话后,要发邮件总结当此会谈达成的要点共识,总之就是要有书面记录。
3.客户提出来的需求变更,要分析所有的影响,包括增加多少的工作量,需要修改或者增加哪些设计文档代码等,可能会引发什么风险等。所有这些要列出清单,反馈给客户,让客户确认。
4.如果需求变更导致项目成本和进度变化太大,超出可承受范围,则需要高层领导出面,和客户协商调整费用。
这个SP的英文原文是:Manage changes to the requirements as they evolve during the project.

第四个SP是:维护需求的双向跟踪。
需求是用来指导后续工作的,所以需求与计划、设计、编码、测试等后续工作都需要维护好对应的关系,这个工作与第三个SP是关系密切的,如果这个关系没有维护好,那么SP1.3也不可能做好。
这样是不是双向跟踪就能做好呢?不是,双向跟踪的意思不是由A能找到B,由B又能找到A就叫双向跟踪。双向跟踪是只纵向和横向跟踪,前面提到的只是纵向跟踪,纵向跟踪的意思是上下游工作产品之间的跟踪关系。而横向跟踪指的是需求与需求之间的关系、设计与设计之前的关系、代码与代码之间的关系等。其中一个需求变化了,有可能影响另外一些需求,其中一个设计变了也可能影响另外一些设计。
所以,这个双向跟踪网络,将会是一个很强的网络,任何一点发生变化,能找出全部受牵连的地方。
这个SP的英文原文是:Maintain bidirectional traceability among the requirements and the project plans and work products.

第五个SP是:识别出需求与下游工作产品不一致的地方。
这里有两层意思:
1.需求变更时,利用双向跟踪表找出需要修改的地方,并用跟踪表来发现不一致的地方并调整。
2.编写或者修改计划、设计、代码、测试计划、测试用例等需求下游工作产品的时候,要注意要与需求保持一致。
这个SP的英文原文是:Identify inconsistencies between the project plans and work products and the requirements.

4 供应商协议(Supplier Agreement Management)