4、任务依赖关系管理:FS、SS、FF、SF四种依赖类型,关键路径法

说实话,任务依赖关系这块,我见过太多人把它想简单了。

很多人觉得,不就是A做完B才能做嘛。嗯,这确实是最常见的一种。但实际项目中,依赖关系远比这复杂。我当年带一个硬件开发项目时,就因为搞混了SS和FF的关系,差点让整个测试阶段延期两周。从那以后,我对这四种依赖类型就格外上心。

4.1 四种依赖类型,你真的搞懂了吗?

项目管理里,依赖关系一共就四种。你想想看,其实就两个维度:前置任务后置任务,加上开始完成两个状态。两两组合,正好四种。

缩写 全称 含义 通俗理解
FS Finish-to-Start 前置任务完成后,后置任务才能开始 最常用的依赖,A做完B才能做
SS Start-to-Start 前置任务开始后,后置任务才能开始 可以同时开工,但B不能比A先开始
FF Finish-to-Finish 前置任务完成后,后置任务才能完成 B必须等A做完才能收工
SF Start-to-Finish 前置任务开始后,后置任务才能完成 用得最少,B必须在A开始后才能结束

4.2 FS(Finish-to-Start)—— 最常用的依赖

这个不用多说。你写完代码,我才能做代码审查。你做完需求评审,我才能开始设计。这就是FS。

我个人习惯,在项目初期把所有任务都默认设为FS。等后面细化时,再根据实际情况调整。为什么?因为FS最安全,不容易出错。你想想看,如果两个任务之间没有明确的并行需求,用FS准没错。

我的经验: 在甘特图里,FS依赖会形成一条清晰的链条。我建议新手先从FS入手,把主干逻辑理清楚,再考虑其他依赖类型。

4.3 SS(Start-to-Start)—— 并行工作的利器

SS依赖,说白了就是「你可以开始了,不用等我做完」。

举个例子:我在写接口文档的同时,前端团队可以开始搭建页面框架。只要我开始了接口定义,他们就能动工。不需要等我写完所有文档。

这里有个坑。我曾经在一个项目中,把两个任务设成了SS,结果前置任务只开了个头就卡住了,后置任务做到一半发现前置改了方向,全部返工。嗯,SS依赖的关键在于:前置任务必须有一个稳定的「开始里程碑」,而不是随便开个头就算数。

注意: SS依赖容易造成「虚假并行」。表面上两个任务同时进行,实际上后置任务一直在等前置任务的阶段性成果。建议配合里程碑使用。

4.4 FF(Finish-to-Finish)—— 一起收工

FF依赖的意思是:你做完我才能做完。但你可以先做完,我不拦着。

我记得有一次做系统集成测试,测试用例编写和测试环境搭建就是FF关系。测试用例可以提前写完,测试环境也可以提前搭好。但只有两者都完成了,测试阶段才算真正结束。

FF依赖在实际项目中经常被忽略。很多人只关注「什么时候开始」,却忽略了「什么时候结束」。其实,有些任务的结束条件是相互绑定的。

4.5 SF(Start-to-Finish)—— 最反直觉的依赖

SF依赖,说实话,我工作这么多年,真正用到的次数一只手数得过来。

它的逻辑是:B任务必须在A任务开始之后才能结束。听起来有点绕对吧?

举个例子:旧系统下线和新系统上线。旧系统必须在新系统开始运行之后,才能正式下线。这就是SF。新系统一启动,旧系统才能结束。

我个人觉得,SF依赖更多是一种逻辑约束,而不是时间约束。在项目管理工具里,很多工具甚至不支持SF依赖。如果你遇到了,先想想是不是可以用FS或SS来替代。

4.6 关键路径法(CPM)—— 找到决定项目周期的命脉

好了,四种依赖关系讲完了。接下来是关键路径法。说白了,就是找出项目里最长的那条任务链

为什么重要?因为这条链上的任何一个任务延期,整个项目就延期。其他任务哪怕提前做完,也改变不了项目结束时间。

核心概念: 关键路径上的任务总浮动时间为0。也就是说,这些任务一天都不能晚。

我当年带一个嵌入式项目时,一开始觉得所有任务都很重要。后来用关键路径法一分析,发现真正决定周期的只有6个任务。其他任务都有或多或少的浮动时间。从那以后,我每次做计划,第一件事就是找出关键路径。

4.7 如何计算关键路径?

计算关键路径,其实就四步:

  1. 列出所有任务,包括工期和依赖关系
  2. 正向计算:从开始到结束,算出每个任务的最早开始时间和最早完成时间
  3. 反向计算:从结束到开始,算出每个任务的最晚开始时间和最晚完成时间
  4. 找出浮动时间为0的任务,这些任务连起来就是关键路径

举个例子,假设有四个任务:

任务 工期(天) 前置任务
A 3
B 4 A
C 2 A
D 1 B, C

正向计算:A最早第3天完成,B最早第7天完成,C最早第5天完成,D最早第8天完成。

反向计算:D最晚第8天完成,B最晚第7天完成,C最晚第7天完成,A最晚第3天完成。

浮动时间:A=0,B=0,C=2,D=0。所以关键路径是 A → B → D,总工期8天。

小技巧: 实际项目中,关键路径可能会变化。我建议每周重新计算一次,尤其是当某个任务延期时。

4.8 关键路径的常见误区

嗯,这里我要说几个我踩过的坑。

误区一:关键路径上的任务最重要。 不对。关键路径上的任务最敏感,但不一定最重要。有些非关键路径上的任务,一旦延期超过浮动时间,就会变成新的关键路径。

误区二:压缩关键路径就能缩短工期。 不一定。你压缩了一个关键任务,可能另一个任务链变成了新的关键路径。我曾经把一个关键任务从5天压缩到3天,结果另一个链上的任务变成了关键路径,总工期只缩短了1天。

误区三:关键路径只有一个。 大型项目往往有多条关键路径,或者接近关键路径的次关键路径。这些都需要关注。

避坑指南: 我曾经在一个项目中只盯着一条关键路径,结果另一条路径上的任务悄悄延期,最后变成了新的关键路径,导致项目延期。从那以后,我每次都会关注「次关键路径」,也就是浮动时间小于3天的任务链。

4.9 依赖关系与关键路径的结合使用

依赖关系决定了任务之间的连接方式,关键路径则告诉我们哪些连接最重要。

我个人习惯的做法是:

  • 先用FS依赖画出主干
  • 再用SS和FF优化并行度
  • 最后用关键路径法验证计划是否合理

你想想看,如果关键路径上的任务用了SS依赖,那就要特别注意前置任务的「开始里程碑」是否足够稳定。如果关键路径上的任务用了FF依赖,那就要确保两个任务都能按时完成。

说白了,依赖关系是骨架,关键路径是命脉。两者结合,才能做出靠谱的项目计划。

任务依赖关系与关键路径 FS 完成-开始 SS 开始-开始 FF 完成-完成 SF 开始-完成 关键路径法(CPM) 列出所有任务 正向计算 反向计算 找出关键路径 四种依赖类型决定任务连接方式 关键路径决定项目最短工期 两者结合,才能做出靠谱的项目计划

这张图把四种依赖类型和关键路径法的关系串起来了。上面是四种依赖,下面是关键路径的计算步骤。两者不是孤立的,而是相辅相成的。

好了,这一章的内容就到这里。记住一句话:依赖关系决定了任务怎么连,关键路径决定了项目怎么管。两者都搞明白了,你的项目计划就不会出大问题。

专注资料整理