1 / 94

软件项目管理

软件项目管理. 第二章 项目管理的环境和过程. 清华大学计算机系 殷人昆. 2.1 项目管理的系统观念. 软件项目也是一次性的,产生唯一的产品,但不能孤立地执行项目,它总是处于一个更大的系统环境中。 项目必须在一个广泛的组织环境中执行,项目经理需要从系统角度,对项目有一个全盘的考虑,认清项目在更大的组织环境中所处的位置。这就是 系统思维 。 所谓 系统 ,就是 为满足某个目的在一个环境中工作的相互作用的成分的集合 。. 所谓 系统方法 ,是解决复杂问题的一种全盘的、分析的方法,包括系统观念、系统分析和系统管理。 系统观念

tokala
Download Presentation

软件项目管理

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 软件项目管理 第二章 项目管理的环境和过程 清华大学计算机系 殷人昆

  2. 2.1 项目管理的系统观念 • 软件项目也是一次性的,产生唯一的产品,但不能孤立地执行项目,它总是处于一个更大的系统环境中。 • 项目必须在一个广泛的组织环境中执行,项目经理需要从系统角度,对项目有一个全盘的考虑,认清项目在更大的组织环境中所处的位置。这就是系统思维。 • 所谓系统,就是为满足某个目的在一个环境中工作的相互作用的成分的集合。 软件项目管理

  3. 所谓系统方法,是解决复杂问题的一种全盘的、分析的方法,包括系统观念、系统分析和系统管理。所谓系统方法,是解决复杂问题的一种全盘的、分析的方法,包括系统观念、系统分析和系统管理。 • 系统观念 是系统地思考事物的一整套思维模式。 • 系统分析 是通过定义系统的研究范围,采用逐步分解的办法,识别和评估其中的问题、时机、约束、需要的一套解决问题的方法。 软件项目管理

  4. 约束: 法律上的 成本上的 进度上的 政策上的 选择标准: 性能 成本/收益 反馈时间 政策 可选方案 权 衡 目 标 要求 可选方案 要求 可选方案 系统 …… …… 要求 可选方案 可选方案 反馈 项目管理的系统方法 软件项目管理

  5. 系统分析另外要做的事情是比较可能的解决方案,从中找出最优的或至少是满意的解决方案,考察它的可行性。系统分析另外要做的事情是比较可能的解决方案,从中找出最优的或至少是满意的解决方案,考察它的可行性。 • 系统管理 主要致力于与系统变更相关联的业务、技术和组织等课题。 • 系统方法的使用,对于成功的软件项目管理,是非常关键的。 软件项目管理

  6. 为了识别关键的项目干系人并满足他们的需要,为了能够按照最符合整个组织利益的方式行事,高层管理人员和项目经理必须能够明确与项目相关的关键业务、技术和组织。为了识别关键的项目干系人并满足他们的需要,为了能够按照最符合整个组织利益的方式行事,高层管理人员和项目经理必须能够明确与项目相关的关键业务、技术和组织。 • 在启动一个项目时,不要一头扎进技术细节,应优先考虑计划、组织和过程。 软件项目管理

  7. 2.2 过程与项目管理 • 软件项目主要涉及两个方面:软件工程与项目管理。 • 软件工程涉及系统的建立,主要关注如何设计、实现、测试等问题。 • 项目管理涉及如何正确地计划和控制软件工程行为,以满足项目在成本、进度和质量等方面的目标。 • 如果项目的规模比较小,可以用不太正规的方法实现它。 软件项目管理

  8. 对于大型项目,必须遵循那些经过实践证明效果良好的方法,谨慎地执行每一个工程任务,必须用文档正确地记录工作制品。项目任务必须经过细致规划,并将它们分配给执行项目的人员,然后在项目执行的过程中对它们进行跟踪。对于大型项目,必须遵循那些经过实践证明效果良好的方法,谨慎地执行每一个工程任务,必须用文档正确地记录工作制品。项目任务必须经过细致规划,并将它们分配给执行项目的人员,然后在项目执行的过程中对它们进行跟踪。 • 因此,要成功地执行较大的项目,必须在软件工程和项目管理两个方面增强正规程度和严格程度。 • 正规方法要求用良好定义的过程来执行各种任务,并采用合适的度量手段。 软件项目管理

  9. 1. 过程是什么? • 对于某个任务来说,一个过程是执行该任务的一个步骤序列。 • 对于一个组织而言,过程远不止一个步骤序列。过程涵盖了工程师和项目经理所掌握的成功执行项目的实践。 • 软件工程过程规定了如何执行工程任务,例如需求定义、设计、实现、测试等。 • 项目管理过程规定了如何设置里程碑,组织全体人员,管理风险,监督进展等。 软件项目管理

  10. 2. 为什么项目经理必须遵循过程? • 过程代表了集体的智慧,使用它们可以增加成功的机会。 • 过程可能包括一些过多的步骤。但是你不可能完全知道哪些步骤是不必要的,因此,走捷径可能会增加风险。 • 如果没有采用过程,就不能很好地预测项目的结果。 • 过程简化了问题的复杂性。检查表涵盖了80%的要做的事情,减少了你的任务。 软件项目管理

  11. 3. 项目管理与CMM • 软件的过程有助于成功地执行一个项目,这样的过程有什么特征?软件 CMM 提出了解决这个 问题的框架。 • 软件 CMM 是美国 CMU SEI 开发的,它体现了软件组织和其他组织在软件开发管理方面的最佳实践。 • 软件CMM 体现了集体的过程经验,它规定了软件过程的必备特征,但没有规定专门的特征。CMM 适合不同的过程。 软件项目管理

  12. CMM是目前使用得最为普遍的软件过程改进的框架之一。相关组织如下图。CMM是目前使用得最为普遍的软件过程改进的框架之一。相关组织如下图。 • CMM的目标之一是对成熟的过程和不成熟的过程加以区分。 • 不成熟的过程是在没有很多指导原则的情况下执行项目开发,而项目的结果极大地依赖项目领导和团队的能力。 • 成熟过程下的软件项目遵循已仔细定义的过程,项目的结果不再过分地依赖人员,而更加依赖于过程。 软件项目管理

  13. 集成 SCM 分配 需求 Customer SCMG 支 持 SEPG 程 工 TG SQAG 要求支持 要求 SWEG /承诺 STG 分配需求 需求 STEG Customer (客户) SEPG (软件工程过程组) SQAG (软件质量保证组) STEG (系统工程组) SCMG (软件配置管理组) SWEG (软件工程组) STG (系统测试组) SCM (子合同管理者) TG (培训组) 软件项目管理

  14. 可优化级 5 可管理级 4 可定义级 3 可重复级 2 初始级 1 • CMM 框架描述了不同成熟度等级的软件过程应具有的关键因素,还规定了软件过程从不成熟的过程变为非常成熟的过程应当遵循的途径。这一途径涉及五个成熟度等级。 软件项目管理

  15. 过程越成熟,结果就越可预测,项目就越好控制。过程越成熟,结果就越可预测,项目就越好控制。 • 将一个过程应用于一个项目时,能够期望得到的结果范围叫做项目的过程能力。 • 将一个过程应用于一个项目时,实际得到的结果叫做项目的过程绩效。过程绩效依赖于过程能力。 • 在通向更高成熟度的途中,可能经历一些成熟度等级。每个成熟度等级规定过程的某些特征。成熟度越高,软件过程越成熟。 软件项目管理

  16. 4. 项目管理与关键过程领域KPA • 除了第1级外,其他每一级都有一些关键过程领域,他们规定了组织将过程提升到该成熟度等级的时候必须重点考虑的问题。 • 为此,每个KPA规定了它的目标和称为关键实践的一组任务。 • KPA的目标规定了CMM为那些与KPA有关的过程设定的目标。 • 第 2 级(可重复级)KPA 的目标如下: 软件项目管理

  17. 软件项目管理

  18. 软件项目管理

  19. 在这些目标的指导下,首先制定项目计划并记入文档。然后根据计划评估正在进行中的项目的绩效,并在实际绩效明显偏离计划时采取相应的措施。在这些目标的指导下,首先制定项目计划并记入文档。然后根据计划评估正在进行中的项目的绩效,并在实际绩效明显偏离计划时采取相应的措施。 软件项目管理

  20. 需求用文档正确地记录下来,并对需求的变更进行严格的管理。需求用文档正确地记录下来,并对需求的变更进行严格的管理。 • 所有工作制品都在配置管理机制的控制之中,根据一个事先制订的配置管理计划正确地管理对制品的变更。 • 执行评审和审计,确保计划的过程和标准得到遵循。 • 如果项目的某些部分被分包给其他软件开发单位,还要对被分包出去的工作进行正确的监督。 软件项目管理

  21. 下面列出第 3 级(已定义级)的 7 个KPA中的目标。 软件项目管理

  22. 软件项目管理

  23. 这些KPA重点强调组织管理和过程管理问题。 • 对于达到第 3 级能力成熟度的组织中的项目,它使用专用的标准过程,并复用以往项目的资源、数据和经验进行规划 。 软件项目管理

  24. 执行项目的各个小组通过事先协商, 良好定义的接口进行合作。 • 此外,必须进行严格的评审,以标识出工作制品中存在的缺陷,并为执行评审和后续的任务提供支持。 • 下面列出第 4 级上的 2 个 KPA 的目标。组织的过程能力用量化的术语给出。 • 过程能力用于设定项目的量化的目标。项目绩效方面的数据主要用于对项目的绩效偏差进行度量,保持对项目的控制。 软件项目管理

  25. 第 4 级的关键特点是使用统计过程控制技术,在需要时可以评估每个任务,以便采取正确的行动。 软件项目管理

  26. 第 5 级的 3 个KPA是: • 过程变更管理; • 技术变更管理; • 故障预防。 • 这些KPA重点强调过程能力的改进。其中,故障预防对项目管理的影响最大。该KPA要求通过系统地分析故障的原因,找出相应的对策,然后消除这些原因。这样,可以前瞻性地预防故障。如果能够预防故障进入软件,则可以节省为排除它们所需的工作量,提高质量和生产率。 软件项目管理

  27. KPA的归类 软件项目管理

  28. 成熟度等级 指示 包含 关键过程域 过程能力 组织成一些 达到 目 标 共同特征 包含若干 描述 有关职责 关键实践 描述 基础设施或活动 CMM的内部结构 软件项目管理

  29. 关键实践 • 关键过程域包含为实现这些关键过程域所必需实施的关键实践,它们包含对关键过程域的实施起关键作用的方针、规程、措施、活动以及相关基础设施的建立。 • 关键实践一般只描述“做什么”,而不强制规定“如何做”。关键过程域的目标是通过其包含的关键实践的实施来达到的。 • 关键实践的实施全部按下面 5 个共同特征加以组织。 软件项目管理

  30. 执行约定— 描述一个机构在保证将过程建立起来并持续起作用方面所制定的方针和规定的高级管理人员对项目的支持。 • 执行能力— 描述为了实施软件过程,项目或机构中必须存在的先决条件。执行能力一般包括资源、组织机构和培训。 • 执行活动— 描述为了实现一个关键过程域必须由谁做什么,包括制定计划与规程、执行计划、跟踪执行情况,必要时采取纠正措施。 软件项目管理

  31. 测量和分析 — 描述测量软件的过程和分析测量结果的要求需要,包括为确定所执行活动的状态及有效性而采用的测量和分析。 • 验证实施 — 描述保证遵照已建立的过程进行活动的措施,包括管理人员和软件质量保证部门所做的评审和审核。 软件项目管理

  32. 2.3 软件项目的生命周期 • CMM 模型对于评估软件工程过程和项目管理过程的成熟度有重大指导作用。 • 下面具体讨论软件项目的相关管理过程。 • 因为项目具有一定的不确定性,将项目划分为几个阶段是降低复杂性和开发风险的好方法。 • 项目生命周期就是这样一系列项目阶段的集合。 • 项目阶段根据项目和行业的不同而不同。 软件项目管理

  33. 项目阶段的特征 • 每个项目阶段是通过完成一个或几个可交付物来表征的; • 项目结束通常是通过对关键可交付物和项目绩效进行评审来表征的。 • 划分阶段和执行管理评审的目的: • 为了降低项目的复杂性和不确定性,以改进管理控制。 • 在每个阶段最后执行管理评审,以评估项目的进展、可能的成功、为满足组织的目标需要做出的改进。 软件项目管理

  34. 有关项目阶段的三个概念 • 检查点(Checkpoint)在规定的时间间隔内对项目进行检查,比较实际与计划之间的差异,并根据差异进行调整。常见的间隔是每周一次,项目经理需要召开例会并上交周报。 • 里程碑(Milestone)完成阶段性工作的标志,不同类型的项目具有不同的里程碑。 • 基线(Baseline) 基线是指一个或一组配置项在项目生命周期的不同时间点上,通过正式评审而进入正式受控的一种状态。 软件项目管理

  35. 项目获取阶段 项目可行性阶段 概念 开发 实施 收尾 • 项目的主要工作分为概念、开发、实施和收尾等四个阶段:前两个阶段主要工作是做计划,称为项目可行性阶段。后两个阶段是开展实际工作,称为项目获取阶段。 • 项目生命周期的基本框架如图所示: 支持工作包 确定成本估计 绩效报告 完成的工作 课程学习 客户接受 项目计划 预算成本估计 6+级WBS 管理计划 初步成本分析 3级WBS 软件项目管理

  36. 1. 项目的概念阶段 • 这个阶段是项目的启动阶段。 • 项目经理审阅合同条款和系统要求,对项目做出简要的描述。 • 通过调查研究,了解: • 项目的目标和范围; • 考虑候选的解决方案; • 标明技术和管理上的要求; • 为此,项目经理可策划一个小项目,专门研究可能的解决方案,明确技术和工具对成本的影响。 软件项目管理

  37. 基于以上工作,为项目制定高层的或概要的计划,描述对项目的要求和基本概念。基于以上工作,为项目制定高层的或概要的计划,描述对项目的要求和基本概念。 • 进一步进行项目的可行性研究,对项目做一个粗略的成本–效益分析,技术分析和用户环境分析,以确定项目的可行性。 • 利用工作分解结构WBS (Work Breakdown Structure)来确定项目的工作,以文档形式定义项目的整体范围。 • 提交可行性研究报告和项目计划,作为项目启动工作的研究成果,由上级主管部门和用户进行评审。 软件项目管理

  38. 2. 项目的开发阶段 • 项目经理制定更详尽的项目计划,涉及: • 定义一个产品生命周期过程。 • 估算工作量和进度、根据详细的WBS,建立详细的任务进度计划。 • 规划质量管理、配置管理和风险管理。 • 项目计划的内容包括: • 定义项目目标。 • 标识适合项目执行的标准过程。 • 剪裁标准过程以适合项目的需求。 软件项目管理

  39. 定义一个需求变更管理的过程。 • 估算工作量。 • 规划人力资源和团队组织。 • 定义项目的里程碑并制定一个进度表。 • 定义质量目标及实现它们的质量计划。 • 制定故障预防计划。 • 标识风险并制定缓和风险的计划。 • 定义项目的评审计划。 • 定义项目的培训计划。 • 定义项目的跟踪方案。 软件项目管理

  40. 在这个阶段,项目经理的主要任务还有: • 执行项目计划和进度计划的评审; • 获得高层管理人员的授权; • 定义和评审配置管理计划; • 建立项目团队并使其适应项目计划。 • 除了项目经理外,该阶段还涉及到客户、一个SEPG的代表和项目的业务负责人。 • 该阶段的成果是经过评审的项目计划文档。 • 产品生命周期的一般过程(作为参考)如下: 软件项目管理

  41. 招标文件 投标文件 讲解演示 开发合同 采购招标 开标 评标 中标 总体方案 任务书 配置说明 环境培训 分析论证 组织机构 需求分析 说明书 概要设计 说明书 详细设计 说明书 详细设计 需求分析 概要设计 整体测试 说明书 程序接口 设计规范 投标 规划 分析与设计 软件项目管理

  42. 单元测试 说明书 功能测试 说明书 集成测试 说明书 开发 编码单元测试 功能测试 集成测试 测试 说明书 系统测试 说明书 性能测试 说明书 用户 手册 测试 系统测试 性能测试 实施 用户手册 系统使用规程 网络硬件 环境准备 系统安 装调试 用户 培训 试运行 维护 项目总结报告 项目移交 系统运行 系统维护 软件项目管理

  43. 这个阶段就是项目的执行和控制阶段。 主要包括: 按照项目计划执行项目过程。 跟踪和监控项目的状态。 如果项目的绩效偏离项目计划设定的绩效时采取措施进行纠正。 这是项目管理过程中历时最长的一个阶段。 项目经理主要执行以下一些任务: 根据项目计划执行项目。 3. 项目实施阶段 软件项目管理

  44. 跟踪项目状态。 • 与高层管理人员一起评审项目状态。 • 监督项目过程的执行并保持与已定义的项目过程相一致。 • 分析故障原因并执行故障预防任务。 • 监督程序级的绩效。 • 执行里程碑评审。如果需要修改并重新执行计划。 • 在这一阶段,项目团队的其他成员都要参加,成果是为客户接受的工作产品。 软件项目管理

  45. 4. 项目收尾阶段 • 在这个阶段,所有的工作任务都已完成,所有的工作产品已为客户接受。因此,主要工作是对项目进行系统地总结。 • 对项目进行数据分析,建立度量数据做为今后项目估算的基线。 • 收集过程资源(包括模板和指南等)供以后项目使用。 • 记录有关的经验教训。 • 这是团队活动,涉及项目经理、SEPG 和其他成员。结果是项目总结报告。 软件项目管理

  46. 资源水平 时间 5. 项目生命周期的基本活动 软件项目管理

  47. 计划 定义阶段 需求分析 设计 编码 测试 开发阶段 运行•维护 维护阶段 2.4 软件产品的生命周期 • 一个软件产品的生命周期就是软件系统的生命周期模型。常见的模型有: • 瀑布模型 对系统开发和支持的不同阶段有明确的界定,并且是线性的。 软件项目管理

  48. 开始 停止 快速分析 与修改 客户 评价 快速 建造 原型 向客户演示 • 原型模型 先开发一个“原型”,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获得满意的产品。 软件项目管理

  49. 增量1 增量1 交付客户 设计 分析 分析 编码 编码 分析 设计 编码 设计 测试 测试 测试 系统和信息工程 增量2 增量2 交付客户 增量3 增量3 交付客户 日历时间 • 增量模型 把软件产品分解成一系列的增量构件,在开发迭代中逐步加入。 软件项目管理

  50. 风险分析 计划 客户交流 项目入口 点轴线 工程 产品维护 产品增强 产品开发 构造与发布 客户评估 概念开发 • 螺旋模型 将瀑布模型与原型模型结合起来,并风险分析,通过不断迭代和螺旋不断进化,它不是线性的。 软件项目管理

More Related