项目管理指南 · 进度与时间
项目管理中的紧前活动与紧后活动
在项目管理中,紧前活动是指必须在另一项活动开始或完成之前开始或完成的活动,紧后活动则是依赖于它的活动。进度计划中的每一条关联都将一项紧前活动与一项紧后活动连接起来,这些关联共同决定了工作顺序、关键路径以及延误会波及多远。
要点总结
- 紧前活动在先,控制其紧后活动;紧后活动在后,依赖于紧前活动。
- 每个依赖关系都恰好有一项紧前活动和一项紧后活动,大多数活动同时具有这两种身份。
- 当一项活动有多个紧前活动时,最晚完成的那一项(驱动性紧前活动)决定其开始日期。
- 只记录直接紧前活动,并注明关系类型以及任何提前量或滞后量。
- 除项目开始和结束外,每项活动都应至少有一项紧前活动和一项紧后活动。
- 良好的紧前活动逻辑是关键路径、浮动时间和延误预测值得信赖的前提。
什么是紧前活动和紧后活动?
A 紧前活动 是在逻辑上先于另一项活动、并控制该活动何时可以开始或完成的活动。 紧后活动 是在其之后进行并依赖于它的活动。两者之间的关系就是依赖关系,紧前活动始终是箭头引出的那一项活动。
一个简单的例子:在硬件设置完成之前,您无法在笔记本电脑上安装软件。“设置硬件”是紧前活动,“安装软件”是紧后活动。如果硬件晚到三天,软件安装也会推迟三天,除非您修改计划。
PMI 的术语使用 紧前活动 和 紧后活动这两个说法,大多数进度计划用来绘制它们的方法是紧前关系绘图法(PDM),其中活动是方框(节点),依赖关系是箭头。根据这一定义可以得出以下几点:
- 每个依赖关系恰好有一项紧前活动和一项紧后活动。
- 大多数活动兼具两种身份:既是之前工作的紧后活动,又是之后工作的紧前活动。
- 一项活动可以有多项紧前活动和多项紧后活动。
- 只有第一项活动没有紧前活动,只有最后一项活动没有紧后活动。在实践中,它们通常是开始里程碑和完成里程碑;参见 项目里程碑.
紧前活动和紧后活动描述的是一条关联的两端。关联本身及其类型,请参阅我们的指南: 任务依赖关系.
紧前活动与紧后活动一览
| 紧前活动 | 紧后活动 | |
|---|---|---|
| 在逻辑中的位置 | 在先 | 在后,依赖于紧前活动 |
| 回答的问题 | 在此之前必须完成什么? | 什么在等待这项活动? |
| 如果延误 | 可能推迟所有紧后活动 | 只会推迟其自身的紧后活动 |
| 在甘特图中 | 箭头起始的横条 | 箭头指向的横条 |
| 在网络图中 | 有箭头引出的节点 | 有箭头引入的节点 |
| 在进度计划工具中 | 列在紧后活动的“紧前活动”列中 | 列在紧前活动的“紧后活动”列中 |
这两个词是相对的。“设计页面”是“商定需求”的紧后活动,同时又是“构建页面”的紧前活动。一项活动被称为紧前活动还是紧后活动,取决于您看的是哪一条关联。
从紧前活动角度看四种关系类型
紧前活动并不总是必须在其紧后活动开始之前完成。逻辑关系共有四种类型,每种类型都描述了紧前活动的哪一端控制紧后活动的哪一端。
| 类型 | 规则 | 示例 | 常见程度 |
|---|---|---|---|
| 完成到开始(FS) | 紧前活动完成后,紧后活动才能开始 | 先浇筑地基,再砌墙 | 迄今最常见;大多数工具的默认类型 |
| 开始到开始(SS) | 紧前活动开始后,紧后活动才能开始 | 写作开始后即开始校对 | 常用于相互重叠的工作 |
| 完成到完成(FF) | 紧前活动完成后,紧后活动才能完成 | 开发完成后,测试才能完成 | 常用于必须同时结束的并行工作 |
| 开始到完成(SF) | 紧前活动开始后,紧后活动才能完成 | 旧系统持续运行,直到新系统上线 | 很少见;通常表明需要重新考虑逻辑 |
这些关联中的任何一种都可以带有 滞后量 (有意的等待,例如为等待油漆变干设置 FS+3 天)或 提前量 (重叠,写成负滞后量,例如 FS-2 天)。提前量和滞后量改变的是关联的时间,而不是哪项活动是紧前活动。
您会听到的紧前活动类型
直接紧前活动和间接紧前活动
所谓 直接紧前活动 与该活动直接关联。链条中更靠前的活动是间接紧前活动:它们仍然会影响该活动,但只能通过中间的关联产生影响。只记录直接紧前活动。将一项活动与之前的每一项活动都关联起来,会产生冗余关联,使进度计划难以阅读,更难以修改。
驱动性与非驱动性紧前活动
当一项活动有多项紧前活动时,通常在任何时候只有其中一项控制其开始日期。这就是 驱动性紧前活动。其他的则是非驱动性的:它们完成得更早,在影响紧后活动之前还有一些浮动时间。
| 驱动性紧前活动 | 非驱动性紧前活动 | |
|---|---|---|
| 对紧后活动的影响 | 决定其最早开始(或完成)日期 | 目前没有影响 |
| 如果延误一天 | 紧后活动延误一天 | 在其浮动时间用完之前不会有任何影响 |
| 关注重点 | 密切监控;它往往位于关键路径上 | 关注浮动时间而不是日期 |
驱动性紧前活动会随着工作的推进而变化。一项延误的非驱动性紧前活动可能会超过驱动性紧前活动,成为新的驱动者。
多项紧前活动和多项紧后活动
有多项紧前活动的活动是路径交汇之处;PMI 称之为 路径汇聚。有多项紧后活动的活动是路径分开之处,称为 路径发散。汇聚点风险较高,因为紧后活动要等待其所有输入中最晚的那一个,任何一条路径上的延误都可能拖住一切。发散点风险较高,因为一项活动的延误会蔓延到从它出发的每一条路径。
强制性、选择性和外部紧前活动
紧前活动还因关联存在的原因而有所不同。强制性(硬逻辑)紧前活动反映的是物理上或合同上的必要性。选择性(软逻辑)紧前活动反映的是一种您可以改变的首选工作方式,因此当您需要 快速跟进 进度计划时,它是首先要考察的地方。外部紧前活动位于项目之外,例如供应商交付或监管机构的批准。这些类别的说明请参阅 任务依赖关系.
如何逐步识别紧前活动和紧后活动
- 从活动清单开始。 使用 工作分解结构 分解范围,并将每个工作包转化为活动;参见 项目任务和活动.
- 对每项活动提一个问题: 在它开始之前,必须完成(或开始)什么?答案就是它的候选紧前活动。
- 只保留直接紧前活动。 如果 A 驱动 B,B 驱动 C,就不要再将 A 与 C 关联。
- 选择关系类型。 除非工作确实重叠或必须同时完成,否则使用完成到开始关系。
- 只有在有真实理由时才添加提前量或滞后量,例如养护时间或通知期,并写下这一理由。
- 检查紧后活动。 对每项活动,问一问有什么在等待它。一项没有任何活动依赖的活动,要么是完成里程碑,要么就是缺少了关联。
- 绘制或生成网络图 ,以发现循环、悬空活动和并行路径;参见 项目网络图.
- 与实际做事的人一起审查逻辑。 他们知道哪些依赖关系是真实存在的,哪些只是习惯。
实例详解:网站上线进度计划
一个小团队正在上线一个新网站。下表列出了每项活动的工期、直接紧前活动和紧后活动。所有关联都是完成到开始关系,没有滞后量。
| ID | 活动 | 工期 | 紧前活动 | 紧后活动 |
|---|---|---|---|---|
| A | 商定需求 | 3 天 | 无(开始) | B, C |
| B | 设计页面 | 5 天 | A | D |
| C | 撰写内容 | 4 天 | A | E |
| D | 构建页面 | 6 天 | B | E |
| E | 加载内容 | 2 天 | C, D | F |
| F | 测试并上线 | 3 天 | E | 无(结束) |
A 是一个分叉点(路径发散),因为它有两项紧后活动。E 是一个汇合点(路径汇聚),因为它有两项紧前活动。从第 0 天开始顺推,得到以下最早日期:
| ID | 最早开始 | 最早完成 | 总浮动时间 |
|---|---|---|---|
| A | 第 0 天 | 第 3 天 | 0 |
| B | 第 3 天 | 第 8 天 | 0 |
| C | 第 3 天 | 第 7 天 | 7 天 |
| D | 第 8 天 | 第 14 天 | 0 |
| E | 第 14 天 | 第 16 天 | 0 |
| F | 第 16 天 | 第 19 天 | 0 |
E 必须等到 两项 紧前活动都完成后才能开始。C 在第 7 天完成,但 D 要到第 14 天才完成,因此 D 是 E 的驱动性紧前活动 ,C 则是非驱动性的,有 7 天浮动时间。关键路径是 A、B、D、E、F,项目需要 19 天。
- 如果 C 延误 3 天,它将在第 10 天完成。E 仍在第 14 天开始,因此上线日期不变;C 的浮动时间减少到 4 天。
- 如果 D 延误 3 天,E 将在第 17 天开始,上线推迟到第 22 天。
- 如果 C 延误 9 天,它将在第 16 天完成,超过 D 成为驱动性紧前活动,并使上线推迟 2 天(9 天延误减去 7 天浮动时间)。
这就是为什么要密切监控驱动性紧前活动,并关注其他紧前活动的浮动时间。计算方法的分步说明请参阅 顺推法与逆推法.
紧前活动在甘特图、网络图和工具中的呈现方式
甘特图
在 甘特图中,依赖关系画成从紧前活动横条指向紧后活动横条的箭头。对于完成到开始关系,箭头从紧前活动的末端指向紧后活动的开端。在大多数 甘特图软件中,当您移动紧前活动时,其紧后活动会自动随之移动。
网络图
在节点式(activity-on-node) 网络图中,每项活动是一个方框,每个箭头从紧前活动指向紧后活动。网络图让汇聚点和发散点一目了然,因此即使您在甘特图视图中进行日常管理,网络图也有助于检查逻辑。 PERT 图 采用同样的理念,并结合三点估算。
进度计划工具中的紧前活动表示法
大多数桌面进度计划工具允许您在某一列中输入紧前活动,使用紧前活动的行 ID、关联类型以及任何提前量或滞后量。根据 Microsoft 的文档,在 Microsoft Project 中,只输入 ID 会创建一个没有滞后量的完成到开始关联,正数表示增加滞后量,负数表示增加提前量。多项紧前活动之间用列表分隔符(逗号或分号,取决于区域设置)分隔。
| 入门级 | 含义 |
|---|---|
| 3 | 任务 3 必须在本任务开始前完成(FS,无滞后量) |
| 3FS+2d | 在任务 3 完成 2 天后开始 |
| 3SS | 任务 3 开始后即可开始 |
| 3FF-1d | 完成时间不得早于任务 3 完成前 1 天 |
| 2,5 | 等待任务 2 和任务 5 都完成 |
在网站示例中,如果 C 和 D 分别位于第 3 行和第 4 行,E(加载内容)将显示“3,4”。诸如 Wrike 和 Smartsheet 等云端工具允许您通过在甘特图视图中的横条之间拖动,或填写紧前活动列来创建同样的关联,两者在付费版中都支持依赖关系和关键路径视图。
追踪逻辑
许多工具可以突出显示任务的紧前活动和紧后活动。例如,Microsoft Project 的任务路径(Task Path)功能可以在甘特图中突出显示紧前活动、驱动性紧前活动、紧后活动和被驱动的紧后活动。当某个里程碑延误时,向后追踪其驱动性紧前活动通常是找到真正原因的最快方法。
紧前活动为何对关键路径和浮动时间至关重要
关键路径法 完全建立在紧前活动和紧后活动的关联之上。顺推法将最早日期从紧前活动推向紧后活动;逆推法将最晚日期从紧后活动拉回紧前活动。两者之差就是 浮动时间,浮动时间为零(或最少)的活动链就是关键路径。
这会带来一些实际影响:
- 没有紧后活动的活动,其浮动时间具有误导性。 它的浮动时间是相对于项目结束来计算的,因此它可能延误很久,进度计划才会显示出影响,即使实际上有其他工作依赖于它。
- 没有紧前活动的活动可以在第一天开始。 除非确实如此,否则进度计划会显示工作在实际可能开始之前就已开始。
- 缺少关联会使关键路径出错。 如果逻辑不完整,工具突出显示的路径可能并不是实际控制完成日期的那条路径。
- 资源限制不是紧前活动。 CPM 假定资源无限。如果两项活动因为由同一个人完成而无法同时进行,这应通过 资源平衡来处理,而不是凭空添加逻辑关联。
关于紧前活动的常见错误(及解决方法)
| 错误 | 为什么会造成问题 | 解决方法 |
|---|---|---|
| 开口端(没有紧前活动或没有紧后活动) | 延误无法传递,因此浮动时间和完成日期看起来比实际情况更好 | 将每项活动都纳入网络,并以完成里程碑结束 |
| 关联到摘要任务 | 逻辑变得难以理解,有些工具的计算结果会出乎意料 | 关联详细活动,而不是摘要行 |
| 冗余关联 | 杂乱的关联掩盖了真正的驱动逻辑 | 只保留直接紧前活动 |
| 循环逻辑(A 先于 B,B 又先于 A) | 进度计划无法计算;大多数工具会拒绝 | 通过拆分活动或重新考虑顺序来打破循环 |
| 用日期约束代替关联 | 紧前活动延误时日期不再变动 | 使用逻辑关联,约束只用于真正固定的日期 |
| 用滞后量来表示工作 | 隐藏在滞后量中的工作无法跟踪,也无法配置资源 | 将该工作建模为独立的活动 |
| 过度使用 SS 和 SF 关联 | 逻辑变得难以解释,也容易被破坏 | 默认使用 FS;如果活动重叠,就拆分活动 |
| 重新规划后关联已过时 | 进度计划在为一份没人遵循的计划预测日期 | 每当范围或方法发生变化时审查关联 |
如果同一处重叠总是需要一个带有较长滞后量的开始到开始关联,那么将紧前活动拆分为两项活动、并将紧后活动与第一部分关联,通常会更清晰。
检查进度逻辑的质量
大型项目通常会按照已发布的健康检查标准来检验进度逻辑。一个广泛使用的例子是美国国防合同管理局(DCMA)的 14 点评估,其中包括以下逻辑检查:
| 请查看 | DCMA 阈值 |
|---|---|
| 缺少紧前活动或紧后活动的未完成活动 | 不超过 5% |
| 完成到开始关联所占比例 | 至少 90% |
| 提前量(负滞后量) | 无 |
| 带有滞后量的关联 | 不超过 5% |
| 带有硬性日期约束的未完成活动 | 不超过 5% |
这些阈值来自国防合同领域,但对于任何进度计划都是有用的合理性检查。我们对小型项目的建议更为简单:
- 筛选出“紧前活动”或“紧后活动”列为空的活动,并逐一修正。
- 将一项早期活动移动一周,检查完成日期是否按预期变化。
- 从头到尾大声读出关键路径;如果任何一步听起来不合逻辑,就检查其关联。
- 在设定 项目基准 之前以及任何重大重新规划之后,重新运行这些检查。
管理紧前活动的最佳实践
- 先建立逻辑,再添加日期。让关联来计算日期,而不是手动输入日期。
- 为每项活动指定明确的负责人,以便在紧前活动延误时有人负责。
- 尽早商定跨团队和外部的紧前活动,并在对方指定一名联系人。
- 将汇聚点(有许多紧前活动的活动)视为风险并加以监控。
- 记录每项选择性关联存在的原因,以便了解哪些关联可以更改以追回时间;参见 进度压缩.
- 使用开始和完成里程碑保持网络整洁;对于跨越一组活动的支持性工作,可使用 汇总活动(hammock activity) 来表示。
- 将更新关联作为定期进度审查的一部分,而不仅仅是在出现问题时才更新。
如果您从零开始制定进度计划,免费的 项目进度表模板, 关键路径模板 和 甘特图模板 都包含紧前活动列,而 工作分解结构模板 可以帮助您先建立活动清单。有关更广泛的流程,请阅读我们的指南: 项目进度安排.
本主题的免费模板
常见问题
项目管理中的紧前活动是什么?
紧前活动是指必须在另一项活动开始或完成之前开始或完成的活动。它控制着依赖于它的活动的时间安排。
项目管理中的紧后活动是什么?
紧后活动是依赖于另一项活动(其紧前活动)并在进度计划中位于其后的活动。它的开始或完成日期由该紧前活动驱动。
紧前活动和紧后活动有什么区别?
紧前活动在先并控制时间安排;紧后活动在后并依赖于紧前活动。它们是同一依赖关系的两端,大多数活动在一条关联中是紧前活动,在另一条关联中则是紧后活动。
一项任务可以有多个紧前活动吗?
可以。在完成到开始关联下,它必须等到所有紧前活动都完成后才能开始,因此最晚完成的那一项,即驱动性紧前活动,决定其开始日期。
一项任务可以有多项紧后活动吗?
可以。此时该任务的延误会影响其每一项紧后活动,这就是为什么有许多紧后活动的活动值得密切关注。
什么是直接紧前活动?
直接紧前活动与该活动直接关联。链条中更早的活动是间接紧前活动,不应再次关联。
什么是驱动性紧前活动?
当前实际决定紧后活动最早开始或完成日期的紧前活动。它的延误会立即推迟紧后活动。
MS Project 中的 3FS+2d 是什么意思?
它表示任务 3 是一个带有 2 天滞后量的完成到开始紧前活动:本任务可以在任务 3 完成 2 天后开始。只输入“3”则表示没有滞后量的完成到开始关系。
如果一项任务没有紧前活动会怎样?
进度计划工具会让它在项目开始日期开始。这对第一项活动来说没问题,但对于其他活动,通常意味着缺少了一条关联。
如果任务没有紧后活动会怎样?
它会成为一个开口端,因此它的延误不会对后续工作或完成日期显示出任何影响。请将它关联到需要其产出的活动,或关联到完成里程碑。
紧前活动等同于依赖关系吗?
不完全是。依赖关系是两项活动之间的关联;紧前活动和紧后活动是关联两端的活动。参见 任务依赖关系.
紧后活动可以在紧前活动完成之前开始吗?
可以,前提是关联类型为开始到开始或完成到完成,或者在完成到开始关联上应用了提前量(负滞后量)。像这样重叠工作可以节省时间,但会增加返工的风险。
紧前活动会影响浮动时间吗?
会。浮动时间是通过比较一项活动与其紧后活动的日期来计算的,因此缺失或错误的关联会导致浮动时间出错。参见 浮动时间与松弛时间.
紧前活动在网络图中如何显示?
以箭头显示。紧前活动是箭头离开的节点,紧后活动是箭头指向的节点;参见 项目网络图.