唠嗑点工作社会唠嗑
不知道大家有没有在带团队项目的过程中,总是有那么几个项目总是赔本的,这类项目带的时间长了, 找领导或者公司申请资源,老是被吧驳回。。。。。
科普一波
挣值管理(Earned Value Management, EVM)是项目管理里面成本管理部分较为重点的知识点,但是也可以用来综合考察项目范围和进度绩效,经常需要做相关计算。本文试图来整理一下关于挣值管理的一些概念和知识点,同样测试也可以使用
基本概念 PV,EV,AC 和 BAC
- 计划价值(Planned Value, PV) 截止到某时间点计划要完成工作量的价值,也就是计划要做多少事
- 挣值(Earned Value, EV) 截止到某时间点实际已经完成工作量的价值,也就是实际做了多少事
- 实际成本(Actual Cost, AC) 截止到某时间点实际已经发生的成本,也就是实际花了多少钱
- 完工预算(Budget At Completion, BAC) 对完成该项目的计划预算,也就是完成整个项目计划多少预算
举个例子来更通俗地说明一下以上的几个概念。假设我们现在要做一个测试平台项目,就是砌一堵长度为 100 米的围墙,为了方便计算我们假设总的预算是 100 元每米,共 100*100=10000 元,我们还计划项目工时 10 天(每天砌墙 10 米)来完成这个项目
为了顺利完成该项目在项目中途我们需要对项目绩效做监控,于是我们在第四天工作结束的时候对该项目进行绩效评估。本来第四天工作结束的时候我们计划是要完成 40 米的任务的(因为每天计划是 10 米),这个 40 米的工作量的价值是 40 米 *100 元/米 = 4000 元,这个 4000 元就是我们的计划价值 PV(计划做多少事);实际完成了多少呢?我们发现第四天工作结束实际才完成了 30 米砌墙任务,这个 30 米围墙对应的价值是 30 米 *100 元/米=3000 元,这个 3000 元就是我们的挣值 EV(实际做了多少事),也就是我们在第四天结束就完成了 3000 元的工作量;到第四天结束这个时间点我们实际却花了 5000 元,这个 5000 元就是我们的实际成本 AC(实际花了多少钱);总的预算 10000 元就是我们的完工预算 BAC;总结一下就是一共计划 10000 元 10 天完成这个项目,在第四天结束的时候去检查项目绩效,发现到这个时间点为止本来应该完成 4000 元的项目工作量(PV),结果只完成了 3000 元的工作(EV),却花了 5000 元的成本(AC)。为了更直观表示这几个概念
图中红、绿、橘黄色线分别表示 EV、PV 和 AC,红线 AC 表示截止到某个时点花了多少钱(成本),斜率表示花钱的速度;绿线 PV 表示截止某个时点项目计划花的钱和做的项目量;橘黄色线 EV 表示截止到某个时点做了多少事(多少钱的工作),斜率表示做事的速度;上图我们可以看出花钱的速度比计划的要快(红线比绿线更陡,斜率更大),而做事的速度却比计划的要慢(橘黄色线比绿线更缓,斜率更小),项目绩效很不好。
绩效指标 CV,SV,CPI 和 SPI
好了,大致理解了上面 PV, EV, AC, BAC 等几个基本概念之后,接着我们来了解 CV,SV,CPI,SPI 这几个成本和进度绩效指标。
成本偏差(Cost Variance, CV)
截止到某时点发生的实际成本与计划成本的偏差,CV=EV-AC进度偏差(Schedule Variance, SV)
截止到某时点的实际进度与计划进度的偏差,SV=EV-PV成本绩效指数(Cost Performance Index, CPI)
,截止到某时点衡量成本绩效的一种指标,也就是实际每花一元钱,完成做了多少钱的事(花钱的效率),CPI=EV/AC进度绩效指数(Schedule Performance Index, SPI)
截止到某时点衡量进度绩效的一种指标,也就是实际完成的工作量与计划完成工作量之比,SPI=EV/PV
以前面砌墙的项目为例子,第四天结束去评估项目绩效的时候,本来计划完成 40 米 4000 元的工作量(PV),结果只砌了 30 米只完成了 3000 元的工作量(EV),那么:进度偏差
SV=EV-PV=3000-4000=-1000 元意思是相比计划我们的进度落后 1000 元的工作量;(负值表示进度落后,正值表示进度超前)进度绩效指数
SPI=EV/PV=3000/4000=0.75 说明当前只完成了计划任务量的 75% 的工作;
成本绩效的检查结果是:只完成 3000 元的工作量(EV)实际却花了 5000 元(AC)。这个时候:
- 成本偏差 CV=EV-AC=3000-5000=-2000 元,说明现在成本超支了 2000 元(负值表示超支,正值表示节约);
成本绩效指数 CPI=EV/AC=3000/5000=0.6,意思是前面 4 天我们实际花了 5000 元,但是只做了 3000 元的工作,相当于前面 4 天我们每花 1 元钱,只做了 0.6 元的事;在这儿要强调一下这个成本绩效指数 CPI值,因为后面很多指标都和这个 CPI 息息相关。对于 CPI 的计算方法和意义一定要非常熟悉,CPI 的意义是每花 1 元钱做了多少钱的事(花钱的效率),CPI 为 0.6 的意思就是每花 1 元钱只做了 0.6 元的事,所以 CPI 的计算方法是做了的事(EV)除了花了的钱(AC)。不光会算 CPI,大家还要能举一反三,比如知道 CPI 和做了多少事,也要会算花了多少钱,那就是花了多少钱=做了多少事/CPI,后面相关指标的计算会经常用到这个公式
成本偏差 CV 和进度偏差 SV 在图中的直观表示如下:
图中可以看到,实际上成本偏差 CV 就是 AC 与 EV 的差值,而进度偏差 SV 是 PV 与 EV 的差值,请注意都是和挣值 EV 进行对比,而且做减法的时候 EV 都要放在前面。SPI 和 CPI 没法很直观在图中表示,实际上就是斜率的比值,SPI 是 EV 与 PV 斜率的比值,CPI 是 EV 与 AC 斜率的比值
预测指标 ETC,EAC,TCPI 和 VAC
这个时候大家应该基本了解CV, SV, CPI, SPI这几个绩效指标的含义了。在这个基础上,最后我们再来了解剩下的 4 个略显晦涩的预测指标:
完工尚需估算(Estimate To Completion, ETC)
在某个时点,预测完成剩余的工作还需要多少成本;这个时候算预测数据的时候就要分情况了,主要取决于我们以后的工作花钱的效率跟以前比是否会发生变化?也就是考察以后工作的 CPI 的值会不会发生变化。根据剩余部分工作 CPI 的变化情况,有几种计算方法:
- 如果还是以当前的成本绩效完成剩余的工作,则 ETC=(BAC-EV)/CPI,也就是剩余的工作量除以成本绩效指数;
- 如果以计划的成本绩效(其实就是 1)完成剩余的工作,则 ETC=BAC-EV,也就是剩余的工作量,实际上也是用第一种情况那个公式;
- 如果进度绩效指标 SPI 也会影响完成剩余工作的成本,意思是如果严格规定我们必须要在计划的截止时间之前完成项目,那么可能就还需要额外的成本来赶工进度,这个时候就需要同时考虑 CPI 和 SPI 对于剩余工作的影响,一般计算公式则为 ETC=(BAC-EV)/(CPI*SPI),也就是剩余的工作量除以成本绩效指数与进度绩效指数的乘积;其中 CPI*SPI 又叫 “关键比率”(Critical Ratio, CR);
完工估算(Estimate At Completion, EAC)
在某个时点,预测完成整个项目需要的成本,当然就是实际已经花掉的成本加上前面那个完工尚需估算 ETC,EAC=AC+ETC;如果剩余工作还是以当前成本绩效指数来完成,那么也可以这么计算 EAC=BAC/CPI,这个公式也好理解,其实就是整个项目工作量除以成本绩效指数;完工估算 EAC 实际上就是预测项目完工时候的实际成本 AC。-
完工尚需绩效指数(To-Complete Performance Index, TCPI)
在某个时点,预测如果要在计划的预算内完成项目,则未来的工作必须要达到的绩效水平。计算公式 TCPI=(BAC-EV)/(BAC-AC),也就是剩余的工作量除以剩余的钱的数量;
完工偏差(Variance At Completion, VAC)
在某个时点,预测项目在完工的时候将会出现的总的项目的成本偏差。计算公式 VAC=BAC-EAC,也就是项目开始时原计划的预算减去现在预测的总个项目将会花的成本。完工偏差 VAC 实际上就是预测项目完工时的成本偏差 CV。
上面光说概念有点抽象可能有点难懂,所以我们回到例子里面的情景下来理解一下上面的几个预测指标。在第 4 天结束的时候,我们在前面考察计算了 SV=-1000, CV=-2000, SPI=0.75, CPI=0.6, 结论是进度落后 1000 元的工作量,成本超支 2000 元,怎么办得想办法啊,不然整个项目估计不能按时按预算完成。这时候有必要先预测一下项目完工的一些指标以便我们更好地采取措施。
上面说到过,要预测项目完工时候的绩效情况,需要根据后面剩余部分的项目工作的 CPI 的不同情况分情况分析,我们在剩余部分项目的 CPI 能做到什么程度,很明显不同程度的 CPI 将会导致不同的预测指标。回到砌墙的这个例子,项目经理发现了前面之所以 CPI 低至 0.6 花钱效率低是因为前面 4 天天气不好,导致砌墙的时候有一些额外的支出。这个时候估算这几个预测指标就要分下面这几种情况了
第一种情况:后续部分工作 CPI 和前面 4 天工作的 CPI 保持一
项目经理在看了天气预报后,发现后面的天气也跟前面几天一样的也不好。这种情况下预计后面的工作还是按照前面的花钱的效率来办事(前面 4 天是花 5000 元干了 3000 元的事,花钱效率也就是 CPI 是 0.6),后面工作的 CPI 和前面 4 天工作的 CPI 保持一致将会保持 0.6。
这种情况下我们来先算完工尚需估算 ETC,现在的情况,本来计划完成 40 米 4000 元的工作量(PV),结果只砌了 30 米只完成了 3000 元的工作量(EV),实际还花了 5000 元(AC),那么我们剩余的工作估计还要花多少钱呢?这个就是 ETC。整个项目要砌墙 100 米,现在只完成了 30 米,那么剩下当然就是还需要砌 70 米了,转化成钱的数量 70*100=7000 元这就是剩余的工作量,也就是还剩 7000 块钱的工作。前面提到过剩余的工作量 CPI 保持不变还是 0.6,花 1 元钱只能干 0.6 元的事,现在有 7000 元的事还需要干,那么干这 7000 元的事需要花的钱就是 7000/0.6=11667 元,也就是如果这个工作方式不变的话,估计未来这个项目还需要花 11667 元。
完工尚需估算 ETC 算出来了,完工估算 EAC 就好算了,因为完工估算就是目前实际已经花了的钱加上完工尚需估算 EAC=AC+ETC。如果是按照这种情况算出来的剩余工作估计还要花 11667 元 (ETC),实际前面 4 天已经花了 5000 元,那么整个项目的完工成本估算就是 5000+11667 元=16667 元,也就是整个项目做完估计要花 16667 元。这种情况其实也可以用另外一种计算方式,因为我们的 CPI 一直保持稳定不管前面 4 天还是后面工作一直都是 0.6,所以也可以用总的项目预算(总的工作量)除以 CPI 得出,也就是 10000/0.6=16667 元(这儿就是已知工作量和 CPI 求需要花的钱),算出来的结果是一样的。当然要注意如果要用这个方式计算 EAC 一定要确认前后的 CPI 是一致的才可以这么算。
完工尚需估算 ETC 和完工估算 EAC 都算出来了,再来算完工尚需绩效指数 TCPI。项目经理评估完目前的项目绩效后,如果要想要整个项目在规定的预算内完工,那么后面工作的成本绩效必须得是多少才行,这个就是 TCPI。第四天结束后总共 10000 元的工作量,完成了 3000 元剩余 7000 元的工作量,实际花了 5000 元(预算就还剩 10000-5000=5000 元),也就是未来如果预算不增加我们需要以剩下 5000 元的预算来完成剩下 7000 元的工作,那么需要的成本绩效指数就是 7000/5000=1.4(工作量除以钱数等于 CPI),也就是我们每花一元钱,必须要完成 1.4 元钱的工作,才有可能在预算内完成这个项目。通过公式计算就是 TCPI=(BAC-EV)/(BAC-AC)=(10000-3000)/(10000-5000)=1.4。
最后算完工偏差 VAC,这个就好算了,就是预测完工的时候的成本偏差 CV。因为后续的工作还是按以前的 CPI(0.6)来执行,我们前面已经算出来 ETC=11667 元,EAC=16667 元,这个情况下完工偏差 VAC=BAC-EAC=10000-16667=-6667 元,也就是预测项目最终完工的时候将超支 6667 元(同理负值表示成本超支,正值表示成本节约,这种时候用图更直观地表示 ETC、EAC、VAC 等预测指标就是如下图所示
从图中可以看到,AC 线是在 4 天内实线的基础上延伸的虚线(实线表示实际值,虚线表示预测值),直接延伸表示花钱的速度不变(因为斜率没变)跟以前保持一致。这种情况下可以看到当 EV 达到 BAC 的时候(表示做了 10000 元的事项目做完了),AC 的值是 16667 元,这个就是预测的最终项目完工的时候将会一共花这么多钱,也就是 EAC,其与 BAC 的差额就是完工偏差 VAC。
如果以后的工作我们不是以以前的 CPI(0.6)而是以完工尚需绩效指数 TCPI 作为后续工作的 CPI 呢?比如我们从第五天开始 CPI 变为了 1.4(上面算 TCPI 算出来的),这个时候完工偏差会是多少呢?其实如果通透理解了概念的同学应该就会很快知道这个时候算出来的的完工偏差将会是 0,因为 TCPI 的定义就是在预算内完工的后续工作的成本绩效指数,所以在这个指数下完成剩余的工作,我们的预算肯定是刚刚好的,完工偏差就会 0。不嫌麻烦我们也可以简单计算一下,前面 4 天花了 5000 元完成了 3000 元的工作量,剩下 7000 元的工作以 1.4 的 CPI 去做,那么剩下的工作将只需花 ETC=7000/1.4=5000 元,加上前面已经花了的 5000 元,刚好就等于我们的项目预算 10000 元,这个时候完工偏差就刚好是 0。从这个角度我们也可以说完工尚需绩效指数 TCPI 就是要使完工偏差 VAC 为 0,完成后续剩余工作所需的的成本绩效指数 CPI。也就是第 4 天后检查项目发现进度落后预算超支,客户说进度我先不管,最后完工时预算一分也不能超,这个时候后面部分工作的 CPI 肯定就要更高才能达到这个预算内完工这个目标了,这个更高的 CPI 就是我们的完工尚需绩效指数 TCPI
这种情况下用图更直观地表示 ETC、EAC 等就是如下图所示(此时 VAC 为 0 无法表示出来)
从图中可以看到后期预测的 AC 线突然一下变缓了,花钱速度下降了从而 CPI 提高了(CPI 是 EV 的斜率比上 AC 的斜率,AC 斜率变小,EV 斜率不变的情况下 CPI 变大)。这种情况概括一下就是前面 4 天用 5000 元做了 3000 元的事,评估之后采取措施发奋图强,后面的时间用 5000 元做了 7000 元的事,从而实现了预算内(10000 元)完工的目标
第二种情况:后续部分工作 CPI 和前面 4 天工作的 CPI 不一致,与计划 CPI 一
第二种情况就是:项目经理看后面几天的天气预报天气,发现前面 4 天天气不好只是偶然现象不具有代表性,后面的天气都是好的。这个时候预测以后花钱效率 CPI 会正常变为 1,也就是不在额外花钱那么就每花 1 元钱就能做 1 元钱的事。如果真的做到了这个花钱效率,因为剩余 7000 元的工作量(前面已经算出来),那么剩余的工作需要花的钱就是 7000/1=7000 元,也就是完工尚需估算 ETC 就是 7000 元;
同理继续算完工估算 EAC,就是 ETC 加上 AC,也就是 7000 元加上 5000 元就等于 12000 元;
再同样的计算方法计算这种情况下的完工偏差 VAC 就是 BAC-EAC=10000-12000=-2000 元,表示预测项目最终完工的时候成本将超支 2000 元。
这种情况下的这几个指标用图直观地表示出来就是这个样子
图中可以看到,红线 AC 第 4 天后改变了方向,变得更缓代表花钱更慢从而花钱效率更高,与橘黄色的 EV 线平行表示花钱速度和做事速度保持一致(花多少钱就办多少钱的事),这个时段的 CPI 就是 1(因为 CPI 等于 EV 线与 AC 线斜率之比,平行表示斜率相等)。但是要注意,如果计算截止某时点整个项目的 CPI 不会是 1,因为前面 4 天花 5000 元只做了 3000 元的事,多花了 2000 元,就算后面的工作每花 1000 元就做 1000 元的事不再多花钱,总的加起来计算的话还是花的钱比做的事要多这 2000 元,这样 CPI 就还是会小于 1
第三种情况:后续部分工作 CPI 和前面 4 天工作的 CPI 不一致,甚至更糟
第三种情况就是:项目经理在看了天气预报后,发现后面的天气也跟前面几天一样的也不好,不但如此这个项目还对进度要求非常高,规定必须按照原定的完工日期完工不得进度超期(我们看前面的图进度都是超期的)。这个时候进度的落后就会进一步影响我们的成本,因为我们以后需要赶工来赶进度,而赶工是需要额外的成本的。这样我们计算剩余工作需要花的成本也就是完工尚需估算 ETC 的时候就要综合考虑 CPI 和 SPI,计算方法就是 7000/(0.6*0.75)=15556 元,也就是如果不但差天气持续,同时还要确保项目进度的话,我们预计完成剩余的工作还需要花 15556 元的成本,跟第一种情况相比多出来的钱就是为了赶进度额外花的钱。
同理这种情况下再计算完工估算 EAC 就是 ETC+AC=15556+5000=20556 元,也就是项目完工的时候估计整个项目一共要花 20556 元;
同理这种情况下计算完工偏差 VAC 就是 BAC-EAC=10000-20556=-10556 元,表示估计项目完工时将会超支 10556 元,这样就超支很多了,因为是预算的 2 倍还有多了。
这种情况下的这几个指标用图直观地表示出来就是这个样子:
从图中我们可以看出,第 4 天过后,橘黄线 EV 跟以前相比变陡峭,表示做事速度加快,因为我们在用额外的成本赶工,终于在计划的第 10 天与绿线计划价值 PV 汇合,表示此时按计划截止时间准时完成了项目;再看红线 AC(花的钱),第 4 天后变得陡峭,表示花钱速度相比以前加快,因为要花额外的钱来赶工追赶进度,在第 10 天项目完工的时候共花了多达 20556 元,这个就是完工估算 EAC,与 BAC 的差值就是 VAC
小结一下
从上面三种情况下 ETC、EAC 和 VAC 的计算基本举例。通过砌墙(每个测试团队都有自己的质量墙,关键得看大家怎么砌)这个例子为了解关于挣值管理的 12 个基本概念(PV,EV,CV,BAC, SV, SPI, CV, CPI, ETC, EAC, TCPI,VAC)的一些基本情况,也希望将自己的一些管理手段和大家交流,也方便理解这些概念和公式有所助益,无论如何管理,如何带项目或者团队,最关键是要能为公司赚钱,要是你所在项目或者团队一直在让公司亏本,那么,你的项目组或者团队离兵解不远了,所以在作为测试团队的领头人,那么做好团队中的测试项目挣值管理是必须的,要不时间长了,手底下的弟兄,天天加班,最后还要被说,你干了个赔本的项目,时间久了,人心也就聚不齐,因为干了,也是挨骂。。。。。