由于工作需要,需要在项目立项前都需要进行功能点估算, 为后续计算项目组的的工作效率做准备。目前做了几次估算,在这里整理和总结一下。 我们目前使用的评估的标准参考 IFPUG: ISO/IEC 20926:2009
概述
定义:
The function point is a "unit of measurement" to express the amount of
business functionality an information system (as a product) provides to
a user.
功能点是业务功能的单位, 也就是从用户视角的进行评估, 是可以和用户交流的。对于我现在实施的外包项目来说就是用一种方法和甲方达成共识。相比较与之前的根据经验评估更有依据些。
步骤
1. 功能点应用的分类
- 开发项目: 从无到有
- 升级项目: 功能升级
- 应用项目: 基线评估
2. 识别应用边界
被测应用与用户间的边界。
3. 确认功能点
被测应用与用户间的边界。
- 数据功能
- ILF: 容纳本应用维护的一组业务数据, 控制数据
- ELF: 容纳外部应用维护的数据, 对于外部数据来说是他的ILF
- 处理功能
- EI: 处理来自应用外部的的数据, 主要实现ILF的维护, 应用的控制
- EO: 通过ILF生成新数据, 已报表,数据流形式送到应用以外
- EQ: 请求来自应用外部, 处理过程包含输入,输出, 但输入不进行ILF文件的维护
复杂度
1. 复杂度评估涉及三种元素 RET & DET & FTR
- DET :用户可识别的,非重复的域
- RET :用户可识别的数据的子集合
- FTR: 引用文件类型
2. ILF & EIF 的复杂度
- ILF & EIF
| 1 to 19 DET | 20 to 50 DET | 51 or more DET | |
|---|---|---|---|
| 1 RET | Low | Low | Average |
| 2 to 5 RET | Low | Average | High |
| 6 or more RET | Average | High | High |
- ILF:
| Functional Complexity Rating | Unadjusted Function Points |
|---|---|
| Low | 7 |
| Average | 10 |
| High | 15 |
- EIF:
| Functional Complexity Rating | Unadjusted Function Points |
|---|---|
| Low | 5 |
| Average | 7 |
| High | 10 |
3. EI & EO & EQ 的复杂度
- EI:
| 1 to 4 DET | 5 to 15 DET | 16 or more DET | |
|---|---|---|---|
| 0 to 1 FTR | Low | Low | Average |
| 2 FTRs | Low | Average | High |
| 3 or more FTRs | Average | High | High |
- EO & EQ
| 1 to 5 DET | 6 to 19 DET | 20 or more DET | |
|---|---|---|---|
| 0 to 1 FTR | Low | Low | Average |
| 2 to 3 FTRs | Low | Average | High |
| 4 or more FTRs | Average | High | High |
- EI & EQ:
| Functional Complexity Rating | Unadjusted Function Points |
|---|---|
| Low | 3 |
| Average | 4 |
| High | 6 |
- EO:
| Functional Complexity Rating | Unadjusted Function Points |
|---|---|
| Low | 4 |
| Average | 5 |
| High | 7 |
关于复杂度我们实际场景中目前取的都是平均数, 没有对功能点负责度进一步分析,后续会对数据进行统计, 折算出应用的固定的权重。
举例
以一个骑行健身器为例子
1. ILF : 涉及两组信息:
- 骑行信息:
| 序号 | 字段 |
|---|---|
| 1 | 平均速度 |
| 2 | 自行车的凉爽系数 |
| 3 | 节奏 |
| 4 | 卡路里燃烧 |
| 5 | 乘车日期 |
| 6 | 乘车距离 |
| 7 | 骑行时间 |
| 8 | 温度 |
- 骑行者信息:
| 序号 | 字段 |
|---|---|
| 1 | 年龄 |
| 2 | 体重 |
| 3 | 性别 |
2. EI
骑行信息: 针对 1-8 个 信息 的增删改操作(EI), 其中卡路里计算需要参考
骑行者信息中的体重 , 得出一下结论:- 新增,修改操作 涉及 8 个
DET, 2个FTR - 删除 涉及 8 个
DET, 1个FTR
- 新增,修改操作 涉及 8 个
骑行者信息: 针对 1-3 个
DET的增删改操作(EI)
| 交易处理 | DET | FTR | Complexity Rating | FPs |
|---|---|---|---|---|
| Ride 增加 | 8 | 2 | Average | 4 |
| Ride 修改 | 8 | 2 | Average | 4 |
| Ride 删除 | 8 | 1 | Low | 3 |
| Rider 新增 | 3 | 1 | Low | 3 |
| Rider 修改 | 3 | 1 | Low | 3 |
3. EQ
查询骑行信息, 骑行者信息:
| 交易处理 | DET | FTR | Complexity Rating | FPs |
|---|---|---|---|---|
| Ride 查询 | 8 | 1 | Low | 4 |
| Ride 查询 | 3 | 1 | Low | 4 |
4. ILF
| 交易处理 | DET | FTR | Complexity Rating | FPs |
|---|---|---|---|---|
| ILF Ride | 8 | 1 | Low | 7 |
| ILF Rider | 3 | 1 | Low | 7 |
5. EO
假设如下需求: 骑行距离,平均速度,骑行时间,卡路里按 日, 周, 月统计, 支持在线查看和打印
3个报表维度 * 4个业务数据 * 2种展示方式 = 24 个 EO
每个EO生成至少需要骑行表中两个数据功能点统计如下:
| 交易处理 | DET | FTR | Complexity Rating | FPs |
|---|---|---|---|---|
| EO | 2 | 1 | Low | 4 |
6. 汇总
| 交易处理 | DET | FTR | Complexity Rating | FPs | # | Total FP |
|---|---|---|---|---|---|---|
| Ride 增加 | 8 | 2 | Average | 4 | 1 | 4 |
| Ride 修改 | 8 | 2 | Average | 4 | 1 | 4 |
| Ride 删除 | 8 | 1 | Low | 3 | 1 | 3 |
| Rider 新增 | 3 | 1 | Low | 3 | 1 | 3 |
| Rider 修改 | 3 | 1 | Low | 3 | 1 | 3 |
| Ride 查询 | 8 | 1 | Low | 4 | 1 | 4 |
| Rider 查询 | 3 | 1 | Low | 4 | 1 | 4 |
| ILF Ride | 8 | 1 | Low | 7 | 1 | 7 |
| ILF Rider | 3 | 1 | Low | 7 | 1 | 7 |
| EO | 2 | 1 | Low | 4 | 24 | 96 |
功能点: 135