很容易发现,TOC约束理论的基本思想早就在项目管理领域得到应用,传统的关键路径方法(CPM)包含了这些思想。所以有些项目管理领域的研究者都认为关键链方法不是一种全新的项目管理方法,只是一种新的风险管理方法。
传统关键路径方法中,关键路径定义为项目中最长的路径,关键路径上的任何任务延迟,都会导致整个项目的延期。缩短非关键路径上的任务的工期,不会减少整个项目的工期,同样地,加快非关键路径上的任务,也不能使项目完成日期提前。如果要优化计划,缩短工期,就必须缩短关键路径上的任务的工期,如果要追赶落后的进度,必须要加快关键路径上的任务。传统关键路径方法在指导思想上和TOC约束理论是非常相似的。
新的关键链方法是对关键路径方法的改进,Goldratt博士在《关键链》一书中也提到,在使用传统关键路径方法实施TOC的时候,传统关键路径方法有两个缺点:
·没有考虑到任务工期的不确定性
·没有考虑到资源约束
其中因为没有考虑资源约束,CPM寻找项目瓶颈的时候,可能会得到完全错误的结论,关键路径在很多情况下都不是项目的瓶颈。如下图的计划中,红色的任务是通过CPM方法识别的关键路径,但事实上,项目的瓶颈不仅仅是这两个任务,虽然“模块1编码”、“模块2编码”和“模块3编码”三个任务的工作没有关系,但因为只有一个程序员,受限于资源“程序员”,任务“模块2编码”延期也会导致整个项目延期。“模块2编码”应该也是关键任务,但没有被CPM方法正确识别。
这已经是一个存在了很长时间的问题,传统的关键路径方法也找到一些技巧来解决这个问题,最简单的方法就是在两个分配同一个资源的临近的任务之间加一个Finish-Start依赖关系;这样就可以正确识别瓶颈,但也有一个缺点,就是有多余的依赖关系,增加计划的难度,而且也容易出错。
关键链方法从根本上解决这个问题,Goldratt博士把关键链定义为考虑资源约束情况下,项目中的最长路径,作为项目的瓶颈。这样就不需要加入额外的任务依赖关系,可以保持计划的简洁,并且能够在任何情况下正确识别项目的瓶颈。
关键链的另一个改进是考虑任务工期的不确定性,并且引进TOC的缓冲概念,使用项目缓冲和接驳缓冲保护关键链和交付日期。这两种缓冲都是加入计划的一段额外的时间,这样前面任务发生一定程度的延期,首先会侵占这段额外的时间,只要延期不超出这段额外的时间,就不会推迟缓冲后面任务,或者不会推迟项目交付时间。这样,关键链进度计划和关键路径进度计划就有一些差别。
首先,关键链进度计划中,任务的工期通常是平均情况下的估计工期,而关键路径进度计划中则通常使用最坏情况下的估计工期。这样,关键链方法编制的计划工期比关键路径方法可以缩短很多;另外根据帕金森定律,工作中只要有富余时间必定被消磨掉,去掉富余时间可以消除磨洋工现象,提高效率。
其次,关键链进度计划中有项目缓冲和接驳缓冲,用来避免在发生各种意外的最坏情况下,保证项目按期交付。因为存在项目缓冲,和CPM不同,即使关键链上的任务发生延迟,整个项目一般也不会延期。 CPM不需要缓冲,因为CPM通常采用最坏情况估计作为任务的工期,所以不论出什么意外,项目都不应该延期。因为关键链进度计划把富余时间去掉缩短工期,这样的计划理论上有50%可能延期,所以必须要加入项目缓冲,以便不失信于客户。不过即使加入项目缓冲,关键链进度计划也比CPM计划要短得多,据报告能够缩短10%到50%。
另外一个不同的地方是,关键链进度计划通常把任务开始时间尽可能推迟,例如上面的计划中,任务“用户手册编写”最早可以在2007年11月12日开始,但却被推迟到2007年11月26日开始。这样做的目的也是为了消除磨洋工现象,提早开始一个任务等于给它一段很长的富余时间,根据帕金森定律,人们会放慢速度消磨时间,这样很危险,因为后期可能遇到意外情况,导致任务无法在最晚完成日期前完成,影响项目按期完成。尽可能推迟任务的开始时间,可以让任务以最快的速度执行,但这也带来一个风险,如果发生意外,任务将直接撞上关键链,导致整个项目延期,和磨洋工带来的风险一样。所以关键链方法在非关键任务和关键链之间加入接驳缓冲,避免非关键任务延期影响到项目按期完成。
其实尽可能早的开始任务,相当于加入一个很长的接驳缓冲。所以可以看出,关键链方法并不认为接驳缓冲越长越好,接驳缓冲长度应该适度,既能让人们感觉到时间紧迫的压力,避免消磨时间,以最快的速度完成工作,又能保证最坏的情况下造成的延期不会影响项目按期完成。
因为关键链方法考虑任务工期不确定性,并且使用项目缓冲保护项目交付时间,即使在最坏情况下也能保证按期交付。所以有些学者仅仅把关键链方法看作是一种新的风险管理方法。
和关键路径方法一样,关键链也可以用来优化项目计划,如果需要缩短工期,可以在关键链任务上投入更多的资源。
另外提高质量可以减少返工,也可以缩短工期;而根据TOC,提升非瓶颈处的能力,不能改善整体的产出。这样可以得到一个结论,只需要提高关键链上任务的质量。
这对改进敏捷项目的质量可能很有帮助,因为敏捷方法主张轻装上阵,灵活变化,而质量管理会加入更多的前期工作,这样就不利于变化了。而关键链可能可以提供一个折中的方案,即只适度提高关键链这部分工作的质量,其他部分可以进可能简化。
尽管关键链方法体现的TOC基本思路在项目管理领域并不很有新意,传统的关键路径方法已经包含这些思想。但作为对关键路径方法的改进,关键链方法在分析项目瓶颈的时候更为精确,生成的进度计划也更加高效和紧凑。
转自:http://www.mypm.net/articles/show_article_content.asp?articleID=12248&pageNO=2