软件(敏捷)开发中工作量与工时评估模型
https://www.cnblogs.com/hunternet/p/9672680.html
前言#
软件开发中如何合理的预估项目的开发时间始终是一个难题。因为项目中不确定性的因素太多。这里我们根据日常项目中开发的规律总结出一种工作量预估的模型。该模型参考物理学中时间的计算方式:
得到我们的软件开发时间计算公式:
一、工作量的确定#
工作量主要与三方面的因素有关系。任务的规模、任务的复杂度以及完成该任务的人员能力水平。这里我们先假设一个标准的人员水平(即:理想状态下人员水平都是一定的标准工程师)。那么此时工作量主要与任务的规模与任务的复杂度有关系。
1.1 任务规模(S)#
关于任务的规模拆分出如下等级。(我们可以总结自己项目的规律来调整这个等级):
级别 | 描述 |
---|---|
5 | 任务规模极其之大,甚至不能估计,可以拆分成很多小任务,甚至子工程。 |
4 | 任务规模较大,需要一周左右的时间来完成,可以拆分成很多小任务 |
3 | 中等规模的任务,需要三到五天左右的工作量 |
2 | 任务小,需要两到三天左右的工作量 |
1 | 任务较小,需要一天左右的工作量 |
0.5 | 任务非常小,需要很少的工作量,需要几个小时的工作 |
注意:这里的工作量只是完成任务本身所需的工作量,但软件开发往往不只是完成任务本身,更多时候任务还会涉及到其它相关的任务、系统。也有些任务可能涉及到团队技术的盲点,需要一定的时间研究分析等。因此,我们还需要结合任务的复杂度来进行工作量的评估。
1.2 任务复杂度(C)#
关于任务复杂度,同样可以拆分出以下几个等级。
级别 | 描述 |
---|---|
5 | 极其复杂,更多依赖于其它任务、系统或子系统,含有团队中缺乏的技术,或者一些重要的经验,任务描述很不清晰,有许多未知因素,对外部任务、系统或子系统有很大的影响等 |
4 | 非常复杂,依赖于其它任务、系统或子系统,其中所涉及到的一些技术点、经验在团队中不是强项,任务描述不清晰,有些未知因素,需要极高的一些技术能力才能完成,对外部任务、系统或子系统有一定的影响等 |
3 | 中等程度复杂,有些依赖于其它任务、系统或子系统,完成任务很少或不需要研究,任务描述很清晰,未知因素基本没有,只需要一般的技术能力就可以完成,对外部任务、系统或子系统很少的影响等 |
2 | 简单,很少依赖于其它任务、系统或子系统,其中所涉及到的一些技术点、经验在团队中曾经有过,任务描述基本清晰,未知因素较少,只需要一般的技术能力就可以完成,对外部任务、系统或子系统基本没有影响 |
1 | 较简单,基本没有未知因素,所涉及的技术、经验都是团队非常熟练的。只需要基本的编程能力就可以完成,任务影响力仅涉及自身。 |
1.3 工作量(E)#
这里,我们定义工作量的最小工作单位为sp,单位时间一天的工作量。1sp即:我们的标准工程师一天的工作量为1sp(即:我们的标准工程师理想中的开发速度为1sp);
二、开发速度的评估#
2.1 理想开发速度#
我们的一个标准工程师理想中的开发速度就是一天可以完成1sp的工作量。前提是标准程序员,但显然我们团队中的程序员不可能都是标准工程师。因此理想中我们的团队开发速度为:
2.2 开发速度的影响因子#
项目开发速度是一个很复杂的概念,很难准确的对其进行定义。考虑到不同团队成员的能力不同,则开发速度也不相同,即使是同一团队,其开发速度也不是一成不变的,会受到各种因素的影响。理想开发速度仅仅是没有受到任何阻力影响时的速度。但在项目过程中,总会遇到一些影响。其影响因素主要包括两方面。确定性因素以及突发性因素,在项目开始前,项目经理对以下两种因素预估的越准确,那么对开发时间的评估也越准确。
确定性因素一般是项目客观存在的,容易在开始前预测的。关于确定性因素大致参考如下:
影响因子 | 影响因子分数(以下为示例分数,具体分数可根据情况自定义i>0,若稳定则为1) |
---|---|
团队组成 | 0.95 |
开发过程 | 1 |
需求清晰完整度 | 0.96 |
技术因素 | 0.97 |
团队配合 | 1.05 |
其它因素 | 0.98 |
团队组成:考虑到团队成员不可能为标准工程师。因此团队人员的能力是影响团队开发速度的一个很大因素。我们可以在团队中找一个接近于标准工程师的人,得到他的能力系数(SF)为1sp(一天可以完成1sp的工作量),则以他为基准可以得到团队所有人的能力系数。则团队组成的影响因子分数(TF)计算公式为:
开发过程:考虑到改进开发过程(采用敏捷,优化测试方法等)会对开发速度有影响,因此开发过程是影响因素之一。其值可大于1也可以小于1,若稳定不变则为1
需求清晰完成度:需求是否足够清晰、完整也会对开发速度有影响。
技术因素:若完成该项目涉及到团队中未知、不具备的技术知识也是风险之一。当然也可能为正面因素。
团队配合:一个配合好的团队和配合差的团队其开发速度也是明显不同的。
说明:以上因素具体项目团队可自行调整。
确定性因素(FF)的综合影响(FR)计算公式为:
突发性因素往往是项目开始前哪一预测的。关于突发性因素大致参考如下
突发性因素\影响因子分数 | 高(+) | 中(+) | 低(+) | 稳定 | 低(-) | 中(-) | 高(-) |
---|---|---|---|---|---|---|---|
团队变化 | 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)计算公式为:
2.3 实际开发速度#
实际开发速度需要在理想开发速度的基础上增加各种影响因子。其公式如下:
如上图,由下往上分别为3-8人的开发团队开发速度与综合影响因子分数的函数图像(影响因子在0.8-1.2之间)。
2.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天
结束语#
以上仅个人针对我们公司项目所制定的一种工作量评估模型。其具体实用程度,使用中存在的问题等,还有待时间与大量数据的支撑。也希望道友们能提供一些宝贵的意见。你们的团队是如何进行工时与工作量的评估的。
软件(敏捷)开发中工作量与工时评估模型相关推荐
- 软件项目开发中的百分之九十效应
在软件项目管理中,经常遇到这样的情况:进度到百分之九十后开始停滞,要花很长很长时间很大很大代价(甚至超过前百分之九十所花费的工时.工期)才能完成最后的百分之十.我把这种情况叫作:软件项目的百分之九十效 ...
- 敏捷开发中,团队成员认领的是任务还是用户故事?
一次敏捷workshop上,有同学问:"敏捷软件开发中,团队成员自己主动认领的,是用户故事还是被分解成的任务?"同学们一时讨论热烈. 稍具敏捷开发实践经验的同学都应该知道,答案是- ...
- 敏捷开发中如何写好用户故事?
什么是用户故事? 用户故事(user story)是一个用来确认用户和用户需求的简短描述,作为什么用户,希望如何,这样做的目的或者价值何在.用户故事在软件研发中又被描述为需求.用户故事通常的格式为:作 ...
- 如何编写敏捷开发中的user story
对于敏捷开发来说,User Story是开发的基础,它不同于传统的瀑布式开发方式,而是把原本需求拆成最小粒度的Story,以方便拆分Task,估计开发时间,领取开发任务. 优点和好处 Being ve ...
- [转]敏捷开发中编写高质量Java代码
本文转自:http://dev.yesky.com/103/11164603.shtml 敏捷开发的理念已经流行了很长的时间,在敏捷开发中的开发迭代阶段中,我们可以通过五个步骤,来有效的提高整个项目的 ...
- [转]敏捷开发之Scrum扫盲,及敏捷开发中XP与SCRUM的区别
敏捷开发之Scrum扫盲篇 现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP- 为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自 ...
- 敏捷开发中史诗故事与用户故事的颗粒度
作者:陈勇 出处:blog.csdn.net/cheny_com 用户故事的颗粒度一直是一个谈论已久的话题,但参加了很多研讨会,搜索了很多网络资源后发现一直没有定论,只好在这里原创一下. 前言:为何需 ...
- 产品经理必读:敏捷开发中的需求管理过程全解
产品的源头是需求.一切伟大产品的实现都是从需求管理开始的.敏捷开发中的需求管理大致分为三个阶段:需求调研,需求分析和需求确认. 需求调研阶段 产品立项后,产品经理便开始了和需求打交道的漫长过程.第一步 ...
- 敏捷开发中的可用性测试
陈 序明, 资深研发工程师及售前工程师, IBM 王 建芳, 资深软件测试工程师, IBM 李 雨恭, 软件工程师, IBM 简介: 近年来有两个词语在软件行业迅速"走红",一个是 ...
- 敏捷开发中QA如何做质量管理?
敏捷开发中QA如何做质量管理? 经常有人会问我,敏捷模式下,QA的职责是什么?QA有什么价值?我们还需要QA吗?敏捷转型中遇到的问题,QA能帮助解决吗?这些问题以前也思考过,笔者就是QA出身的, ...
最新文章
- bootstrap与Select2使用小结
- 计算机辅助技术课设,《计算机辅助设计技术》课程标准-20210311103339.doc-原创力文档...
- JQuery学习笔记——JQuery基础
- CRecordset类
- (需求实战_进阶_06)SSM集成RabbitMQ 订阅模式 关键代码讲解、开发、测试
- linux源码scripts目录是什么,linux-kernel – linux / scripts / recordmcount:没有这样的文件或目录...
- python读取xml文件内容显示不全_python读取xml文件时的问题
- 集合python_Python 集合
- redis缓存命中率计算
- i3 2310M i7 9700T i7 9700K MacBookPro 16寸 CPU 跑分对比
- 指定条件查找计算机,利用excel数组函数完成“根据给定条件查找匹配数据”-excel技巧-电脑技巧收藏家...
- 「堡垒之夜」母公司Epic元宇宙蓝图:颠覆Facebook的社交媒体,拆除苹果的高墙花园...
- IP数据包格式各字段详解说明
- 使用Guacamole实现远程桌面控制
- 《码农翻身:用故事给技术加点料》的思维导图
- 在网页上实现大华视频监控摄像头在线
- matlab论文致谢,2020大学毕业论文致谢信
- 比亚迪芯片BF7615BMxx芯片怎么烧录
- python中print()换行的问题
- Spritekit中如何判断触摸点击的精灵