Skip to content

一、项目进度安排的定义及原则

1、进度安排的定义

项目进度安排,即通过将工作量分配给特定的软件工程任务,和将所估算的工作量分布于已经计划好的项目持续时间中。

2、进度安排的基本原则

(1)划分 —— 项目被划分为若干个可管理的活动和任务

(2)相互依赖 —— 活动和任务之间的关系必须被确定为:顺序、并发、后续、独立进行;

(3)时间分配 —— 为每个任务分配工作单位(即开始和结束时间);

(4)工作量确认 —— 确保在任意时段分配到任务的人员数量不会超过项目组的人员数量;(比如:一个项目组此次预估需要有 12 人分配到任务才能完成此项工作,但原定人员数量为 10 人,那么 12>10,这项任务的工作量必然超标了,所以要确保不能超过)

(5)定义责任 —— 每个被调度的任务都应该指定负责人

(6)定义结果 —— 每个被调度的任务都要有一个定义好的输出结果

(7)定义里程碑 —— 每个任务或任务组都与一个项目里程碑相关联;

二、通信开销

1、通信开销的定义

当几个人共同承担软件开发任务时,人与人之间必须通过交流来解决各自承担任务之间的接口问题,即所谓通信问题。通信需花费时间和代价,会引起软件错误增加,降低软件生产率。

2、通信路径计算

如果一个软件开发小组有 n 个人,每两人之间都需要通信,则总的通信路径有 $\frac{n(n-1)}{2}$ 条。

如想对通信路径有进一步了解,可到项目管理中的 4P文章中的项目小组结构进行查看

3、案例分析

Q1:设一个人单独开发软件,生产率是 5000 行/人年。若 4 个人组成一个小组共同开发这个软件,则需要 6 条通信路径。若在每条通信路径上耗费的工作量是 250 行/人年。则小组中每个人的软件生产率降低为多少?

A1:小组中每个人的软件生产率降低为 5000 - $\frac{6}{4}$×250 = 5000 - 375 = 4625 行/人年,所以项目组的生产率为 18500。

Q2:如在上例中,到了开发后期再加入两名工程师,生产率为 840 行/人年,问此时项目组的生产率为?

A2:6 个人所产生的的通信路径为 $\frac{6*(6-1)}{2}$ = 15 条;所以项目组的生产率为 5000 × 4 + 840 × 2 - 15 × 250 = 17930。

从上述分析可知:

  • 一个软件任务由一个人单独开发,生产率最高;而对于一个稍大型的软件项目,一个人单独开发,时间又太长;因此软件开发小组是必要的。
  • 但是,开发小组不宜太大,成员之间要避免过多的通信路径。
  • 在开发进程中,切忌中途加人,避免不必要的的生产率损失。

三、工作量分配

1、40-20-40 规则

1)在整个软件开发过程中,编码工作量仅占 20%,编码前工作量占40%,编码后工作量占 40%

2)40-20-40 规则只应用来作为一个指南,实际的工作量分配比例必须按照各项目的特点来决定。

2、工作量分配图例

用一张图来了解关于软件各阶段的工作量分配比例。

工作量分配

3、工作量分布推荐

在实际的软件开发中,一种比较推荐的工作量分布为:

  • 计划阶段 planning -> 2-3% ;
  • 需求分析阶段 requirements analysis -> 10-25 % ;
  • 设计阶段 design -> 20-25 %;
  • 编码阶段 coding -> 15-20 % ;
  • 测试和调试阶段 testing and debugging -> 30-40 %

四、项目进度安排方法

1、关键路径方法(CPM,Critical Path Method)

(1)定义

在关键路径上的活动才是按时完成任务的关键。

(2)关键路径的相关表达

  • LS:Latest start time 最晚开始时间;
  • ES:Earliest start time 最早开始时间;
  • FT:Float Time 浮动时间;
  • 关键路径的判断:计算哪条路径最长,即为关键路径;
  • 关键路径上的节点对应的浮动时间为FT = 0,且在每个项目中,关键路径不止一条;
  • 如果关键路径上的活动开始时间推迟,将会直接影响工期;
  • 最晚开始时间 - 最早开始时间 = 浮动时间。

(3)案例分析:盖房子

表 1 盖一所房子的重要阶段

阶段完成事项
1.1完成调查
1.2签发许可证
1.3完成挖掘
1.4库存材料
2.1施工地基
2.2外墙完成
2.3外部管道完成
2.4外部电力工作完成
2.5外部壁板完成
2.6外部涂装完成
2.7安装门和一些固定设施
2.8屋顶完成
3.1内部管道完成
3.2内部电力工作完成
3.3墙板就位
3.4内部涂装完成
3.5铺设地板
3.6安装门和一些固定设施

表 2 盖房子相关活动的时间估计

具体活动估计时间(天)
Step1: 准备工作
完成调查3
签发许可证15
完成挖掘10
库存材料10
Step2: 构建外部
施工地基15
外墙完成20
外部管道完成10
外部电力工作完成10
外部壁板完成8
外部涂装完成5
安装门和一些固定设施6
屋顶完成9
Step3: 构建内部
内部管道完成12
内部电力工作完成15
墙板就位9
内部涂装完成18
铺设地板11
安装门和一些固定设施7

表 3 任务网络图

任务网络图

:某项目的活动网络图如表 3 所示,每项活动所需的天数如路径上数字所示。(1)请给出计算过程确定项目的关键路径和工期。(2)设定活动 1.1 和 1.2 的最早开始时间均为第 1 天,给出所有活动的最早开始时间 ES、最迟开始时间 LS 和浮动时间 FT。

答案解析:

(1)从图中可以看出,该项目有 8 条路径可以走到终点,分别为:

  • ①start → 1.1(3) → 1.3(10) →1.4(10) → 2.1(15) → 2.2(20) → 2.3(10) → 2.4(10) → 2.5(8) → 2.6(5) → 2.7(6) → finish;
  • ②start → 1.1(3) → 1.3(10) →1.4(10) → 2.1(15) → 2.2(20) → 2.3(10) → 2.4(10) → 2.5(8) → 2.6(5) → 2.8(9) → finish;
  • ③start → 1.1(3) → 1.3(10) →1.4(10) → 2.1(15) → 2.2(20) → 3.1(12) → 3.2(15) → 3.3(9) → 3.4(18) → finish;
  • ④start → 1.1(3) → 1.3(10) →1.4(10) → 2.1(15) → 2.2(20) → 3.1(12) → 3.2(15) → 3.3(9) → 3.5(11) → 3.6(7) → finish;
  • ⑤start → 1.2(15) → 1.3(10) →1.4(10) → 2.1(15) → 2.2(20) → 2.3(10) → 2.4(10) → 2.5(8) → 2.6(5) → 2.7(6) → finish;
  • ⑥start → 1.2(15) → 1.3(10) →1.4(10) → 2.1(15) → 2.2(20) → 2.3(10) → 2.4(10) → 2.5(8) → 2.6(5) → 2.8(9) → finish;
  • ⑦start → 1.2(15) → 1.3(10) →1.4(10) → 2.1(15) → 2.2(20) → 3.1(12) → 3.2(15) → 3.3(9) → 3.4(18) → finish;
  • ⑧start → 1.2(15) → 1.3(10) →1.4(10) → 2.1(15) → 2.2(20) → 3.1(12) → 3.2(15) → 3.3(9) → 3.5(11) → 3.6(7) → finish。

8 条路径如下图所示:

路径展示

可以计算出,每条路径的工期分别为:

  • ①3+10+10+15+20+10+10+8+5+6=97 天;

  • ②3+10+10+15+20+10+10+8+5+9=100 天;

  • ③3+10+10+15+20+12+15+9+18=112 天;

  • ④3+10+10+15+20+12+15+9+11+7=112 天;

  • ⑤15+10+10+15+20+10+10+8+5+6=109 天;

  • ⑥15+10+10+15+20+10+10+8+5+9=112 天;

  • ⑦15+10+10+15+20+12+15+9+18=124 天;

  • ⑧15+10+10+15+20+12+15+9+11+7=124 天。

综上所述,项目的关键路径有两条,分别为⑦ 和 ⑧,即 1.2 → 1.3 →1.4 → 2.1 → 2.2 → 3.1 → 3.2 → 3.3 → 3.4 和 1.2 → 1.3 →1.4 → 2.1 → 2.2 → 3.1 → 3.2 → 3.3 → 3.5 → 3.6,工期为 124 天。

(2)计算步骤如下:

填充关键路径的浮动时间。已知关键路径的浮动时间都为 0,所以路径 ⑦ 和 ⑧ 上的所有节点的浮动时间都为 0;

计算剩余节点的浮动时间。

  • 由图可得,1.1 → 1.3 需要时间为 13 天,而关键路径 1.2 → 1.3 需要 25 天,所以 1.1 的浮动时间为 12 天;
  • 关键路径的前半部分为 1.2 → 1.3 →1.4 → 2.1 → 2.2,后半部分有 4 个分路,⑦ 和 ⑧ 为关键路径,且后半部分的工期为 54 天;(12+15+9+18=54 天,12+15+9+11+7=54 天)
  • ⑤ 和 ⑥ 的后半部分与关键路径的差额分别为 54-39=15 天,54-42=12 天,那么此时可以确定 2.7 的浮动时间为 15 天,2.8 的浮动时间为 12 天;(10+8+5+6=39 天,10+8+5+9=42 天)
  • 由图可知,2.7 和 2.8 都需要经过 2.3 → 2.4 → 2.5 → 2.6,在这种情况下,选择与关键路径差额小的值为浮动时间,即 2.3 → 2.4 → 2.5 → 2.6 与 2.8 的浮动时间相等。

计算最早开始时间。将每一项活动前面经过的路径(不包含当前活动)进行相加,如遇到分叉口则选择有经过关键路径上的节点

计算最迟开始时间。逆推,通过公式最晚开始时间 - 最早开始时间 = 浮动时间推出最迟开始时间。

项目活动的最早开始时间 ES、最迟开始时间 LS 和浮动时间 FT 如下:

活动最早开始时间最晚开始时间浮动时间
1.111312
1.2110
1.316160
1.426260
2.136360
2.251510
2.3718312
2.4819312
2.59110312
2.69911112
2.710411915
2.810411612
3.171710
3.283830
3.398980
3.41071070
3.51071070
3.61181180
Finish1241240

由上述案例可以得出,通过关键路径可以判断出:

  • 开发时哪些活动必须等待;
  • 开发时哪些活动必须按进度进行防止拖延问题发生。

2、项目(进度计划)评估和评审技术(PERT,Program Evaluation and Preview Technique)

(1)定义

项目评估和评审技术是一种关键路径分析技术,使用正态分布来判断一个活动的最早开始时间接近该活动进度时间的概率。PERT 技术可以计算关键路径、找出最可能成为瓶颈的活动。

注:项目评估和评审技术 (PERT) 的内容比关键路径还更为复杂一点,大家可以先理解关键路径,待我后面深学了再补充这一块知识。或者有小伙伴想补充的也欢迎私聊我哦~

五、获得值分析

获得值分析,主要分析两个内容进度是否拖延;成本是否超出预算。基于这两个内容,对获得值分析进行以下阐述。

1、基本量

(1)计划工作的预计成本(BCWS):截止到某一时刻,计划工作的预计工作量之和。

(2)完成预算(BAC): BCWS 的总量,是项目的总工作量的估计。

(3)预定完成百分比:计划工作的预计成本占预计总工作量的百分比,计算公式为: $\frac{BCWS}{BAC}$。

(4)完成工作的预计成本(BCWP):截止到某一时刻,完成工作的预计工作量之和。

(5)完成百分比:完成工作的预计成本占预计总工作量的百分比,计算公式为: $\frac{BCWP}{BAC}$。

(6)所完成工作的实际成本(ACWP):截止到某一时刻,已完成的工作任务的实际工作量之和。

2、进度指示计算公式

(1)进度性能指标(SPI) = $\frac{BCWP}{BCWS}$;

(2)进度偏差(SV) = BCWP - BCWS;

(3)成本性能指标(CPI) = $\frac{BCWP}{ACWP}$;

(4)成本偏差(CV) = BCWP - ACWP。

总结:

  • 当 SPI > 1,SV > 0,进度超前;
  • 当 SPI = 1,SV = 0,进度正好;
  • 当 SPI < 1,SV < 0,进度落后;
  • 当 CPI > 1,CV > 0,成本节省;
  • 当 CPI = 1,CV = 0,成本正好;
  • 当 CPI < 1,CV < 0,成本超出预算。

3、案例分析

(1)案例一

下图是某工程的实际完成表。

工作任务估计工作量实际工作量估计完成日期实际完成日期(月日年)
15101/25/212/1/21
225202/15/212/15/21
3120802/25/21
440504/15/214/1/21
560507/1/21
680709/1/21

Question:在该工程实施过程中,截止到 21 年 4 月 1 号,进度是否拖延?工期是否超出预算?

Answer:

截止到 21 年 4 月 1 号,计划完成任务 1、2,实际完成了 1、2、4,由此可计算出 BCWSBCWPACWPBAC 的值。

  • 计划工作的预计成本 BCWS 为:5 + 25 = 30

  • 完成工作的预计成本 BCWP 为:5 + 25 + 40 = 70

  • 所完成工作的实际成本 ACWP 为:10 + 20 + 50 = 80

  • 完成预算 BAC 为:5 + 25 + 120 + 40 + 60 + 80 = 330

  • 那么预定完成百分比为: $\frac{BCWS}{BAC} = \frac{30}{330}$

  • 实际完成百分比为:$\frac{BCWP}{BAC} = \frac{70}{330}$

  • 进度性能指标 SPI 为: $SPI = \frac{BCWP}{BCWS} = \frac{70}{30} > 1$

  • 进度偏差 SV 为:$SV = BCWP - BCWS = 70 - 30 = 40 > 0$

  • 成本性能指标 CPI 为: $CPI = \frac{BCWP}{ACWP} = \frac{70}{80} < 1$

  • 成本偏差 CV 为:$CV = BCWP - ACWP = 70 - 80 = -10 < 0$

综上所述,因为 SPI > 1,SV > 0CPI < 1,CV < 0 ,所以截止到 21 年 4 月 1 日,该工程进度超前,成本超出预算。

(2)案例二

工作任务估计工作量实际工作量估计完成日期实际完成日期(月日年)
150701/25/212/1/21
235202/15/212/15/21
320405/15/213/1/21
440404/15/214/1/21
560106/1/21
680207/1/21

Question:若考察点在 21 年 5 月 1 日,此时任务完成进度如上图所示,问进度是否拖延?工期是否超出预算?

Answer:

截止到 21 年 5 月 1 号,计划完成任务 1、2、3、4,实际完成了 1、2、3、4,由此可计算出 BCWSBCWPACWPBAC 的值。

  • 计划工作的预计成本 BCWS 为:50 + 35 + 20 + 40 = 145

  • 完成工作的预计成本 BCWP 为:50 + 35 + 20 + 40 = 145

  • 所完成工作的实际成本 ACWP 为:70 + 20 + 40 + 40 = 170

  • 完成预算 BAC 为:50 + 35 + 20 + 40 + 60 + 80 = 285

  • 那么预定完成百分比为: $\frac{BCWS}{BAC} = \frac{145}{285}$

  • 实际完成百分比为:$\frac{BCWP}{BAC} = \frac{145}{285}$

  • 进度性能指标 SPI 为: $SPI = \frac{BCWP}{BCWS} = \frac{145}{145} = 1$

  • 进度偏差 SV 为:$SV = BCWP - BCWS = 145 - 145 = 0$

  • 成本性能指标 CPI 为: $CPI = \frac{BCWP}{ACWP} = \frac{145}{170} < 1$

  • 成本偏差 CV 为:$CV = BCWP - ACWP = 145 - 170 = -25 < 0$

综上所述,因为 SPI = 1,SV = 0CPI < 1,CV < 0 ,所以截止到 21 年 4 月 1 日,该工程进度正好,即项目按计划进行,但成本超出预算。

(3)案例三

Question:

你被指定负责一个软件项目,这个项目由4个部分(A、B、C、D)组成,项目总预算为 53000 元,其中A任务预算为 26000 元,B任务预算为 12000 元,C 任务预算为 10000 元,D 任务预算为 5000 元。

截止到 8 月 31 日,A任务已经全部完成,B任务过半,C任务刚开始,D任务还没有开始,下表给出截止到 8 月 31 日的计划成本和实际成本,采用 50/50 规则计算截止到 8 月 31 日为止的 CVSVCPISPI

任务计划费用 BCWS(元)实际花费 ACWP(元)已获取价值 BCWP(元)
A260002550026000
B900054006000
C480041005000
D000
总计398003500037000

(备注:50/50 规则指项目一开始就实现一半价值,直到结束才实现全部价值,即完成 1%或 99%,都认为只实现一半价值)

Answer:

截止到 8 月 31 日为止的 CV , SV , CPI , SPI 的计算结果如下:

  • $BCWS = 39800元$
  • $ACWP = 35000元$
  • $BCWP = 37000元$
  • $SPI = \frac{BCWP}{BCWS}$ = 93%
  • $SV = BCWP-BCWS = -2800元$
  • $CPI = \frac{BCWP }{ACWP}$ = 106%
  • $CV = BCWP - ACWP = 2000元$

综上所述,因为 SPI < 1,SV < 0CPI > 1,CV > 0 ,所以截止到 8 月 31 日,该工程进度落后一些,但是费用节省了。

六、写在最后

软件项目进度安排与跟踪的文章就讲解到这里啦!在这一块内容中,计算关键路径部分尤为重要,也是软考当中的常考题。在学会之后还要自己脱稿再演算多遍,且可以将题目举一反三进行多次计算。如果有不理解的欢迎私聊~

同时,如有需要了解软件工程相关的其他内容,可到『软件工程』栏目进行查看学习~

Released under the MIT License.