软件项目管理
项目
定义
是为了创造一个唯一的产品或提供唯一的服务而进行的临时性努力;是以一套独特而相互联系的任务为前提、有效地利用资源、在一定时间内满足一系列特定的目标的多项相关工作的总称
关键特征
临时性、独特性
特征
目标、项目间活动具有相关性、限定的周期、有独特性、资源成本的约束性、不确定性
项目集
项目组合管理》项目集、项目、子项目
定义
是一组相互关联且被协调管理的项目、子项目集和项目集活动,以便获得分别管理所无法获得的利益
软件项目
特征:
脑力成果、唯一性、依赖用户需求
实现项目目标的制约因素
工作范围、成本、进度计划、客户满意度
项目管理
定义
是项目能够按照预定的成本、进度、质量顺利完成并让干系人得到满意,而对成本、人员、进度、质量、风险等进行分析和管理的活动。
广义项目管理
战略管理、运作管理、项目管理
狭义项目管理
•一定主体为了是实现目标、运用各种手段、对执行钟项目周期的个阶段工作进行计划、组织、协调、指挥、控制以取得良好经济效益的各项活动的总和(一次创业那种)
软件项目管理
目标
•确保软件项目满足预算,成本等约束,提交高质量软件产品
要求
项目管理、软件项目、经验技巧
PMBOK
项目管理知识体系指南
项目五大过程组
初始 计划 执行 控制 结束
项目的确立
Make or Buy决策
采购:选择供应商、签订合同、验收
自主研发
外包开发:选择承包商、签订合同、过程监控、验收
项目参与角色
项目发起人 项目经理 客户 项目核心团队 项目干系人
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PcPd4wm1-1591440011152)(file:///C:\Users\wuhon\AppData\Roaming\Tencent\Users\214177702\QQ\WinTemp\RichOle\ZB4YQG$_9_K1CB`[email protected])]
项目经理的职责
开发计划 组织实施 项目控制
项目章程
介绍 项目用户 发起人
范围 :目标 假定 约束
概念模型
最主要的内容:输出项目章程
项目生存期选择
预测型
迭代型
又原型模型,墨刀是原型工具
增量型
敏捷型
迭代加增量
scrum模型
敏捷模型的代表:冲刺规划会议、冲刺复审会议、冲刺回顾会议、每日站立会议
Story需要满足INVEST原则 解耦 一交流 传递价值 易估算 足够小 可测
迭代计划会-迭代-每天站会-迭代评审会议-迭代回顾会
XP极限编程
持续交付
持续集成-持续部署-
DevOps
是一组过程、方法与系统的筒称
全程敏捷思维
混合型
方法 | 需求 | 活动 | 提交 | 目标 |
预测型 | 固定 | 整个项目活动只执行一次 | 提交一次 | 成本可管理 |
迭代型 | 变化 | 一直重复执行,直到正确为止 | 提交一次 | 正确的解决方案 |
增量型 | 变化 | 每个特定的增量活动只执行一次 | 频繁小增量提交 | 速度 |
敏捷型 | 变化 | 一直重复执行,直到正确为止 | 频繁小增量提交 | 通过频繁提交和反馈体现客户价值 |
项目计划
范围计划
项目需求管理
项目需求是计划的第一步,只是项目目标的具体体现。
需求要完整,但不能无限膨胀。
项目成功原因:需求 用户 计划 员工 管理层 预期 目标
软件需求:软件需求规格:业务需求 用户 功能 非功能 系统 质量属性 约束与假设
软件需求管理过程
需求获取:头脑风 访谈 焦点小组 问卷 标杆对照
需求分析:
需求规格编写:
需求验证:
需求变更:建立需求基线 确定需求变更控制过程 建立委员会 影响分析 建立需求基准版本 维护历史记录
传统需求建模
原型:墨刀 Axure
基于数据流建模
基于UML建模
任务分解
过程
在获取需求并确定解决方案后,需要通过创建任务分解结构(WBS)把项目可交付成果和项目任务分解成较小的、更易于管理的组件
WBS
结构化编码 WBS元素(成果物) 工作包(最低的成果物)
任务分解结构
组织结构式(图表形式)、提纲式(清单形式、)
经典拆分法
将项目拆解成不同部分,子部分再不断拆分,直到拆分的部分便于管理,这种拆分方法适合规模较大情况
阶段拆分法
按照项目的不同阶段进行组织
WBS字典
有对WBS具体工作的阐述
任务分解过程
确认并分解的主要组成部分-确定wbs分解标准-确认分解是否详细(是否可以作为费用和时间估计的标准)-确认项目交付成果-验证分解正确性
检验任务分解
充分必要 重复 定义 责任人 成本估算和进度安排
任务分解到40小时以内,敏捷分解到小时
80/8规则
分解方法
类比:
模板
自上而下
自下而上(对项目整体把握不好才用)
敏捷项目分解
敏捷任务分解级别 层级:史诗故事E、特性F、用户故事U、任务T
基于story的分解
•Epics break down
•Epics
拆解Epic的方法
理查德·劳伦斯(Richard Lawrence)和他的团队总结出故事拆分的9种经典方法
1、基于业务流程步骤进行拆分
2、推迟性能实现
,,,,
敏捷分解检验
分解用户故事以后,应给出用户故事的验收标准,作为用户测试用户故事的依据
由于敏捷开发中用户故事一般写在故事卡片上的,验收标准通常写在故事卡片的后面
成本计划
估算过程概念
软件项目规模:即工作量,如编码设计测试 软件管理 软件规划等
估算是项目的总成本
预算是把总成本分配到每个阶段或成果物上
项目总估算成本= 直接+间接成本
软件规模单位
LOC:源代码长度的测量;
FP:用系统的功能数量来测量;
人月 人天 人年
传统估算方法
自下而上
:来源于每个任务
直接成本的组成:开发成本、管理成本、质量成本
间接成本:1.企业模型直接估算 2.简易算法(间接成本=直接*间接系数)
项目总估算成本:=规模*成本系数
代码行
优点:
代码是所有软件开发项目都有的“产品”,而且很容易计算代码行数。
缺点:
1.没有标准
2.风格
3.在项目早期,需求不稳定、设计不成熟、实现不确定的情况下很难准确地估算代码量.
4.代码行强调编码的工作量,只是项目实现阶段的一部分
功能点
功能点公式:
FP =UFC*TCF
UFC:未调整功能点计数
TCF:技术复杂度因子
UFC
外部输入Ei 定级级别:低、中、高
外部输出 :系统输出的报表或文件
外部查询
外部接口文件:系统和系统的交互
内部逻辑文件
TCF
TCF=0.65+0.01(sum(Fi)): Fi:0-5(0不重要,5不重要);TCF:0.65-1.35;sum(Fi)=Fi*(功能总数) ,假设都是一样的Fi
用例点
用例点估算方法的基本步骤 :
1.计算未调整的角色的权值UAW=参与角色数*(当前级别的权值);
2.计算未调整的用例的权值UUCW=参与角色数*(当前级别的权值) ;事务=基本流+备选流
3.计算未调整的用例点UUCP; UUCP =UAW+UUCW
4.计算技术和环境因子TCF=0.6+0.01x(权值x(05)+权值2x(05)+…); 每个功能域涉及到的程度是0-5
计算环境因子ECF=1.4+(-0.03x(权值x(05)+权值2x(05)+…))
5.计算调整的用例点UCP ; UCP =UUCP×TCF×ECF ;Effort =UCP×PF
6.计算工作量( man-hours) 。
1760h=220人天
总成本=220/8/22.5 *2
220/8一天8小时 算出天数
220/8/22.5 算出月数
2为成本系数
类比(自顶向下)
估算人员根据以往的完成类似项目所消耗的总成本(或工作量),来推算将要开发的软件的总成本(或工作量)。
目的:估算精度要求不高,信息不足
三点
三种估算值来界定活动成本的近似区间:最可能成本(cM);最乐观成本(cO);最悲观成本(cP);
三角分布: cE = (cO + cM + cP) / 3
贝塔分布: cE = (cO + 4cM + cP) / 6
专家
由多位专家进行成本估算,
最小ai
最可能的mi
最大bi
Ei=(ai+4mi+bi)/6
E=E1+E2+…En/n(n:表示n 个专家)
参数
通过项目数据,进行回归分析,得出回归模型
通过参数模型估算(规模)成本的方法。
条件:
具有良好的项目数据为基础
存在成熟的项目估算模型
参数模型
面向loc
面向FP
整体公式
E=a+b*SC
E:以人月表示的工作量
a,b,c:经验导出的系数
S:主要的输入参数(通常是LOC,FP等)
Walston-Felix模型
E(规模)=5.2x(kloc)^0.91等
COCOMO模型:结构化成本模型,目前应用最广泛的参数型软件成本估计模型
COCOMO 81:
级别:基本、中等、高级
项目类型:有机(应用程序)、嵌入式(系统程序)、半有机(编译器等)
基本E=a*(kloc)^b
中等E=a*(kloc)^(b ) * 乘法因子 乘法因子=F1XF2XF3…F15.
高级 与中等差不多,区别在于对应用经验AEXP进行修改
COCOMOII:
应用组装模型
PM=NAP*(1-%rec) *
后体系结构模型
PM 7变成 17个乘法因子
E不变
早期设计模型
PM=AxS^Ex (乘法因子 7个相乘)
E=B+0.01X (指数驱动因子 5个相加) 复用模型
:ESLOC=ASLOC*(1-AT/100) * AAM
E:新源代码行
A:必须修改复用代码行
AT/100:自动修改的复用代码占比
AAM:改写调整因子
条件:相似的项目,可复用
C语言与功能点之间的对应关系是150LOC/FP
敏捷估算方法
采用轻量级估算方法快速生成高层级估算
短期规划可以进行详细的估算
故事点
两个标准:裴波那契、2的指数
成本预算
成本预算是将项目的总成本按照项目的进度分摊到各个工作单元中去
分配项目成本预算包括三种情况:
1.给任务分配资源成本
2.给任务分配固定资源成本
3.给任务分配固定成本
案例分析
进度计划
进度过程
任务定义-任务关系-历时估算-项目进度编排-项目进度确定
任务定义:确定为完成项目的各个交付成果所必须进行的诸项具体活动
任务关系:强制性依赖关系、软逻辑关系、外部依赖关系、内部依赖关系
进度管理图示
网络图:是活动排序的一个输出
:PDM (节点(Box)表示活动(任务))**优先图法 **、 ADM (箭线表示活动(任务) )箭线法
甘特图
里程碑图
资源图
燃尽图(Burndown Chart):还剩下多少个用户故事没完成
燃起图(Burnup Chart):已经完成了多少
历时估算
传统方法
定额估算法
T=Q/(R*S)
T:活动历时
Q:任务工作量
R:人力数量
S:工作效率(贡献率)
经验导出模型
参数模型
D=a*Eb
D:进度(以月单位)
E:工作量(以人月单位)
a:2—4之间
b:1/3左右:依赖于项目的自然属性
CPM(关键路径法估计)
关键路径是网络图中最长的路径。
PERT(工程评估评审技术)
利用网络顺序图逻辑关系
项目中某项单独的活动,存在很大的不确定性。
加权算法估算任务历时
利用网络图逻辑关系,确定路径、项目历时
E=(O+4m+P)/6
风险指标:
标准差 δ =(最大估算值-最小估算值)/6
方差 δ ^2 = [(最大估算值-最小估算值)/6]^2
概率理论图:68.3% 95.5% 99.7%
50%=E总
q=标准差总
68.3%=E+q-E+q=2q
预留分析
•应急预留
针对存在
为活动持续时间估算值的10%~15%或一固定值。
•管理预留
针对不存在
其他
Jones的一阶估算准则
类比估算
专家判断
基于承诺的估计
历时估算的基本方法 - 敏捷
•开发速度稳定前
举手表决
•开发速度稳定后
基于故事点生产率的估算
基于迭代生产率的估算
项目进度编排
对scope/time进行优化
超前(Lead)与滞后(Lag)
1)解决任务的搭接
2)对任务可以进行合理的拆分
3)缩短项目工期
关键路径法
最早开始时间(Early start)
最晚开始时间(Late start)
最早完成时间(Early finish)
最晚完成时间(Late finish)
总浮动( Total Float):在不影响项目最早完成时间的前提下,一个任务可以延迟的时间
自由浮动(Free Float):在不影响后置任务最早开始时间的前提下,一个任务可以延迟的时间=后ES-本任务的Lag-本任务的EF
网络图:
正推法-》
确定项目的开始时间,网络图中第一个任务的最早开始时间是项目的开始时间;
ES+Duration=EF
EF+Lag=ES(s),当一个任务有多个前置任务时,选择前置任务中最大的EF加上Lag作为其ES。
依次类推,从左到右,从上到下,计算每个路径的所有任务的ES和最早完成时间EF
逆推法-》
首先确定项目的结束时间,网络图中最后一个任务最晚完成时间是项目的结束时间;
LF-Duration=LS
LS-Lag=LF(p),当一个任务有多个后置任务时,选择其后置任务中最小LS减Lag作为其LF
依次类推,从右到左,从上到下,计算每个任务的最晚开始时间LS和最晚结束时间LF
时间压缩法
时间压缩法是在不改变项目范围的前提下缩短项目工期的方法
应急法–赶工(Crash)
平行作业法–快速跟进
资源优化
• 资源平衡
为了在资源需求与资源供给之间取得平衡,根据资源制约因素对开始日期和完成日期进行调整的一种技术。
•资源平滑
资源平滑法是对进度模型中的活动进行调整,从而使项目资源需求不超过预定的资源限制的一种技术。
敏捷计划
Release planning - 发布计划
– 远期计划 – 粗计划.
•Iteration planning - 迭代计划
– 近期计划- 细计划
项目进度确定
软件项目进度问题(Software Project Scheduling Problem,SPSP)模型:
条件:
1.任务的个数、任务先后顺序、任务需要的技能
- 人员拥有的技能
- 人员单位成本
该是在给定的项目任务工作量及其关系和资源限制下,对项目确定合适的人员安排,以保证项目的时间最短、成本最小。
任务工期1:4/(1+1)=2
任务工期1:6/(0.5+0.5+1)=3
任务1人员成本:1* 2 *6000+1 * 2 *6000
任务2人员成本:0.5 * 3 * 6000+0.5 * 3 * 6000+ 1 * 3 *5000
人员对任务的付出矩阵
mij 〈=1:
第i个人对第j个任务的付出
分配用贪心法
1.WBS
2.任务图
3.资源成本
4.人员任务
质量计划
软件质量
质量:质量是满足要求的程度,包括符合规定的要求和满足顾客隐含需求.
软件质量:软件质量是软件满足明确说明或者隐含的需求能力有关的特征活特征的全体。
质量成本:包括预防成本(评估、预防)和缺陷成本(内部,外部)
质量的形成:质量形成于产品或者服务的开发过程中,而不是事后的检查(测试)把关等。(需求分析和定义-软件设计-软件实现,三个阶段)
软件质量模型:
1976年 Boehm质量模型
1979年 McCall质量模型
1985年 ISO质量模型
质量保证(QA):通过评价项目整体绩效,建立对质量要求的信任
(《软件设计说明书》质量审计)
质量控制(QC):确定项目结果与质量标准是否相符,同时,确定消除不符的原因和方法(例如:代码评审、单元测试)
软件质量活动
敏捷质量活动
结对编程(Pair Programming)
TDD(Test Driven Development)
持续集成与测试
不同层面测试
验收测试驱动开发(ATDD)
迭代评审
迭代回顾会议
Refactor
软件质量计划
1.定软件质量目标(软件质量模型)
2.确定质量活动(QA QC)
质量计划方法:
试验设计
基准对照
质量成本分析
数据图形分析:
流程图方法
因果分析图,
思维导图
案例分析
配置管理计划
基本概念
里程碑结果的集合就基线
配置项主要分为三类
计算机程序(源代码和可执行程序)
描述计算机程序的文档(针对开发者和用户)
数据(包含在程序内部或外部)
软件配置控制委员会可以可以是一个人也可以是一个小组,基本由项目经理和相关人员构成
配置管理过程
1.配置识别、跟踪
2.配置管理环境建立
3.基线变更管理
4.配置管理审计
5.配置状态统计
1.版本管理软件
2.软件管理元
为项目分配工作区
哪些是项目组成员都可以访问
项目人员对配置项的访问权限设置
3.对配置项的变更要执行一定的流程
使得变更可控,而不能随意变更
敏捷项目配置管理
案例分析
团队计划
人员计划
组织结构的主要类型:
1.职能型:以部分为主体承担项目
2.项目型:部门按照项目进行设置
3.矩阵型:职能和项目型的混合体
干系人
1.识别干系人
2.分析干系人
3.制定干系人计划
里哟用项目组织图以图形的方式展示项目成员及其报告关系。
保证团队内、外信息有序高效流转
沟通计划
沟通内容,沟通手段、频度、发送人、接收范围
项目计划
风险计划
概念
存在两种或两种以上的可能性,即可认为该事件存在风险
风险三要素:事件、概率、影响
风险类型:范围角度:商业管理人员等
预测角度:已知、可预测、不可预测
过程:识别-评估-规划-控制
识别:1确定风险来源2确定风险产生条件3描述风险的特征4确定哪些风险事件|方法:德尔菲方法、头脑风暴法、情景分析法、风险条目检查表
评估:决策树分析与EMV
控制风险
风险配置计划
敏捷项目计划
合同计划
合同类型:成本补偿、总价、工料合同
成本补偿类合同:成本加激励费用CPIF 80/20、成本加奖励费用CPAF
总价合同:固定总价FFP 、总价加奖励、总价加经济价格调整FPEPA
工料合同:
敏捷项目合同管理
集成计划
软件项目管理的最重要的四个要素 :
范围(S)
质量(Q)
进度(T)
成本©
项目集成计划是指,通过使用其它专项计划过程中所生成的结果(各种专项计划)、运用整体和综合平衡方法所制定的,用于指导项目实施和管理的整体性、综合性、全局性、协调统一的整体性文件。
项目执行控制
集成计划和项目计划-整体和局部
集成计划执行控制
执行控制过程
1.项目计划,建立标准
2.执行项目,收集项目数据
3比较项目数据于计划,偏差
4.决定是否执行纠偏(采取措施)
5.重新修正计划,形成新的基准
数据采集
变更管理
根据评审结果决定是否修改项目计划
计划的不合理
客观原因导致
为什么要执行范围变更控制 ?
减少变更对项目执行的冲击
核心计划执行控制
范围控制注意点
镀金和蔓延
性能分析的主要技术
图解控制法
挣值分析法(重点)
TAC总时间
BAC总估算
BCWS计划完成的预算成本
ACWP已完成的实际成本
BCWP已完成的预算成本
按50/50规则 、0/100规则
费用差异CV=BCWP-ACWP
成本效能指标CPI=BCWP/ACWP *100%,当项目进展到20%cpi趋于稳定
进度差异sv=BCWP-BCWS
进度效能指标SPI=BCWP/BCWS*100%
估计完成的预测成本EAC=BAC/CPI
估计完成的预测时间SAC=TAC/CPI
项目完成成本差异VAC=BAC-EAC
项目完成时间差异VAT=TAC-SAC
未完工项目指标TCPI=(BAC-BCWP)/(Ggoal-ACWP)
敏捷进度控制
质量执行控制
质量保证
代码走查
代码评审
软件测试
返工
控制图法
趋势分析
抽样统计
质量控制
辅助计划执行控制
团队管理
团队建设-项目培训-人员激励
干系人管理
沟通管理
风险管理
风险识别
风险评估
风险规划
风险控制
合同管理
敏捷管理
案例分析
项目结束
过程
项目验收
合同终止
项目最后评审
果(各种专项计划)、运用整体和综合平衡方法所制定的,用于指导项目实施和管理的整体性、综合性、全局性、协调统一的整体性文件。
项目执行控制
集成计划和项目计划-整体和局部
集成计划执行控制
执行控制过程
1.项目计划,建立标准
2.执行项目,收集项目数据
3比较项目数据于计划,偏差
4.决定是否执行纠偏(采取措施)
5.重新修正计划,形成新的基准
数据采集
变更管理
根据评审结果决定是否修改项目计划
计划的不合理
客观原因导致
为什么要执行范围变更控制 ?
减少变更对项目执行的冲击
核心计划执行控制
范围控制注意点
镀金和蔓延
性能分析的主要技术
图解控制法
挣值分析法(重点)
TAC总时间
BAC总估算
BCWS计划完成的预算成本
ACWP已完成的实际成本
BCWP已完成的预算成本
按50/50规则 、0/100规则
费用差异CV=BCWP-ACWP
成本效能指标CPI=BCWP/ACWP *100%,当项目进展到20%cpi趋于稳定
进度差异sv=BCWP-BCWS
进度效能指标SPI=BCWP/BCWS*100%
估计完成的预测成本EAC=BAC/CPI
估计完成的预测时间SAC=TAC/CPI
项目完成成本差异VAC=BAC-EAC
项目完成时间差异VAT=TAC-SAC
未完工项目指标TCPI=(BAC-BCWP)/(Ggoal-ACWP)
敏捷进度控制
质量执行控制
质量保证
代码走查
代码评审
软件测试
返工
控制图法
趋势分析
抽样统计
质量控制
辅助计划执行控制
团队管理
团队建设-项目培训-人员激励
干系人管理
沟通管理
风险管理
风险识别
风险评估
风险规划
风险控制
合同管理
敏捷管理
案例分析
项目结束
过程
项目验收
合同终止
项目最后评审
项目总结报告