综合资讯

软件(瀚辰)开发中工作量与工时评估模型

前言


软件开发中如何合理的预估项目的开发时间始终是一个难题。因为项目中不确定性的因素太多。这里我们根据日常项目中开发的规律总结出一种工作量预估的模型。该模型参考物理学中时间的计算方式:


6372074467268489007571765.png

得到我们的软件开发时间计算公式:


6372074478222580361390343.png

一、工作量的确定

工作量主要与三方面的因素有关系。任务的规模、任务的复杂度以及完成该任务的人员能力水平。这里我们先假设一个标准的人员水平(即:理想状态下人员水平都是一定的标准工程师)。那么此时工作量主要与任务的规模与任务的复杂度有关系。
1.1 任务规模

关于任务的规模拆分出如下等级。(我们可以总结自己项目的规律来调整这个等级):

6372074535736953911529754.png

注意:这里的工作量只是完成任务本身所需的工作量,但软件开发往往不只是完成任务本身,更多时候任务还会涉及到其它相关的任务、系统。也有些任务可能涉及到团队技术的盲点,需要一定的时间研究分析等。因此,我们还需要结合任务的复杂度来进行工作量的评估。

 1.2 任务复杂度(C)

关于任务复杂度,同样可以拆分出以下几个等级。

 

6372074525910967712984910.png

 


 1.3 工作量(E)


6372074553824083553316569.png

这里,我们定义工作量的最小工作单位为sp,单位时间一天的工作量。1sp即:我们的标准工程师一天的工作量为1sp(即:我们的标准工程师理想中的开发速度为1sp);


二、开发速度的评估
2.1 理想开发速度

我们的一个标准工程师理想中的开发速度就是一天可以完成1sp的工作量。前提是标准程序员,但显然我们团队中的程序员不可能都是标准工程师。因此理想中我们的团队开发速度为:


6372074977253639622212031.png

22.2 开发速度的影响因子

项目开发速度是一个很复杂的概念,很难准确的对其进行定义。考虑到不同团队成员的能力不同,则开发速度也不相同,即使是同一团队,其开发速度也不是一成不变的,会受到各种因素的影响。理想开发速度仅仅是没有受到任何阻力影响时的速度。但在项目过程中,总会遇到一些影响。其影响因素主要包括两方面。确定性因素以及突发性因素,在项目开始前,项目经理对以下两种因素预估的越准确,那么对开发时间的评估也越准确。

确定性因素一般是项目客观存在的,容易在开始前预测的。关于确定性因素大致参考如下:


6372074783823964321654045.png


团队组成:考虑到团队成员不可能为标准工程师。因此团队人员的能力是影响团队开发速度的一个很大因素。我们可以在团队中找一个接近于标准工程师的人,得到他的能力系数(SF)为1sp(一天可以完成1sp的工作量),则以他为基准可以得到团队所有人的能力系数。则团队组成的影响因子分数(TF)计算公式为:

6372074805630144755644838.png

开发过程:考虑到改进开发过程(采用敏捷,优化测试方法等)会对开发速度有影响,因此开发过程是影响因素之一。其值可大于1也可以小于1,若稳定不变则为1

需求清晰完成度:需求是否足够清晰、完整也会对开发速度有影响。

技术因素:若完成该项目涉及到团队中未知、不具备的技术知识也是风险之一。当然也可能为正面因素。

团队配合:一个配合好的团队和配合差的团队其开发速度也是明显不同的。

确定性因素(FF)的综合影响(FR)计算公式为:

6372074836638061559089238.png

突发性因素往往是项目开始前哪一预测的。关于突发性因素大致参考如下

QQ图片20200325143542.png

团队变化:团队人员离职,新增成员等

需求变化:开发过程中需求的变更

团队成员兼职:团队成员身兼数职,在其他团队也有工作。

业务方失误:业务方提出错误的要求等

开发环境变化:项目开发过程中开发环境发生变化

临时增加减少任务:项目过程中临时性的新增或减少需求。

说明:以上因素具体项目团队可自行调整。

突发性因素(VF)的综合影响(DF)计算公式为:

6372074884049152051648882.png

2.3 实际开发速度

实际开发速度需要在理想开发速度的基础上增加各种影响因子。其公式如下:

6372074906895630096096749.png

6372074962783779319807807.png

如上图,由下往上分别为3-8人的开发团队开发速度与综合影响因子分数的函数图像(影响因子在0.8-1.2之间)。

2.3 开发时间评估

开发时间计算公式如下:

6372074920577161492566738.png

三、模型举例

输入:

  • 任务数:50

  • 团队人数:7

  • 固定性因素影响值:

           1. 团队组成 0.97

           2. 开发过程 1

           3.需求清晰完整度 0.95

           4.技术因素 0.96

           5.团队配合 1.02

           6.其它因素 0.96

  • 突发性因素影响值:

           1. 团队变化 0.95

           2. 需求变化 0.98

           3. 团队成员兼职 0.99

           4. 业务方失误 1

           5. 开发环境变化  1

           6. 临时增加减少任务 1

           7. 其他 0.99

输出:

  • 总工作量: 150

  • 理想开发速度: 7

  • 理想开发时间: 21.4天

  • 固定性因素影响综合值: 0.87

  • 突发性因素影响值: 0.91

  • 实际开发速度: 4.65

  • 实际开发时间: 32.2天7

结束语


以上仅个人针对我们公司项目所制定的一种工作量评估模型。其具体实用程度,使用中存在的问题等,还有待时间与大量数据的支撑。也希望道友们能提供一些宝贵的意见。你们的团队是如何进行工时与工作量的评估的。