估算工时的方法很多,这里仅讨论通过用例点估算工时的方法
基本公式为:
总工时=用例点*单位人时
用例点=未经调整的用例点*技术复杂系数*环境系数
未经调整用例点=参与者总权重+用例总权重
以下,我们将详细讨论公式里的各个概念。
1. 参与者总权重
首先,我们将根据跟系统的交互复杂度,将参与者分为下述三个类型:
参与者总权值 = sum(参与者类型 *相应权值 )a. 简单型参与者----这种类型的参与者通常是其他系统,采用程序接口与我们的系统交互。简单型参与者的加权值是1b. 一般型参与者----这类型的参与者有两种,一种是采用特殊协议交互的其他系统,第二种是采用文本模式交互的人类用户。一般型的参与者加权值是2c. 复杂型参与者----这种类型的参与者就是我们常见的人类用户,采用丰富且亲和力高的图形界面。复杂性参与者的加权值是3
2. 用例的权重
要注意:所有的用例都要计算,即便是被包含的用例或扩展的用例。
针对每一个用例内部的主要流程和替代流程,计算这些流程含有多少个“事务”。所谓“事务”是指一组不可分割的活动,这些活动要么全部都执行,要么就全部都不执行。
将用例根据事务多少,分为三个类型:
a. 简单型用例----这种类型的用例拥有少于3个的事务,它的加权值是5b. 一般型用例----这种类型的用例拥有4-7个事务,它的加权值是10c. 复杂型用例----这种类型的用例拥有多余7个的事务,它的加权值是15
另外一种方法是根据参与用例的对象个数多少,来分辨用例的复杂程度:
a. 简单型用例----这种类型的用例使用了少于5种分析对象,它的加权值是5b. 一般型用例----这种类型的用例使用了5-10种分析对象,它的加权值是10c. 复杂型用例----这种类型的用例使用了多于10种分析对象,它的加权值是15
用例总权重=sum(用例类型*相应权值)
3. 技术系数
技术系数的加权值请参考下表:
系数 | 说明 | 加权值 |
T1 | 分布式系统 | 2 |
T2 | 相应时间(联网) | 1 |
T3 | 终端用户性能 | 1 |
T4 | 复杂的内部处理 | 1 |
T5 | 程序代码可重用程度 | 1 |
T6 | 容易安装 | 0.5 |
T7 | 容易使用 | 0.5 |
T8 | 便于携带 | 2 |
T9 | 容易更改 | 1 |
T10 | 同步性 | 1 |
T11 | 包含特殊安全机制 | 1 |
T12 | 提供直接访问给第三方 | 1 |
T13 | 特殊的用户培训设施要求 | 1 |
技术总权重
=
sum(技术系数权值
*强度等级
)
技术复杂系数
=0.6
+(0.01
*技术总权重)
4. 环境系数
环境系数的加权值请参考下表:
系数 | 说明 | 加权值 |
E1 | 熟悉迭代式开发方法 | 1.5 |
E2 | 应用领域的经验 | 0.5 |
E3 | 面向对象的经验 | 1 |
E4 | 分析师的能力 | 0.5 |
E5 | 干劲 | 1 |
E6 | 稳定的需求 | 2 |
E7 | 兼职的工作能力 | -1 |
E8 | 困难的程序语言 | -1 |
环境总权重
=
sum(环境系数权值
*强度等级
)
环境系数
=1.4
+(-0.03
*环境总权重)
5. 用例点及工时
用例点
=(参与者总权值
+用例总权值)
*技术复杂系数
*环境系数
以20个人时为基本点,根据项目负面系数个数,对人时进行调整:
负面系数的计算方法:通过环境参数E1-E6中,强度等级低于3的为负面系数;环境参数E7-E8中,强度等级高于3的为负面系数。a. 负面系数个数<=2时,采用20人时/用例来估算。b. 负面系数个数3-4个,采用28人时/用例来估算。c. 负面系数个数>=5,项目失败可能性非常高,请调整项目,直到负面系数个数小于5
总工时
=用例点
*工时估算值
然后可以通过人员个数,每个人工作时间计算出项目总用时多少天