软件项目管理案例教程(第5版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 传统软件项目管理

传统项目管理是指基于以传统瀑布模型为代表的开发模型做完整的项目计划,期望按照计划执行项目可以达到项目目标。传统项目管理通常基于项目管理知识体系(Project Management Body Of Knowledge,PMBOK)的管理模式。

1.3.1 项目管理知识体系

以前,有人认为项目经理是一种“意外的职业”。因为通常是某人在项目中先承担了项目责任,可能是从技术开发开始,然后随着项目经验的逐步增加,积累了一定的技术管理经验,最后顺理成章地当上项目经理。但是管理项目的有关知识不是通过系统学习得来的,而是在实践中摸索出来的,在摸索的过程中可能会导致严重损失。近年来,企业在减小项目管理意外性方面已经有了很大进步。很多企业的决策者逐渐认识到项目管理方法可以帮助他们在复杂的竞争环境中取得成功。为了减少项目管理的意外性,许多机构或者企业开始要求员工系统地学习项目管理技术,努力成为经过认证的项目管理人员。

项目管理专业人员资质认证(Project Management Professional,PMP)是美国项目管理学会(Project Management Institute,PMI)开发并负责组织实施的一种专业资格认证。PMP可以为个人的事业发展带来很多好处。该项认证已经获得100多个国家的承认,可以说是目前全球认可程度较高的项目管理专业认证,也是项目管理资格重要的标志之一,具有国际权威。在很多国家,特别是发达国家,PMP已经被认为是合格项目管理的标志之一。

PMI推出的《项目管理知识体系指南》是PMP考试的关键材料,为所有的项目管理提供了一个知识框架。PMBOK涵盖了项目管理的知识领域,1996年发布第1版,每四年更新一版,每一次更新都是全球项目管理从业者所关心的一件大事。2021年7月,《PMBOK指南》(第7版)发布。它以11种语言在全球发行超过500多万册,被奉为项目管理“红宝书”,它的每一次改版、更新都是在全球实践、反馈、建议的基础上完成的,它跨越地域、语言、种族,成为国际通用的项目管理普适标准。

《PMBOK指南》(第6版)及之前的版本基本是五大过程组和知识领域的思路,第5版之前是九个知识领域,第5版及之后是十个知识领域,每个知识领域包含一些过程。《PMBOK指南》(第7版)的变化是颠覆性的,从传统的五大过程组与十大知识领域转向了全新的十二大原则与八大绩效域。

1.3.2 《PMBOK指南》(第6版)

2017年9月6日,《PMBOK指南》(第6版)在万众期待中问世,同时,《敏捷实践指南》配套发布。《PMBOK指南》(第6版)包括项目管理的10个知识领域、5个标准化过程组及49个模块。它们之间有一定的对应关系,这是PMBOK的核心。

如图1-4所示,10个知识领域分别是项目集成管理(project integration management)、项目范围管理(project scope management)、项目进度管理(project schedule management)、项目成本管理(project cost management)、项目质量管理(project quality management)、项目资源管理(project resource management)、项目沟通管理(project communication management)、项目风险管理(project risk management)、项目采购管理(project procurement management)、项目干系人管理(project stakeholder management)。

图1-4 项目管理知识领域

项目管理的知识领域分布在项目进展过程中的各个阶段,可以这样描述它们之间的关系。

• 为了成功实现项目的目标,首先必须设定项目的工作和管理范围,即项目范围管理(what to do)。

• 为了正确实施项目,需要对项目的时间、质量、成本三大目标进行分解,即项目进度管理(when)、项目质量管理(how good)、项目成本管理(how much)。

• 在项目实施过程中,需要投入足够的人力、物力资源,即项目资源管理(people and motivation)、项目采购管理(partners)。

• 为了对项目团队人员进行管理,让大家目标一致地完成项目,需要沟通,即项目沟通管理和相关方(干系人)管理(understand and be understood)。

• 项目在实施过程中会遇到各种风险,所以要进行风险管理,即项目风险管理。

• 项目管理一定要协调各个方面,不能只顾局部的利益和细节,所以需要集成管理,即项目集成管理。

1.项目集成管理

项目集成管理包括为识别、定义、组合、统一和协调各项目管理过程组的各个过程和活动而开展的过程与活动。如图1-5所示,项目集成管理贯穿于项目的全过程。项目集成管理是指在项目的整个生命周期内,协调项目管理其他各管理知识领域,将项目管理的方方面面集成为一个有机的整体,保证项目总目标的实现。项目集成管理的目标在于对项目中的不同组成元素进行正确、高效的协调,而不是所有项目组成元素的简单相加。

图1-5 项目集成管理知识领域

2.项目范围管理

项目范围管理包括确保项目做且只做所需的全部工作以成功完成项目的各个过程。如图1-6所示,项目范围是为了交付具有特定属性和功能的产品而必须完成的工作。项目范围管理用以保证项目包含所有需要完成的工作,以顺利完成项目所需要的所有过程。项目范围管理主要定义项目需要完成的工作,确保项目包含且只包含所有需要完成的工作。项目范围管理可以控制项目包含和不包含什么内容。

图1-6 项目范围管理知识领域

3.项目进度管理

项目进度管理包括为管理项目按时完成所需的各个过程,如图1-7所示。按时提交项目对项目经理来说是较大挑战,时间是灵活性最小的控制元素,进度是导致项目冲突的最主要原因,尤其是在项目的后期,所以项目管理者学习项目进度管理过程尤为重要。

图1-7 项目进度管理知识领域

4.项目成本管理

项目成本管理包括为使项目在批准的预算内完成而对成本进行规划、估算、预算、融资、筹资、管理和控制的各个过程,是在项目具体实施过程中,为了确保完成项目所花费的实际成本不超过预算成本而展开的管理活动,如图1-8所示。

5.项目质量管理

项目质量管理包括把组织的质量政策应用于规划、管理、控制项目和产品质量要求,以满足相关方期望的各个过程,如图1-9所示。项目质量管理要求保证该项目能够兑现它关于满足各种需求的承诺,涵盖与决定质量工作的策略、目标和责任的全部管理功能有关的各种活动。

图1-8 项目成本管理知识领域

图1-9 项目质量管理知识领域

6.项目资源管理

项目资源管理包括识别、获取和管理所需资源以成功完成项目的各个过程,如图1-10所示。

7.项目沟通管理

项目沟通管理包括为确保项目信息及时且恰当地规划、收集、生成、发布、存储、检索、管理、控制、监督和最终处置所需的各个过程,如图1-11所示。确定项目人员的沟通需求和需要的信息,即确定谁需要什么信息、什么时候需要,以及如何获取这些信息。

8.项目风险管理

项目风险管理包括风险管理规划、风险识别、定性风险分析、定量风险分析、规划风险应对、风险应对计划和风险应对实施以及风险监控的各个过程,如图1-12所示。项目风险管理是决定采用什么方法和如何规划项目风险的活动,是指对项目风险从识别到分析乃至采取应对措施等一系列过程。它包括将积极因素所产生的影响最大化和使消极因素产生的影响最小化两方面内容。

9.项目采购管理

项目采购管理包括从项目团队外部采购或获取所需产品、服务或成果的各个过程,如图1-13所示。项目采购管理包括从执行组织之外获取货物和服务的过程。为了满足项目的需求,项目组织需要从外部获取某些产品,这就是采购。采购的意义是广义的,可能是采购物品,也可能是采购服务(如软件开发等),还包括收集有关产品的信息,以进行择优选购。

10.项目干系人管理

项目干系人管理也称为项目相关方管理,包括用于开展下列工作的各个过程:识别影响或受项目影响的人员、团队或组织,分析相关方对项目的期望和影响,制定合适的管理策略来有效调动相关方参与项目决策和执行。如图1-14所示。

图1-10 项目资源管理知识领域

图1-11 项目沟通管理知识领域

图1-12 项目风险管理知识领域

图1-13 项目采购管理知识领域

图1-14 项目干系人管理知识领域

项目干系人管理主要通过沟通管理满足项目相关人员的需求和期望,同时解决问题。项目干系人管理还关注与干系人的持续沟通,以便了解干系人的需要和期望,解决实际发生的问题,管理利益冲突,促进干系人合理参与项目决策和活动。应该把干系人满意度作为关键的项目目标来进行管理。

按照项目管理生命周期,项目管理知识体系分为5个标准化过程组,也称为项目管理生命周期的5个阶段,即启动过程组、计划过程组、执行过程组、控制过程组、结束过程组(如图1-15所示)。每个标准化过程组由一个或多个过程组成,它们的关系定义如下。

• 启动过程组:主要是确定一个项目或一个阶段可以开始了,并要求着手实行;定义和授权项目或者项目的某个阶段。

• 计划过程组:为完成项目所要达到的商业要求而进行的实际可行的工作计划的设计、维护,确保实现项目的既定商业目标。计划基准是后面跟踪和监控的基础。

• 执行过程组:根据前面制订的基准计划,协调人力和其他资源,去执行项目管理计划或相关的子计划。执行过程存在两个方面的输入,一个是根据原来的基准来执行,另一个是根据监控中发现的变更来执行。主要变更必须要得到整体变更控制批准后才能够执行。

• 控制过程组:通过监督和检测过程确保项目达到目标,必要时采取一些修正措施。集成变更控制是一个重要的过程。

• 结束过程组:取得项目或阶段的正式认可并且有序地结束该项目或阶段,也称为收尾过程组。向客户提交相关产品,发布相关的结束报告,并且更新组织过程资产并释放资源。

各个过程组通过其结果进行连接,一个过程组的结果或输出是另一个过程组的输入。其中,计划过程组、执行过程组和控制过程组是核心管理过程组。表1-1所示为PMBOK的5个标准化过程组、10个知识领域、49个模块之间的关系。

图1-15 项目管理的5个过程组

表1-1 《PMBOK指南》(第6版)的5个标准化过程组、10个知识领域、49个模块之间的关系

(续)

1.3.3 《PMBOK指南》(第7版)

《PMBOK指南》(第7版)不同于《PMBOK指南》以往的版本,以往的版本是对上一个版本进行更新和替换。2021年7月1日,令人翘首以待的《PMBOK指南》(第7版)终于发布了。总体而言,《PMBOK指南》(第7版)集百家之所长,成一家之所言。它的发布对项目管理界来说具有划时代的意义,也意味着全球最大的项目管理协会PMI正式地、完全地、完整地接受以往的项目管理五大过程组转变为以项目管理原则(principle)为导向的价值理念,由原来的项目科学化管理理念转为项目人心塑造和建设的理念。表1-2给出了《PMBOK指南》第6版与第7版的对比。

表1-2 《PMBOK指南》第6版与第7版的对比

《PMBOK指南》(第7版)可谓标新立异,完全摒弃了以往项目管理过程组与知识领域相结合的风格,采用原则+绩效域的新架构进行编写。确立项目管理12项原则和8大绩效域,以一种柔性的原则体系打破原有约束性的过程组体系,以一组相互关联的项目管理活动(即绩效域)集成原有的项目管理知识领域,如图1-16所示。

图1-16 12项原则指导8大绩效域

此次PMI对《PMBOK指南》的修订,也让我们意识到项目管理工作不仅是创造产出(output)和可交付物(deliverable),而且让产出和可交付物被客户、业主所使用,被社会和市场接受,创造有利的价值(value),价值交付系统如图1-17所示。而价值也不仅是财务经济价值,也应该考虑社会、环境的增量价值,当然在预期、衡量价值时,《PMBOK指南》(第7版)中也提到不能因为对市场的短视,让短期的、一时的价值增长掩盖长期的健康发展。

图1-17 价值交付系统

面对日益变化的外部环境和越来越复杂的项目,传统的基于一套固定模式的项目管理“套路”需要改进,裁剪恰到好处地解决了这种固化的管理痛点,对项目管理方法和过程进行量身定制(裁剪的本意),使其更加符合项目管理的环境和情境。《PMBOK指南》(第7版)用一个章节详细描述对生命周期和开发方法、过程、参与互动、模型、工件、方法和绩效域的裁剪,唯独12项原则不可裁剪[虽然《PMBOK指南》(第7版)没有明确指出],但是12项原则可以指导进行裁剪。158个模型、工件和方法提供了项目管理实践的小方法、小技巧,能让我们在简化的思维模型、完善的工件和方法中事半功倍地理解手中的工作以及项目管理中发生的事情,更高效地完成项目管理工作,提升项目的成果和绩效。

《PMBOK指南》(第7版)乍看改变了《PMBOK指南》延续20多年的知识领域和五个大过程组的思路,而PMI给出的说法是《PMBOK指南》(第7版)将会长期与第6版共存,也就是说《PMBOK指南》(第7版)不是对第6版的推翻和替代,而是对第6版中项目管理精髓的延伸,是对第6版知识域与过程组高层次、高维度的承接。

绩效域是一组对有效地交付项目成果至关重要的相关活动,《PMBOK指南》(第7版)将项目管理相关活动分为8组,构成8大绩效域。每个绩效域就内容结构而言,有其固定的三段式框架格式:首先是该绩效域的定义与成果的概要描述,其次是该绩效域的核心活动内容描述,最后是该绩效域与其他绩效域之间的相互作用,以及对于绩效域成果的检查。

• 干系人绩效域。项目由人来做且为人而做,人是项目管理中的核心要素,而干系人在人这个要素中扮演了关键的角色。干系人绩效域主要描述干系人在项目管理中的重要作用,以及识别、理解、分析、优先级排序、参与及监督干系人等一系列重要工作。其内容主要是《PMBOK指南》传统版本中干系人管理相关内容的拓展。

• 团队绩效域。团队绩效域大致对应《PMBOK指南》(第6版)第3章中项目经理相关内容与第9章中人力资源管理相关内容,涵盖了团队管理与领导力提升。该绩效域探讨了集中式团队管理与分布式团队管理的区别,强调了建立团队文化的重要作用,以及团队管理中决策与冲突解决的要求等内容。

• 开发方法和生命周期绩效域。开发方法和生命周期绩效域主要是关于项目生命周期的选择与开发方法的评估。该绩效域描述了从预测型到混合型再到适应型生命周期的频谱,以及开发、节奏和生命周期之间的关系,选择开发方法时所需考虑的变量等内容。

• 规划绩效域。规划绩效域大致对应《PMBOK指南》(第6版)规划过程组的一系列相关工作。为了交付最终的可交付成果和项目成果,需要对项目的范围、进度、成本、质量、资源、沟通、采购等做相应的规划与估算工作。规划时需要考虑不同项目生命周期的特点,以采用不同的开发方法。

• 项目工作绩效域。项目工作绩效域大致对应传统的执行过程组中的一系列相关工作。该绩效域涉及平衡各种制约因素、建立合理的过程与过程优化、获取资源、招标采购,以及知识管理等内容。

• 交付绩效域。交付绩效域大致对应传统的项目需求、范围、质量管理、结束过程组,以及收益实现与价值交付等一系列相关工作,其中也包含敏捷的交付方式。

• 测量绩效域。测量绩效域大致对应传统的项目监控过程组的一系列相关工作,其中挣值管理依然扮演着非常重要的角色,同时也采用了不少敏捷方法。除了项目过程中的绩效测量外,还兼顾了与项目收益和价值相关的测量。

• 不确定性绩效域。不确定性绩效域主要由VUCA环境因素与风险管理两部分内容组成。对于VUCA,《PMBOK指南》(第7版)分别进行了深化阐述,针对不确定性(Uncertainty)强调了韧性,针对模糊性(Ambiguity)强调了渐进明细,针对复杂性(Complexity)强调了系统解耦与迭代,针对易变性(Volatility)强调了备选方案与储备。对于风险管理则基本沿用了传统方法,强调机会的把握与威胁的应对。

总体来看,《PMBOK指南》(第7版)中的8大绩效域除了大幅增加了VUCA与敏捷相关内容外,并没有摒弃以前版本的传统内容,基本上是对传统版本中五大过程组和十大知识领域的众多知识点加以解构与重构,构建出全新的以交付价值为导向的管理理念。8个绩效域框架如图1-18所示,项目所处环境的不确定性(风险)程度与自身特点决定了生命周期与开发方法的选取,无论采用哪种开发方法,都需要通过PDCA(Plan-计划、Do-执行、Check-检查、Act-处理)循环,即规划、项目工作、测量从而最终交付项目成果。在项目开展过程中,人是最重要的因素,项目需要干系人的有效参与,并需要通过激励团队来高绩效实施,从而达成目标。

图1-18 8大绩效域的理解框架

1.3.4 传统软件项目管理知识体系

1.软件过程定义

所谓过程,简单来说就是人们做事情的一种固有的方式。做任何事情都存在过程,小到日常生活中的琐事,大到工程项目。对于做一件事,有经验的人对完成这件事的过程很了解,知道完成这件事需要经历几个步骤、每个步骤都完成什么事,以及需要什么样的资源和什么样的技术等,因而可以顺利地完成工作。没有经验的人对过程不了解,就会有无从着手的感觉。如图1-19所示,如果项目人员只将关注点放在最终的产品上,不关注期间的开发过程,那么不同的开发队伍或者个人可能会采用不同的开发过程,结果导致开发的产品质量不同,有的产品质量好,有的产品质量差,这完全依赖于个人的素质和能力。

图1-19 关注结果

反之,如图1-20所示,如果项目人员将项目的关注点放在项目的开发过程上,不管谁来做,也不管什么需求,均采用统一的开发过程,即企业的关注点在过程,则经过同一企业过程开发的软件,产品的质量是一样的。可以通过不断提高过程的质量来提高产品的质量。这个过程是公司能力的体现,是不依赖于个人的。也就是说,产品的质量依赖于企业的过程能力,不依赖于个人能力。

图1-20 关注过程

不能把软件过程简单地理解为软件产品的开发流程,因为我们要管理的并不只是软件产品开发的活动序列,而是软件开发的最佳实践。软件过程包括流程、技术、产品、活动间关系、角色、工具等,是软件开发过程中的各方面因素的有机结合。因此,在软件过程管理中,首先要进行过程定义,将过程以一种合理的方式描述出来,并建立企业内部的过程库,使过程成为企业内部可以被重用的共享资源。要不断对过程进行改进,以不断地改善和规范过程,从而帮助企业提高生产力。如果将一个软件的生产类比作一个产品的生产,那么生产线就是过程,产品按照生产线的规定进行生产。

软件开发的风险之所以大,是因为软件过程能力低,其中关键的问题在于软件开发组织不能很好地管理其软件过程,为此必须强调和加强软件开发过程的控制和管理。软件项目的开发过程主要有系统调研、需求分析、概要设计、详细设计、编码、测试、实施与维护等。不同软件项目的过程大体相同,但不同项目的每一个过程所包含的一系列具体的开发活动(子过程)千差万别,而且不同的项目组采用不同的开发技术,使用不同的技术路线,其开发过程的侧重点也不一样。因此项目经理在软件项目开发前,需要根据所开发的软件项目和项目组的实际情况,建立起一个稳定、可控的软件开发过程模型,并按照该过程来进行软件开发,这是项目成功的基本保证。

软件过程是极其复杂的。我们知道,软件是由需求驱动的,有了用户的实际需求才会开发一个软件产品。软件产品从需求的出现到最终的产品出现,要经历一个复杂的开发过程。软件产品在使用时要根据需求的变更不断修改,这称为软件维护。我们把用于进行软件开发及维护的全部技术、方法、活动、工具,以及它们之间的相互变换统称为软件过程。由此可见,软件过程的外延非常大,包含的内容非常多。对于一个软件开发机构来说,做过一个软件项目,无论成功与否,都能够从中总结出一些经验。做过的项目越多,经验越丰富,特别是完成一个成功的开发项目,从中可以总结出一些完善的过程,我们称之为最佳实践(best practice)。最佳实践开始存放在成功者的头脑中,很难在企业内部共享和重复利用并发挥其应有的效能。长期以来,这些本应属于企业的巨大的财富被人们所忽视,这无形中给企业带来了巨大的损失,当人员流动时,这种财富也随之流失,并且无法被其他的项目再利用。过程管理就是对最佳实践进行有效的积累,形成可重复的过程,使最佳实践可以在机构内部共享。过程管理的主要内容包括过程定义与过程改进。过程定义是对最佳实践加以总结,形成一套稳定的可重复的软件过程。过程改进是根据实践中对过程的使用情况,对过程中有偏差或不切合实际的地方进行优化的活动。通过实施过程管理,软件开发机构可以逐步提高其软件过程能力,从根本上提高软件生产能力。

2.过程管理在软件项目中的作用

前面介绍了过程在软件开发中的重要性。对于软件这种产品来讲,软件过程具有非常重要的意义。一件家具的质量好主要有两方面的因素:一是用于生产这件家具的材料的质量要好,否则很难有好的家具;二是生产这件家具的加工工艺要好。早期的家具以手工制造为主,由于工匠的手艺不同,产品的质量参差不齐。技术的不断发展使材料质量得到了提高,同时在产品的加工上也引入了高技术含量的木工机械,所以产品的加工水平和质量的稳定性都得到了很大程度的提高。软件产品在生产上有一定的特殊性。首先,软件产品不是物理存在的实体,它是完全的逻辑的高度聚合体,所以在质量因素的构成上不存在材料质量的因素,因而,在生产过程中唯一影响软件产品质量的是其生产工艺。生产工艺在软件工程中的术语就是软件过程。软件过程管理对软件产业的发展非常重要。软件过程管理将帮助软件组织对过程资产进行有效管理,使之可以复用于实际项目中,并结合从项目中获取的过程的实际应用结果来不断地改进过程。这样软件组织就有能力改变自身的命运,将它从维系在一个或几个个体上变成维系在企业中的管理上。过程管理让软件组织直观感觉到的最明显的转变就是软件项目中所有成员的位置可以替换。

3.软件项目管理知识体系的关系

顾名思义,过程管理就是对过程进行管理,其目的是要让过程能够被共享、复用,并得到持续改进。在软件行业,要管理的是软件过程。过程管理与项目管理在软件组织中处于重要地位,项目管理用于保证项目的成功,而过程管理用于管理最佳实践。两者并不是相互孤立的,而是有机地、紧密地相结合的。图1-21展示了过程管理和项目管理的基本关系。过程管理的成果即软件过程可以在项目管理中辅助项目管理的工作,在项目的计划阶段,项目计划的最佳参考是过去类似项目中的实践经验,这些内容通过过程管理成为过程管理的工作成果,这些成果对于一个项目的准确估算和合理计划非常有帮助。合理的计划是项目管理成功的基础。在项目计划的执行过程中,计划将根据实际情况不断调整,直到项目结束时,项目计划才能真正稳定下来。这份计划及其变更历史是过程管理中过程改进的最有价值的参考。在国外,成熟的软件组织内部,每个项目开发完成后必须提供“软件过程改进建议”文档,这是从软件开发项目过程中提炼出来的对软件过程改进的建议。过程的改进注重从项目的实际经验中不断将最佳实践提炼出来。

图1-21 过程管理与项目管理的基本关系

所有的软件过程构成了软件项目管理的过程体系,对应PMBOK五个过程组和十个知识领域。大家最熟悉的过程组应该是执行过程组,例如需求过程、设计过程、编码过程,测试过程等;项目计划过程组有范围计划、进度计划、成本计划、质量计划等;控制过程组与计划过程组是一一对应的,控制的对象就是执行过程;当然,软件项目管理同理有启动过程组和结束过程组。这样就形成了软件项目管理体系,如图1-22所示。目前软件项目管理过程没有公认的体系标准,具体项目可以有适合自己的过程要求。

图1-22 软件项目管理知识体系