标签:处理 通用 敏捷管理 平均情况 help 开发语言 处理过程 ott The
Table of Contents
? ?
? ?
? ?
FPA估算的 项目规模,是指软件开发的项目规模,包含了需求分析、设计、编码、测试 等活动,但不包含项目管理,软件维护等支持性且因项目要求的不同而差异加大的活动。
? ?
用户需求分为 功能性用户需求和非功能性用户需求,IFPUG 和 NESMA 用来估算 功能性用户需求的规模; 而SNAP 用来估算 非功能性用户需求的规模
? ?
国内的行业标准,有使用 IFPUG 方法的,也有是 NESMA 方法的; 需要注意二者的差异和联系
? ?
估算软件开发成本的总体思路是:
1,先估算出规模,估算法方法可以选用其中一个
A,NESMA快速估算, 项目早期,需求不明朗,文档不全
B, NESMA估算,项目中期,需求清晰,文档较全
C, NESMA详细估算,项目完全,需求完成,文档完备
D, IFPUG 估算
2,然后使用方程 工作量 = 规模/ 生产率, 计算得出工作量
3,基于工作量计算开发成本
? ?
功能的度量单位,用于度量软件规模; 不等同于 功能,或者用户需求; 一般场景下所说的 功能点,是 指功能 【功能亮点、或者功能突出点】
A Function Point (FP) is a unit of measurement to express the amount of business functionality, an information system (as a product) provides to a user. FPs measure software size. They are widely accepted as an industry standard for functional sizing.
? ?
国标/行业标准所描述的功能点估算规范,既有IFPUG ,也有 NESMA,2者在流程和规则上,大部分是相同的;主要差异是
? ?
? ?
? ?
? ?
被度量软件与用户或者其他系统之间的界限
? ?
Control Information is data that influences an elementary process by specifying what, when or how data is to be processed.
? ?
对用户来说是一个有意义的、最小的活动单元,是自包含的,并且使应用程序的业务处于一致状态
Elementary Process is the smallest unit of functional user requirement that ? 基本处理是 用户功能需求的最小单元
? ?
Processing logic is defined as any of the requirements specifically requested by the user to complete an elementary process such as validations, algorithms or calculations and reading or maintaining a data function.
? ?
? ?
? ?
功能分为 2 大类, 5种类型
?
? ?
"在这里,文件的概念并非是传统意义的文件, 而是一组逻辑上相关联的数据的集合。 "
? ?
? ?
识别交易功能时,要 按 基本处理 elementary process 的原则进行识别
? ?
? ?
用来估计功能的复杂度,从而为功能估算出合适的FP数
? ?
? ?
? ?
? ?
【 在开发完成后的应用系统的生命周期内,应用系统的 规模 计算为 AFP = ADD 】
【 在项目增强后,应用系统的 规模 计算为: AFPA = (AFPB +ADD + CHGA) - (CHGB +DEL) // CHGA 变更后的功能规模, CHGB 变更前的功能规模, AFPA 增强项目后的功能规模,AFPB 增强项目前的功能规模 】
? ?
? ?
在进行计数实践的时候,按照估算的时机,或者文档的完备性,可以分为 3 种估算方法
? ?
只 用识别出 数据功能,即 ILF 和 EIF 的数量
然后 按 公式 35*ILF + 15* EIF 计算出 未调整的功能点数
? ?
Indicative方法基于如下假设:
? ?
平均情况下,每个ILF对应3个EI(对应添加、修改、删除这三个操作)、2个EO(对应两种统计报表操作)和1个EQ(对应查询操作);
平均情况下,每个EIF对应1个EO和1个EQ;
公式中的35和15这两个权重,则是全部ILF、EIF的复杂度默认为"低",EI、EO、EQ的复杂度默认为"中",再考虑系统整体的功能性得出的。???
? ?
识别出 数据功能,以及 交易功能, 即 ILF 和 EIF 的数量 以及 EI、EO、EQ的数量
然后 按公式 10*ILF + 7* EIF + 4*EI + 5*EO + 4*EQ 计算出 未调整的功能点数
? ?
识别5类功能的功能个数
识别各功能的功能要素,基于功能要素的数量,使用《功能元素复杂度计算表》确定各个功能的复杂程度,根据《功能点数与复杂度之间的对应关系》 查出相应功能的 功能点数
汇总所有的功能点数为 未调整的功能点数
? ?
Indicative方法 和 Estimated方法,均是 是 详细功能点估算方法 的简化。
Estimated方法 就是 按中等复杂度进行估算
? ?
使用NESMA Estimated方法 估算未调整的功能点数时,可以基于 复用程度、修改类型进行对各功能的 功能点数进行调整, 调整系数 为 复用程度系数* 修改类型系数
复用程度 | 系数 |
高 | 1/3 |
中 | 2/3 |
低 | 1 |
? ?
修改类型 | 系数 |
新增 | 1 |
修改 | 0.8 |
删除 | 0.2 |
? ?
? ?
? ?
功能要素复杂度计算表
? ?
功能点数与复杂度之间的对应关系
功能点数 | 功能 | ?? | ?? | ?? | ?? |
复杂度 | ILF | EIF | EI | EO | EQ |
低 | 7 | 5 | 3 | 4 | 3 |
中 | 10 | 7 | 4 | 5 | 4 |
高 | 15 | 10 | 6 | 7 | 6 |
? ?
? ?
依据行业数据,确定CF【规模变更调整因子】,使用公式 S = UFP * CF
AE = (PDR *S)*SWF * RDF
其中:PDR 为生产率,取行业数据, SWF软件因素调整因子【完整性级别调整因子* 应用类型调整因子 *质量及特性调整因子】,RDF 开发因素调整因子【开发语言,开发团队背景】
D = 1.227 *( AE/176)^0.404
? ?
在规模估算时, 根据 项目阶段,使用不同的NESMA方法
在估算功能点时,要考虑复用程度,按 低/中/高 分类,各自取值为 1 、 2/3 、 1/3 各预设功能点值
详细功能点估算时,要计算 数据功能和交易功能的复杂度,基于复杂度计算 功能点,即得出各项功能的 功能点数
? ?
UFP 为应用在安装以后向用户提的 未经调整的功能点,
CFP 为额外的转换功能的未经调解的功能点
ADD = 升级项目中增加的未经调整的功能点
CHGA = 升级项目中改变的功能在改变后所具有的未经调整的功能点 CFP = 额外的转换功能的未经调整的功能点
VAFA = 升级后的应用的调整系数
DEL = 被删除的功能的未经调整的功能点
VAFB = 升级前的应用的调整系数
基线 AFP = ADD * VAF //
ADD = 安装的功能的
UFPC VAF = 调整系数
应用升级后 AFP = [(UFPB+ADD+CHGA) – (CHGB+DEL)]*VAFA //
UFPB = 应用升级前的未经调整功能点
ADD = 新增功能的 UFPC
CHGA = 升级后的修改功能的 UFPC
CHGB = 升级前的修改功能的 UFPC
VAFA = 升级后的调整系数 【注意该公式中不包含转换功能, 因为转换功能与应用直接提供的功能无关 】
? ?
? ?
? ?
按 功能点计算出 工作量后,再 根据下面的14项系统基本特征 评分得出调整系数,然后进行调整
? ?
14项系统基本特征
? ?
上面14项目每个项目的分值 从0 到 5分
计算公式是: ∑14项因子*0.01 + 0.65, 即14项目 加总后 * 0.01 + 0.65
? ?
? ?
在估算功能点后,根据计数时机,按规模调整系数进行规模调整,从而确定 未调整的功能点
计数时机 | 系数 |
早期 | 1.39 |
中期 | 1.22 |
完成 | 1.0 |
? ?
估算出未调整的 功能点后,再 根据软件因素,和开发因素,一共5项调整因素计算得出的调整系数,然后进行调整
计算公式是: ∏ 5项因子, 5 项得分 相乘
? ?
因素 | 得分范围 |
应用类型 | 1.0~2.0 |
质量特性 | 0.9~1.1 |
完整性级别 | 1.0~1.3 |
开发语言 | 0.6~1.5 |
开发团队背景 | 0.8~1.2 |
【 质量特性有4个维度,总体上应该是 8 个调整因素】
? ?
应用类型
应用类型 | 描述 | 调整因子 |
业务处理 | 办公自动化系统、日常管理及业务处理用软件等 | 1.0 |
应用集成 | 企业服务总线、应用集成等 | 1.2 |
科技 | 科学计算、仿真、基于复杂算法的统计分析等 | 1.2 |
多媒体 | 多媒体数据处理;地理信息系统;教育和娱乐应用等 | 1.3 |
智能信息 | 自然语言处理、人工智能、专家系统等 | 1.7 |
系统 | 操作系统、数据库系统、集成开发环境、自动化开发/设计工具等 | 1.7 |
通信控制 | 通信协议、仿真、交换机软件、全球定位系统等 | 1.9 |
流程控制 | 生产管理、仪器控制、机器人控制、实时控制、嵌入式软件等 | 2.0 |
? ?
质量特性
调整因子 | 判断标准 | 调整因子 |
分布式处理 | 没有明示对分布式处理的需求事项 | -1 |
?? | 通过网络进行客户端/服务器及网络基础应用分布处理和传输 | 0 |
?? | 通过特别的设计保证在多个服务器及处理器上同时相互执行应用中的处理功能 | 1 |
性能 | 没有明示对性能的特别需求事项或仅需提供基本性能 | -1 |
?? | 应答时间或处理率对高峰时间或所有业务时间来说都很重要,存在对连动系统结束处理时间的限制 | 0 |
?? | 为满足性能需求事项,要求设计阶段开始进行性能分析,或在设计、开发阶段使用分析工具 | 1 |
可靠性 | 没有明示对可靠性的特别需求事项或仅需提供基本的可靠性 | -1 |
?? | 发生故障时带来较多不便或经济损失 | 0 |
?? | 发生故障时造成重大经济损失或有生命危害 | 1 |
多重站点 | 在相同的硬件或软件环境下运行 | -1 |
?? | 在设计阶段需要考虑不同站点的相似硬件或软件环境下运行需求 | 0 |
?? | 在设计阶段需要考虑不同站点的不同硬件或软件环境下运行需求 | 1 |
质量因子 计算公式
质量系数 = 1 + 0.025* 以上调整因子之和
? ?
完整性级别
完整性级别 | 调整因子 |
没有明确的完整性级别或等级为C/D | 1.0 |
完整性级别为A/B同时为达成完整性级别要求采取了特殊的设计及实现方式 | 1.1 |
完整性级别为A同时为达成完整性级别要求在软件开发全生命周期均采取了特定、明确的措施 | 1.3 |
? ?
开发语言
开发语言 | 调整因子 |
C及其他同级别语言/平台 | 1.5 |
JAVA、C++、C#及其他同级别语言/平台 | 1.0 |
PowerBuilder、ASP及其他同级别语言/平台 | 0.6 |
? ?
开发团队背景
开发团队背景 | 调整因子 |
为本行业开发过类似的软件 | 0.8 |
为其他行业开发过类似的软件,或为本行业开发过不同但相关的软件 | 1.0 |
没有同类软件及本行业相关软件开发背景 | 1.2 |
? ?
? ?
例如, 使用NESMA 估算功能点法,估算出 功能点为 345.87 , 经规模调整后为 480.75 , 基准生产率为7.10 人时/功能点 , 那么 工作量 = 480.75 功能点 * 7.10 人时/ 功能点 =3,413.325 人时 【480.75*7.10=3,413.325 人时 】 = 3,413.325/8 = 426.6656 人天
? ?
【规模调整因子是 根据估算时机确定的,上例是 以早期 1.39 取值的】
? ?
例如, 调整因子 得分如下
应用类型 | 1.00 |
质量特性 | 1.08 |
完整性级别 | 1.30 |
开发语言 | 0.60 |
开发团队背景 | 1.00 |
? ?
调整系数 为 1*1.08 * 1.3 *.6 * 1 = 0.8424
? ?
所以调整后的 工作量 = 426.6656 人天 * 0.8424 = 359.4231 人天
? ?
【基准生产率可以查行业数据,一般取中位数】
? ?
? ?
工期 = 1.277 * ( 工作量 /176 ) ^ 0.404
【 此公式 中工作量的单位是 人时, 工期的单位是 月】
? ?
例如, 工作量为 359.4231 人天 , 转换为 人时 为 3,413.325 人时, 计算得出 工期 为 1.227*( 3,413.325/176)^0.404=4.065 即 工期为 4.065 月
? ?
进一步 估算团队规模: 359.4231 人天 = 359.4231/22= 16.3374 人月, 16.3374 人月 / 4.065 月 = 【 16.3374/4.065 】 4.019 人
? ?
? ?
? ?
软件开发价格 = 开发工作量 * 开发费用/ 人月
其中:
开发工作量 = 估算工作量 * 风险系数 * 复用系数
开发费用/人月 = 【工资 + 国家规定的福利 + 奖金以及奖励 + 办公成本 + 人力资源成本 + 设备/基础设施 + 税金和利润 】 * 管理系数 * 优质系数
国家规定的福利 = 工资 * 0.476
奖金以及奖励 = 工资 * 1/5
办公成本 = 工资 * 1/3
人力资源成本 = 工资 * 1/5
设备/基础设施 = 工资 * 0.15
税金和利润 = 工资 * 1/3
? ?
管理系数 取值于 1~ 1.2
优质系数 按 ISO9000 质量 或者 CMMI 认证确定,分别取值 1.05, 1.1,1.2,1.3
? ?
一般 综合下来, 按 平均月薪 * 3.23 作为开发费用/人月
? ?
人月开发费用,也可以采取 行业基准数据, 例如 2019年软件开发行业基准人月单价 2.8767 万元 /人月, 不包含 直 接非人力成本
? ?
继续 上例 359.4231 人天 换算为 人月, 为 359.4231/21.75=16.5252 人月,软件开发价格为 47.538 万 【 16.5252 * 2.8767=47.538 】
? ?
如果采用 月平均工资 * 3.23, 例如 月平均工资为 1.5W , 则软件开发价格为 80.0646 万 【 16.5252*1.5 *3.23 = 80.0646 】
? ?
? ?
注意, FPA 方法是按 瀑布模式 运作项目的,如果是采用敏捷模式,工作量上应该要少很多。。。
? ?
? ?
? ?
? ?
? ?
对于系统集成项目
? ?
? ?
? ?
前面部分所述的是软件开发部分, 软件开发之后,还需要进行 实施、运维支持,也存在相应的费用。
? ?
基于 Odoo 开发应用系统,存在3个优势
1,Odoo自身原本拥有大量的 应用
2,Odoo框架的 复用程度高
3,采用敏捷管理项目,比传统的瀑布模式更有效率
? ?
? ?
本文是学习笔记,难免有理解的错误,欢迎指正
? ?
基于 功能点 估算项目规模 FPA,以及估算软件开发成本 [更新]
标签:处理 通用 敏捷管理 平均情况 help 开发语言 处理过程 ott The
原文地址:https://www.cnblogs.com/odoouse/p/13245945.html