软件(敏捷)开发中工做量与工时评估模型

文章导航-readme

软件开发中工做量与工时评估模型

前言

    软件开发中如何合理的预估项目的开发时间始终是一个难题。由于项目中不肯定性的因素太多。这里咱们根据平常项目中开发的规律总结出一种工做量预估的模型。该模型参考物理学中时间的计算方式:
\[ 时间(T)=\frac {距离(S)}{速度(V)} \]
获得咱们的软件开发时间计算公式:
\[ 开发时间(T)=\frac {工做量(S)}{开发速度(V)} \]html

1、工做量的肯定

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

1.1 任务规模(S)

关于任务的规模拆分出以下等级。(咱们能够总结本身项目的规律来调整这个等级):编程

级别 描述
5 任务规模极其之大,甚至不能估计,能够拆分红不少小任务,甚至子工程。
4 任务规模较大,须要一周左右的时间来完成,能够拆分红不少小任务
3 中等规模的任务,须要三到五天左右的工做量
2 任务小,须要两到三天左右的工做量
1 任务较小,须要一天左右的工做量
0.5 任务很是小,须要不多的工做量,须要几个小时的工做

注意:这里的工做量只是完成任务自己所需的工做量,但软件开发每每不仅是完成任务自己,更多时候任务还会涉及到其它相关的任务、系统。也有些任务可能涉及到团队技术的盲点,须要必定的时间研究分析等。所以,咱们还须要结合任务的复杂度来进行工做量的评估。函数

1.2 任务复杂度(C)

关于任务复杂度,一样能够拆分出如下几个等级。测试

级别 描述
5 极其复杂,更多依赖于其它任务、系统或子系统,含有团队中缺少的技术,或者一些重要的经验,任务描述很不清晰,有许多未知因素,对外部任务、系统或子系统有很大的影响等
4 很是复杂,依赖于其它任务、系统或子系统,其中所涉及到的一些技术点、经验在团队中不是强项,任务描述不清晰,有些未知因素,须要极高的一些技术能力才能完成,对外部任务、系统或子系统有必定的影响等
3 中等程度复杂,有些依赖于其它任务、系统或子系统,完成任务不多或不须要研究,任务描述很清晰,未知因素基本没有,只须要通常的技术能力就能够完成,对外部任务、系统或子系统不多的影响等
2 简单,不多依赖于其它任务、系统或子系统,其中所涉及到的一些技术点、经验在团队中曾经有过,任务描述基本清晰,未知因素较少,只须要通常的技术能力就能够完成,对外部任务、系统或子系统基本没有影响
1 较简单,基本没有未知因素,所涉及的技术、经验都是团队很是熟练的。只须要基本的编程能力就能够完成,任务影响力仅涉及自身。

1.3 工做量(E)

\[ 单个任务工做量(o)=SC \]优化

\[ 项目的总工做量(E)=\sum_{i=1}^n{(SC)}_i \]
这里,咱们定义工做量的最小工做单位为sp,单位时间一天的工做量。1sp即:咱们的标准工程师一天的工做量为1sp(即:咱们的标准工程师理想中的开发速度为1sp);spa

2、开发速度的评估

2.1 理想开发速度

    咱们的一个标准工程师理想中的开发速度就是一天能够完成1sp的工做量。前提是标准程序员,但显然咱们团队中的程序员不可能都是标准工程师。所以理想中咱们的团队开发速度为:
\[ 团队理想开发速度(V_t)=标准工程师开发速度(V_s)*团队人员个数(R) \]htm

2.2 开发速度的影响因子

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

肯定性因素通常是项目客观存在的,容易在开始前预测的。关于肯定性因素大体参考以下:开发

影响因子 影响因子分数(如下为示例分数,具体分数可根据状况自定义i>0,若稳定则为1)
团队组成 0.95
开发过程 1
需求清晰完整度 0.96
技术因素 0.97
团队配合 1.05
其它因素 0.98

团队组成:考虑到团队成员不可能为标准工程师。所以团队人员的能力是影响团队开发速度的一个很大因素。咱们能够在团队中找一个接近于标准工程师的人,获得他的能力系数(SF)为1sp(一天能够完成1sp的工做量),则以他为基准能够获得团队全部人的能力系数。则团队组成的影响因子分数(TF)计算公式为:
\[ TF=\frac{\sum_{i=1}^N{(SF)}_i} {N} \]
开发过程:考虑到改进开发过程(采用敏捷,优化测试方法等)会对开发速度有影响,所以开发过程是影响因素之一。其值可大于1也能够小于1,若稳定不变则为1

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

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

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

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

肯定性因素(FF)的综合影响(FR)计算公式为:
\[ FR=\prod_{i=0}^n(FF)_i \]
突发性因素每每是项目开始前哪一预测的。关于突发性因素大体参考以下

突发性因素\影响因子分数 高(+) 中(+) 低(+) 稳定 低(-) 中(-) 高(-)
团队变化 1.1 1.05 1.02 1 0.98 0.95 0.91
需求变化 - - - 1 0.99 0.98 0.97
团队成员兼职 - - - 1 0.98 0.96 0.94
业务方失误 - - - 1 0.97 0.95 0.92
开发环境变化 1.1 1.05 1.02 1 0.98 0.95 0.92
临时增长减小任务 1.1 1.05 1.02 1 0.97 0.95 0.91
其它 1.1 1.05 1.02 1 0.99 0.97 0.96

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

需求变化:开发过程当中需求的变动

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

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

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

临时增长减小任务:项目过程当中临时性的新增或减小需求。

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

突发性因素(VF)的综合影响(DF)计算公式为:
\[ DF=\prod_{i=0}^n(VF)_i \]

2.3 实际开发速度

    实际开发速度须要在理想开发速度的基础上增长各类影响因子。其公式以下:
\[ V=V_t^{FR\times DF} \]

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

2.3 开发时间评估

    开发时间计算公式以下:
\[ T=\frac {E}{V}=\frac {\sum_{i=1}^n{(SC)}_i}{V_t^{FR\times DF}}(Days) \]

3、模型举例

输入:

  • 任务数:50
  • 团队人数:7
  • 固定性因素影响值:
    • 团队组成 0.97
    • 开发过程 1
    • 需求清晰完整度 0.95
    • 技术因素 0.96
    • 团队配合 1.02
    • 其它因素 0.96
  • 突发性因素影响值:
    • 团队变化 0.95
    • 需求变化 0.98
    • 团队成员兼职 0.99
    • 业务方失误 1
    • 开发环境变化 1
    • 临时增长减小任务 1
    • 其它 0.99

输出:

  • 总工做量: 150

  • 理想开发速度: 7

  • 理想开发时间: 21.4天

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

  • 突发性因素影响值: 0.91

  • 实际开发速度: 4.65

  • 实际开发时间: 32.2天

结束语

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

相关文章
相关标签/搜索