上海交通大学计算机系
1
22/3/14
第 第 7 7 讲 软件项目计划 讲 软件项目计划
上海交通大学计算机系
2
22/3/14
内容提要 内容提要
为什么要计划
何时计划
基本概念 WBS
CPM
上海交通大学计算机系
3
22/3/14
软件项目计划 软件项目计划
目的
保证在正确的时间有正确的资源可用
避免不同的活动在相同的时间竞争相同的资源
为每个人员分配任务
实际的进度可以有标准进行衡量
产生成本消耗计划
根据实际情况,调整项目
可行性研究
协调人员上海交通大学计算机系
4
22/3/14
何时计划 何时计划
计划是一个渐进、迭代的过程
每次迭代,细节更丰富,也更准确
每一此迭代的目的有所不同:
可行性研究阶段:时间和成本估计
项目开始:生成活动计划保证资源分配和资金流
项目进行中:不断监控和调整项目计划上海交通大学计算机系
5
22/3/14
项目和活动 项目和活动
项目由一组相关的活动构成
项目在至少有一个活动准备开始时才开始
项目中所有的活动结束项目才结束
活动必须有一个清晰的开始和清晰的结束点,一 般以产生一个可交付物为标志
活动需要资源,并假定在活动中资源的需求水平 保持一致
活动的持续时间必须可预测
活动之间有优先顺序上海交通大学计算机系
6
22/3/14
确定项目中的活动 确定项目中的活动
活动确定方法
自顶向下的分解—— WBS
问题:请给出每天起床的 WBS上海交通大学计算机系
7
22/3/14
WBS WBS 构造方法 构造方法
识别出项目(包括项目管理活动)中的主要交付 物。• 问题:学院工资系统的交付物有哪些?
主要交付物总是根据项目如何真正地组织来定义 :
项目生命周期的各个阶段可以作为第一层次,并将项 目交付物作为第二层次
每个分支的组织方法可以不一样上海交通大学计算机系
8
22/3/14
WBS WBS 验证 验证
判断对这一层次是否能够对成本和日期进行评估,如果 不能,继续分解,否则该分枝分解结束
识别交付物的组成部分。组成部分必须是实际的,可验 证的部件
验证分解的正确性
是否被分解的条目下对子项目是充分必要的?如果不是,则需要 增,删或修改
是否每一条目被清晰准确的定义
是否每一条目能够被合适的计划,成本规划,被分配给一个合适 的组织上海交通大学计算机系
9
22/3/14
WBS WBS
输出
WBS: 最底下的一层被称为工作包, Work package 必须与下面概念相区别:
Constractual WBS, CWBS( seller to buyer)
Organizational breakdown structure, OBS
Resource breakdown structure, RBS
Bill of materials, BOM
Project breakdown structure, PBS上海交通大学计算机系
10
22/3/14
上海交通大学计算机系
11
22/3/14
上海交通大学计算机系
12
22/3/14
上海交通大学计算机系
13
22/3/14
活动顺序和进度表定义 活动顺序和进度表定义
在整个项目中,我们需要一份能清晰描述活动发 生的时间和所需要的资源的计划。
仅仅考虑活动之间的顺序关系,我们称之为活动排序( Sequencing)—— 逻辑设计
考虑资源约束,我们称为调度( Scheduling)—— 物 理设计上海交通大学计算机系
14
22/3/14
网络计划模型 网络计划模型
将项目活动和其关系可以表示成网络
该项技术起源于二十世纪 50 年代
CPM( 关键路径法, Critical Path Method)
PERT( 计划评审技术, Program Evaluation Revie w Technique)
优先网络 (Precedence Networks) 是上述两种模 型的变种
三种模型是类似的,因而经常被有些人通称为 C PM上海交通大学计算机系
15
22/3/14
CPM CPM 的例子 的例子
5
1 2 3 4
6 7 8
9 10
Specify overall system
Specify module A Specify module B
Specify module C Specify module D
Check specifications
Design module A Design module B
Design module C
Design module D
Code Test module A
Code Test module B Code Test module C
Code Test module D
Integrate test
system
上海交通大学计算机系
16
22/3/14
CPM CPM 的构造方法 的构造方法 // //
项目网络只有一个起点
项目网络只有一个终点
连接有持续时间
节点无持续时间
时间从左到右
节点顺序编号
网络不包含圈上海交通大学计算机系
17
22/3/14
CPM CPM 构造方法 构造方法
网络不包含悬点
前继是指某活动紧前活动1 2 4 5
3
Test program Code
program Design
program
Write User
Manual
上海交通大学计算机系
18
22/3/14
练习 练习
下列网络图中哪些存在错误上海交通大学计算机系
19
22/3/14
CPM CPM 构造方法 构造方法
哑活动 (dummy activity)上海交通大学计算机系
20
22/3/14
延时活动的表达 延时活动的表达
1 3
2 4
Test Prototype
Document amendments
1 day 2 days
上海交通大学计算机系
21
22/3/14
活动之间的关系定义 活动之间的关系定义
强制依赖( Mandatory Dependencies ):项目 中包含工作的内在的约束
自由决定的依赖( Discretionary Dependencies
):由项目团队决定的关系,比如说签字后才 开发
外部依赖( External Dependencies ):项目和 非项目活动之间的依赖上海交通大学计算机系
22
22/3/14
加入时间因素 加入时间因素
关键路径法主要关注两个目标:
尽快完成整个项目
识别那些一旦延期将对整个项目周期产生影响的活动
活动赋予时间:考虑采用多少资源,考虑是否需 要另外的时间(如等待某些信息)
对每一个活动赋予持续时间后,我们可以采用前 向路径 (forward pass) 计算项目和各个活动的最 早结束时间,采用反向路径法 (backward pass) 计算项目和活动的最完开始时间上海交通大学计算机系
23
22/3/14
CPM CPM 中节点表示 中节点表示
Event number: 事件代号
Earliest Date: 最早时间
Latest Date: 最晚时间
Slack:Event Number Earliest
date Latest
date
Slack
上海交通大学计算机系
24
22/3/14
例子 例子
1
2 A=6
B=4 3 4
C=3 D=4
E=3 5 F=10
H=2 6
G=3
上海交通大学计算机系
25
22/3/14
例子:前向路径计算 例子:前向路径计算
0 1
6 2 A=6
4 3
B=4 4
9 C=3 D=4
10 5 E=3 F=10
H=2 6 13 G=3
1
Activity Duration (weeks)
Earliest start date
Latest start date
Earliest finish date
Latest
finish date
Total float
A 6 0 6
B 4 0 4
C 3 6 9
D 4 4 8
E 3 4 7
F 10 0 10
G 3 10 13
H 2 9 11
上海交通大学计算机系
26
22/3/14
例子:后向路径计算 例子:后向路径计算
1 0 0
2 8 6
A=6
3 7
B=4 4 4
11 9
C=3 D=4
510 10
E=3 F=10
H=2 6 13 13
G=3
1
Activity Duration (weeks)
Earliest
start date
Latest start date
Earliest
finish date
Latest
finish date Total float
A 6 0 2 6 8
B 4 0 3 4 7
C 3 6 8 9 11
D 4 4 7 8 11
E 3 4 7 7 10
F 10 0 0 10 10
G 3 10 10 13 13
H 2 9 11 11 13
上海交通大学计算机系
27
22/3/14
关键路径识别 关键路径识别
最早开始时间和最晚开始时间的差称为机动时间 (Slack) ,它表示一个事件推迟多少时间可以不 影响项目的结束。 Slack 为 0 的事件为关键事件,将关键事件连接起来的最长路径为关键路径
关键路径的意义:
必须保证关键路径上的资源和关键路径活动顺利执行
要缩短整个项目周期,必须缩短关键路径1 0 0
2 8 6
A=6
3 7
B=4 4 4
11 9
C=3 D=4
5 10 10
E=3 F=10
H=2 6
13 13
G=3 2
0 3 2
0
0
上海交通大学计算机系
28
22/3/14
活动的浮动时间 活动的浮动时间
具有 slack 事件的活动具有浮动时间。总浮动是 活动的最早结束时间和最迟结束时间的差。Activity Duration
(weeks)
Earliest start date
Latest start date
Earliest finish date
Latest
finish date Total float
A 6 0 2 6 8 2
B 4 0 3 4 7 3
C 3 6 8 9 11 2
D 4 4 7 8 11 3
E 3 4 7 7 10 3
F 10 0 0 10 10 0
G 3 10 10 13 13 0
H 2 9 11 11 13 2
上海交通大学计算机系
29
22/3/14
活动的浮动时间 活动的浮动时间
各个活动的浮动时间是相关的,如果某个活动用 了浮动时间,则后续的活动可能就没有了浮动时 间。其它浮动时间:
自由浮动 (free float) :活动的最早结束时间和紧接活 动的最早开始时间的差为自由浮动时间,它不影响其 它活动。
阻碍浮动 (interfering float): 活动的自由浮动与总浮动 之差,它反映了总浮动使用后,活动还能被延时多少 而不影响整个项目的结束时间上海交通大学计算机系
30
22/3/14
练习 练习
计算自由浮动和阻碍浮动时间 自由浮动 (free float):活动的 最早结束时间和紧接活动的最 早开始时间的差为自由浮动时 间,它不影响其它活动。阻碍浮动 (interfering float): 活 动的自由浮动与总浮动之差,
它反映了自由浮动使用后,活 动还能被延时多少而不影响整 个项目的结束时间
Activity Total float Free float Interf. float
A 2 0 2
B 3 0 3
C 2 0 2
D 3 1 2
E 3 3 0
F 0 0 0
G 0
H 2
Activity Duration
(weeks) Earliest start date
Latest start date
Earliest finish date
Latest
finish date Total
float
A 6 0 2 6 8 2
B 4 0 3 4 7 3
C 3 6 8 9 11 2
D 4 4 7 8 11 3
E 3 4 7 7 10 3
F 10 0 0 10 10 0
G 3 10 10 13 13 0
H 2 9 11 11 13 2
1 0 0
2 8 6 A=6
3 7
B=4 4 4
11 9 C=3
D=4
510 10 E=3 F=10
H=2 6
13 13
G=3 2
0 3 2
0
0
上海交通大学计算机系
31
22/3/14
优先网络 优先网络
优先网络 (precedence networks)
优先网络使用节点代表活动,而连接代表依赖关 系Activity label Duration Earliest
Start Latest
Start
Activity description
Earliest finish Latest
finish Activity Span Float
A Duration
0 2
Hardware design
6 Latest
finish Activity Span Float IoE/P/1 34 days
0 0
Specify overall system
34 34 34 days 0 days
IoE/P/2 20 days 34
34
Specify module
A
54 54 20 days 0 days
IoE/P/3 15 days 34
39
Specify module B
49 54 20 days 5 days
IoE/P/5 15 days 34
39
Specify module
D
49 54 20 days 5 days
IoE/P/4 25 days 34
48
Specify module
C
59 73 39 days 14 days
IoE/P/6 2 days 54
54
Check specs
56 56 2 days 0 days
IoE/P/6a 1 day 59
73
Check specs
60 74 15 days 14 days
IoE/P/9 4 days 60
74
Design module C
64 78 18 days 14days IoE/P/10 4 days
56 64
Design module D
60 78 18 days 14days IoE/P/8 6 days 56
59
Design module B
62 65 9 days 3 days IoE/P/7 7 days 56
56
Design module D
63 63 7 days 0 days
IoE/P/11 30 days 63
63
Code test module A
93 93 30 days 0 days
IoE/P/12 28 days 62
65
Code test module B
90 93 31 days 3 days
IoE/P/14 25 days 60
68
Code test module A
85 93 33 days 8 days
IoE/P/11 15 days 64
78
Code test module A
79 93 29 days 14 days
IoE/P/15 6 days 93
93
Code test module A
99 99 6 days 0 days
上海交通大学计算机系
32
22/3/14
缩短项目时间和识别关键活动 缩短项目时间和识别关键活动
缩短项目时间
活动持续时间的缩短
整个项目过程的重组
识别关键活动
关键路径上的活动
近似关键路径:浮动时间是整个关建路径的 10 %的 路径,近似关键路径很容易变为关键路径上海交通大学计算机系