? 优质资源分享 ?
学习路线指引(点击解锁) | 知识定位 | 人群定位 |
---|---|---|
? Python实战微信订餐小程序 ? | 进阶级 | 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 |
?Python量化交易实战? | 入门级 | 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 |
【公众号@ “项目管理研究所” 将会第一时间更新文章并分享《行业分析报告》】
归档于软件项目管理初级学习路线
第七章 软件项目进度计划
《初级学习路线合集 》
前言
大家好,这节我们学习软件项目管理---进度计划编排--关键路径法。
基本概念
- 最早开始时间(Early start)
- 最晚开始时间(Late start)
- 最早完成时间(Early finish)
- 最晚完成时间(Late finish)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aPXMQ3lr-1655313259947)(https://img2022.cnblogs.com/blog/1683514/202206/1683514-20220615133303274-2057017602.png)]
例如:我们看这个任务是10天,最早开始时间ES=1,最早完成时间EF=11,最晚开始时间LS=5,那么对应最晚完成时间LF=15。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pxf8TMMT-1655313259950)(https://img2022.cnblogs.com/blog/1683514/202206/1683514-20220615133303300-329846337.png)]
浮动时间
浮动时间是一个任务的机动性,它是一个任务在不影响其它任务或者项目完成的情况下可以延迟的时间量。
例如:下图这个刚才的任务,可以1号开始,也可以5号开始,有4天的浮动,这就是浮动,这个浮动基本就是个总浮动的概念,我们一般说的浮动也是总浮动。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LdTQraTr-1655313259951)(https://img2022.cnblogs.com/blog/1683514/202206/1683514-20220615133303271-139632658.png)]
总浮动与自由浮动
如下图示的任务有4天的总浮动,但是不一定可以自由的使用。
总浮动是在不影响项目最早完成时间的前提下,一个任务可以延迟的时间。
自由浮动是在不影响后置任务最早开始时间的前提下,一个任务可以延迟的时间量。他说明了总浮动的自由性,所以小于等于总浮动。
例如:他的后置任务最早开始时间是13,所以自由浮动时间为2.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t9uN8Uq1-1655313259952)(https://img2022.cnblogs.com/blog/1683514/202206/1683514-20220615133303290-1769365485.png)]
关键路径
- 网络图中最长的路径
- 关键路径是决定项目完成的最短时间。
- 时间浮动为0(Float=0)的路径
- 关键路径上任何活动延迟,都会导致整个项目完成时间的延迟
- 关键路径可能不止一条
我们看一个项目网络图:关键路径是A,项目完成的时间是100天。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DZA8Tbl4-1655313259954)(https://img2022.cnblogs.com/blog/1683514/202206/1683514-20220615133303309-1197070210.png)]
我们将这个网络图改为甘特图的形式,项目在100天内完成,A任务没有浮动,是关键路径。但是B任务相对来说灵活点,是有浮动的,最晚可以第90天开始。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dsmD1DrM-1655313259955)(https://img2022.cnblogs.com/blog/1683514/202206/1683514-20220615133303403-536657358.png)]
我们先看第一个任务A,从第0天开始,说明任务A的最早开始时间是第0天,那么他的最早结束时间是100。
所以ES=0可以推导出EF=100,从左向右,顺时针推导。A的最晚完成时间是第100天,历时是100,所以LF=100,LS=0,从右向左,逆时针推导。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CrZM24tO-1655313259956)(https://img2022.cnblogs.com/blog/1683514/202206/1683514-20220615133303292-656734295.png)]
我们再来看任务B的最早开始时间和任务A一样,都是第0天开始,ES=0,历时为10,从左向右,推出B的最早完成时间为第10天,则EF=10。
B的最晚完成时间LF=100,从右向左,逆时针推导,B的最晚开始时间为LF-10=90,则LS=90.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z9bdd0RX-1655313259957)(https://img2022.cnblogs.com/blog/1683514/202206/1683514-20220615133303313-1652534708.png)]
接下来说浮动,刚才说了B有浮动,很明显看出来有90天浮动,那么这个浮动是总浮动,TF=LS-ES=90,或者TF=LF-EF=90。
因此我们得出如下图公式:
翻译其中一条:EF(最晚结束时间)=ES(最早开始时间)+duration(历时)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tlM7CuxZ-1655313259957)(https://img2022.cnblogs.com/blog/1683514/202206/1683514-20220615133303300-435907905.png)]
刚才那个项目的任务A和任务B都没有任务后置的,所以就不牵扯到自由浮动的问题。
现在在任务B的后面加一个任务C,任务C的历时是5,并且B和C之间加一个延迟Lag,这个Lag=5,既B任务完成5天后,C这个任务才能开始。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u8FMiIja-1655313259958)(https://img2022.cnblogs.com/blog/1683514/202206/1683514-20220615133303284-1251647175.png)]
看这个项目关键路径还是A,B和C路径是有浮动的,但是B任务有了后置任务C之后就不自由了。
那么任务A这个路径没有变化,ES和LS还是和刚才一样,如图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aylSAKFS-1655313259959)(https://img2022.cnblogs.com/blog/1683514/202206/1683514-20220615133303311-182373658.png)]
那么任务C和任务B这条路径,正向推导最早开始时间和最早结束时间,从左到右。对于任务B而言ES=0,推导出EF=10.
任务C则ES(c)=EF(B)+lag=15,则EF=ES+历时5天=20。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LiWPvtK5-1655313259961)(https://img2022.cnblogs.com/blog/1683514/202206/1683514-20220615133303335-740863632.png)]
逆向推导最晚结束时间和最晚开始时间,从右向左。首先推导任务C,LF=100,LS=95。
B的LF=LS(c)-Lag(5)=90.则B的LS(最早开始时间)=LF(90)减去历时10天为80。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JiG89zB2-1655313259961)(https://img2022.cnblogs.com/blog/1683514/202206/1683514-20220615133303324-1322024831.png)]
因此我们总结公式如下:
其中S代表后置任务,P代表前置任务。比如ES(S)代表后置任务的最早开始时间。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kwevzMXP-1655313259962)(https://img2022.cnblogs.com/blog/1683514/202206/1683514-20220615133303308-424067399.png)]
B的总浮动为80天,但是不一定很自由,为了不影响后置任务C的最早开始时间,则B的自由浮动时间FF为0。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IMJFJq9n-1655313259963)(https://img2022.cnblogs.com/blog/1683514/202206/1683514-20220615133303353-645616665.png)]
由此我们总结出,正推法确定最早开始时间和最早完成时间。逆推法确定最晚结束时间和最晚开始时间。
正推法
按照时间顺序计算最早开始时间和最早完成时间的方法,称为正推法。
正推法步骤如下:
- 确定项目的开始时间,网络图中第一个任务的最早开始时间是项目的开始时间;
- ES+Duration=EF
- EF+Lag=ES(s),当一个任务有多个前置任务时,选择前置任务中最大的EF加上Lag作为其ES。
- 依次类推,从左到右,从上到下,计算每个路径的所有任务的ES和最早完成时间EF
我们看个例子:这是项目的网络图,而且确定了每个活动的历时,现在用正推方法来确定每个任务的ES和EF。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f3mLnluL-1655313259965)(https://img2022.cnblogs.com/blog/1683514/202206/1683514-20220615133303350-314768105.png)]
我们先确定项目的开始时间,那么任务A的开始时间是1,历时为7,则EF(最早结束时间)=8。
A和C任务之间没有Lag,所以C的ES为8,因为历时为6,所以EF为14。以此类推...从左到右,从上到下。
图中任务E有两个前置任务,则需要选择前置任务中最大的EF加上Lag作为其ES,所以选择任务D的EF=7,因为没有Lag,所以任务E的ES=7.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gCsjCUTC-1655313259966)(https://img2022.cnblogs.com/blog/1683514/202206/1683514-20220615133303355-508658307.png)]
逆推法
按照逆时间顺序计算最晚开始时间和最晚结束时间的方法,称为逆推法。
逆推法步骤如下:
- 首先确定项目的结束时间,网络图中最后一个任务最晚完成时间是项目的结束时间;
- LF-Duration=LS
- LS-Lag=LF(p),当一个任务有多个后置任务时,选择其后置任务中最小LS减Lag作为其LF
- 依次类推,从右到左,从上到下,计算每个任务的最晚开始时间LS和最晚结束时间LF
我们继续通过逆推法来推导这个项目各个任务的最晚结束时间和最晚开始时间。
首先确定项目完成时间,为了保证项目在最短时间内完成,最后任务H的完成时间是19,因为最后的任务在关键路径上,所以是没有浮动的。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VfEL54cu-1655313259967)(https://img2022.cnblogs.com/blog/1683514/202206/1683514-20220615133303379-2029152935.png)]
H的最晚结束时间为19,所以LS=17。则前置任务G的LF=17,LS=14,以此类推...自上而下,从右到左。
图中任务B有两个后置任务,则需要选择后置任务中最小的LS减去Lag作为其LF,所以选择任务D的LS=11,因为没有Lag,所以任务B的LF=11.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p7UpGVUH-1655313259968)(https://img2022.cnblogs.com/blog/1683514/202206/1683514-20220615133303355-315967711.png)]
我们继续看网络图的关键路径,关键路径是没有浮动的路径,是最紧凑的路径,图中A->C->G->H是没有浮动的,所以是关键路径,那么他也一定是最长的路径,这个长度是18.
所以通过关键路径确定项目的完成时间是18。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XVTjAVgC-1655313259968)(https://img2022.cnblogs.com/blog/1683514/202206/1683514-20220615133303375-90949080.png)]
总结
总之 关键路径方法主要是通过正推方法和逆推方法进行任务编排,正推方法确定每个任务的最早开始时间和最早完成时间,逆推方法确定每个任务的最晚完成时间和最晚开始时间。
到这里,第七章 第四节 第二小节 关键路径法就讲解完毕了!下一节介绍时间压缩法~
如果您觉得这篇文章有帮助到您的的话不妨点赞支持一下哟~~?
后续将持续更新【软件项目管理初级学习路线】的全知识点,大家感兴趣的多多关注博主哟~
————————————————
转载请注明:xuhss » 软件项目管理 7.4.2.进度计划编排-关键路径法