首页 > 其他 > 详细

软件项目管理

时间:2020-07-08 19:33:45      阅读:86      评论:0      收藏:0      [点我收藏+]

?

第一章 软件项目管理基本概念

项目定义

项目的特征

项目管理定义

软件项目管理

敏捷模型(Agile Development)

敏捷宣言——4个价值

第二章 软件项目确立

项目立项

项目招投标过程

项目章程(Project Charter)

敏捷项目章程

基本要素:

第三章 生存期模型

生存期模型

软件开发模型变迁

项目生存期选择

预测型-模型

迭代模型Or:原型模型

增量模型

敏捷方法

Scrum模型

XP(eXtreme Programming)极限编程模型

精益(Lean)

DevOps: Development和Operations的组合

混合模型

第四章 软件需求管理

软件需求管理过程

需求建模的基本方法

软件需求定义

需求获取

需求分析

需求规格编写

需求验证

需求变更管理

需求建模的基本方法介绍

基于数据流- 结构化分析方法

基于数据流的技术

基于UML方法

UML需求视图

基于UML方法综述

Product Backlog:产品待办事项列表

Sprint Backlog:待办事项列表的细化

第五章 软件项目任务分解

任务分解

工作包( Work packages)

分解方法

WBS任务分解建议

第六章 软件项目成本计划

关于估算

软件项目规模

软件规模单位

软件项目成本

成本估算结果

直接成本

间接成本

传统估算方法

代码行估算法

功能点估算法

用例点估算法

类比 (自顶向下)估算法

自下而上估算法

三点估算法

参数估算法

专家估算法

敏捷估算思维

Story point估算方法

成本预算

分配项目成本预算包括三种情况:

分配固定资源成本

第七章 软件项目进度计划

进度计划的重要性

进度的定义

任务定义(Defining Activities)

项目任务的关联关系

任务之间的关系

任务之间关联关系的依据

进度管理图示

网络图

常用的网络图

PDM图例

PDM(Precedence Diagramming Method)

ADM图例

ADM( Arrow Diagramming Method )

ADM图例-虚活动

历时估算

历时估算的基本方法 - 传统

定额估算法

经验导出模型

关键路径法估计

工程评估评审技术(PERT)

预留分析

Jones的一阶估算准则

类比估算

专家判断

基于承诺的进度估算

历时估算的基本方法 - 敏捷

进度编制的基本方法

任务滞后(Lag)

任务超前(Lead)

关键路径法

关键路径(Critical Path )

时间压缩法

资源优化

Agile Planning:敏捷计划

软件项目进度问题(SPSP)模型

第九章 软件项目配置管理计划

软件配置管理基本概念

配置管理定义

配置管理的主要功能

软件配置项

基线定义

软件配置控制委员会(SCCB)

软件配置管理过程

配置管理基本过程

敏捷项目配置管理

全面配置管理的基本要求

代码和编译构建产物的配置管理

制定有效的分支管理策略

第十章 软件项目团队计划

人员职责计划

组织结构的主要类型

人员职责计划

干系人管理计划

干系人(Stakholder)

沟通计划

项目沟通的方式

项目沟通活动的分类

项目沟通计划

敏捷团队规划

敏捷的角色

Scrum 角色

敏捷团队

仆人式领导

敏捷方法提倡高度透明

第十一章 软件项目风险计划

风险管理过程

风险定义

风险类型

项目风险的三要素

风险管理的四个过程

风险管理计划

风险识别方法

风险评估

风险评估的方法-定性风险评估

风险影响

风险评估的方法-定量风险评估

风险规划的主要策略

回避风险

转移风险

损失控制

自留风险

敏捷项目风险计划

敏捷项目风险应对方法

敏捷项目存在风险

第十四章 项目核心计划执行控制

范围管理 - 传统与敏捷

范围管理

分析技术

范围控制要点

敏捷项目范围管理

性能分析的主要技术

图解控制法

挣值分析法

网络图分析

敏捷方法

?

第一章 软件项目管理基本概念

项目定义

项目(Project)是为了创造一个唯一的产品或提供一 个唯一的服务而进行的临时性的努力。

项目的特征

项目管理定义

项目管理是一系列的伴随着项目的进行而进 行的、目的是为了确保项目能够达到期望的 结果的一系列管理行为。

软件项目管理

敏捷模型(Agile Development)

敏捷宣言——4个价值

第二章 软件项目确立

项目立项

明确项目的目标、时间表、项目使用的资源和经费,而且得到执行该项目的项目经理和项目发起人的认可 。

项目招投标过程

甲方招标书定义——乙方项目分析——招标与竞标——合同签署

项目章程(Project Charter)

确认项目存在的文件,包括对项目的确认、对项目经理的授权和项目目标的概述等。

敏捷项目章程

基本要素:

第三章 生存期模型

生存期模型

软件开发模型变迁

作坊式——过程控制——敏捷——DevOps

项目生存期选择

预测型-模型

迭代模型Or:原型模型

增量模型

优点:

敏捷方法

敏捷方法是一个囊括了各种框架和方法的涵盖性术语。

Scrum模型

XP(eXtreme Programming)极限编程模型

XP(eXtreme Programming)极限编程是由Kent Beck提出的一套针对业务需求和软件开发实践的规则。

精益(Lean)

精益(Lean)模式提倡持续不断地改进, 减少流程中的浪费。

DevOps: Development和Operations的组合

DevOps是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障( QA)部门之间的沟通、协作与整合。

混合模型

第四章 软件需求管理

软件需求管理过程

需求建模的基本方法

软件需求定义

需求是指用户对软件的功能和性能的要求。

需求获取

需求分析

需求分析是为最终用户所看到的系统建立一个概念模型,是对需求的抽象描述。

需求规格编写

需求分析工作完成的一个基本标志是形成了一份完整的、规范的需求规格说明书。

需求验证

需求变更管理

① 确定需求变更控制过程

② 建立变更控制委员会(SCCB)

③ 进行需求变更影响分析

④ 跟踪所有受需求变更影响的工作产品

⑤ 建立需求基准版本和需求控制版本文档

⑥ 维护需求变更的历史记录

⑦ 跟踪每项需求的状态

⑧ 衡量需求稳定性

需求建模的基本方法介绍

传统方法: 1. 原型方法 2. 基于数据流建模 3. 基于UML建模

敏捷方法

基于数据流- 结构化分析方法

基于数据流的技术

基于UML方法

UML需求视图

基于UML方法综述

Product Backlog:产品待办事项列表

Sprint Backlog:待办事项列表的细化

第五章 软件项目任务分解

任务分解

任务分解是项目管理的基础

过程:将一个项目分解为更多的工作细目或者子项目,使项目变得更小、更易管理、 更易操作

结果:WBS( Work Breakdown Structure: 任务分解结构)

工作包( Work packages)

分解方法

WBS任务分解建议

第六章 软件项目成本计划

关于估算

软件项目规模

软件项目规模即工作量 例如:软件规划,软件管理,需求,设计,编码,测试,以及后期的维护等任务。

软件规模单位

软件项目成本

成本估算结果

直接成本

与具体项目相关的成本, 例如:参与项目的人员成本

间接成本

可以分摊到各个具体项目中的成本,例如:培训、房租水电、员工福利、市场费用、管理费、其他等等

传统估算方法

代码行估算法

从软件程序量的角度定义项目规模

  1. 与具体的编程语言有关
  2. 分解足够详细
  3. 有一定的经验数据

代码行技术的主要优缺点

优点:代码是所有软件开发项目都有的"产品",而且很容易计算代码行数。

缺点:1. 对代码行没有公认的可接受的标准定义

2. 代码行数量依赖于所用的编程语言和个人的编程风格.

3. 在项目早期,需求不稳定、设计不成熟、实现不确定的 情况下很难准确地估算代码量.

4. 代码行强调编码的工作量,只是项目实现阶段的一部分

功能点估算法

Albrecht功能点估算

功能点公式

FP =UFC*TCF

UFC:未调整功能点计数

TCF:技术复杂度因子

外部输入(External Inputs: EI)

给软件提供面向应用的数据的项(如屏幕、表单、对话 框、控件,文件等);在这个过程中,数据穿越外部边界进入到系统内部。

外部输出(External Outputs EO)

向用户提供(经过处理的)面向应用的信息,例如, 报表和出错信息等。

外部查询(External Inquiry EQ)

外部查询是一个输入引出一个即时的简单输出。 没有处理过程。

外部接口文件(External Interface Files EIF‘s)

外部接口文件是用户可以识别的一组逻辑相关数据, 这组数据只能被引用。用这些接口把信息传送给另一个系统。

内部逻辑文件(Internal Logical Files: ILF‘S)

用户可以识别的一组逻辑相关的数据,而且完全存在于应用的边界之内,并且通过外部输入维护,是逻辑主文件的数目。

其他功能点方法

用例点估算法

用例点估算方法的基本步骤

1. 计算未调整的角色权值UAW;

2. 计算未调整的用例权值UUCW ;

3. 计算未调整的用例点UUCP;

4. 计算技术和环境因子TEF;

5. 计算调整的用例点UCP ;

6. 计算工作量( man-hours) 。

类比 (自顶向下)估算法

估算人员根据以往的完成类似项目所消耗的总成本(或工作量),来推算将要开发的软件的总成本(或工作量)。是一种自上而下的估算形式。

类比估算—使用情况

自下而上估算法

利用任务分解图(WBS),对各个具体工作包进行详细的成本估算,然后将结果累加起来得出项目总成本。

特点

  1. 相对比较准确,它的准确度来源于每个任务的估算情况
  2. 花费时间

三点估算法

基于任务成本的三种估算值来计算预期成本的方法.

三种估算值

最可能成本(CM):比较现实的估算成本。

最乐观成本(CO):最好情况所得到的估算成本。

最悲观成本(CP):最差情况所得到的估算成本。

参数估算法

参数模型综述

使用条件

  1. 具有良好的项目数据为基础
  2. 存在成熟的项目估算模型

特点

  1. 比较简单,而且也比较准确
  2. 如果模型选择不当或者数据不准, 也会导致偏差

专家估算法

由多位专家进行成本估算,一个专家可能会有偏见,最好由多位专家进行估算,取得多个估算值, 最后得出综合的估算值。

专家估算法-Deiphi

1. 组织者确定专家,这些专家互相不见面

2. 组织者发给每位专家一份软件规格说明

3. 专家以无记名对该软件给出3个规模的估算值

① 最小ai

② 最可能的mi

③ 最大bi

4. 组织者计算每位专家的Ei=(ai+4mi+bi)/6

5. 最终可以获得一个多数专家共识的软件规模: E=E1+E2+…En/n(n:表示n 个专家)

6. 如果各个专家的估算差异超出规定的范围(例如: 15%),则需重复上述过程

敏捷估算思维

Story point估算方法

Story point(故事点)用来度量实现一个Story 需要付 出的工作量的相对估算。

成本预算

分配项目成本预算包括三种情况:

1. 给任务分配资源成本

2. 给任务分配固定资源成本

3. 给任务分配固定成本

分配固定资源成本

当一个项目的资源需要固定数量的资金时,可以向任务分配固定资源成本。

第七章 软件项目进度计划

进度计划的重要性

  1. 按时完成项目是项目经理最大的挑战之一
  2. 时间是项目规划中灵活性最小的因素
  3. 进度问题是项目冲突的主要原因

进度的定义

进度是对执行的活动和里程碑制定的工作计划日期表

任务定义(Defining Activities)

确定为完成项目的各个交付成果所必须进行的诸项具体活动

项目任务的关联关系

项目各项活动之间存在一定的关联关系,根据这些关系安排任务之间的顺序

前置活动(任务)→后置活动(任务)

任务之间的关系

技术分享图片

任务之间关联关系的依据

进度管理图示

网络图

常用的网络图

PDM (Precedence Diagramming Method)

优先图法 ,节点法 (单代号)网络图

ADM (Arrow Diagramming Method )

箭线法 (双代号)网络图

PDM图例

技术分享图片

技术分享图片

PDM(Precedence Diagramming Method)

ADM图例

技术分享图片

ADM( Arrow Diagramming Method )

ADM图例-虚活动

虚活动

技术分享图片

历时估算

估计任务、路径、项目的持续时间

历时估算的基本方法 - 传统

定额估算法

T=Q/(R*S)

T:活动历时

Q:任务工作量

R:人力数量

S:工作效率(贡献率)

e.g: Q=6人天 ,R=2人,S=1 则:T=3天

Q=6人天 ,R=2,S=0.5 则:T=6天

经验导出模型

技术分享图片

D:进度(以月单位)

E:工作量(以人月单位)

a:2—4之间

b:1/3左右:依赖于项目的自然属性

建议掌握模型

Walston-Felix模型:

技术分享图片

基本COCOMO:

技术分享图片

关键路径法估计

工程评估评审技术(PERT)

工程评估评审技术(PERT)-加权算法

PERT的风险指标

PERT估算举例

技术分享图片

PERT估算评价举例

技术分享图片

技术分享图片

预留分析

应急预留

应急预留是包含在进度基准中的一段储备时间, 用来应对已经接受的已识别风险, 以应对进度方面的不确定性 。

管理预留

管理预留是为管理控制的目的而特别留出的项 目预算,用来应对项目范围中不可预见的风险。

Jones的一阶估算准则

类比估算

以过去类似项目的实际持续时间为依据,来估算当前项目的持续时间.

专家判断

根据下面专业知识而做出的历时估算

基于承诺的进度估算

优点:有利于开发者对进度的关注

历时估算的基本方法 - 敏捷

开发速度稳定前- 举手表决

开发速度稳定后

传统估算方法:

  1. 定额估算法
  2. 经验导出模型
  3. CPM(关键路径法估计)
  4. PERT(工程评估评审技术)
  5. 基于承诺的进度估计
  6. Jones的一阶估算准则

敏捷估算方法:

  1. 举手表决
  2. 基于故事点生产率的估算
  3. 基于迭代生产率的估算

进度编制的基本方法

任务滞后(Lag)

任务超前(Lead)

作用:

1)解决任务的搭接

2)对任务可以进行合理的拆分

3)缩短项目工期

关键路径法

浮动时间(Float):浮动时间是一个任务的机动性,它是一个任务在不影响其它任务或者项目完成的情况下可以延迟的时间量。

总浮动与自由浮动

总浮动( Total Float): 在不影响项目最早完成时间的前提下,一个任务可以延迟的时间

自由浮动(Free Float):在不影响后置任务最早开始时间的前提下,一个任务可以延迟的时间

关键路径(Critical Path )

时间压缩法

时间压缩法是在不改变项目范围的前提下缩短项目工期的方法

应急法--赶工(Crash)

1. 进度压缩单位成本方法线性关系

进度压缩单位成本=(压缩成本-正常成本)/(正常进度-压缩进度)

2. Charles Symons(1991)方法进度压缩比普通进度短的时候,费用迅速上涨

进度压缩因子=压缩进度/正常进度

压缩进度的工作量=正常工作量/进度压缩因子

平行作业法--快速跟进

改变活动间的逻辑关系,并行开展某些活动.

提前量方法

资源优化

资源平衡

资源平滑法

资源平滑法是在项目编排中进行资源的优化配置, 保证资源最优化、最优效 。

资源平滑不会改变项目关键路径,完工日期也不会延迟。活动只在其自由和总浮动时间内延迟.

Agile Planning:敏捷计划

Release planning - 发布计划 – 远期计划 – 粗计划.

Iteration planning - 迭代计划 – 近期计划 – 细计划

软件项目进度问题(SPSP)模型

软件项目进度问题(Software Project Scheduling Problem,SPSP)模型是在给定的项目任务工作量及其关系和资源限制下,对项目确定合适的人员安排,以保证项目的时间最短、成本最小。

目标:时间最短、 成本最低

目标函数:

技术分享图片

目标结果:f(x)达到最小

第九章 软件项目配置管理计划

软件配置管理基本概念

配置管理定义

配置管理的主要功能

软件配置项

SCI:software configration item

受控于软件配置管理的款项

基线定义

软件配置控制委员会(SCCB)

软件配置管理过程

配置管理基本过程

1.配置项标识、跟踪

将软件项目中需要进行控制的部分拆分成SCI

建立配置项的对应关系,以便于进行跟踪和版本控制.实现数字化管理

2.配置管理环境建立

建立配置管理库

软件配置管理库是用来存储所有基线配置项及相关文件的等内容的系统,是在软件产品的整个生存期中建立和维护软件产品完整性的主要手段。

3.基线变更管理

基线修改应受到控制,这种变化要经SCCB授权,按程序进行控制并记录基线修改的过程。

4.配置管理审计

5.配置状态统计

6.配置管理计划

敏捷项目配置管理

全面配置管理的基本要求

代码和编译构建产物的配置管理

制定有效的分支管理策略

基于分支的开发

开发都在分支上提交,并且可能有多个并行分支,直到快要上线时甚至上线后才合并到主干

基于主干的开发

所有提交到主干上,提交后自动触发持续集成进行验证和快速反馈

持续交付更倾向使用基于主干的开发模式

第十章 软件项目团队计划

人员职责计划

组织结构的主要类型

1. 职能型

2. 项目型

3. 矩阵型

人员职责计划

责任分配矩阵(RAM)

组织分解结构 (OBS)

其它,例如文本型

干系人管理计划

干系人(Stakholder)

干系人(stakeholder)是能影响项目决策、活动或者结果的个人、群体或者组织,以及会受到或者自认为会受到项目决策、活动或者结果影响的个人、 群体或者组织。

沟通计划

项目沟通的方式

1. 书面沟通和口头沟通

2. 语言沟通和非语言沟通

3. 正式沟通和非正式沟通

4. 单向沟通和双向沟通

5. 网络沟通

项目沟通活动的分类

项目沟通计划

沟通计划是确定谁需要信息,需要什么信息, 何时需要信息,以及如何将信息分发给他们。

敏捷团队规划

敏捷的角色

产品负责人(Product owner )

团队促进者(Team facilitator )

跨职能团队成员(Crossfunctional team member )

Scrum 角色

Product Owner(产品负责人)

Scrum Master ( Scrum主管)

开发团队

敏捷团队

最有效的敏捷团队往往由三到九个成员组成。(黄金人 数5-9人)

理想情况下,敏捷团队应该集中在一个工作场所工作。

团队成员100%为专职成员, 协同工作

敏捷鼓励自我管理团队

仆人式领导

仆人式领导是通过对团队服务来领导团队的

注重理解和关注团队成员的需要和发展

仆人式领导为团队赋权

旨在使团队尽可能达到最高绩效。

敏捷方法提倡高度透明

邀请所有相关方参与项目会议和审查

将项目信息发布到公共空间

第十一章 软件项目风险计划

风险管理过程

风险定义

风险是对潜在的、未来可能发生损害的一种度量, 如果风险确实发生了,则会对项目产生有害的或者负面的影响。

软件风险对软件开发过程及软件产品本身可能造成的伤害或损失

风险类型

预测角度

已知风险-Known known

可预测风险-Known unknown

不可预测风险-unknown unknown

范围角度

商业风险、管理风险、人员风险、技术风险、开发环境风险、客户风险、过程风险、产品规模风险等。

项目风险的三要素

风险事件

事件概率

事件影响

风险管理的四个过程

1)风险识别

风险识别是识别风险事件, 系统化地确定对项目计划的威胁,识别已知和可预测的风险。

2)风险评估

对风险事件发生概率的评估,对项目风险影响的评估,给出项目风险排序。

3)风险规划

针对风险分析的结果,制定一定的行动和策略来对付、减少、以至于消灭风险事件造成的影响

4)风险控制

风险控制是在项目执行过程中实施和监控风险计划,同时,不断进行风险识别、风险分析、风险规划的过程。

风险管理计划

风险识别方法

风险评估

分析

风险发生的概率(P)

风险对项目的影响(I)

风险值,R=F(P,I)

确定优先次序

按风险值排序

确定最需要关注的TOP风险

风险评估的方法-定性风险评估

定性评估风险概率及后果

风险概率

风险概率度量:

风险影响

风险影响度量

风险评估的方法-定量风险评估

1. 盈亏平衡分析

2. 敏感性分析

3. 模拟

4. 决策树分析

决策树分析

决策树分析是一种图表分析方法

提供项目所有可供选择的行动方案,行动方案之间的关系,行动方案的后果以及发生的概率

提供选择一个最佳的方案的依据

决策树分析与EMV ( Expected Monetary Value)

EMV (损益期望值)是决策树的一种计算值

根据预期结果、发生的概率计算出一种期望的损益

例如: 某行动方案成功的概率是50%,收益是10 。EMV=10*50%=5

风险规划的主要策略

1. 回避风险

2. 转移风险

3. 损失控制

4. 自留风险

回避风险

回避风险是对可能发生的风险尽可能的规避,采取主动放弃或者拒绝使用导致风险的方案

例如:放弃采用新技术

转移风险

转移风险是为了避免承担风险损失,有意识将损失或与损失有关的财务后果转嫁出去的方法。

例如:分包、开脱责任合同、保险

损失控制

损失预防

例如:项目技术培训,预防技术失败损失预防

损失抑制

例如:项目人员储备,抑制人员流失的损失

自留风险

由项目组织自己承担风险事故所致损失的措施。

敏捷项目风险计划

敏捷项目风险应对方法

损失预防与损失抑制策略

跨职能项目团队(识别风险)

选择迭代内容 (选择风险小的)

频繁评审增量产品

持续测试可以及早发现问题

客户参与可以减少需求变更的风险

敏捷项目存在风险

没有长期计划,识别一些风险比较困难.

没有长期规划,存在变更

第十四章 项目核心计划执行控制

范围管理 - 传统与敏捷

范围管理

范围执行控制是监督项目的范围状态,管理范围基准变更的过程。

分析技术

  1. 偏差分析
  2. 趋势分析

范围控制要点

防止不合理的范围扩张

敏捷项目范围管理

把需求列入未完项

不断构建和评审原形系统

通过发布多个版本来明确需求

性能分析的主要技术

图解控制法

资源图、进度图、成本图

1)项目甘特图

2)延迟图

3)时间线

4)费用曲线图

5)资源图偏差

偏差分析与控制

精确记录任务消耗的实际时间

量化任务的计划偏差

持续时间偏差 (%) =(( 实际持续时间 - 计划持续时 间 )/ 计划持续时间 )*100

进度偏差 (%)=(( 实际结束时间 - 计划结束时间 )/ 计划持续时间 )*100

对计划偏差进行根因分析

挣值分析法

输入

① BAC(Budget At Completion) 预算总值(估算结果)

② TAC(Time At Completion) 预计完成时间

③ BCWS(Budgeted cost of work scheduled) 计划工作成本

④ ACWP(Actual cost of work performed) 实际工作成本

⑤ BCWP(Budgeted cost of work performed) 已获值(Earned Value)

挣值分析输出

进度差异:SV(Schedule Variance)=BCWP-BCWS

=0:按照计划进度进行

<0:落后于进度

>0:超前于进度

成本差异:CV(Cost Variance )=BCWP-ACWP

=0:按照计划预算进行

<0:比预算差

>0:比预算好

进度效能指标 SPI (Schedule Performance Index)= BCWP/BCWS

=1:按照计划进度进行

>1:超前于进度

<1:落后于进度

成本效能指标 CPI (Cost Performance Index)= BCWP/ACWP

=1:按照计划预算进行

>1:低于预算

<1:超出预算

EAC (Estimate At Completion)=BAC/CPI 预测项目完成成本

SAC(Schedule At Completion )=TAC/SPI 预测项目完成时间

成本偏差:VAC=BAC-EAC

时间偏差:VAT=SAC-TAC

未完工指数 TCPI=剩余工作/剩余成本 =(BAC-BCWP)/(Goal-ACWP)

网络图分析

分析网络图中某任务的进度成本情况

可以采用贝叶斯网络解决项目中的不确定性问题

敏捷方法

软件项目管理

原文:https://www.cnblogs.com/cc99/p/13268427.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!