在项目开发中,人越多越好吗?当项目进度延迟时,是否应该增加人力投入?效果如何?会不会越帮越忙?这些问题是人力计划要解决的。
制定信息系统项目的人力计划,主要基于工作量和进度预估。一般来讲,工作量与项目总时间的比值就是理论上所需的人力数。但选取和分配人力有许多值得研究的问题。许多学者从软件工程的角度提出了一些思路,比如“人员——进度权衡定律”,信息系统项目可以此为参照,从项目管理的角度分析人力资源的平衡情况。
可借鉴的经验
1.人员——进度权衡定律
著名学者Putnam在估算软件开发工作量时得出公式:E=L3(C3Rt4d),其中E表示工作量,L表示源代码行数,Ck表示技术状态常数,td表示开发时间。在这里,工作量的单位是人年,进度的单位是年。从公式中可知,软件开发项目的工作量(E)与交付时间(td)的4次方成反比,显然,软件开发过程中人员与时间的折衷是十分重要的问题。Putnam将这一结论称为“软件开发的权衡定律”。
我们知道,信息系统项目的建设时间主要取决于应用软件的开发时间,我们将这种人员与进度之间的非线性替代关系称为“人员——进度权衡定律”。
2.Brooks定律
曾担任IBM公司操作系统项目经理的F.Brooks,从大量的软件开发实践中得出了另一条结论:“向一个已经拖延的项目追加开发人员,可能使它完成得更晚”。鉴于这一发现的重要性,许多文献称之为Brooks定律。这里,Brooks从另一个角度说明了“时间与人员不能线性互换”这一原则。
对上述两个定律的合理解释是,当开发人员以算术级数增长时,人员之间的通信将以几何级数增长,从而可能导致“得不偿失”的结果。一般说来,由N个开发人员组成的小组要完成既定的工作,相互之间的通信路径总数为C2N=N(N-1)/2,而通信是需要时间的。所以,当新的开发人员加入项目组之后,原有的开发人员必须向新来的成员详细讲解某个活动或工作包的来龙去脉。由于信息系统开发具有较强的个人风格,所以交流沟通的时间更容易拉长,而后来者还不一定能达到原来开发人员的工作质量。
3.用做人力计划的Rayleigh-Norden曲线
图1是IS项目不同开发阶段的人力分配经验模型。图中以横坐标表示距开发起点的时间,纵坐标代表在不同时间点需要的人力。虚线画出的矩形显示了平均使用人力所造成的问题:开始阶段人力过剩,造成浪费(①),到开发后期需要人力时,又显得人手不足(②),以后再来补偿,已为时过晚(③),甚至可能如Brooks定律所说,导致越帮越忙的结果。
图1 用做人力计划的Rayleigh-Norden曲线
如何平衡人力计划?
信息系统项目的人力分配大致符合Rayleigh-Norden曲线分布,呈现出前后用人少、中间用人多的状况。然而,信息系统开发人员并不是想找就能找到的。因此,在制定人力资源计划时,就要在基本按照上述曲线配备人力的同时,尽量使某个阶段的人力稳定,并确保整个项目期人员的波动不要太大。我们称这一过程为“人力资源计划的平衡” 。
下面举例说明人力资源计划平衡的方法。假设有一个学籍信息管理系统已经立项,由于系统较小,准备采用原型法开发,并拟定了一个带有各子活动工期和人力需求的网络图(图2)。我们假设参加这个项目的所有成员都是多面手,也就是说,项目成员之间是可以相互替代的。
图2 人力资源需求网络图
如果不采用项目管理方法,一般人们都希望各项活动尽早开始、尽早结束。现在我们就假设网络图中每一活动在其最早开始时间执行,基于此,我们可以绘制相应的人力资源分配图(图3)。
图3 基于活动最早开始时间的人力资源计划图
从图3(a)中可以看出,开发学籍信息系统项目总共需要13周,总工作量为33人周;从图3(b)中可以看出,前三周需要4个开发人员,第4、5周需要3个开发人员,第6至12周只需要2个开发人员,第13周需要一个开发人员。显然,该项目的人力需求波动较大。为了使人力资源尽可能地平衡,我们考察该项目的网络图,从图2中可以看出,该项目的关键路径是原型法软件开发、系统测试与转换以及文档写作三项活动,其他活动都处于非关键路径上。因此我们可以将设备采购活动推迟在第6周开始,这样就得到调整后的人力资源分配图(图4)。
图4 基于资源平衡的人力计划图
从图4(a)中可以看出,学籍信息系统项目总共还是需要13周的时间,总工作量仍为33人周,也就是说,虽然调整了人力资源分配,但并未影响进度;从图4(b)中可以看出,前八周需要3个开发人员,第9至12周只需要2个开发人员,第13周需要一个开发人员。显然,相对图3(b)来讲,调整后该项目的人力需求波动较小。
需要解释的是,由于采用原型法开发该项目,系统调研、原型制作和原型改造都在项目前期进行,需要的人力较多,所以是直接从Rayleigh-Norden曲线分布的中部开始。从这个意义上看,本项目的人力使用也基本遵循上述曲线的分布。
文章来源于领测软件测试网 https://www.ltesting.net/