软件项目管理 第三章 软件项目进度管理
本章内容提要 软件项目进度管理概述 软件项目任务分解 活动定义和排序 活动历时估计 制定进度计划 进度控制(项目跟踪)
第四节 活动历时估计 估计项目活动的持续时间 每个活动的历时估计 项目的总历时估计
活动历时估计的基本方法 定额估算法 工程评价技术(PERT) 基于进度表的历时估计 Jones的一阶估算准则 其它方法
定额估算法 T=Q/(R*S) T:活动持续时间(小时、日、周、月) Q:活动的工作量(人月、人天) R:人力或设备的数量
定额估算法 方法比较简单,容易计算。 适合规模比较小的项目,比如说小于10000LOC或者说小于6个人月工作量的项目。
活动历时估计的基本方法 定额估算法 工程评价技术(PERT) 基于进度表的历时估计 Jones的一阶估算准则 其它方法
工程评价技术(PERT) PERT (Program Evaluation and Review Technique)最初产生于1958年,是美国海军部开发北极星潜艇系统时为协调3000多个承包商和研究机构开发的。 PERT是利用网络图逻辑关系和加权历时估算来计算项目历时的技术。 PERT假设项目持续时间是随机的。当项目中的活动存在很大的不确定性时适于采用此法。
工程评价技术(PERT) 在估计项目活动的持续时间时,PERT采用三点估计法,即乐观值、悲观值和最可能值。 采用加权平均得到持续时间的期望值: E=(O+4M+P)/6 O是最小估算值:乐观(Optimistic), P是最大估算值:悲观(Pessimistic), M是最可能估算值(Most Likely)。
工程评价技术(PERT) 例如: 某活动持续时间的乐观值O=8 workdays 最可能值M=10 workdays 悲观值P=24 workdays 则活动持续时间的期望值为E=(8+4*10+24)/6 =12 workdays
PERT的保证率 保证率指活动在估计的时间内完成的概率。 保证率 8天 24天 100% 10天
PERT历时估计的可信度 例如: σ=(24-8) /6=2.67 标准差σ =(悲观值-乐观值)/6 方差σ2 = [(悲观值-乐观值)/6]2 例如: σ=(24-8) /6=2.67
B C D A 1 2 3 4 5 PERT评估存在多个活动的一条路径 历时期望值 E=E1+E2+….En
PERT举例 3,4,6 2,3,6 4,6,8 2 3 4 1 J K L 项 活动 O,M,P E δ δ 2 J 2,3,6 3.33 4/6 16/36 K 4,6,8 6 L 3,4,6 4.17 3/6 9/36 估计路径总历时 13.5 1.07 41/36
标准差与保证率 PERT认为活动历时满足正态分布。 68.3% E=(O+4M+P)/6 95.5% 99.7%
PERT举例 历时估计期望E=13.5, σ=1.07 范围 概率 从 到 T1 ±σ 68.3% 12.43 14.57 T2 ± 2σ 95.5% 11.4 15.6 T3 ± 3σ 99.7% 10.3 16.7 项目在14.57天内完成的概率是多少? 项目在10.3天内完成的概率是多少?
PERT举例 E 50% T=E+σ =13.5+1.07=14.57 P=50%+34.2%=84.2% 68.3% 95.5% 68.3 %/2 =34.2% 50% P=50%+34.2%=84.2% -2 σ E +2σ -3σ -1 σ +1σ +3σ 68.3% 95.5% 99.7%
PERT举例 E 50% 68.3% 95.5% 99.7% T=E-3σ =13.5-3.21=10.3 P=50%-49.9%=0.1% 99.7%/2=49.9% P=50%-49.9%=0.1% -2σ E 说明任何项目都有不可压缩的最短周期,不能无限制地压缩进度。 -3σ -1σ +1σ +2σ +3σ 68.3% 95.5% 99.7%
活动历时估计的基本方法 定额估算法 工程评价技术(PERT) 基于进度表的历时估计 Jones的一阶估算准则 其它方法
基于进度表的历时估计 通过查给定的进度表来估计项目的历时。 可能的最短进度表 有效进度表 普通进度表 为企业提供了一个项目历时估计的参照,尤其对没有任何历史项目记录的企业有很大帮助。
可能的最短进度表-人员 人才库中前10%的最拔尖的人才。 有几年应用编程语言和编程环境的工作经验。 开发人员掌握了应用领域的详细知识。 目标明确,努力工作。 分享成果,团队和谐。 不存在人员调整。
可能的最短进度表-管理 具有理想的项目管理 开发人员可以专注于本职的工作 采用矩阵管理模式配备员工 尽可能地压缩项目进度,直到不能压缩。 矩阵管理,是一种管理模式,不同于我国公司或企业当中的职能制、直线制或者由两者派生而成的直线职能制。 举例说明:将一项工作,委任给一名项目经理,由其牵头组织各个部门的有关人员形成一个临时组织来共同完成此项工作。这个临时组织就是矩阵管理的一个单元。这个临时组织的成员,跨部门的界限,在行政关系上,不受原部门行政领导管理而改由项目经理负责管理。项目结束,此临时组织工作终结。 其主要优点是,有利于落实责任制,充分利用企业内部人力资源,避免部门之间互相扯皮。
可能的最短进度表-工具支持 有先进的软件开发工具 开发人员可以无限制地使用资源 工作环境理想,在集中的工作区域开发 交流工具使用便利
可能的最短进度表-开发方法 使用最时效的开发方法和开发工具 设计阶段开始的时候已经完全了解需求 需求不变更
可能的最短进度表 表中数据均为从大量项目实践中总结出的经验数据。
可能的最短进度表
基于进度表的估算 可能的最短进度表 有效进度表 普通进度表
有效进度表-人员 人才库中前25%的最拔尖的人才。 有1年应用编程语言和编程环境的工作经验。 开发人员对目标有共同的看法,相互之间没有严重冲突。 采用有效的人员管理模式。 每年人员调整少于 6%。
有效进度表-其它 采用有效的编程工具 主动的风险管理 优良的物理环境 沟通工具使用方便
有效进度表
有效进度表
基于进度表的估算 可能的最短进度表 有效进度表 普通进度表 大多数项目使用普通进度表,尤其是开发基础比较薄弱的企业。如果不出太多的问题,一般项目达到普通进度有50%的把握。
普通进度表—人员 人才库中中等以上的人作为开发团队成员。 开发人员对编程语言和编程环境较熟悉。 开发人员对应用领域有一定的经验,但不丰富。 团队不是很有凝聚力,但解决冲突时有一定的经验。 每年人员调整10-12%。
普通进度表—其它 风险管理不像理想情况那样得力。 交流工具容易使用。 工作环境一般,不是很理想。 进度压缩一般。
普通进度表
活动历时估计的基本方法 定额估算法 工程评价技术(PERT) 基于进度表的历时估计 Jones的一阶估算准则 其它方法
Jones的一阶估算准则 取得功能点的总和,从幂次表中选择合适的幂次将它升幂,得到软件项目的进度。 软件类型 最优级 平均 最差级 系统软件 0.43 0.45 0.48 商业软件 0.41 0.46 封装商品软件 0.39 0.42
Jones的一阶估算准则举例 某软件项目的功能点FP=350 软件类型是商业软件 承担这个项目的是平均水平的软件公司 则:粗略的进度= 350exp(0.43)=12月
活动历时估计的基本方法 定额估算法 工程评价技术(PERT) 基于进度表的历时估计 Jones的一阶估算准则 其它方法
活动历时估计的其它方法 专家估算方法 类推估计 模拟估算 通过专家根据过去项目的资料信息进行判断,以估算项目历时。 利用先前类似活动的实际时间作为估计未来活动时间的基础。 模拟估算 用不同的假设试验一些情形,在计算机上进行一个项目的模拟,从而计算相应的时间。 类推估计:利用先前类似活动的实际时间作为估计未来活动时间的基础。 模拟估算:用不同的假设试验一些情形,在计算机上进行一个项目的模拟,从而计算相应的时间。
交付日期 按期或者提前交付的概率 4月5日 5% 5月5日 50% 6月5日 90% 估计结果的不确定性 历时估计结果与实际历时有误差,因为项目进度和成本的估算不可能得到一个精确的结果。
本章内容提要 软件项目进度管理概述 软件项目任务分解 活动定义和排序 活动历时估计 制定进度计划 进度控制(项目跟踪)
第五节:制定项目进度计划 确定项目中所有活动的开始和结束时间。 计划是三维的,考虑时间,费用和资源。 项目进度计划是监控项目实施的基础,它是项目管理的基准。所以有时也称项目核心计划。 软件项目的进度计划于成本管理是紧密结合的。
制定项目进度计划的主要活动 进度编制 资源调整
进度编制的基本方法 关键路径法 正推法 逆推法 时间压缩法 赶工(Crash) 快速跟进(Fast tracking:搭接)
关键路径法 (CPM:Critical Path Method) 根据指定的网络图逻辑关系和活动的历时估计,计算每一个活动的最早和最迟开始和完成时间。 计算活动的浮动时间。 计算网络图中最长的路径(关键路径)。 确定项目完成时间。
活动时间参数说明 最早开始时间(Early Start) 最晚开始时间(Late Start) 最早完成时间(Early Finish) 最晚完成时间(Late Finish) 最早开始时间:一项活动最早可以开始执行的时间。 最晚开始时间:一项活动最晚可以开始执行的时间。 最早完成时间:一项活动的最早可以完成的时间。 最晚完成时间:一项活动的最晚可以完成的时间。
活动时间参数说明 浮动时间(Float)是一个活动的机动性,它是一个活动在不影响其它活动或者项目完成的情况下可以延迟的时间量。 自由浮动(Free Float):在不影响后置活动最早开始时间的情况下本活动可以延迟的时间。 总浮动(Total Float):在不影响项目最早完成时间的情况下本活动可以延迟的时间。
活动时间参数说明 A:30天 B:10天 A: ES=0, LS=0, EF=30, LF=30 开始 结束 B:10天 duration表示活动的持续时间。 A: ES=0, LS=0, EF=30, LF=30 B: ES=0, LS=20, EF=10, LF=30 TF=20=LS-ES=LF-EF 公式: EF= ES+duration LS=LF- duration TF=LS-ES =LF-EF
活动A 活动B 活动时间参数说明 超前(Lead):两个活动的逻辑关系所允许的提前后置活动的时间。 滞后(Lag):两个活动的逻辑关系所允许的推迟后置活动的时间。 结束--开始(FS) 活动A 活动B 超前:例如需求完成80%可以开始总体设计的工作,则总体设计可以超前的时间是需求完成前20%的时间。 例如:装修房子的时候,刷油漆的后续活动是刷涂料,它们之间至少需要一天的等待时间,等油漆干了以后再刷涂料,这个等待时间就是滞后。 前置活动 后置活动
活动时间参数说明 A:10 B:5 开始 结束 C:10 D:6 Lag=3 Lead=2 公式: A是B的前置活动,B是A的后置活动,它们之间的Lag=3表示A活动结束后再过3天,B活动才能开始。 C和D之间的Lead=2表示C活动结束之前的2天,D活动就可以开始。它们之间可以并行(搭接)工作一段时间。 P(Predecessor)表示前置活动,S(successor)表示后置活动。 公式: ES= EF(P) + Lag LF = LS (S) – Lag FF= ES(S)-EF- Lag ES(A)=0, EF(A)=10, ES(B)=13 FF(A)=0=ES(B)-EF(A)-Lag ES(C)=0, EF(C)=10, ES(D)=8=EF(C)-lead
关键路径(Critical Path ) 关键路径决定了项目完成的最短时间。 是时间浮动为0(Float=0)的路径。 网络图中最长的路径。 关键路径上的任何活动延迟,都会导致整个项目完成时间的延迟。关键路径上的活动称为关键活动。 关键路径上的活动的自由浮动和总浮动均为0。 关键路径上各活动历时之和是最长的。
关键路径的简单示例
关键路径的其它说明 明确关键路径后,可以合理安排进度。 关键路径可能不止一条,在项目的进行过程中,关键路径可能会改变。 明确了关键路径,也就明确了项目的持续时间,并且以关键路径作为参照,来调整其它活动之间的关系。
正推法(Forward pass) 按照时间顺序来计算路径中每项活动的最早开始时间和最早完成时间。 建立项目的开始时间。 项目的开始时间就是网络图中第一个活动的最早开始时间。 按网络图从左到右,从上到下的顺序进行计算。所用公式为: ES+Duration=EF EF+Lag=ESs 或 EF-Lead=ESs 当一个活动有多个前置时,选择其中最大的最早完成时间作为其后置任务的最早开始时间。 最后一个活动的最早完成时间就是项目的最早完成时间。 ESs是指后置任务的最早开始时间。
正推法举例 1 Duration=7 Task A 8 Duration=6 Task C 8 14 Duration=3 Task G ES EF ES EF ES EF 1 Duration=7 Task A 8 Duration=6 Task C 8 14 Duration=3 Task G 14 17 ES EF LS LF LS LF LS LF 17 Duration=2 Task H 19 Start Finish ES EF ES EF ES EF Duration=3 Task B 1 4 Duration=3 Task D 4 7 Duration=3 Task E 7 10 LS LF LS LF LS LF LS LF ES EF 4 Duration=2 Task F 6 LS LF
逆推法(Backward pass) 按照逆时间顺序计算路径中每项活动的最晚开始时间和最晚完成时间。 首先建立项目的结束时间。 项目的结束时间就是网络图中最后一个活动的最晚结束时间。 从右到左,从上到下进行计算。所用公式为: LF-Duration=LS LS-Lag=LFp 当一个任务有多个后置任务时,选择其中最小的最晚开始时间作为其前置任务的最晚完成时间。
CP:A->C->G->H 逆推法举例 ES EF ES EF ES EF 1 Duration=7 Task A 8 8 Duration=6 Task C 14 Duration=3 Task G 14 17 1 8 8 14 14 17 ES EF LS LF LS LF LS LF Duration=2 Task H 17 19 Start Finish ES EF ES EF ES EF 1 Duration=3 Task B 4 17 Duration=3 Task D 4 7 19 Duration=3 Task E 7 10 LS LF 8 11 11 14 LS LF 14 17 LS LF LS LF ES EF CP:A->C->G->H 4 Duration=2 Task F 6 12 14 LS LF Cp Path:18
进度编制的基本方法 关键路径法 正推法 逆推法 时间压缩法
时间压缩法 时间压缩法是在不改变项目范围和目标的前提下缩短项目工期的方法。 应急法--赶工(Crash) 平行作业法--快速跟进(Fast tracking:搭接)
应急法-赶工(Crash) 赶工也称为时间-成本平衡方法。 在尽可能限制成本增加的前提下,压缩关键路径上的关键活动的持续时间,从而达到缩短整个项目工期的目的。 只压缩非关键路径上的活动,如果关键路径不变的话,项目的总工期不会变。 压缩进度会增加成本,例如增加人手和加班。
计算进度压缩产生的费用增长 进度压缩单位成本方法: 进度压缩与费用增长呈线性关系 Charles Symons方法 随着进度压缩的增加,费用迅速上涨。
进度压缩单位成本方法 进度压缩单位成本=(压缩成本-正常成本)/(正常进度-压缩进度) 例如: 任务A:正常进度7周,成本5万;压缩到5周的成本是6.2万 进度压缩单位成本=(6.2-5)/(7-5)=6000元/周 如果压缩到6周的成本是:5.6万 压缩一个项目时,应首先计算该项目中所有活动的进度压缩单位成本,然后确定压缩哪些活动,使成本的增加量最小。
进度压缩例题 下图给出了各个任务可以压缩的最大限度和压缩成本,请问如果将工期压缩到17,16,15周时应该压缩哪些活动?最后的成本是多少? A N:7周:5万: C:5周:6.2万 B N:9周:8万: C:6周:11万 开始-》A-》B-》结束 Path:16周 开始 结束 总成本20万 D N:8周:3万 C:6周:4.2万 C N:10周:4万: C:9周:4.5万 开始-》C-》D-》结束 CP Path:18周
进度压缩例题 各活动的进度压缩单位成本计算结果如下: 活动 A B C D 压缩成本(万/周) 0.6 1 0.5
进度压缩例题 将工期压缩到17周时应该压缩的活动和最后的成本? 总成本20.5万 A B 开始 结束 D C N:7周:5万: 10周->9周 4万-> 4.5万
进度压缩例题 将工期压缩到16周时应该压缩的活动和最后的成本? 总成本21.1万 A B 开始 结束 D C N:7周:5万: 8周->7周 C N:10周:4万: C:9周:4.5万 10周->9周 4万-> 4.5万 3万-> 3.6万
进度压缩例题 将工期压缩到15周时应该压缩的活动和最后的成本? 总成本22.3万 A B 开始 结束 D C N:7周:5万: 7周->6周 5万-> 5.6万 开始 结束 总成本22.3万 D N:8周:3万 C:6周:4.2万 8周->7周 ->6周 C N:10周:4万: C:9周:4.5万 10周->9周 3万-> 3.6万 ->4.2万 4万-> 4.5万
赶工时间与赶工成本关系图 追加成本 压缩时间 压缩角度,越小越好 进度压缩与成本增长的线性关系只在一定条件和一定范围之内才可能存在,进度压缩到一定程度后,费用会急剧增长,而不是线性增长。 压缩角度,越小越好
关于进度的一些说明 项目存在一个可能的最短进度和一个有效进度 如图所示,项目延期会造成费用增加,而压缩进度超过一定范围后,费用会急剧地增加。而且项目有一个可能的最短进度,无论怎样加班,无论投入多少资源都无法超越该进度。 因此,应选择一个有效进度,使得交付时间较短,费用也较低。
Charles Symons方法 进度压缩因子=压缩进度/正常进度 压缩进度的工作量=正常工作量/进度压缩因子 例如: 初始进度估算是12个月,初始工作量估算是78人月, 如果进度压缩到10月,进度压缩因子= 10/12=0.83, 则进度压缩后的工作量是:78/ 0.83=94人月 总结:进度缩短17%,增加21%的工作量 研究表明:进度压缩因子应该不小于0.75,最多可以压缩25%。 工作量可换算成为成本。
时间压缩法 时间压缩法是在不改变项目范围和目标的前提下缩短项目工期的方法。 应急法--赶工(Crash) 平行作业法--快速跟进(Fast tracking,搭接)
平行作业法-快速跟进(Fast tracking,搭接) 尽量多地并行开展某些活动。 任务 需求:10 设计:5 设计:5 需求完成80%,设计就可以开始。 时间
活动拆分 任务 需求:10 设计:5 设计:3 设计:2 为了实现搭接,往往需要对活动进行拆分,将搭接的部分拆分出来。 时间
制定项目进度计划的主要活动 进度编制 资源调整 用关键路径法编排出的进度计划只是初步的,还需为各活动分配资源,而且要实现资源的优化配置。
资源调整尝试法 通过调整进度计划,形成平稳连续的资源需求 最有效地利用资源 使资源闲置的时间最小化 尽量避免超出资源能力 方法 维持工期不变,使资源的使用强度尽可能平衡。 在满足资源约束条件下使工期最短。
资源调整尝试法举例 怎样调整进度使人力资源配置最优化?
资源调整尝试法举例
资源调整尝试法举例
本章内容提要 软件项目进度管理概述 软件项目任务分解 活动定义和排序 活动历时估计 制定进度计划 进度控制(项目跟踪)
第五节 进度控制(项目跟踪) 在项目执行过程中不断检查和调整进度偏差,使项目按照进度计划顺利进行。 PDCA循环又叫戴明环,是美国质量管理专家戴明首先提出的。PDCA是英语单词Plan(计划)、Do(执行)、Check(检查)和Action(纠正)的第一个字母, PDCA循环就是按照这样的顺序进行项目运作,并且循环不止地进行下去的科学程序。它已成为处理复杂问题的一个方法论。
项目进度的动态监测 随着项目的进展,不断观测每一项工作的实际开始时间、完成时间和当前状况,并定期对项目进度计划的执行情况进行一次较为全面、系统的观测和检查。 检查的内容包括以下几个方面: 隔多长时间进行一次全面观测和检查依项目的具体情况而定。
项目进度的动态监测 检查关键活动的进度和关键路径的变化情况,以便采取措施进行调整,以保证计划工期的实现。 检查非关键活动的进度,以便更好地发掘潜力,调整或优化资源,以保证关键活动按计划实施。 检查工作之间的逻辑关系变化情况,以便适时进行调整。
项目进展的分析方法 图解分析法 图解分析法的特点:可一目了然地看到项目的进展状况,易于理解。但不能提供一些重要的量化信息,如已完成工作量占总工作量的百分比等。
项目进展的分析方法 挣值分析法(Earned Value Analysis) 也称为已获取价值分析法,是对项目的进度、成本状态进行绩效评估的有效方法,可提供许多定量信息。
软件项目进度管理小结 案例 核心计划 其它计划 质量管理计划 配置管理计划 风险管理计划 人力/沟通计划 合同计划 合同 活动排序 活动历时估计 编制计划 活动 需求 WBS 成本估计 成本预算 案例
练习题 作为项目经理,你需要给一个软件项目做进度计划,经过任务分解后得到任务A,B,C,D,E,F,G,假设各个任务之间没有滞后和超前,下图是这个项目的PDM网络图。通过历时估计已经估算出每个任务的工期,现已标识在PDM网络图上。假设项目的最早开工日期是第0天,请计算每个任务的最早开始时间,最晚开始时间,最早完成时间,最晚完成时间,同时确定关键路径,并计算关键路径的长度,计算任务F的自由浮动和总浮动。
ES ES LS LS LF EF Duration=6 Task B Duration=7 Task C Duration=5 Task D LF LS EF ES Duration=3 Task G LF LS EF ES Duration=4 Task A LF LS EF ES Duration=8 Task E LF LS EF ES Duration=8 Task F
项目进度计划案例题 案例场景 小张是某公司的技术总监,最近接到公司总裁的指令,负责开发一个电子商务平台。小张组织人员粗略地估算该项目在正常速度和压缩进度下需花费的时间和成本。由于公司业务发展需要,公司总裁急于建立电子商务平台,因此要求小张准备一份关于尽快启动电子商务平台项目的时间和成本的估算报告。 在第一次项目团队会议上,项目团队确定了该项目的主要任务,具体内容如下:
项目进度计划案例 第一项任务是调研现有电子商务平台,按照正常进度估算完成这项任务需要花10天,成本为15000元。但如果使用允许的最多加班工作量,则可在7天、18750元的条件下完成。 一旦完成调研任务,就需要向最高管理层提交项目计划和项目定义文件,以便获得批准。项目团队估算完成这项任务按正常速度为5天,成本3750元,如果加班赶工,可在3天内完成,成本为4500元。 当项目团队获得管理层批准后,各项工作就
项目进度计划案例 可展开。项目团队估计需求分析和设计需要15天,成本为45000元,如果加班则为10天,成本58500元。 设计完成后,有三项任务必须同时进行:1.开发电子商务平台数据库;2.开发和编写网页代码;3.开发和编写电子商务平台表格码。估计数据库的开发在不加班的情况下需10天,成本9000元,如果加班则可在7天和成本为11250元的情况下完成。同样,项目团队估算在不加班的情况下,开发和编写网页代码需要10天和17500元,如果加班则可以减少两天,成本为19500元。开发表格码工作分包给别的公司,
项目进度计划案例 需要7天,成本为8400元,承包该工作的公司没有提供加班赶工的方案。 最后,整个电子商务平台需要进行测试和修改,项目团队估算需要3天,成本4500元。如果加班的话,则可减少一天,成本为6750元。 问题1:如果不加班,完成此项目的成本和时间是多少?如果考虑加班,项目可以完成的最短时间及花费的成本是多少?
项目进度计划案例 问题2:假定公司总裁想在35天内完成项目,小张将采取什么有效措施来达到期限要求并使所花费的成本尽量少?