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