
- 估算技术教程
- 估算技术 - 首页
- 估算技术 - 概述
- 估算技术 - 功能点
- 估算技术 - 功能点计数
- 估算技术 - 用例
- 估算技术 - 德尔菲法
- 估算技术 - 三点估算
- 估算技术 - PERT
- 估算技术 - 类比估算
- 估算技术 - 工作分解结构
- 估算 - 扑克计划
- 估算技术 - 测试
- 估算技术资源
- 估算技术 - 快速指南
- 估算技术 - 资源
- 估算技术 - 讨论
估算技术 - 功能点计数过程
功能点计数过程包含以下步骤:
步骤 1 - 确定计数类型。
步骤 2 - 确定计数边界。
步骤 3 - 识别用户所需的每个基本过程 (EP)。
步骤 4 - 确定唯一的 EP。
步骤 5 - 测量数据功能。
步骤 6 - 测量事务功能。
步骤 7 - 计算功能规模(未调整的功能点计数)。
步骤 8 - 确定价值调整因子 (VAF)。
步骤 9 - 计算调整后的功能点计数。
注意 - 在 CPM 4.3.1 中,通用系统特性 (GSC) 变为可选,并移至附录。因此,可以跳过步骤 8 和步骤 9。
步骤 1:确定计数类型
功能点计数有三种类型:
- 开发功能点计数
- 应用功能点计数
- 增强功能点计数
开发功能点计数
功能点可以在开发项目的各个阶段(从需求到实施阶段)进行计数。这种类型的计数与新开发工作相关,可能包括原型,这些原型可能作为临时解决方案被要求,支持转换工作。这种类型的计数称为基线功能点计数。
应用功能点计数
应用计数计算为交付的功能点,不包括任何转换工作(原型或临时解决方案)以及可能已经存在的现有功能。
增强功能点计数
当在生产后对软件进行更改时,这些更改被视为增强。为了确定此类增强项目的规模,功能点计数会在应用程序中被添加、更改或删除。
步骤 2:确定计数边界
边界表示被测应用程序与外部应用程序或用户域之间的边界。(参见图 1)
要确定边界,请了解:
- 功能点计数的目的
- 被测应用程序的范围
- 哪些应用程序如何维护哪些数据
- 支持这些应用程序的业务领域
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
步骤 3:识别用户所需的每个基本过程
将功能用户需求分解成最小的活动单元,该单元满足以下所有条件:
- 对用户有意义。
- 构成完整的事务。
- 是独立的。
- 使被计应用程序的业务处于一致状态。
例如,功能用户需求 - “维护员工信息”可以分解成更小的活动,例如添加员工、更改员工、删除员工和查询员工信息。
因此,识别的每个活动单元都是一个基本过程 (EP)。
步骤 4:确定唯一的基本过程
比较两个已识别的 EP,如果它们满足以下条件,则将它们计为一个 EP(相同的 EP):
- 需要相同的 DET 集。
- 需要相同的 FTR 集。
- 需要相同的处理逻辑来完成 EP。
不要将具有多种处理逻辑的 EP 拆分成多个 EP。
例如,如果您已将“添加员工”识别为一个 EP,则不应将其分成两个 EP 以考虑员工可能有也可能没有家属这一事实。EP 仍然是“添加员工”,并且处理逻辑和 DET 存在差异以考虑家属。
步骤 5:测量数据功能
将每个数据功能分类为 ILF 或 EIF。
数据功能应分类为:
内部逻辑文件 (ILF),如果它由被测应用程序维护。
外部接口文件 (EIF),如果它被引用,但不是由被测应用程序维护。
ILF 和 EIF 可以包含业务数据、控制数据和基于规则的数据。例如,电话交换由所有三种类型组成 - 业务数据、规则数据和控制数据。业务数据是实际的呼叫。规则数据是呼叫如何通过网络路由,控制数据是交换机如何相互通信。
考虑以下文档以计数 ILF 和 EIF:
- 拟议系统的目标和约束。
- 有关当前系统的文档(如果存在此类系统)。
- 用户感知的目标、问题和需求的文档。
- 数据模型。
步骤 5.1:为每个数据功能计数 DET
应用以下规则为 ILF/EIF 计数 DET:
为通过执行 EP 在 ILF 或 EIF 中维护或检索的每个唯一用户可识别、非重复字段计数一个 DET。
当两个或多个应用程序维护和/或引用相同的数据功能时,仅计算被测应用程序使用的那些 DET。
为用户建立与另一个 ILF 或 EIF 的关系所需的每个属性计数一个 DET。
审查相关属性以确定它们是分组并计为单个 DET,还是计为多个 DET。分组将取决于 EP 在应用程序中如何使用属性。
步骤 5.2:为每个数据功能计数 RET
应用以下规则为 ILF/EIF 计数 RET:
- 为每个数据功能计数一个 RET。
- 为以下每个额外的 DET 逻辑子组计数一个额外的 RET。
- 具有非键属性的关联实体。
- 子类型(第一个子类型除外)。
- 属性实体,在除强制 1:1 之外的关系中。
步骤 5.3:确定每个数据功能的功能复杂度
RET | 数据元素类型 (DET) | ||
---|---|---|---|
1-19 | 20-50 | >50 | |
1 | L | L | A |
2 到 5 | L | A | H |
>5 | A | H | H |
功能复杂度:L = 低;A = 中;H = 高
步骤 5.4:测量每个数据功能的功能规模
功能复杂度 | ILF 的 FP 计数 | EIF 的 FP 计数 |
---|---|---|
低 | 7 | 5 |
中 | 10 | 7 |
高 | 15 | 10 |
步骤 6:测量事务功能
要测量事务功能,以下是必要的步骤:
步骤 6.1:对每个事务功能进行分类
事务功能应分类为外部输入、外部输出或外部查询。
外部输入
外部输入 (EI) 是一个基本过程,它处理来自边界外部的数据或控制信息。EI 的主要目的是维护一个或多个 ILF 和/或更改系统的行为。
必须应用以下所有规则:
数据或控制信息来自应用程序边界之外。
如果进入边界的不是更改系统行为的控制信息,则至少维护一个 ILF。
对于已识别的 EP,以下三个陈述之一必须适用:
处理逻辑与应用程序中其他 EI 执行的处理逻辑不同。
识别的数据元素集与应用程序中其他 EI 识别的数据元素集不同。
引用的 ILF 或 EIF 与应用程序中其他 EI 引用的文件不同。
外部输出
外部输出 (EO) 是一个基本过程,它将数据或控制信息发送到应用程序边界之外。EO 包括超出外部查询的额外处理。
EO 的主要目的是通过除检索数据或控制信息之外或除了检索数据或控制信息之外的其他处理逻辑向用户呈现信息。
处理逻辑必须:
- 包含至少一个数学公式或计算。
- 创建派生数据。
- 维护一个或多个 ILF。
- 更改系统的行为。
必须应用以下所有规则:
- 将数据或控制信息发送到应用程序边界之外。
- 对于已识别的 EP,以下三个陈述之一必须适用:
- 处理逻辑与应用程序中其他 EO 执行的处理逻辑不同。
- 识别的数据元素集与应用程序中其他 EO 不同。
- 引用的 ILF 或 EIF 与应用程序中其他 EO 引用的文件不同。
此外,以下规则之一必须适用:
- 处理逻辑包含至少一个数学公式或计算。
- 处理逻辑至少维护一个 ILF。
- 处理逻辑更改系统的行为。
外部查询
外部查询 (EQ) 是一个基本过程,它将数据或控制信息发送到边界之外。EQ 的主要目的是通过检索数据或控制信息向用户呈现信息。
处理逻辑不包含任何数学公式或计算,也不创建任何派生数据。在处理过程中不维护任何 ILF,也不更改系统的行为。
必须应用以下所有规则:
- 将数据或控制信息发送到应用程序边界之外。
- 对于已识别的 EP,以下三个陈述之一必须适用:
- 处理逻辑与应用程序中其他 EQ 执行的处理逻辑不同。
- 识别的数据元素集与应用程序中其他 EQ 不同。
- 引用的 ILF 或 EIF 与应用程序中其他 EQ 引用的文件不同。
此外,以下所有规则必须适用:
- 处理逻辑从 ILF 或 EIF 检索数据或控制信息。
- 处理逻辑不包含数学公式或计算。
- 处理逻辑不更改系统的行为。
- 处理逻辑不维护 ILF。
步骤 6.2:为每个事务功能计数 DET
应用以下规则为 EI 计数 DET:
审查所有跨越(进入和/或退出)边界的元素。
为在事务功能处理期间跨越(进入和/或退出)边界的每个唯一用户可识别、非重复属性计数一个 DET。
即使有多个消息,也为发送应用程序响应消息的能力为每个事务功能仅计数一个 DET。
对于启动操作(即使有多种方法可以这样做),每个事务功能只计算一个DET。
以下项目不计为DET -
事务功能在边界内生成并保存到ILF而不退出边界的属性。
诸如报表标题、屏幕或面板标识符、列标题和属性标题之类的文字。
应用程序生成的标记,例如日期和时间属性。
分页变量、页码和定位信息,例如“211行中的第37至54行”。
导航辅助工具,例如使用“上一个”、“下一个”、“第一个”、“最后一个”及其图形等效项在列表中导航的能力。
应用以下规则来计算EO/EQ的DET -
审查所有跨越(进入和/或退出)边界的元素。
为在事务功能处理期间跨越(进入和/或退出)边界的每个唯一用户可识别、非重复属性计数一个 DET。
即使有多个消息,也为发送应用程序响应消息的能力为每个事务功能仅计数一个 DET。
对于启动操作(即使有多种方法可以这样做),每个事务功能只计算一个DET。
以下项目不计为DET -
在边界内生成且不跨越边界的属性。
诸如报表标题、屏幕或面板标识符、列标题和属性标题之类的文字。
应用程序生成的标记,例如日期和时间属性。
分页变量、页码和定位信息,例如“211行中的第37至54行”。
导航辅助工具,例如使用“上一个”、“下一个”、“第一个”、“最后一个”及其图形等效项在列表中导航的能力。
步骤6.3:计算每个事务功能的FTR
应用以下规则来计算EI的FTR -
- 为维护的每个ILF计算一个FTR。
- 为在EI处理期间读取的每个ILF或EIF计算一个FTR。
- 对于每个既维护又读取的ILF,只计算一个FTR。
应用以下规则来计算EO/EQ的FTR -
- 为在EP处理期间读取的每个ILF或EIF计算一个FTR。
此外,应用以下规则来计算EO的FTR -
- 为在EP处理期间维护的每个ILF计算一个FTR。
- 对于每个由EP既维护又读取的ILF,只计算一个FTR。
步骤6.4:确定每个事务功能的功能复杂度
FTR | 数据元素类型 (DET) | ||
---|---|---|---|
1-4 | 5-15 | >=16 | |
0-1 | L | L | A |
2 | L | A | H |
>=3 | A | H | H |
功能复杂度:L = 低;A = 中;H = 高
确定每个EO/EQ的功能复杂度,但EQ必须至少具有1个FTR -
EQ必须至少具有1个FTR FTR |
数据元素类型 (DET) | ||
---|---|---|---|
1-4 | 5-15 | >=16 | |
0-1 | L | L | A |
2 | L | A | H |
>=3 | A | H | H |
功能复杂度:L = 低;A = 中;H = 高
步骤6.5:衡量每个事务功能的功能规模
根据其功能复杂度衡量每个EI的功能规模。
复杂度 | 功能点计数 |
---|---|
低 | 3 |
中 | 4 |
高 | 6 |
根据其功能复杂度衡量每个EO/EQ的功能规模。
复杂度 | EO的功能点计数 | EQ的功能点计数 |
---|---|---|
低 | 4 | 3 |
中 | 5 | 4 |
高 | 6 | 6 |
步骤7:计算功能规模(未调整的功能点计数)
要计算功能规模,应遵循以下步骤 -
步骤7.1
回顾您在步骤1中发现的内容。确定计数类型。
步骤7.2
根据类型计算功能规模或功能点计数。
- 对于开发功能点计数,转到步骤7.3。
- 对于应用程序功能点计数,转到步骤7.4。
- 对于增强功能点计数,转到步骤7.5。
步骤7.3
开发功能点计数包含两个功能组件 -
项目用户需求中包含的应用程序功能。
项目用户需求中包含的转换功能。转换功能仅在安装时提供,用于转换数据和/或提供其他用户指定的转换需求,例如特殊转换报表。例如,现有的应用程序可能会被新的系统取代。
DFP = ADD + CFP
其中,
DFP = 开发功能点计数
ADD = 开发项目交付给用户的函数规模
CFP = 转换功能的规模
ADD = ILF的功能点计数 + EIF的功能点计数 + EI的功能点计数 + EO的功能点计数 + EQ的功能点计数
CFP = ILF的功能点计数 + EIF的功能点计数 + EI的功能点计数 + EO的功能点计数 + EQ的功能点计数
步骤7.4
计算应用程序功能点计数
AFP = ADD
其中,
AFP = 应用程序功能点计数
ADD = 开发项目交付给用户的函数规模(不包括任何转换功能的规模),或应用程序在计数时存在的任何功能。
ADD = ILF的功能点计数 + EIF的功能点计数 + EI的功能点计数 + EO的功能点计数 + EQ的功能点计数
步骤7.5
增强功能点计数考虑以下四个功能组件 -
- 添加到应用程序的功能。
- 在应用程序中修改的功能。
- 转换功能。
- 从应用程序中删除的功能。
EFP = ADD + CHGA + CFP + DEL
其中,
EFP = 增强功能点计数
ADD = 增强项目添加的功能规模
CHGA = 增强项目更改的功能规模
CFP = 转换功能的规模
DEL = 增强项目删除的功能规模
ADD = ILF的功能点计数 + EIF的功能点计数 + EI的功能点计数 + EO的功能点计数 + EQ的功能点计数
CHGA = ILF的功能点计数 + EIF的功能点计数 + EI的功能点计数 + EO的功能点计数 + EQ的功能点计数
CFP = ILF的功能点计数 + EIF的功能点计数 + EI的功能点计数 + EO的功能点计数 + EQ的功能点计数
DEL = ILF的功能点计数 + EIF的功能点计数 + EI的功能点计数 + EO的功能点计数 + EQ的功能点计数
步骤8:确定价值调整因子
在CPM 4.3.1中,GSC被设置为可选,并移动到附录中。因此,可以跳过步骤8和步骤9。
价值调整因子 (VAF) 基于14个GSC,这些GSC对正在计数的应用程序的一般功能进行评级。GSC是独立于技术的用户业务约束。每个特征都具有相关的描述,以确定影响程度。
通用系统特征 | 简要描述 |
---|---|
数据通信 | 有多少通信设施可以帮助将信息传输或交换到应用程序或系统? |
分布式数据处理 | 如何处理分布式数据和处理功能? |
性能 | 用户是否需要响应时间或吞吐量? |
大量使用的配置 | 应用程序将执行的当前硬件平台的使用频率如何? |
事务速率 | 每天、每周、每月等执行事务的频率是多少? |
在线数据输入 | 多少百分比的信息是在线输入的? |
最终用户效率 | 应用程序是否针对最终用户效率而设计? |
在线更新 | 有多少ILF通过在线事务更新? |
复杂处理 | 应用程序是否具有广泛的逻辑或数学处理? |
可重用性 | 应用程序是否是为了满足一个或多个用户的需求而开发的? |
安装简易性 | 转换和安装有多困难? |
操作简易性 | 启动、备份和恢复程序的有效性和/或自动化程度如何? |
多个站点 | 应用程序是否专门设计、开发和支持在多个组织的多个站点安装? |
促进变更 | 应用程序是否专门设计、开发和支持以促进变更? |
影响程度范围在0到5的范围内,从无影响到强烈影响。
评级 | 影响程度 |
---|---|
0 | 不存在或无影响 |
1 | 偶然影响 |
2 | 中等影响 |
3 | 平均影响 |
4 | 重大影响 |
5 | 始终强烈影响 |
确定14个GSC中每个GSC的影响程度。
由此获得的14个GSC值的总和称为总影响程度 (TDI)。
TDI = ∑14 影响程度
接下来,计算价值调整因子 (VAF) 为
VAF = (TDI × 0.01) + 0.65
每个GSC可以从0到5变化,TDI可以从(0 × 14)到(5 × 14)变化,即0(当所有GSC都较低时)到70(当所有GSC都较高时),即0 ≤ TDI ≤ 70。因此,VAF可以在0.65(当所有GSC都较低时)到1.35(当所有GSC都较高时)的范围内变化,即0.65 ≤ VAF ≤ 1.35。
步骤9:计算调整后的功能点计数
根据使用VAF的FPA方法(V4.3.1之前的CPM版本),这由以下公式确定:
调整后的功能点计数 = 未调整的功能点计数 × VAF
其中,未调整的功能点计数是在步骤7中计算的功能规模。
由于VAF可以在0.65到1.35之间变化,因此VAF对最终调整后的功能点计数的影响为±35%。
功能点的益处
功能点很有用 -
在衡量解决方案的规模而不是问题的规模时。
因为功能点计数只需要需求。
因为它独立于技术。
因为它独立于编程语言。
在估算测试项目时。
在估算整个项目成本、进度和工作量时。
在合同谈判中,因为它提供了一种与业务部门更轻松沟通的方法。
因为它量化并为软件中函数的实际用途、接口和目的分配了一个值。
在创建与其他指标(如小时、成本、人员数量、持续时间和其他应用程序指标)的比率时。
功能点存储库
国际软件基准标准组织 (ISBSG) 发展和维护两个IT数据存储库。
- 开发和增强项目
- 维护和支持应用程序
开发和增强项目存储库中拥有超过6,000个项目。
数据以Microsoft Excel格式交付,方便您进一步分析,或者您甚至可以将数据用于其他目的。
可以从以下地址购买ISBSG存储库许可证:http://www.isbsg.com/
当使用折扣码“IFPUGMembers”时,ISBSG为IFPUG会员提供在线购买10%的折扣。
可以在以下地址找到ISBSG软件项目数据发布更新:http://www.ifpug.org/isbsg/
COSMIC和IFPUG合作制作了软件非功能和项目需求术语表。可以从以下地址下载:cosmic-sizing.org