软件开发功能点估算方法.docx
- 文档编号:9095148
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:24
- 大小:93.93KB
软件开发功能点估算方法.docx
《软件开发功能点估算方法.docx》由会员分享,可在线阅读,更多相关《软件开发功能点估算方法.docx(24页珍藏版)》请在冰豆网上搜索。
软件开发功能点估算方法
功能点估算方法
1概述
1.1编写目的
为规范软件项目规模的度量方法,结合国际先进的估算方法及公司业务运营模式,制定基于软件功能的度量估算方法,为度量项目规模和项目工作量提供指导依据。
1.2适用范围
本方法适用于公司的研发类项目,项目应覆盖软件开发全过程(包括项目准备阶段、需求阶段、设计阶段、编码与测试、交付部署、运行维护各个阶段工作)。
1.3术语定义
简称/术语
全称
说明
FP
FunctionPoints
功能点
UFC
UnadjustedFunctionPoints
未调整的功能点数
SC
SystemCharacteristic
系统特性
DI
DegreeofInfluence
影响程度
AF
AdjustmentFactor
功能点的调整系数
1.4功能点定义与分类
功能点(FunctionPoints)是响应客户、其他应用请求或自行触发而进行处理并输出结果的一个最小功能单元。
功能估算过程中,将软件的功能分为以下4类:
1)接口:
是指在其他系统中维护但本系统需要调用的数据。
包括:
调用外部接口和提供外部系统调用的接口。
2)数据处理:
是指来自于系统外部的数据输入、控制信息或事务数据输入,并对输入数据进行逻辑处理。
包括:
新增、修改、删除、流程流转和发布。
3)统计:
是指对数据经过组合、计算、统计分析后得出的数据集合,并由程序内部输出到外部。
包括:
定时统计和实时统计。
4)查询:
是一个输入输出的组合过程,向应用程序边界外发送数据基本处理的过程。
包括:
单表查询和多表联合查询。
2功能点估算方法
2.1估算流程
功能点估算方法,是从软件项目的功能需求角度来评估项目规模,功能点估算流程如下图所示。
功能点估算方法的应用场景分为项目前期、需求明确及需求变更。
在不同应用场景中“识别项目的范围和边界”和“计算未调整的功能点数量”方法有所区别,下面将分别说明在项目前期、需求明确、需求变更场景下的估算流程。
2.1.1项目前期
项目前期,指从项目规划开始至需求规格明确期间。
项目功能点的估算流程如下:
1)根据项目前期的调研报告等文件(包括:
《可行性研究报告》、《建设方案》或《招标文件》等),明确项目边界范围,初步确定项目的整体功能模块以及功能点。
2)功能点分析:
识别功能点分类及估算功能点的数量,功能点分类详见章节1.4。
3)计算调整前功能点:
根据功能点分类及复杂度,计算未调整的功能点数UFC,未调整的计算调整后功能点方法详见章节2.2。
4)确定调整系数:
根据项目具体情况确定每项系统特性的影响程度,并计算调整系数AF。
5)计算调整后功能点:
根据未调整的功能点数UFC及调整系数AF,计算调整后的功能点数FP。
2.1.2需求明确
需求明确时,指已完成需求调研,并形成了正式的需求规格说明书。
其项目功能点的估算流程如下:
1)根据项目的需求说明书等文件(包括:
《需求规格说明书》),明确项目边界范围,初步确定项目的整体功能模块以及功能点。
2)功能点分析:
识别功能点分类及估算功能点的数量,功能点分类详见章节1.4。
3)计算调整前功能点:
根据功能点分类及复杂度,计算未调整的功能点数UFC,未调整的计算调整后功能点方法详见章节2.2。
4)确定调整系数:
根据项目具体情况确定每项系统特性的影响程度,并计算调整系数AF。
5)计算调整后功能点:
根据未调整的功能点数UFC及调整系数AF,计算调整后的功能点数FP。
2.1.3需求变更
需求变更时,指在项目建设过程中,客户提出了变更需求,且已将变更需求更新到新版本的需求规格说明书中。
其项目功能点的估算流程如下:
1)根据项目的需求变更文件(包括:
已更新的《需求规格说明书》、《变更申请》、《变更说明》等),明确项目边界范围,初步确定项目的整体功能模块以及功能点。
2)功能点分析:
识别功能点分类及估算功能点的数量,功能点分类详见章节1.4。
3)计算调整前功能点:
根据功能点分类及复杂度,计算未调整的功能点数UFC,未调整的计算调整后功能点方法详见章节2.2。
4)确定调整系数:
根据项目具体情况确定每项系统特性的影响程度,并计算调整系数AF。
5)计算调整后功能点:
根据未调整的功能点数UFC及调整系数AF,计算调整后的功能点数FP。
2.2调整前功能点计算(UFC)
通过构造复杂度矩阵,根据每个功能点的复杂程度映射为复杂度系数,为计算调整前的功能点数提供指导意义。
2.2.1复杂度矩阵(项目前期)
通过复杂度和功能点分类两个维度构建功能点分类-复杂度矩阵,并识别出每一个功能点所对应复杂系数Ki,将所有功能点的复杂系数Ki合计,算出调整前的功能点数UFC。
调整前功能点数量的计算公式为:
UFC=∑(Ki)。
功能点分类-复杂度矩阵如下所示:
功能点分类
复杂度描述
复杂度
复杂系数(K)
接口
调用外部系统已实现的接口
低
5
实现外部接口,提供外部系统调用
高
10
数据处理
无算法
低
3
有算法,实现方法暂不清晰,但也不难
中
4
多个算法,且较难实现
高
6
统计
定时统计
低
4
实时统计
高
7
查询
单表查询
低
3
多表联合查询
高
6
2.2.2复杂度矩阵(需求明确、需求变更)
以数据项数量和数据文件数量为维度,构建功能点的复杂度矩阵,功能点复杂度矩阵如下所示:
接口
数据处理
统计和查询
数据文件数量
数据项数量
数据文件数量
数据项数量
数据文件数量
数据项数量
1-19
20-50
51+
1-4
5-15
16+
1-5
6-19
20+
1
低
低
中
0或1
低
低
中
0或1
低
低
中
2-5
低
中
高
2
低
中
高
2-3
低
中
高
>6
中
高
高
>2
中
高
高
>4
中
高
高
根据功能点的复杂度矩阵,将功能点的复杂度(高、中、低)映射为复杂度系数(K),每类功能点的复杂系数如下表所示。
复杂度系数
功能类型
低
中
高
接口
5
7
10
数据处理
3
4
6
统计
4
5
7
查询
3
4
6
通过复杂度矩阵及负责度系数,计算每个功能点的复杂系数(Ki),将所有功能点的复杂系数Ki合计,算出调整前的功能点数UFC。
调整前功能点数量的计算公式为:
UFC=∑(Ki)。
2.3调整系数
为更精确地度量项目规模,需通过非功能需求计算系统各功能点的调整系数,最终确定项目规模。
功能点的调整系数是通过通用系统特性及其影响程度来评定的,对每个常规系统特性的评估由其影响程度(DI)而定。
下面将分别说明7个系统特性的定义及影响程度的划分标准。
序号
系统特性名称
等级
影响程度说明
分值
1
算法
0
无算法
0
1
有算法,且实现方法清晰
2
2
有算法,实现方法暂不清晰,但也不难
4
3
算法较难或多个算法
6
4
多个算法,且较难实现
8
5
内部力量不能攻克的算法,或需要专门研究
10
2
重用
0
直接重用,几乎不需要修改
0
1
基本可直接重用,单需要做些简单的调整
2
2
重用50%~70%;或大部分内容需要较大调整即可重用
4
3
重用20%~50%;或大部分内容需要较大调整即可重用
6
4
重用20%以内,或整体调整后方可重用
8
5
无重用
10
3
新技术
0
无新技术;
0
1
有新技术,但预期简单(几乎可视为旧技术);
2
2
新技术存在1-2个局部不清晰;
4
3
存在多个新技术,或3个以上局部不清晰;
6
4
新技术大部分不清晰;
8
5
目前力量不能攻克的新技术,或需要专门研究;
10
4
业务成熟度
0
客户已发布管理制度和作业规范,且已执行一年以上。
0
1
客户已发布管理制度且已执行一年以上,相关作业规范正在拟定但尚未发布。
2
2
客户已发布管理制度且已执行一年以上,但尚未拟定相关作业规范。
4
3
客户已发布管理制度和作业规范正在拟定,但尚未发布。
6
4
客户未发布管理制度和作业规范,依靠约定的业务流程经验进行管理。
8
5
新兴业务,业务流程和管理规范尚处于研究阶段。
10
5
性能要求精细度
0
用户没有提出性能方面的要求
0
1
用户提出了性能和设计方面的要求,但不需要采取特定措施
2
2
响应时间和吞吐量在系统峰值时是关键的,但是不需要采取相应的CPU使用方面的特殊设计。
处理的最后期限是在下一个工作日。
4
3
在任何时候响应时间和吞吐量都是关键的,但是不需要采取相应的CPU使用方面的特殊设计。
处理的完成期限比较严格
6
4
除了上面一项的要求外,由于对需求的要求比较严格,在设计阶段就要进行性能分析
8
5
除了上面一项的要求之外,在设计和实施阶段需要使用性能分析工具来判断性能要求的完成情况
10
6
系统界面设计的明确程度
0
沿用原有系统的界面风格。
0
1
有类似界面风格的系统可以参考
2.5
2
客户对界面的要求较明确,且所有客户对界面要求一致。
5
3
客户对界面的要求不明确,但所有客户对界面要求一致。
7.5
4
客户对界面要求不明确,且客户间对界面的要求不一致。
10
7
兼容性
说明
兼容性要求包含以下内容:
操作系统、数据库、中间件、浏览器
0
客户需求不含兼容性的要求
0
1
考虑了兼容性的要求,包括以上的1个
2.5
2
考虑了兼容性的要求,包括以上的2个
5
3
考虑了兼容性的要求,包括以上的3个
7.5
4
考虑了兼容性的要求,包括以上的4个
10
2.4调整后功能点计算(FP)
根据以上7项系统特性的影响程度(DI)计算功能点的调整系数(AF),计算公式为:
AF=∑(DI)*0.01+0.65
根据调整系数(AF),最终可得到调整后的功能点数(FP),计算公式为:
FP(调整后功能点)=UFC(未调整功能点数目)*AF(调整系数)
3实例说明
以项目交付管理系统(PDMS)为例,分别说明在项目前期、需求明确、需求变更场景下的功能点估算方法。
3.1项目前期
(一)识别项目范围和边界
在新增一个项目时会使用到项目的基本信息、项目团队管理、项目背景、项目内容等。
项目又会隶属于某个部门,在本系统中会有一个对部门进行维护的功能。
项目的合同是由另外一个公司业务运营支撑系统(BOSS)提供的。
因此其用例图如下所示:
(二)功能点分析
根据上一步的用例数,可识别出功能点的分类及复杂系数,如下表:
功能点分类
功能点
复杂度
复杂系数(K)
接口
合同表
低
5
数据处理
新增项目信息
高
6
修改项目信息
高
6
删除项目信息
中
4
发布项目信息
高
6
新增部门信息
低
3
修改部门信息
低
3
删除部门信息
低
3
统计
统计项目信息
低
4
查询
查询项目信息
高
6
查询部门信息
低
3
(三)计算调整前功能点
通过上一步识别的功能点的复杂系数(K),可计算调整前功能点数(UFC),计算公式为:
UFC=∑(K)=5+6+6+4+6+3+3+3+4+6+3=49
(四)确定调整系数
本系统的系统特性(SC)及确定的调整系数(AF)如下:
系统特性(SC)
等级(L)
分值(DI)
算法
2
4
重用
4
8
新技术
3
6
业务成熟度
4
8
性能要求精细度
3
6
系统界面设计的明确程度
2
5
兼容性
3
7.5
计算功能点的调整系数(AF)为:
AF=∑(DI)*0.01+0.65=(4+8+6+8+6+5+7.5)*0.01+0.65=1.095
(五)计算调整后功能点
最终计算调整后的功能点数(FP)为:
FP=UFC(未调整功能点数目)*AF(调整因素)
=49*1.095
=53.66
3.2需求明确
(一)识别项目范围和边界
1)识别项目功能点
根据项目的《需求规格说明书》,可识别出项目的功能点,并画出用例图如下所示:
2)识别数据对象
根据项目的《需求规格说明书》,可识别出项目的数据对象,如下所示:
项目基本信息表:
序号
字段名
备注
1
项目ID
自动生成
2
项目名称
用户输入
3
项目编号
用户输入
4
业务特性
用户输入
5
项目群
用户输入
6
开始时间
用户输入
7
结束时间
用户输入
8
责任部门
用户输入
9
项目负责人
用户输入
10
项目经理
用户输入
11
研发负责人
用户输入
12
项目成员
用户输入
13
项目背景
用户输入
14
项目目的
用户输入
15
项目内容
用户输入
部门信息表:
序号
字段名
备注
1
部门ID
自动生成
2
部门名称
用户输入
合同信息表:
序号
字段名
备注
1
合同ID
自动生成
2
项目名称
用户输入
3
合同编号
用户输入
4
合同金额
用户输入
5
成本预算
用户输入
6
客户
用户输入
(二)功能点分析
根据上一步识别的用例数和数据对象表,可确定功能点的分类及复杂度矩阵如下:
序号
功能点名称
类型
数据文件数量
数据项数量
复杂度
复杂系数
个数
说明
个数
说明
1
合同表
接口
2
项目基本信息、合同表信息
18
1、1、项目基本信息表:
除项目ID外的14个字段;
2、2、合同表:
除去合同ID和项目名称外的4个字段
低
5
2
新增项目信息
数据处理
3
项目基本信息、部门表、合同表
18
1、项目基本信息表:
除项目ID外的14个字段;
2、部门表:
0个字段(除去部门ID和部门名称);
3、合同表:
除去合同ID和项目名称外的4个字段
高
6
3
修改项目信息
数据处理
1
项目基本信息
14
除项目ID外的14个字段
低
3
4
删除项目信息
数据处理
1
项目基本信息
14
同上
低
3
5
发布项目信息
数据处理
1
项目基本信息
14
同上
低
3
6
新增部门信息
数据处理
1
部门表
1
除去部门ID
低
3
7
修改部门信息
数据处理
1
部门表
1
同上
低
3
8
删除部门信息
数据处理
1
部门表
1
同上
低
3
9
统计项目信息
统计
1
项目基本信息
14
除项目ID外的14个字段
低
4
10
查询项目信息
查询
1
项目基本信息
14
同上
低
3
11
项目部门信息
查询
1
部门表
1
除去部门ID
低
3
(三)计算调整前功能点
通过上一步识别的功能点的复杂系数(K),可计算调整前功能点数(UFC),计算公式为:
UFC=∑(K)=5+6+3+3+3+3+3+3+4+3+3=39
(四)确定调整系数
识别本系统的系统特性(SC)及确定的调整系数(AF)如下:
系统特性(SC)
等级(L)
分值(DI)
算法
2
4
重用
4
8
新技术
3
6
业务成熟度
4
8
性能要求精细度
3
6
系统界面设计的明确程度
2
5
兼容性
3
7.5
计算功能点的调整系数(AF)为:
AF=∑(DI)*0.01+0.65=(4+8+6+8+6+5+7.5)*0.01+0.65=1.095
(五)计算调整后功能点
最终计算调整后的功能点数(FP)为:
FP=UFC(未调整功能点数目)*AF(调整因素)
=39*1.095
=42.71(个)
3.3需求变更
(一)确定项目范围和边界
1)识别项目功能点
根据项目的需求变更文件(包括:
已更新的《需求规格说明书》、《变更申请》、《变更说明》等),可识别出项目的功能点,并画出用例图如下所示:
用例图(灰色部分为本次变更涉及的功能点)
2)确定数据对象
项目基本信息表:
序号
字段名
备注
1
项目ID
自动生成
2
项目名称
用户输入
3
项目编号
用户输入
4
业务特性
用户输入
5
项目群
用户输入
6
开始时间
用户输入
7
结束时间
用户输入
8
责任部门
用户输入
9
项目负责人
用户输入
10
项目经理
用户输入
11
研发负责人
用户输入
12
项目成员
用户输入
13
项目背景
用户输入
14
项目目的
用户输入
15
项目内容
用户输入
部门信息表:
序号
字段名
备注
1
部门ID
自动生成
2
部门名称
用户输入
合同信息表:
序号
字段名
备注
1
合同ID
自动生成
2
项目名称
用户输入
3
合同编号
用户输入
4
合同金额
用户输入
5
成本预算
用户输入
6
客户
用户输入
(二)功能点分析
根据上一步识别的用例数和数据对象表,可确定功能点的分类及复杂度矩阵如下:
序号
功能点名称
类型
数据文件数量
数据项数量
复杂度
复杂系数
个数
说明
个数
说明
1
修改项目信息
数据处理
1
项目基本信息
14
除项目ID外的14个字段
低
3
2
删除项目信息
数据处理
1
项目基本信息
14
同上
低
3
3
发布项目信息
数据处理
1
项目基本信息
14
同上
低
3
4
撤销发布
数据处理
1
项目基本信息
14
同上
低
3
(三)计算调整前功能点
通过上一步识别的功能点的复杂系数(K),可计算调整前功能点数(UFC),计算公式为:
UFC=∑(K)=3+3+3+3=12
(四)确定调整系数
根据变更所涉及的功能模块,识别出本系统的系统特性(SC)及确定的调整系数(AF)如下:
系统特性(SC)
等级(L)
分值(DI)
算法
1
2
重用
1
2
新技术
1
2
业务成熟度
3
6
性能要求精细度
1
2
系统界面设计的明确程度
1
2.5
兼容性
3
7.5
计算功能点的调整系数(AF)为:
AF=∑(DI)*0.01+0.65=(2+2+2+6+2+2.5+7.5)+0.65=0.89
(五)计算调整后功能点
最终由需求变更造成的规模,且计算调整后的功能点数(FP)为:
FP=UFC(未调整功能点数目)*AF(调整因素)
=12*0.89
=10.68(个)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 开发 功能 估算 方法