目录
第 1 章 概述
1.1 什么是项目管理
项目(project)是指为创造某一独特的或服务的价值所做的临时性的一次性的努力。这里,“临时性”意味着项目有特定的开始和结束时间,而“独特性”则意味着任何一个项目具有自己的特点,即与其他项目存在一定不同之处,这些不同之处表现在项目的目标、范围、质量、成本、时间等各个方面的一项或几项。所以我们还可以说:
(1)项目就是在特定的时间内解决特定的问题或达到特定的目标;
(2)项目指是一种复合型任务,具有明确的开始时间和明确的结束时间、明确的规模和预算,通常还有一个临时性的项目组织;
(3)项目包含了一系列独特的且相互关联的活动,这些活动一般有一个明确的目标,必须在特定的时间、预算、资源等条件下,依据规范完成特定的任务。
项目管理的有关概念
顾客:委托工作并将最终结果受益的个人或团体。
用户:使用项目交付物的个人或团队,有可能顾客是一个类(群)人。
供应商:负责提供项目所需物品或专业知识的一个或多个个人或组织,有时又称为供应商或专家,他们负责项目的输入。
程序(Program):按照协调原则选择、计划和管理的项目集合。
项目委员会:由顾客、用户方代表、供应方代表组成。项目经理定期向项目委员会报告项目的进展和面临的突然问题,项目委员会负责向总经理汇报项目进展中突出的问题的解决方案。
项目委托书:来自项目外部的,形成参考备忘并用于启动项目的文件。
交付物:是项目的产出项,作为项目要求的一部分,它可以是最终产品的一部分或是一个
或更多后继的交付物所依赖的某一中间产物,依据项目的类型,交付物亦称 “产品”。
项目经理:被授予权力和责任管理项目的个人,负责项目的日常性管理,按照项目委员会的指示,运用合适的工具和技术,使项目顺利进行。
项目质量保证:项目委员会确保其自身能正确管理项目的职责。
检查点报告:在检查点会议上收集的关于项目进展的情况的报告。该报告由项目小组向项目经理提交,其内容包括在项目开始时中定义的报告数据组。
例外报告:这是一个由项目经理向项目委员会提交的报告,报告描述例外,对后续工作进行分析,提出可选择的解决方案并选定一个推荐方案。
项目的有限特性和一次性特性,使其区别于“流程(process)”“日常操作(operation)”等活动。项目是为完成某个独特的的产品或服务所做的一次性的活动,概括起来项目具有如下特性:
目标性,其结果可能是一种新的或改进的产品或服务;
独特性,每一个项目都是唯一的;
一次性,有确定的起点和终点;
约束性,每一个项目的资源、成本和时间都是有限的;(有生命周期)
关联性,所开展的活动是密切相关且相互关联的;
多方面性,一个项目涉及多个方面、多个相关利益者,如委托方、总承包商、分承包商、供应商等;
不可逆性,不论结果如何,项目结束了,结果也就确定了。
在讨论项目管理(project management)的时候,还需要区别程序管理、资产组合管理(portfolio management)。在介绍程序管理、资产组合管理之前,先要了解程序(Program,习惯翻译为“项目集”)、资产组合(portfolio,习惯翻译为“项目组合”)和项目的关系与区别。
在这三者中,简单地说,多个项目构成项目集,多个项目集构成项目组合。项目组合处于最高层次,将项目、项目集、资产组合和业务操作作为一个组合,以达到业务战略目标。而项目集也是一个组合,只是在项目组合之下的组合,由子集、子项目或其他工作构成,通过组织指导,协调支持来支付资产组合。项目和项目集不具有直接的关系或依赖性,但它们的目标最终都指向公司战略规划。资产组合与项目集、项目集与单个项目,和组织的战略及其优先级都有着直接联系,组织在进行战略规划时,基于收益、风险、成本、资源等因素考虑来对项目进行优先级排序,也可以直接参与到项目资源的协调与管理。
1.2 项目管理的本质
项目管理的目标,就是以最小的代价(成本和资源)最大程度地满足软件用户或客户的需求和期望,也就是协调好质量、任务、成本和进度等要素相互之间的冲突,获取平衡。概括地说,项目管理的本质,就是在保证质量的前提下,寻求任务、时间和成本三者之间的最佳平衡。
在一个项目中,一般说任务、时间和成本中的某项是确定的,其他两项是可变的。这样,我们就可以对不变项,对可变项采取措施,保证项目达到预期效果。例如,产品质量是不变的,要有足够的时间和成本投入去保证产品的质量。但有时市场决定产品的时间,受到严格限制,这时,如果要保证产品的功能得到完整的实现,就必须有足够的成本投入(人力资源、硬件资源等)。如果成本也受到限制,就不得不减少功能,实现产品的主要功能。如果从不同的角度去观察项目管理,我们可以从不同方面来描述项目管理的本质。
管理对象是项目或被当作项目来处理的运作。
管理思想是系统管理的系统方法论。
管理组织通常是临时性、柔性、扁平化的组织。
管理机制是项目经理负责制,强调责权的对等。
管理方式是目标管理,包括进度、费用、技术与质量。
1.2.1 太多的软件项目失败
据美国国家标准与技术学会(National Institute of Standards and Technology)2002 年的研究,软件错误每年造成美国 595 亿美元的经济损失,2/3 的项目明显延时或超出预算,甚至干脆无疾而终。即使在今天,根据 Standish 提供的调查数据,在 2013 年还有 24% 的软件项目失败。
在总结和分析足够多的失败的软件项目之后,看出其原因大多与项目管理工作有关。在软件项目开始执行时,遇到的问题往往是可供利用的资源太少,项目负责人的责任不明确,项目的定义模糊,没有计划或计划过分粗糙,资源要求未及时作出安排而落空,没有明确规定子项目完成的标准,缺乏使用工具的知识,项目已有变更,但预算未随之改变。
在软件项目执行过程中可能会发生的问题是:项目审查只注意项事而走过场,人员变动造成对工作的干扰,项目进行情况未能定期汇报,对阶段评审和评审中发现的问题如何处置未作出明确规定,资源要求并不像原来预计的那样大,未能做到严格遵循需求说明书,项目管理专业人员不足。
项目进行到最后阶段可能会发生的问题是:未做质量评价,取得的知识和经验交流很少,未对人员工作情况进行作出评定,未做严格的移交,扩充性建议未写入文档资料。
1.2.2 失败和管理有着千丝万缕的关系
《梦断代码》书中描述的问题,不少软件团队都经历过。如果没有良好的项目管理,其中许多问题就会一而再、再而三地出现,人们将无动于衷,项目不断地失败,难以成功。这些问题包括:
想得太多,总想做大事,把目标定得太高,可谓眼高手低;
过于乐观,无论是领导还是开发工程师,总是设想得太好,实际结果却出乎意料;
用户需求不清楚,不知道自己到底要做什么,所有人员都陷入迷惘;
需求不断变更,并且没有人员评估变更对项目整体带来的影响;
需求文档不清或者文档过多,产品经理缺乏对产品的构思和描述;
分不清轻重缓急,所有功能一哄而上,项目周期遥遥无期;
不是由于缺乏计划就是计划不切实际,项目时间从后向前推,按主观意志办事而不是客观地依照计划;
太多成员缺乏时间计划概念,对自己、对其他团队成员都没有时间计划;
开会得太多,或喜欢开会,同时,会议主题不明确又缺乏控制,难以快速达成结论;
缺乏有效的沟通方式或方法,喜欢用邮件沟通,而邮件沟通的效率是最低的;
在总结和分析足够多的失败的软件项目之后,看出其原因大多与项目管理工作有关。在软件项目开始执行时,遇到的问题往往是可供利用的资源太少,项目负责人的责任不明确,项目的定义模糊,没有计划或计划过分粗糙,资源要求未及时作出安排而落空,没有明确规定子项目完成的标准,缺乏使用工具的知识,项目已有变更,但预算未随之改变。
在软件项目执行过程中可能会发生的问题是:项目审查只注意项事而走过场,人员变动造成对工作的干扰,项目进行情况未能定期汇报,对阶段评审和评审中发现的问题如何处置未作出明确规定,资源要求并不像原来预计的那样大,未能做到严格遵循需求说明书,项目管理专业人员不足。
项目进行到最后阶段可能会发生的问题是:未做质量评价,取得的知识和经验交流很少,未对人员工作情况进行作出评定,未做严格的移交,扩充性建议未写入文档资料。
1.2.3 项目管理的对象
有效的项目管理集中于对 3P ——人员(People)、问题(Problem)和过程(Process)的管理上,其中人是决定性因素,对于软件开发,这一点更为明显,因为软件开发是人的智力密集型劳动。问题的解决依赖人员的能力,流程的执行也依赖于人,这也就是为什么要在软件项目管理中强调“以人为本”的思想。
项目管理虽然涉及很多管理对象,如任务、时间、成本、质量、资源和风险等,但人员、问题和过程是核心,处理好这 3 者的问题,其他方面就会迎刃而解,如图 1-1 所示。概括起来,3P 对软件项目管理具有本质的影响。如下所述:
人员必须被组织成有效的团队,他们的潜力需要被激发出来,为此,我们要为项目团队及其成员建立有效的沟通途径和方法。以实现人员之间、团队之间、管理者和被管理者之间的有效沟通。有效的团队应建立合适的组织结构和工作文化,并通过一系列活动提高团队的凝聚力和战斗力,共享团队的目标和文化,并最终有力地圆满地完成任务。
问题在软件项目管理中表现为流程不清楚或控制不严,应用领域知识不足,需求不断变化和不一致,沟通不流畅等。其解决的办法是找出引起问题的根本原因在哪里,然后针对问题本质找到解决办法,以求彻底解决问题。如果项目管理者具有缺陷预防意识,对问题有预见性,能避免问题的发生,防范风险,防患于未然,项目的成本就会大大降低,项目成功的机会就会更大。
过程应适应于人员的需求和问题的解决,人员的需求主要体现在能力、沟通、协调等上,问题能在整个项目实施过程中得到预防、跟踪、控制和解决。也就是说,一套规范且有效的流程是保证项目平稳、顺利运行的基础。
1.2.4 项目管理的成功要素
要了解项目管理的成功要素,首先要了解项目管理的主要职能。不同类型、不同规模的项目和不同的组织中,项目管理职能有一定的差异,但总体来说,其主要职能可以概括为下列 5 点:
(1)识别需求,确定项目实施的范围;
(2)在项目计划和执行过程中阐明项目干系人(stakeholders)各种需求、担心和期望;
(3)在项目干系人之间建立、维持和促进积极、有效和协作的沟通;
(4)管理项目干系人以满足项目需求、成功地实现项目的交付;
(5)平衡项目各种限制或条件(如范围、质量、进度、预算、资源、风险等)。
在完成了上述职能后,项目的成功标志是什么?或者说什么样的结果说明项目获得成功?一般来说,项目完成了既定目标,满足了三要素 —— 时间进度、成本控制和质量要求,就可以认为项目是成功的。而有时,一旦项目的成果被顾客接受就可以认为项目获得成功。我们可以简单定义项目成功的标志为以下几点:
在规定的时间内完成项目。
项目成本控制在预算之内。
功能特性达到规格说明书所要求的水平(质量)。
项目通过客户或用户的验收。
项目范围变化是最小的或可控的。
项目没有干扰或严重影响整个软件组织的主要工作流程。
项目没有改变公司文化或改进了公司的文化。
项目的成败受到 4 个方面的影响,即项目组内环境、项目所处的组织环境、客户环境、自然社会环境。从可控角度,通常需要着重考虑前 3 个方面的影响。把前 3 个方面放在整个项目生命周期进行考察,可以获得影响项目成败的因素。为确保项目成功,需要进行有效的项目管理。项目管理,就是定义目标和流程,建设组织,通过工具、管理方法来保证项目的成功。目标、组织、流程、工具和管理,形成一个项目的管理体系,缺一不可,如图 1-2 所示:
缺少目标,项目就会迷失方向,工作漫无目的,自然不够有效。
没有组织的保障,项目管理就成了纸上谈兵,容易半途而废。“人” 是项目成功的决定性因素,所有的事情都是靠人去完成,而把这些项目组的人组织起来,建立奖惩分明的制度,充分发挥他们的积极性和潜力,这些都需要组织的支持和保证。
没有流程,项目实施就无章可循,其结果可能会杂乱无章。流程是项目成功的制度化保证,包括里程碑设置、输入/输出标准定义等。
工具是解决问题的有效手段,没有工具的帮助,项目管理的能力就大打折扣。
没有管理,项目就缺乏约束,容易偏离轨道,处于无序状态。项目管理包括风险管理、质量管理、进度和成本的控制等。
除了“目标、组织、流程、工具和管理”这些关键因素之外,项目管理还包括其他一些因素,如项目经理的能力、项目计划的有效性、人员沟通程度和风险控制力度等,例如:
项目经理是项目的灵魂人物,项目经理的能力有时直接决定了项目的成败,而项目经理的能力包括领导力、组织能力、协调沟通能力、技术能力和团队文化建设能力等。
计划先行,需要精心策划项目的各项计划,包括质量计划、进度计划、成本控制计划、风险防范计划等,才能进一步确保项目获得成功。如果缺乏计划,项目实施无法控制,最终往往导致项目无限期的拖延等。
沟通流畅,不仅可以提高工作效率,降低开发成本,而且及时获得信息,项目组成员得到共识,就能避免问题(缺陷)的产生,也有利于问题解决。
人们常说,风险管理好,项目管理就成功了一半。项目中存在各种风险,一旦风险发生,就会给项目带来损失或不利的影响。消除风险,能有力地保证项目顺利、平稳按计划地实施。
1.3 项目管理基本方法
项目管理方法在项目管理方法论上可以分为 3 种;阶段性管理、量化管理和优化管理。阶段性管理是项目管理的基本方法;在此基础上,量化管理提高了项目管理的效率和有效性;而优化管理建立在阶段性管理和量化管理基础之上,获得项目管理的持续性改进。软件项目管理会涉及组队模型、过程模型和应用模型。
组队模型用于解决人力资源管理,包括明确相互依赖的角色和责任、沟通机制等。
过程模型用于解决软件开发过程管理,包括时间管理、基于里程碑的阶段划分、阶段性成果和管理的交接等。
应用模型用于具体应用领域的需求管理和变更管理等,并在用户、业务和数据 3 个层面上,定义协作的、分布的、可重用的业务逻辑网络。
阶段性管理 :阶段性管理将项目的生命周期(即项目运行的全过程)分为若干个阶段,再根据不同阶段所具有的不同特点来进行针对性的管理。在阶段性管理中,还可以将阶段进一步划分为子阶段,管理的方法可以更具体、更具有针对性。
项目生命周期一般可以分为项目准备和启动、项目计划、项目实施、项目验收(收尾)和项目总结 5 个基本阶段。对于“项目准备和启动阶段”,还可以进一步分为信息采集、信息分析、可行性研究、项目申请书编制 4 个子阶段。
量化管理 :量化管理针对影响项目成功的关键因素建立指标、收集数据、分析数据,从而完成对项目的控制和优化。量化管理方法是尽量通过数据说明问题、解释问题、找出问题产生的根本原因,然后解决问题。通过量化管理,可以更精确地预估工作量、所需资源(人力、物力等),更好地控制项目的成本和进度。
一般来说,在项目实施前确定度量的指标,如每个人每日的代码行数、每千行代码的缺陷数、每个人每日可执行的用例数和每日新报缺陷数等。有了度量指标,借助数据库、信息系统等就可以比较容易地获取数据、分析数据,如可以根据每日新报缺陷数来评估项目质量和风险,甚至可以根据每日新报缺陷数和修正的缺陷数来预测项目结束的日期。
优化管理 :优化管理就是分析项目每部分所蕴涵的知识,不断吸取教训、总结经验,将知识和实践更好地融合在一起,从而对项目计划、实施办法等进行优化,获得项目的最佳效益。优化管理需要知识和经验的不断积累,优化管理是一个不断分析、总结的过程,是自然的进步过程。
无论是教训还是经验,都具有一定的时效性,即不同的阶段的经验不能混淆。例如,计划阶段的经验对下一个项目的计划阶段有很大的参考价值,而对其实施阶段不一定有意义。又如某个阶段的工作管理得好,项目进展顺利,就应使这一个阶段内的管理经验和知识更好地发挥作用;而后一阶段管理工作没做好,就要了解这一阶段为什么不成功。是客户的需求没搞清楚,还是设计的问题。阶段性的分析,有利于进一步优化项目管理,但管理项目仅仅靠项目总结或阶段性总结是不够的,还需要依赖于一些方法、手段和工具,这在很大程度上要依靠量化管理。可以说,阶段性管理与量化管理是优化管理的基础。
1.4 项目的生命周期
项目管理的基本内容是计划、组织和监控,计划包括工作范围确定、风险评估、工作量估算、日程和资源安排等;而组织包括团队的建立、协调和各种资源的调遣等。项目生命周期划分为 3 个基本的阶段 —— 计划、实施监控和总结。根据 PMBOK,项目生命周期分为 5 个阶段,如图 1-3 所示。
(1)启动。项目正式被立项,并成立项目组,宣告项目开始。启动是一种认可过程,用来正式认可一个新项目或新阶段的存在。
(2)计划。定义和评估项目目标,选择实现项目目标的最佳策略,制定项目计划。
(3)执行。调动资源,执行项目计划。
(4)控制。监控和评估项目偏差,必要时采取纠正行动,保证项目计划的执行,实现项目目标。
(5)结束。完成项目验收,使其按程序结束。
因为执行和控制是一般同时进行的,所以可以合并为一个阶段。项目结束后,必须进行总结分析,获取经验和最佳实践,为下一个项目打下基础。有时,项目结束后还存在一个维护、支持服务的阶段。
1. 项目准备和启动阶段
在项目准备和启动阶段,一般是先收集相关信息,进行项目的可行性分析;通过可行性分析后,会正式提交项目申请书,项目申请书中会说明项目目标、项目收益、项目成本以及如何建立项目组等;项目申请书被批准后,会建立项目组,并宣布项目正式启动。如果是对外项目,则需要涉及投标、谈判和签订合同等工作内容。
2. 项目计划阶段
项目计划阶段是非常重要的阶段,主要任务有工作量估算、资源分配、风险识别和计划书的编制等。一般会根据项目的特点,对项目作业进行分解,估算项目的工作量;确定和落实项目所需的资源;识别出项目的风险及其对应措施;确定各个阶段要交付的成果及其验收标准;最后确定项目具体的、整体的实施方案,写成文档。
3. 项目实施和监控阶段
项目实施阶段就是项目计划的执行阶段,也就是根据项目实施的具体方案去完成各项任务。项目实施阶段根据项目特点,还可以继续细分出子阶段,然后完成各个子阶段的任务,并对这些阶段性成果进行检验,确保达到预先定义的技术要求和质量要求。
在执行阶段,监控是非常重要的,即随时掌握项目的进展情况,了解有什么问题需要解决,有没有新的需求或需求是否发生变化等。如果发现项目偏离计划,就需要采取措施,纠正项目出现的偏离,使项目回到正常的轨道上。如发现有利于项目管理的方法,应及时通报各部门加以应用,以提高项目管理的整体水平。项目的监控还包括以下几个方面:
协调项目各方面的关系,促进项目各方的合作。
保持和客户良好的沟通,及时获得客户的反馈。
收集项目度量数据,对监控指标的数据进行分析。
向客户、项目组和上级汇报项目的状况。
4. 项目验收和总结阶段
在完成项目的各项任务并达到了项目的总体目标之后,项目即将结束,应该开始安排项目验收,并进行项目总结。项目验收主要是根据合同所规定的范围及有关标准对项目进行系统验收,以确定项目是否真正达到竣工验收标准,各项指标是否达到合同要求,并是否可交付使用。
不管项目是否通过验收,一般都会对项目实施过程中所产生的各种文档、技术资料等进行整理,了解有哪些地方做得很好,哪些地方需要提高,分析项目实施过程中的得与失,以积累项目管理的经验,最终提交项目总结报告。除此之外,还应对项目组成员的绩效进行评价,交给相应的技术管理部门和人事部门。
1.5 项目管理知识体系
项目管理就是根据特定的规范,在预算范围内,按时完成指定的任务,即运用既有规律又经济的方法,制定计划,围绕计划对项目进行监控,在时间、费用和人力上进行控制。同时,在项目管理中,必须关注质量,质量是产品或服务立于不败之地的关键,而项目所有活动都是由项目团队来完成的,所以项目团队的建设也是非常重要的任务,包括人力资源和沟通的管理。在项目实施过程中,可能会发生意想不到的情况,也有可能在项目范围、资源等方面发生一些变化,例如用户提出新的需求、项目组成员突然生病等,这些都是项目潜在的风险,需要预防和控制。所以项目管理涉及各方面的知识,包括计划管理、人员管理、资源管理、风险管理、成本管理、时间管理、沟通管理等。
1.5.1 PMBOK
PMBOK 是美国项目管理学会历经近 10 年(1987 - 1996 年)开发的一个关于项目管理的知识体系标准,之后,每 4 年发布一个版本,最新版本是 2013 年发布的 5.0 版。PMBOK 受到项目管理业界的普遍认可,例如,PMBOK 第 3 版被国际电工电子工程师学会认定为作业标准,标准编号:IEEE Std 1490 - 2003,在不同行业得到了广泛的应用。
PMBOK 将软件开发划分为“启动、计划、执行、控制和结束”5 个过程,每个管理过程包含了输入、输出、所需工具和技术,而通过相应的输入和输出将各个过程联系在一起,构成完整的项目管理活动过程。PMBOK2000 根据过程的重要性,将项目管理过程分为核心过程和辅助过程两类,共有 39 个过程。
核心过程(共 17 个),是大多数项目都必须经历的、依赖性很强的项目管理过程,对项目管理的影响至关重要。
辅助过程(共 22 个),是可以根据实际情况取舍的项目管理过程。
在 PMBOK2004(第 3 版)中,为了保证项目管理的各个过程都得到足够的重视,“核心过程、辅助过程”概念被取消了,但增加了 7 个过程,减少了 2 个过程,对 13 个过程进行了修改,总共是 44 个过程。第 4 版在沟通管理领域增加了“识别干系人”和“管理干系人期望”,加强了对干系人的关注和管理。并且,第 5 版将项目干系人管理单独作为一个知识领域,更进一步体现了在项目管理过程中对于干系人的关注和管理。并且,第 5 版增加的 7 个新过程分别是:计划(或规划)范围管理、计划进度管理、计划成本管理、计划人力资源管理、管理干系人参与、控制干系人参与、控制采购等;其中“计划干系人管理、管理干系人参与、控制干系人参与”包含在新增加的知识领域“项目干系人管理”中。删除了“沟通管理”知识领域中 2 个过程“管理干系人期望”和“报告绩效”,并将“沟通管理”知识领域的“识别干系人”移到知识领域“项目干系人管理”中。这样,PMBOK 最新版本包括了 10 个知识领域和 47 个过程。
表 1 - 1 PMBOK 第 5 版(2013)的 10 个知识域及其过程
知识域 | 启动 | 计划编制 | 执行 | 监控 | 收尾 |
---|---|---|---|---|---|
项目综合管理(7 个过程) | 制定项目章程制定项目初步范围说明书 | 制定项目管理计划 | 指导与管理项目执行 | 监控项目工作实施整体变更控制 | 结束项目或阶段 |
项目范围管理(5 个过程) | 范围计划 | 范围定义制定工作分解结构范围确认 | 范围控制 | ||
项目时间管理(7 个过程) | 活动定义活动排序活动资源估算活动时间估算编制进度表 | 进度控制 | |||
项目成本管理(4 个过程) | 成本估算成本预算 | 成本控制 | |||
项目质量管理(3 个过程) | 质量管理计划实施质量保证 | 质量控制 | |||
项目人力资源管理(4 个过程) | 人力资源计划团队组建 | 团队建设 | 项目团队管理 | ||
项目沟通管理(3 个过程) | 沟通计划 | 管理沟通 | 控制沟通 | ||
项目风险管理(6 个过程) | 风险管理计划风险识别风险定性分析风险定量分析风险应对计划 | 风险识别、风险监控 | |||
项目采购管理(4 个过程) | 采购管理计划 | 实施采购 | 控制采购 | 结束采购 | |
干系人管理(4 个过程) | 识别干系人 | 计划干系人管理管理干系人参与 | 控制干系人参与 |
它将项目管理按所属知识领域分为 10 类,按时间逻辑分为 5 类,按重要程度分为 2 类。项目管理的内容一般包括综合(整合)管理、范围管理、人力资源管理、沟通管理、时间管理、风险管理、采购管理、费用(成本)管理、质量和项目干系人管理。
(1)综合管理也称整合管理、集成管理,是指确保项目各项工作相互配合、协调所展开的综合性和全局性的项目管理工作,其包括 7 个基本的子过程:制订项目章程、制定项目初步范围说明书、制定项目管理计划、指导与管理项目执行、监控项目工作、实施整体变更控制、结束项目或阶段。在项目管理中,由于项目各方对于项目的期望值不同,要满足各方的要求和期望并不是一件容易的事。例如,客户期望获得非常高的质量,将质量作为首要目标,而项目组可能设法降低成本,将成本作为首要目标。因此,需要在不同的目标之间进行协调,寻求一种平衡,这主要依靠综合管理来实现。
(2)范围管理是对项目的工作任务、工作量和工作内容的管理,包括范围计划、范围定义、制定工作分解结构、范围确认、范围控制等。说得通俗些,范围管理也就是确定项目中哪些事要做的,哪些事不需要做、每个任务要做到什么程度。例如,客户总是不断提出新的需求,如果不能界定项目范围,不能对需求变化进行控制,那么项目将永无休止。
(3)时间管理是确保项目按时完成而开展的一系列活动,包括规划进度管理、活动定义、活动排序、活动资源估算、活动时间估算、进度编制和项目进度控制等工作。时间管理和人力资源管理、成本管理相互作用、相互影响,需要综合考虑。
(4)成本管理是为了确保项目在不超预算的情况下对项目的各项费用进行成本控制、管理的,包括规划成本管理、成本估算、成本预算和成本控制等工作。在小的项目过程中,成本估算和成本预算可以合并为一个过程。
(5)质量管理是为了确保项目达到所规定的质量要求所实施的一系列管理过程,包括质量管理计划、实施质量保证和质量控制等活动。质量是项目关注的焦点,成本控制、进度管理和范围管理,都应该在保证质量的前提下进行。
(6)人力资源管理,为了提高项目的工作效率、保证项目顺利实施,需要建立一个稳定的团队,调动项目组成员的积极性,协调人员之间的关系,这些都在人力资源管理的范围内。“天时、地利、人和”一直被认为是成功的三大因素,“人和”就是人力资源管理的目标之一。在项目管理中,如何最大限度地发挥每个项目组成员的作用,就是人力资源管理的主要任务,包括资源计划、团队组建、团队建设和项目团队管理等。
(7)沟通管理是为了保证有效收集和传递项目信息所需要实施的一系列措施,包括沟通管理计划、管理沟通(包括沟通渠道建设)、控制沟通(如报告制度)等工作。沟通管理包括外部沟通管理(与顾客沟通)和内部沟通管理,而且沟通管理和人力资源管理之间有着密切的关系。
(8)风险管理是对项目可能遇到的各种不确定因素的管理,包括风险管理计划、风险识别、定性风险分析、定量风险分析、风险应对计划(或策略)、风险控制等内容。项目实施前,虽然制定了计划,但是随着项目的不断深入,会发现计划的不足之处,无论是项目的范围、时间还是人力资源、费用等都存在变数。这种变数随时带来风险,需要得到管理。
(9)采购管理是从项目组织之外获得所需的资源或服务所采取的一系列措施,包括采购管理计划、实施采购(包括询价、选择供应商等)、控制采购和结束采购等工作。采购管理和成本管理有密切的关系。
(10)干系人管理主要包括以下 4 个过程:包括识别干系人、计划干系人管理、管理干系人参与、控制干系人参与。原干系人管理在第 4 版的 PMBOK 中是归入沟通管理章节的。项目管理协会(PMI)认识到当今项目干系人对项目成败的重大作用,所以 PMBOK 第 5 版将“干系人管理”作为单独模块加以讲解。
1.5.2 PRINCE2
受控环境中的项目(PRojects IN Controlled Environments,PRINCE)是组织、管理和控制项目的方法,强调通过管理使项目环境得到有效控制。PRINCE2 是对 PRINCE 的升级,即通过对整合现有用的需求,提炼特定的方法成为面向所有用户的通用的项目管理方法,而且它是基于过程的(process - based)、结构化的项目管理方法,从而成为英国项目管理的标准。
PRINCE2 包括组织、计划、控制、项目阶段、风险管理,以及项目环境中的质量、配置管理以及变化控制 8 类管理要素。这些管理要素是 PRINCE2 管理的主要内容,贯穿于整个项目周期。PRINCE2 的主要管理技术有:基于产品的计划、变化控制方法、质量评审技术以及项目文档化技术。PRINCE2 项目管理方法的特点有以下几点:
项目是由业务用例进行驱动,强调服务的合理性和客户需求。
描述了一个项目如何被切成可控的、可管理的阶段,以便高效地控制资源的使用和在整个项目周期执行常规的监督流程。
易于剪裁和灵活使用的方法,应用于任何级别的项目。
为项目管理团队提供定义明确的组织结构。
每个过程都依据项目的大小、复杂度和组织的能力定义关键输入、需要执行的关键活动和特殊的输出目标。
描述了项目中应涉及的各种不同的角色及其相应的管理职责。
项目计划是以产品为导向的,强调项目按预期交付结果。
首次引进程序管理(Programme Management)和风险管理(Risk Management)的概念。
PRINCE2 提供从项目开始到项目结束,覆盖整个项目生命周期的、基于过程的、结构化的项目管理方法,共包括 8 个过程,如图 1 - 4 和图 1 - 5 所示。每个过程都描述了项目为何重要(Why)、项目的预期何在(What)、项目活动由谁负责(Who)以及这些活动何时被执行(When)。
1.5.3 WWPMM
IBM 公司早期的项目管理方法主要有应用开发项目的方法论、ERP 软件包实施方法论、集成产品开发项目方法论等,而在 20 世纪 90 年代中期,为了满足公司向服务转型的需要,IBM 公司综合了上述不同的项目管理方法,适时地推出了全球设计开发方法(Worldwide Solution Design and Delivery Method,WwSDM)方法论。随后,IBM 公司成立了一个项目管理委员会(PM/COE,项目管理最佳实践中心),进一步整合了公司内部的项目管理方法,从而形成了统一的项目管理方法,称为 WWPMM。WWPMM 由 4 个有机部分组成,即项目管理领域、项目管理工作产品、项目管理工作模式和项目管理系统。项目管理领域可以理解为项目管理的知识领域,与 PMBOK 中的 9 大知识领域类似,但在深度和广度两个方面对 PMBOK 进行了扩展,以符合大型 IT 项目管理的行业特点和现代管理理念。IBM 公司的项目管理领域与 PMBOK 的 10 个知识领域相比,有以下几方面的不同:
在质量管理、采购管理、人力资源管理、风险管理方面基本采用了 PMBOK 的内容,二者比较一致。
将 PMBOK 中的综合管理、范围管理、时间管理、成本管理和沟通管理重新进行结构化,成为项目定义、工作计划管理、变更管理、交付管理、沟通管理、跟踪和控制,符合项目工作的过程,并将项目工作和管理控制工作区隔开来。
增加了资助人协议管理,以满足公司的实际操作需求,即每一个内部项目都需要一个资助人,这个资助人一般都是副总级别的人员。PMBOK 有更广泛范围的项目干系人管理。
增加了事件管理,建立了突发事件的防范和处理机制。
增加了技术环境管理,这是 IT 项目特点所要求的,IT 项目的术性比较突出。
WWPMM 项目管理方法目前依赖 Rational Portfolio Manager(RPM)来实现。它能为企业快速打造统一的项目管理平台,提高项目全生命周期的管理能力,提高整个项目团队的项目计划、执行、监控能力和团队沟通效率,优化企业资源,提高项目执行过程的可见性。
1.6 软件项目管理
软件项目管理自然属于项目管理的范畴,项目管理的思想是相通的,一般来说,基本方法也是适用的,但不同之处在具体方法和管理工具上。软件项目管理中存在一些自己独特的方法和工具,这些独特之处是由软件及其生命周期的自身特征所决定的,而且受到软件技术快速发展的影响。
1.6.1 软件项目管理的特点
软件不同于一般的传统产品,它是对物理世界的一种抽象,是逻辑性的、知识性的产品,是一种智力产品。软件最突出的特征就是需求变化频繁、内部构成复杂、规模越来越大、度量困难等,这些特征给软件管理带来了很大的挑战。
软件项目是设计型项目 :设计型项目与设计其他类型的项目完全不同。设计型项目所涉及的工作和任务不容易采用 Tayloristic 或者其他类型的预测方法,而且设计型项目要求长时间的创造和发明,需要许多技术非常熟练的、有能力合格完成任务的技术人员。开发者必须在项目涉及的领域中具备深厚和广博的知识,并且有能力在团队沟通和协作中有良好的表现。设计型项目同样也需要用不同的方法来设计和管理。
软件过程模型 :在软件开发过程中,会选用特定的软件过程模型,如瀑布模型、原型模型、迭代模型、快速开发模型和敏捷模型等。选择不同的模型,软件开发过程会存在不同的活动和操作方法,其结果会影响软件项目的管理。例如,在采用瀑布模型的软件开发过程中,对软件项目会采用严格的阶段性管理方法;而在迭代模型中,软件构建和验证并行进行,开发人员和测试人员的协作就显得非常重要,项目管理的重点是沟通管理、配置管理和变更控制。
需求变化频繁 :软件需求的不确定性或变化的频繁性使软件项目计划的有效性降低,从而对软件项目计划的制定和实施都带来了很大的挑战。例如,人们采用极限编程的方法来应对需求的变化,以用户的最终需求为中心,采用短期产品发布的办法来满足频繁变化的用户需求。
难以估算工作量 :虽然前人已经对软件工作量的度量做了大量研究,提出了许多方法,但始终缺乏有效的软件工作量度量方法和手段。不能有效地度量软件的规模和复杂性,就很难准确估算软件项目的工作量。对软件项目工作量的估算主要依赖对代码行、对象点或功能点等的估算。虽然上述估算可以使用相应的方法,但这些方法的应用还是很困难的。例如,基于代码行的估算方法,不仅因不同的编程语言有很大的差异,而且也没有标准来规范代码,代码的精炼和优化的程度等对工作量影响都很大。基于对象点或功能点的方法也不能适应快速发展的软件开发技术,基于没有统一的、标准的度量数据供参考。
主要的成本是人力成本 :项目成本可以分为人工成本、设备成本和管理成本,也可以根据和项目的关系分为直接成本和间接成本。软件项目的直接成本是在项目中所使用的资源而引起的成本,由于软件开发活动主要是智力活动,软件产品是智力的产品,所以在软件项目中,软件开发的最主要成本是人力成本,包括人员的薪酬、福利、培训等费用。
以人为本的管理 :软件开发活动是智力的活动,要使项目获得最大收益,就要充分调动每个人的积极性、发挥每个人的潜力。要达到这样的目的,不能靠严厉的监管,也不能靠纯粹的量化管理,而是要靠良好的激励机制、工作环境和氛围,靠人性化的管理,即以人为本的管理思想。
1.6.2 软件项目管理的目标和范围
软件项目的主要任务一般包括需求获取、系统设计、原型制作、代码编写、代码评审、测试等,根据这些任务可以简单定义项目所需的角色及其工作职责。在软件项目中,常见的角色及其职责如表 1 - 2 所示。
角色 | 职能 |
---|---|
项目经理 | 项目的整体计划、组织和控制 |
需求人员 | 在整个项目中负责获取、阐述、维护产品需求及书写文档 |
设计人员 | 在整个项目中负责评价、选择、阐述、维护产品设计以及书写文档 |
编码人员 | 根据设计完成代码编写任务并修正代码中的错误 |
测试人员 | 负责设计和编写测试用例,以及完成最后的测试执行 |
质量保证人员 | 负责对产品的验收、检查和测试的结果进行计划、引导并做出报告 |
环境维护人员 | 负责开发和测试环境的开发和维护 |
其他人员 | 另外的角色,如文档管理员、硬件工程师等 |
软件项目管理有其特定的对象、范围和活动,着重关注成本、进度、风险、和质量的管理,还需要协调开发团队和客户的关系,协调内部各个团队之间的关系,监控项目进展情况,随时报告问题并督促问题的解决。虽然软件的系统架构、过程模型、开发模式和开发技术等对软件项目管理也有影响,或者说软件项目管理对这些内容有一定的依赖性,但它们不是软件项目管理的关注点。通过下面表 1 - 3 的对比,我们能更加了解软件项目管理的范围。
表 1 - 3 软件项目管理和生命周期的活动比较
阶段 | 软件开发生命周期 | 项目管理 |
---|---|---|
项目启动 | 概念和愿景 | 收集数据、识别潜在需求、确定项目范围、制定初步的 WBS、资源估计和分析、制定项目计划、组织开发活动 |
计划阶段 | 需求分析和定义 | 建立项目团队、制定详细 WBS、项目网络分析、资源估计和分析、预算和进度估计、写项目计划书、签定项目合同书 |
监控阶段 | 设计 | 建立项目组织、建立和执行工作规范、指导和监督、控制项目系统开发活动、完成详细设计、设计书签发、构建系统、执行单元、系统和集成测试 |
项目结束 | 实施(编码和单元测试)和测试 | 完成详细设计、编码和单元测试、系统集成和测试、系统安装、维护或支持 |
客户服务和系统维护 | 系统集成和测试 | 实施技术和系统交付、获取客户认可、准备项目移交、评价和记录结果、项目总结、维护或支持、系统技术支持和升级 |
1.6.3 软件项目的分类
软件项目可以说是形形色色,有大也有小,有内部项目也有外部项目,项目类型对项目管理确实影响较大。在项目管理中要了解软件项目的各种类型,做到因地制宜,对不同类型的软件项目采取不同的管理策略和方法,从而达到事半功倍的效果。
项目类型可以从规模、运作模式、商业模式、技术或系统架构等不同方面进行划分,我们需要分析哪些类型对管理有影响。软件项目类型可以按下面方法进行划分:
(1)按规模划分比较简单,可分为大型项目、中小型项目等。大型项目比较复杂,代码量在百万行数量级,开发团队在百人以上。
(2)按软件开发模式划分,可分为组织内部使用的软件项目、直接为用户开发的外部项目和软件外包项目。
(3)按产品不同的交付类型可分为产品型项目、一次型项目。
(4)按软件商业模式划分,可分为软件产品销售、在线服务(online service)两种模式,或者分为随需服务模式(on - demand)和内部部署模式(on - premise)。
(5)按软件发布方式可分为新项目、重复项目(旧项目),也可分为完整版本(full package release 或 major release)、次要版本或服务包(service pack)、修正补丁(patch)等。
(6)按项目待开发的产品进行分类,如 COCOMO 模型中,可分为组织型、嵌入型和半独立型。
组织型(organic):相对较小、较简单的软件项目(<50 KLOC)。开发人员对项目目标理解比较充分,与软件系统相关的工作经验丰富,对软件的使用环境很熟悉,受硬件的约束较小。
嵌入型(Embedded):要求在紧密联系的硬件、软件和操作的限制条件下运行,通常与某种复杂的硬件设备集成。对接口、数据结构和算法等要求较多。软件规模没有限制。
半独立型(semidetached):介于上述两种类型之间。规模和复杂度都属于中等或较高(<300 KLOC)。
(7)按系统架构(Architecture)分,可分为 B/S 结构、C/S 结构,也可分为集中式系统和分布式系统,或者分为面向对象(OOA)、面向服务(SOA)、面向组件(COA)等类型。
(8)按技术划分,可分为 Web 应用、客户端应用、系统平台软件等类型,也可分为 J2EE、.Net 等类型。
项目的规模、开发模式对项目管理影响最大,其次是软件商业模式和发布方式,最后才是系统架构和技术。规模大,项目复杂度就高,自然带来更大的项目管理风险。同样,一种新技术、新模式的应用,也会带来更多的风险,对项目管理也会有更高的要求,如图 1 - 6 所示。其他类型的影响,也可以按照这种象限分析方法来考虑。
如果换一个角度看问题,不光是产品类型,技术和商业模式的成熟度对项目管理也有较大的影响,如图 1 - 7 所示。