第0章软件项目管理概述5 的挑战大大增加,也给管理带来了很多问题和挑战。目前软件开发中面临很多的问题,例如: 1)在有限的时间、资金内,要满足不断增长的软件产品质量要求。 2)开发的环境日益复杂,代码共享日恭用难。需购械的平台墙多 3)程序的规模越来越大 4)软件的重用性需要提高。 5)软件的维护越来越闲谁等笔 因此,软件项目管理显得更为重要。软件项目管理的提出是在20世纪70年代中期的美国,当时 美国国防部专门研究了软件开发不能按时提交、预算超支和质量达不到用户要求的原因,结果发现 70%的项目是因为管理不善引起的,而非技术原因。于是软件开发者开始逐渐重视起软件开发中的各 项管理。到了20世纪90年代中期, 软件项目管理不善的问题仍然存在。据美国软件工程实施现状的 调查,软件研发的情况仍然很难预测,大约只有10%的项目能够在预定的费用和进度下交付。 软件项目管理和其他项目管理相比有相当的特殊性 1)软件是纯知识产品,其开发进度和质量很难估计和度量,生产效率也难以预测和保证。与普通 的项目不同,软件项目的交付成果事先“看不见”,并且难以度量。特别是很多应用软件项目已经不 再是业务流程的“电子化”,而是同时涉及业务流程再浩或业务创新。因此,家户在项目早期对到底 要做成什么样,确实很难说清楚,但这一点对于软件项目的成敷恰恰又是至关重要的。 与此矛盾的是 公司一般是市场销售人员负责谈判,其重点是迅速签约,而不是如何交付,甚者为了尽早签约而“过 度承诺”。遇到模糊问题时也怕因为解释而节外生枝,所以避而不谈,而甲方为了保留回旋余地,也不 愿意说得太清楚,更不愿意主动提出来(因为甲方还有最终验收的主动权)。等到项目经理一且接手 所有这些没有说清楚的隐患和口头承诺都将暴露出来,并最终都由项目经理承担。 2)项目周期长,复杂度高,变数多。T项目的交付周期一般都比较长, 一些大型项目的周期可 以达到2年以上。这样长的时间跨度内可能发生各种变化。软件系统的复杂性也导致了开发过程中名 种风险的难以预见和控制。从外部来看,商业环境、政策法规变化会对项目范固、需求造成重大影响。 例如,作者曾经从事的金融项目,临近上线时国家推出了“利息税”致策,造成整个系统的大幅变 更。从内部来看,组织结构 人事变动等对项目的影响更加直接。有时: 伴随着新的领导到任,其思 路的变化,甚至对项目的重视程度的变化,都可能直接影响项目的成败。软件项目管理中有一个重要 的生存法则:“不要相信任何人的口头承诺”。就是这个原因,即使是你绝对信换的人,也可能发生人 事变动,之后你无法保证继任的人员能够继续兑现承诺, 3)软件需要满足一一群人的期望。软件项目提供的实际上是一种服务,服务质量的好坏不仅仅是最 缘交付的质量,更重要的是农户的体验。实际上。项目中的“客户”不是一个人而是一群人!他们 可能来自多个部门,对项目的关注点不同,在项目中的利益(得与失)也不同。所以,当我们谈到满 足“客户需求”的时候,实际的意思是“满足一群想法和利益各不相同的人的需求”。 有了项目管理,就有了管理改进的基础,无论刚开始的项目管理多么艚糕,只要有管理,就有了 改进的可能性。所以,进行软件项目管理是必要的。像Windows这样的操作系统有1500万行以上的代 码,同时有数千个程序员在进行开发,项目经理都有上百个。这样庞大的系统如果没有很好的管理, 其软件质量是难以想象的。 0.2.4软件项目管理与软件工程的关系 软件工程可以分为三个部分,即软件工程可以包括三个重要的线 开发过程 管理过书 索, 一条线索是软件项目开发过程,一条线索是软件项目管理过程, 另外一条线索是软件过程改进,如图03所示。 开发过程是软件人员生产软件的过程(例如需求分析1设计1编 过程改进 码测试等),相当于机械流水线上的生产过程管理过程是项目管 图0-3软件工程的三个线素
6第0章软件项目管理概述 理者规划软件开发、控制软件开发的过程 相当于机械流水线上的管理过程:同理,过程改进相当于 对软件开发过程和软件管理过程的“工艺流程 进行管理和改进,如果没有好的工艺,生产不出好的 产品,它包括对开发过程和管理过程的定义和改进。 在现实软件项目中,大家更注意的线素是软件开发过程,经常忽略了软件管理过程和过程改进的 线索 其实这两个线索很重要,甚至超过软件开发过程的重要性。随着软件的不断发展,软件规模的 不断壮大,软件开发也会逐步向软件工厂化发展,软件项目开发过程就相当于软件工厂中生产车间的 生产过程,而生产工艺的制定、生产内容、生产质量、生产时间、生产成本等工作都是项目管理的 作。软件开发过程的工作更多的是软件设计、编码等,项目管理的工作更多的是如何保证软件的成功, 可能在有些人看来编码的人的工作更实在一些,项目管理的工作好像不实在。其实,这是一个误会, 项目管理可以 项目获得高额的盈利,也可以让 一个通目指失橡面,但是绾码的人就不会有这个 影响力。让软件工程成为真正的工程,就需要软件项目的开发、管理、过程等方面规范化、 ,工程化 工艺化、机械化。 软件项目管理的根本目的是为了让软件项目尤其是大型项目的整个软件生命周期都能在管理者的 控制之下 ,以预定成本按期、按质的完成软件并交付用户使用。而研究软件项目管理是为了从已有的 成功或失败的案例中总结出能够指导今后开发的通用原则和方法,以避免前人的失误。 0.3项目管理的范围 0.3.1项目管理的五要素 项目管理的五要素有技术(technical)、方法(methodology)、团队建设(team building)、信息 (information)、沟通(communication)。项目管理是技术,也是方法,是技巧,也是信息,当然也需要 团队建设。其中沟通非常重要,项目经理主要的工作是沟通。沟通包括技术的沟通、管理的沟通、质 量的沟通等很多方面。 0.3.2从战略上看项目管理的三个关注点 从战略上看,有效的项目管理集中于3个P上:人员(people)、向题(problem)和过程 (process) 1.人员 事实上,“人的因素”非常重要,是项目最为宝贵的财富,软件行业就更是这样。以致于软件工 程研究所专门开发了 个人员管理能力成熟度模型(PM-CMM),它为软件人员定义了招聘、人员选 择、业绩管理、培训、报磷、专业发展、组织和工作计划以及团队精神、 企业文化培养第关排实 战域 使用人必须先信任人、培养人,给他一个发展的空间,让他看到一个希望,让他感到工作的 过程是 一个自身价值升值的过程。需要建立一个样和、友善、互助、向上的企业文化氛围。相互 间的技术保密、炉忌是软件公司的大忌。 首先,技术管理人员要有一个平常心,不要太多地被名 利所左右。公司先解决好技术管理层的问题,公司如何制定提升和奖励政策 也在这方而起 个引导作用。工作的安排要合适,任务要明确,多协作,少冲突,避免在同 一领域展开员工间不 必要的竞争,需要多人完成一项工作时要新老结合,高低结合。人的提升有多种途径,在用人的过程 中,根据每个人不同的喜好和性格设计不同的发展路径,必要的时候可以和当事人交流,将公司对他 的期望和他本人的努力统一起来。人的“提升” 感重在于自身价值在集体中被承认,被认同,被同仁 接受。 2.问题 项目经理的一个重要任务是发现问题和解决问题。明确该项目的目的和范围,选择合适的解决方 案,定义技术和管理的约束,进行成本估算 有效的风险评估, 适当地划分项目任务或给出意义明确
第0章软件项目管理概述7 的项目进度等都是需要解决的问题。在项目的实施过程中又会出现很多的新问题,需要及时的发现和 解决 3.过程 单纯注重项目管理技术本身,是无法对项目管理能力有实际提高的,因此在这里我们要引申出过 程管理,过程管理也是项目管理的任务,下节将进行详细说明。 0.3.3从战术上看项目管理的三个关注点 软件项目管理的四大变量为:范围、质量、成本以及交期。项目管理需要在相互间具有冲突的要 求中寻求平衡:1)范围、成本、质量和交期:2)具有不同需求和期望的项目相关人员:3)明确表 示出来的要求(需求)和未明确表达的要求(期望)。因此, 从战术上看, 项目管理主要关注在项目 的范围(满足质量要求的产品需求)、成本、进度这三方面上,见图04。 图04这个三角形的三个边是相互影响,任何一边发生变化都会影 响其他两边的,例如,如果产品规格发生变化,那么产品的成本就要重 新估算,项目的进度也要重新安排。如果要赶进度,就要对成本或者规 范围/质 格做出折中等。项目管理的作用是在项目目标之闻做出 些权衡,在某 ~领域绩效的提高可能是以降低其他领域的绩效为代价的。具体的绩效 平衡会因项目和组织的不同而不同。成功的项目管理需要积极的管理这 成本 些相互作用的目标。 图04项日管理的三角形 0.4项目管理知识体系 从前,有人认为项目管理是一种“意外的职业”。因为常常是人们在项目中先承担了项目贵任 可能是从技术开发开始,然后随着项目经验的逐步提高,积累一定的技术管理等经验,最后顺理成章 地当上了项目经理。但是管理 一个项目的有关知识不是通过系统学习得来的,而是在实践中摸出来 的。摸素的过程可能会导致严重损失。近年来,在减小项目管理意外性方面已经有了很大进步。很多 企业的决策者们日益认识到项目管理方法可以帮助他们在复杂的竞争环境中取得成功。项目管理成为 热点,一位著名的管理学家明确指出:“项目管理是在当今急剧变化的时代中求得生存的关键”。为了 减少项目管理的意外性,许多机构或者企业开始婴求雇员系统地学习项目管理技术,努力成为经认证 合格的项目管理人员。 PMP(Project Management Professional)是项目管理专业人员资格的缩写,它是美国项目管理学会 (Project Management Institute,PMI)开发并负责组织实施的一种专业资格认证。成为PMP是一个挑战, 认证本身可以为个人的事业发展带来很多的好处。该项认证已经获得世界上1多个国家的承认,可 以说是目前全球认可程度很高的项目管理专业认证,也是项目管理资格最重要的标志之 一,在国际上 已经树立了权威。在世界很多国家,特别是西方发达国家,PMP已经被认为是合格项目管理的标志 之 项目管理知识体系(Project Man ent Body Of Knowledge.PMBOK)是PMI组织开发的一套关 于项目管理的知识体系。它是PMP考试的关键材料,它为所有的项目管理提供了 个知识框架。 项 目管理知识体系(PMB0K2004)包括项目管理的九个知识领域、5个标准化过程组及44个模块。 九个知识领域分别是:项目集成管理(Project Integration Management),项目范围管理(Project Seope Management),项目时间管理(Project Time Management),项目成本管理(Project Cost Management), 项目人力资源管理(Project Human Resource Managen ent).项且管理(Proiect communication Management),项目风险管理(Prject Risk 项目质量管理(Pojc Quality Manag ment),项目采购管理(Project Procurement Management)。其中9个领域包括的管理要素如图0- 所示
8第0章软件项目管理概述 项目管理知识体系 1.璞目集成管理 2.项目范围管理 3.项目时间管理 11城目章程编制 2.1范围规划 3.1任务定义 12初始项目范围编制 22范围定义 3.2任务排序 1.3项目计划制 23任务分解结构定义 33任务资源估计 1.4指导与管理项目执行 24范围核实 3.4任务历时估计 15项目监控 2.5范围控制 3.5进度计划编 1.6集成变更控制 3.6进度计划控制 1.7项日结束 5.项目质量管理 5.1质量埋到 6.项目资源管理 4.项目成本管理 52质量保证 6.1人力资源规划 4.】成本估算 53质量控制 62人力资源获取 42成本预算 6.3团队建设 43成本控制 64团队管理 8项目风险管理 7.项目沟通管理 81风险管理规则 9项目采购管理 82风验识别 7.1沟通规划 9.1采购计划编制 83定性风路分析 72信息分发 92合同计划编制 8.4定量风隐分析 73绩效报告 93供方反情获取 74项目干系人管理 85风险应对计划 9.4供方洗择 8.6风险监控 9.5合厨管到 9.6合同收尾 图0-5项目管理知识领域 0.4.1项目管理9大知识领域 项目管理9 大知识领域分布在项目进展过程中的各个阶段,它们的关系可以这样描述 ·为了成功实现项目的目标,首先必须设定项目的工作和管理范围,即项目范围管理(h0 do) 为了正确实施项目,需要对目标进行分解,即对项目的时间、质量、成本三大目标分解,即 项目时间管理(when)、项目成本管理(how much)、项目质量管理(how good)。 项目实施过程中,需要投入足够的人力、物力资源,即项目人力资源管理(People&Motiva- ion)、项目采购管理(Partners)。 ·为了对项目团队中人员的管理,让大家目标一致的完成项目,需要沟通,即项日沟通管理 (Understand Be Understood) 。当然,项目在实施过程中会遇到各种风险,所以要进行风险管理,即项日风险管理。 最后项目管理一定要协调各个方面,不能只顾局部的利益和细节,所以需要集成管理,即项 目集成管理 项目管理9大知识领域具体描述如下 1)项目集成管理 项目集成管理是项目成功的关键,它贯穿了项目的全过程。项目集成管理是在项目的整个生存
第0章软件项目管理概述9 期内,协调项目管理其他各管理知识域,将项目管理的方方面面集成为一个有机整体,保证项目总目 标的实现。项目集成管理从一个宏观的尺度将项目作为一个整体来考察。包括的过程如下:项目章程 编制(develop the project charter))、初始项目范围编制(develo the prel nary project scope statement) 项目计划编制(develop the project management plan)、指导与管理项目执行(direct and manage project execution)、项目监控(monitor and control the project work)、集成变更控制(perform integrated change contro)、项目结束(close the project)等过程。 项目集成管理的目标在于对项目中的不同组成元素进行正确高效的协调,它并不是所有项目组成 元素的简单相加。 2)项目范围管理 项目范围是为了交付具有特定属性和功能的产品而必须完成的工作。项目范围管理“是用以保 证项目包含所有需要完成的工作,以顺利完成项目所需要的所有过程”。范围管理主要是定义项目需 要完成的工作,确保项目包含且只包含所有需要完成的工作。范围管理定义可以控制项目包含什么 内容和不包含什么内容。包括的过程如下:范围规划()、范围定义() 任务分解结构定义(creating the WBS)、范围核实(scope verification)、范围控制(scope control)等 过程。 3)项目时间管理 很多的项目经理将按时提交项目作为一个最大的挑战之一,时间是灵活性最小的控制元素,进度 是导致项目冲突的最主要的原因,尤其在项目的后期。所以项目管理者学习进度管理过程尤为重要。 项目进度管理就是保证项目按时完成需要的一些管理过程,包括任务定义(activity de inition)、任务判 序(activity sequencing)、任务资源估计(activity resource estimating)、任务历时估计(activity duration estimating)、进度计划编制(schedule development)、进度计划控制(schedule control)等过程。 4项日成本管理 项目成本管理是在项目具体实施过程中,为了确保完成项目所花费的实际成本不超过顶算成本而 展开的管理活动。包括成本估算(cost estimating)、成本预算(cost budgeting)、成本控制(cost con- ol)等过程。成本估算是估计完成项目需要的资源成本。成本预算(cost budgeting)是将总的估算成 本分摊到各项任务中,以便建立项目跟踪的成本基线。成本控制(cost control)是控制成本预算的 变更。 5)项目质量管理 项目质量管理要求保证该项目能够兑现它关于满足各种需求的承诺。它涵盖了与决定质量工作的 策略、目标和责任的全部管理功能有关的各种活动。项目质量管理过程包括如下3个过程:质量规划 (quality planning))、质量保证(quality assurance)、质量控制(quality control)等过程。 6)项目人力资源管理 项目人力资源管理包括了最有效管理人力资源的过程,它要求充分发挥参与项目的人员的作用, 包括人力资源规划(human resource planning)、人力资源获取(acquiring the project team)、团队建设 (developing the project team)、闭队管理(managing the project team)等过程。这里的人力包括项目中所 有的干系人:赞助商、供应商、客户、项目团队成员、支持人员等等。人力资源规划是定义项目的角 色、职责、汇报关系等。人力资源获取是招募项目需要的人员并分配到相应的工作中。团队建设是开 发个人和团队的技能和增强项目性能的过程。团队管理是跟踪团队成员性能、激励团队成员热情、及 时反馈和解决问题、从而增强项目的性能的过程。 7)项目沟通管理 项目沟通管理包括为了确保项目信息及时准确的生成、收集、发布、存储和部署的过程。主要有 4个过程,分别是沟通规划(c0, nications planning)、信息分发 (information distribution)绩效报告 (performance reporting)、项目干系人管理(managing stakeholder)。 沟通规划是确定项目人员的沟通需