15.7.2项目沟通计划的执行控制373 157.3风险计划的执行控制374 15.8 小纳 3 15.9练习题375 第四篇项目结束 第16章项目结束过程378 16.1项日终止378 16,2项目结束的具体过程378 162.1项目验收与产品交付37 16.2.2合同终止380 16.2.3项目最后评审380 16.2.4项日总结380 16.3项目管理的建议382 163.1 16.3.2经验和建议383 16.4“医疗信息商务平台”结束过程案例分析384 16.4.1验收计划384 16.4.2项目验收报告387 16.4.3项目总结389 16.5小结391 16.6练习题391 第五篇项目实践 第17章基于敏捷平台的软件顶目管理实践394 17.1敏捷实践准备394 17.1.1关于Dev0ps敏捷项目管理39 17.1.2敏捷项目的3C394 17.1.3实践项目介绍395 17.2项目初始过程397 17.2.1项目初始需求397 17.22策略和工具选择400 17.3项目规划过程401 17.3.1团队建设401 17.3.2设计项目发布计划401 17.4项目执行控制402 17.41选择迭代内容和完善待办事项列表402 17.42简单设计403 17.4.3测试用例设计403 17.4.4敏捷开发过程403 17.4.5成本进度跟踪管理414 17.4.6完善设计和需求415 17.47法代评 416 17.5项目结束过程417 结束语421 附录常用的项目管理模板422
15.7.2 项目沟通计划的执行控制 373 15.7.3 风险计划的执行控制 374 15.8 小结 375 15.9 练习题 375 第四篇 项目结束 第 16 章 项目结束过程 378 16.1 项目终止 378 16.2 项目结束的具体过程 378 16.2.1 项目验收与产品交付 378 16.2.2 合同终止 380 16.2.3 项目最后评审 380 16.2.4 项目总结 380 16.3 项目管理的建议 382 16.3.1 常见问题 382 16.3.2 经验和建议 383 16.4 “医疗信息商务平台”结束过程案例分析 384 16.4.1 验收计划 384 16.4.2 项目验收报告 387 16.4.3 项目总结 389 16.5 小结 391 16.6 练习题 391 第五篇 项目实践 第 17 章 基于敏捷平台的软件项目管理实践 394 17.1 敏捷实践准备 394 17.1.1 关于 DevOps 敏捷项目管理 394 17.1.2 敏捷项目的 3C394 17.1.3 实践项目介绍 395 17.2 项目初始过程 397 17.2.1 项目初始需求 397 17.2.2 策略和工具选择 400 17.3 项目规划过程 401 17.3.1 团队建设 401 17.3.2 设计项目发布计划 401 17.4 项目执行控制 402 17.4.1 选择迭代内容和完善待办事项列表 402 17.4.2 简单设计 403 17.4.3 测试用例设计 403 17.4.4 敏捷开发过程 403 17.4.5 成本进度跟踪管理 414 17.4.6 完善设计和需求 415 17.4.7 迭代评审 416 17.5 项目结束过程 417 结束语 421 附录 常用的项目管理模板 422
参考文献440
参考文献 440
第1章软件项目管理概述 1.1项目与软件项目 信息产业是目前发展较快的行业,也是对社会影响较大的行业之一,“软 件”“项目”“软件项目”等概念己经越来越被大家所熟悉,并且普追存在于我 们生活或者社会的各个方面。软件行业是一个极具挑战性和创造性的行业,而软 件项目管理也是一项具有挑战性的工作,同时也是保证项目成功的必要手段。 1.1.1项目及其特征 人类社会和日常生活中有很多种活动,然而有的活动我们称之为项目,有的 则不能称为项目。项目(project)就是为了创造一个唯一的产品或提供一个唯 ~的服务而进行的临时性的努力:是以一套独特而相互联系的任务为前提,有效 地利用资源, 时间内满足 列特定目标的多项相 工作的总称 吸子 说,日常运作和项目是两种主要的活动。它们虽然有共同点,例如,它们都需要 由人来完成,均受到有限资源的限制,均需要计划、执行、控制,但是项目是组 织层次上进行的具有时限性和唯一性的工作,也许需要一个人,也许涉及成千上 、万的人,也许需要10小时宗成.也许要用10年完成,等等。“上班”“批量一 “每天的卫生保洁”等属 日常 运作,不是项目。项目与日常运作的不 同是:项目是 次性的 ,日常运作是重复进行的:项目是以目标为导向的,日常 运作是通过效率和有效性体现的:项目是通过项目经理及其团队工作完成的,日 常运作是职能式的线性管理:项目存在大量的变更管理,日常运作基本保持持续 的连贯性。下面介绍项目所具有的特征。 1)目标性。项目的目的在于得到特定的结果,即项目是面向目标的。其结 果可能是 种 种服 务。目标贯穿于项目始终 系列的项目 划和实施活动都是围绕这些目标进行的。例如,一个软件项目的最终目标可以是 开发一个学生成绩管理系统。 2)相关性。项目的复杂性是固有的,一个项目有很多彼此相关的活动,例 如,某些活动在其他活动完成之前不能启动,而另一些活动必须并行实施,如果 这些活动相互之间不能协调地开展,就不能达到整个项目的目标 3)临时性。 项目的临时性是指项目有明确的起点和终点。临时性并不意味 着项目的持续时间短,而是指项目要在一个限定的期间内完成,是一种临时性的 任务。当项目的目标达到时,意味着项目任务完成。项目管理中的很大一部分 精力是用来保证在预定时间内完成项目任务,为此而制定项目计划进度表,标识 任务何时开始、何时结束。项目任务不同于批量生产。批量生产是相同的产品 取决于要求的生产量,当生产任务完成时,生产线停止运行,这种连 续生产不是项目
第 1 章 软件项目管理概述 1.1 项目与软件项目 信息产业是目前发展较快的行业,也是对社会影响较大的行业之一,“软 件”“项目”“软件项目”等概念已经越来越被大家所熟悉,并且普遍存在于我 们生活或者社会的各个方面。软件行业是一个极具挑战性和创造性的行业,而软 件项目管理也是一项具有挑战性的工作,同时也是保证项目成功的必要手段。 1.1.1 项目及其特征 人类社会和日常生活中有很多种活动,然而有的活动我们称之为项目,有的 则不能称为项目。项目(project)就是为了创造一个唯一的产品或提供一个唯 一的服务而进行的临时性的努力;是以一套独特而相互联系的任务为前提,有效 地利用资源,在一定时间内满足一系列特定目标的多项相关工作的总称。一般来 说,日常运作和项目是两种主要的活动。它们虽然有共同点,例如,它们都需要 由人来完成,均受到有限资源的限制,均需要计划、执行、控制,但是项目是组 织层次上进行的具有时限性和唯一性的工作,也许需要一个人,也许涉及成千上 万的人,也许需要 100 小时完成,也许要用 10 年完成,等等。“上班”“批量 生产” “每天的卫生保洁”等属于日常运作,不是项目。项目与日常运作的不 同是:项目是一次性的,日常运作是重复进行的;项目是以目标为导向的,日常 运作是通过效率和有效性体现的;项目是通过项目经理及其团队工作完成的,日 常运作是职能式的线性管理;项目存在大量的变更管理,日常运作基本保持持续 的连贯性。下面介绍项目所具有的特征。 1)目标性。项目的目的在于得到特定的结果,即项目是面向目标的。其结 果可能是一种产品,也可能是一种服务。目标贯穿于项目始终,一系列的项目计 划和实施活动都是围绕这些目标进行的。例如,一个软件项目的最终目标可以是 开发一个学生成绩管理系统。 2)相关性。项目的复杂性是固有的,一个项目有很多彼此相关的活动,例 如,某些活动在其他活动完成之前不能启动,而另一些活动必须并行实施,如果 这些活动相互之间不能协调地开展,就不能达到整个项目的目标。 3)临时性。项目的临时性是指项目有明确的起点和终点。临时性并不意味 着项目的持续时间短,而是指项目要在一个限定的期间内完成,是一种临时性的 任务。当项目 的目标达到时,意味着项目任务完成。项目管理中的很大一部分 精力是用来保证在预定时间内完成项目任务,为此而制定项目计划进度表,标识 任务何时开始、何时 结束。项目任务不同于批量生产。批量生产是相同的产品 连续生产,取决于要求的生产量,当生产任务完成时,生产线停止运行,这种连 续生产不是项目
4)独特性。在一定程度上,项目与项目之间没有重复性,每个项目都有其 独自的特点。 每一个而日部是唯一的 栋农场式的住宅,其独特性 同的,如果说其有特殊性,也只是在于其地基的土壤不同,使用了 个新的热水 器,请了几位新木工,等等。然而,如果要为新一代计算机设计操作系统,则 该工作必然会有很强的独特性,因为这个项目以前没有做过,可供参考的经验并 不多 5)资源约束性。每一项目都需要运用各种资源作为实施的保证,而资源是 有限的,所以资源是项目成功实施的一个约束条件。 6)不确定性。 一个项目开始前,应当在一定的假定和预算基础上制定一份 计划,但是,在项目的具体实施中,外部因素和内部因素总是会发生一些变化, 会存在一定的风险和很多不确定性因素,因此项目具有不确定性。 1.1.2项目群与项目、项目与子项目的关系 项目群也称为大型项目 (program) 是通过协调来进行统 管理的一组相 互联系的项目,它本身可能不是项目。许多大型项目通常包括持续运作的活动。 个大型项目可以理解为比项目高一级别的大项目,如“863计划”“星火计 划”“登月计划”“阿波罗登月计划”等。以“863计划”为例,它的目标是赶 超世界先进水平,集中资源重点投入,争取在我国部分有优势的高科技领域有所 21世纪的经济发展和国防 全创造条件 这样的目标是战略相 痕限化,但它可通过系列的具作项去实莲,子项自C 是将项目分解成更小的单位,以便更好地控制项目。项目中的某一阶段可以是 一个单独的项目,也可以是一个子项目,一个子项目可以转包给外部机构的一个 单元。在实际工作中,子项目的划分是很灵活的,可以视项目的需要而定。可以 按照阶段划分子项目,如一期项目、二期项目· .也可以按照项目的组成部分划 分子项目。 1.1.3软件项目 软件是计算机系统中与硬件相互依存的部分,是包括程序、数据及其相关文 档的完整集合。其中,程序是按事先设计的功能和性能要求执行的指令序列:数 据是使程序能正常操纵信息的数据结构: 文档是与程序开发 ,维护和使用有 的图文材料。软件项目除了具备项目的基本特征之外,还有如下特点。 1)软件是一种逻辑实体而非具体的物理实体,具有抽象性,这使得软件与 其他的诸如硬件或者工程类项目有很多的不同之处。 2)软件的生产与硬件不同,开发过程中没有明显的制造过程,也不存在重 复生产过程
4)独特性。在一定程度上,项目与项目之间没有重复性,每个项目都有其 独自的特点。每一个项目都是唯一的。如果一位工程师正在按照规范建造第 50 栋农场式的住宅,其独特性一定很低,它的基本部分与已经造好的第 49 栋是相 同的,如果说其有特殊性,也只是在于其地基的土壤不同,使用了一个新的热水 器,请了几位新木 工,等等。然而,如果要为新一代计算机设计操作系统,则 该工作必然会有很强的独特性,因为这个项目以前没有做过,可供参考的经验并 不多。 5)资源约束性。每一项目都需要运用各种资源作为实施的保证,而资源是 有限的,所以资源是项目成功实施的一个约束条件。 6)不确定性。一个项目开始前,应当在一定的假定和预算基础上制定一份 计划,但是,在项目的具体实施中,外部因素和内部因素总是会发生一些变化, 会存在一定的风险和很多不确定性因素,因此项目具有不确定性。 1.1.2 项目群与项目、项目与子项目的关系 项目群也称为大型项目(program),是通过协调来进行统一管理的一组相 互联系的项目,它本身可能不是项目。许多大型项目通常包括持续运作的活动。 一个大型项目可以理解为比项目高一级别的大项目,如“863 计划”“星火计 划”“登月计划”“阿波罗登月计划”等。以“863 计划”为例,它的目标是赶 超世界先进水平,集中资源重点投入,争取在我国部分有优势的高科技领域有所 突破,为我国在 21 世纪的经济发展和国防安全创造条件。这样的目标是战略性 的,很难具体化,但它可以通过一系列的具体项目去实施。子项目(subproject) 是将项目分解成更小的单位,以便更好地控制项目。项目中的某一阶段 可以是 一个单独的项目,也可以是一个子项目,一个子项目可以转包给外部机构的一个 单元。在实际工作中,子项目的划分是很灵活的,可以视项目的需要而定。可 以 按照阶段划分子项目,如一期项目、二期项目.也可以按照项目的组成部分划 分子项目。 1.1.3 软件项目 软件是计算机系统中与硬件相互依存的部分,是包括程序、数据及其相关文 档的完整集合。其中,程序是按事先设计的功能和性能要求执行的指令序列;数 据 是使程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关 的图文材料。软件项目除了具备项目的基本特征之外,还有如下特点。 1)软件是一种逻辑实体而非具体的物理实体,具有抽象性,这使得软件与 其他的诸如硬件或者工程类项目有很多的不同之处。 2)软件的生产与硬件不同,开发过程中没有明显的制造过程,也不存在重 复生产过程
3)软件没有硬件的机械磨损和老化问题,然而,软件存在退化问题。在软 件的生存期中,软件环境的变化导致软件的失效率提高。 4)软件的开发受到计算机系统的限制,对计算机系统有不同程度的依赖 5)软件开发至今没有摆脱手工的开发模式,软件产品基本上是“定制的”,无 法利用现有的软件组件组装成所需要的软件。 6)软件本身是复杂的,其复杂性来自应用领域实际问题的复杂性和应用软 件技术的复杂性。 7)软件的成本相当高品,软件开发需要投入大量资金和高强度的脑力劳动, 因此成本比较高 8)很多软件工作涉及社会的因素,例如,许多软件开发受到机构、体系和 管理方式等方面的限制。 软件项目是一种特殊的项目,它创造的唯一产品或者服务是逻辑载体,没有 具体的形状和尺寸,只有逻辑的规模和运行的效果。软件项目不同于其他项目, 软件是一个新领域而且涉及的因素比较多,管理比较复杂。目前,软件项目的 开发远远没有其他领域的项目规 ,很多的理论还不适用于所有软件项目,经验 在软件项目中仍起很大的作用。软件项目由相互作用的各个系统组成,系统包 括彼此相互作用的部分。软件项目涉及的因素越多,彼此之间的相互作用就越大。 另外,变更也是软件项目中常见的现象,如需求的变更、设计的变更、技术的变 更、社会环境的变更等,这些均说明了软件项目管理的复杂性。项目的独特性和 临时性决定项目是渐进明细的,软件项目更是如此,因为软件项目比其他项目 有更大的独特性。 “渐进明细”表明项目的定义会随着项目团队成员对项目、 品等的理解和认识的逐步加深而得到逐渐深入的描述。软件行业是一个极具挑 战性和创造性的行业,软件开发是一项复杂的系统工程,牵涉各方面的因素。软 件项目的特征包括需求的不确定性和开发过程中存在技术风险。在实际工作中, 经常会出现各种各样的问题,甚至软件项目会面临失败。如何总结、分析失败的 原因并得出有益的教训,是今后项目取得成功的关键。 1.1.4软件项目组成要素 简单地说,项目就是在既定的资源和要求的约束下,为实现某种目的而相互 联系的一次性工作任务。一个软件项目的要素包括软件开发的过程、软件开发的 结果、软件开发赖以生存的资源及软件项目的特定委托人(或者说是客户,既是 项目结果的需求者,也是项目实施的资金提供者)。 1.1.5项目目标实现的制约因素 项目目标就是在一定时间、预算内完成项目范围内的事项,以使客户满意。 一个成功的项目应该在项目允许的范围内满足成本、进度要求,并达到客户满意
3)软件没有硬件的机械磨损和老化问题,然而,软件存在退化问题。在软 件的生存期中,软件环境的变化导致软件的失效率提高。 4)软件的开发受到计算机系统的限制,对计算机系统有不同程度的依赖。 5)软件开发至今没有摆脱手工的开发模式,软件产品基本上是“定制的”,无 法利用现有的软件组件组装成所需要的软件。 6)软件本身是复杂的,其复杂性来自应用领域实际问题的复杂性和应用软 件技术的复杂性。 7)软件的成本相当高昂,软件开发需要投入大量资金和高强度的脑力劳动, 因此成本比较高。 8)很多软件工作涉及社会的因素,例如,许多软件开发受到机构、体系和 管理方式等方面的限制。 软件项目是一种特殊的项目,它创造的唯一产品或者服务是逻辑载体,没有 具体的形状和尺寸,只有逻辑的规模和运行的效果。软件项目不同于其他项目, 软件是一个 新领域而且涉及的因素比较多,管理比较复杂。目前,软件项目的 开发远远没有其他领域的项目规范,很多的理论还不适用于所有软件项目,经验 在软件项目中仍起 很大的作用。软件项目由相互作用的各个系统组成,系统包 括彼此相互作用的部分。软件项目涉及的因素越多,彼此之间的相互作用就越大。 另外,变更也是软件项目中常见的现象,如需求的变更、设计的变更、技术的变 更、社会环境的变更等,这些均说明了软件项目管理的复杂性。项目的独特性和 临时性决定项目是渐进明细 的,软件项目更是如此,因为软件项目比其他项目 有更大的独特性。“渐进明细”表明项目的定义会随着项目团队成员对项目、产 品等的理解和认识的逐步加深而得 到逐渐深入的描述。软件行业是一个极具挑 战性和创造性的行业,软件开发是一项复杂的系统工程,牵涉各方面的因素。软 件项目的特征包括需求的不确定性和开发过程中存在技术风险。在实际工作中, 经常会出现各种各样的问题,甚至软件项目会面临失败。如何总结、分析失败的 原因并得出有益的教训,是今后项目取得成功 的关键。 1.1.4 软件项目组成要素 简单地说,项目就是在既定的资源和要求的约束下,为实现某种目的而相互 联系的一次性工作任务。一个软件项目的要素包括软件开发的过程、软件开发的 结果、软件开发赖以生存的资源及软件项目的特定委托人(或者说是客户,既是 项目结果的需求者,也是项目实施的资金提供者)。 1.1.5 项目目标实现的制约因素 项目目标就是在一定时间、预算内完成项目范围内的事项,以使客户满意。 一个成功的项目应该在项目允许的范围内满足成本、进度要求,并达到客户满意