[原创]关键链方法的几种缓冲长度计算方法
<p>在关键链进度计划方法中,完成WBS分解、任务工期估计、识别任务链和关键链之后,就要加入接驳缓冲 (Feeding buffer)和项目缓冲(Project buffer)。接驳缓冲可以避免因为非关键链上的任务不能按期完成而导致整个项目延期,项目缓冲用来保证项目按期完成。 </p><p>根据关键链方法的提出者Goldratt和其他一些作者的文章,如果缓冲长度设置恰当,项目的工期平均可以比传统方法缩短50%,并且能够保证项目按期完成。缓冲长度计算方法大致有3种: </p><ul><li>SRSS </li><li>任务链长度1/2法 </li><li>安全时间1/2法 </li></ul><p>下面是一个只有三个任务的简单项目,因为分配了相同的资源,所有三个任务都在关键链上。使用三种方法计算项目缓冲的长度,结果有较大差别。 </p><p><img height="212" alt="" src="http://blog.vsharing.com/Uploads/UserDirs/2/515/205651/gc_project.jpg" width="575" align="middle"/></p><p>其中SRSS方法是根据概率统计数学方法得到的,首先由Donald Reinertsen提出,他提出,一组串行过程被合并后,串行过程的不确定性会降低为总量的一部分。具体地说,对于串行活动,总的不确定性是各个不确定量平方和的平方根。SRSS就是“平方和的平方根”的缩写(Square Root of Sum of Squares)。</p><p><img height="54" alt="" src="http://blog.vsharing.com/Uploads/UserDirs/2/515/205651/abstract_srss.jpg" width="337" align="middle"/></p><p>任务就是一个串行活动,任务链就是组合以后的串行活动,任务的工期是不确定的,我们常说任务“模块1编码”需要3天时间,但实际上各种意外的情况都会导致任务的延期,比如硬盘烧坏、停电等等,所以任务的工期不是一个确定的值,它是个服从某种分布的随机变量,准确地说,对于任务“模块1编码”,如果一切顺利可以3天完成,平均的话5天,如果各种意外都发生了需要7天,工期是不确定的,有一个变化范围。</p><p>同样,多个任务组成的任务链的总工期也是不确定的,有一个变化范围,等于每个任务工期变化范围平方和的平方根。如果变化范围作为缓冲长度,以最好情况下的任务工期做出进度计划,项目在最坏情况下只是刚刚好耗尽所有缓冲,这样就可以大幅度缩短整个项目工期,又能保证项目在各种情况下都能按期完成。</p><p><img height="60" alt="" src="http://blog.vsharing.com/Uploads/UserDirs/2/515/205651/instance_srss.jpg" width="504" align="middle"/></p><p>SRSS理论上最精细,它是问题的理论最优解。因此相对其他方法,SRSS通常得到短得多的缓冲长度。对于前面例子,用SRSS计算的缓冲长度仅为4天。</p><p>但实际上喜欢使用SRSS的人不多,首先,SRSS在理论上是最优化的,但它假设每个任务的工期变化都是独立的,这点有时候不太符合实际情况,比如同一个意外可能会导致多个或者所有任务的延期,例如停电会导致所有正在执行的任务延迟一段时间。所以SRSS计算出来的缓冲长度通常都偏短,项目结束日期不能得到充分的保护。</p><p>另外还有一个原因是输入麻烦,SRSS必须使用两点分析法或者三点分析法(PERT方法),如果使用两点分析法,需要输入每个任务的平均情况下的工期,以及最坏情况下的工期,需要输入两个工期,比传统的计划输入工作量多了一倍。而三点分析法则要输入三个工期,更麻烦。在工作压力大的情况下,输入麻烦很多时候是不可忍受的。</p><p><img height="474" alt="" src="http://blog.vsharing.com/Uploads/UserDirs/2/515/205651/gc_srss.jpg" width="648" align="middle"/></p><p>因此,SRSS多用于理论分析,可以很好的说明为什么使用缓冲可以缩短时间而不影响项目按期完成。</p><p>另一个方法的是任务链长度1/2法。缓冲长度取任务链工期的1/2。不确定性高的项目,比例可以比1/2高一些,不确定性小的项目,比例可以小一些。</p><p><img height="149" alt="" src="http://blog.vsharing.com/Uploads/UserDirs/2/515/205651/Uncertainty_bufsize.jpg" width="591" align="middle"/></p><p>这种方法的优点是简单,不需要用两点分析法,不需要输入两个工期。除了以平均情况的估计作为工期之外,和传统方法输入数据量相同。</p><p>另外这种方法只需要估计一个总体的不确定性,就可以直接得到缓冲长度,不需要估计每个任务的不确定性,使用起来也比较方便。</p><p>另外一个优点是灵活,容易根据实际情况和经验修正,比如对于不确定性超过50%的项目,很多公司都不能接受200%的缓冲,这时可以把比例改为100%,计算方法不需要改变。而SRSS方法要修正就不容易了。</p><p>还有一个特点是容易计算,这样在没有软件帮助的情况下,也可以通过人工计算方法得到缓冲长度。因为1/2法简单而且灵活,所以这种方法在项目中使用很多,这种方法得到的缓冲长度通常比SRSS方法长得多,对项目结束时间的保护更充分,对项目组更有利。因为比例可以灵活变动,公司、客户和项目组可以通过协商,确定一个大家都可以接受的比例,可以顾全各方利益。</p><p>如前面例子,任务链长度1/2法计算得到的缓冲长度为6.5天,而SRSS得到的结果为4.12天。</p><p><img height="473" alt="" src="http://blog.vsharing.com/Uploads/UserDirs/2/515/205651/gc_half_chain.jpg" width="622" align="middle"/></p><p>最后一种方法是安全时间1/2法,也需要用两点分析法,缓冲长度等于每个任务的安全时间总和的一半。这种方法和SRSS一样有输入麻烦的缺点,而且在多数情况下计算结果和任务链长度1/2法差不多,唯一的优点是容易计算,不过现在PC很普及这个优点没有多大意义。所以现在很少用这种方法,也很少人知道这个方法。</p><p>三种方法中,在一般情况下我认为使用任务链长度1/2法最好。不论理论上多精细,和实际偏差都会很大,都要经过经验修正才能得到准确的结果。1/2法简单灵活容易修正,和SRSS相比,在实际应用中更容易提高准确度。另外简单也容易理解和学习,不容易出错。</p>
页:
[1]