再次学习GJB8000的功能点计算方法,将笔记记一下


什么是功能点估算方法

功能点估算方法是从用户角度来估算软件规模,是基于客观的外部应用接口和主观的内部应用复杂度以及总体的系统性能特征,对软件功能规模进行间接定量估算。

GJB8000的功能点是通过IFPUG功能点估算方法进行估计的。


功能点估算步骤

  1. 确定用户功能需求
  2. 分解功能需求
  3. 确定加权因子
  4. 计算未调整功能点数
  5. 确定调整因子
  6. 计算交付功能点数

流程图如下:

#mermaid-svg-MWPs1LN9R31Qr5fS {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-MWPs1LN9R31Qr5fS .error-icon{fill:#552222;}#mermaid-svg-MWPs1LN9R31Qr5fS .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-MWPs1LN9R31Qr5fS .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-MWPs1LN9R31Qr5fS .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-MWPs1LN9R31Qr5fS .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-MWPs1LN9R31Qr5fS .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-MWPs1LN9R31Qr5fS .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-MWPs1LN9R31Qr5fS .marker{fill:#333333;stroke:#333333;}#mermaid-svg-MWPs1LN9R31Qr5fS .marker.cross{stroke:#333333;}#mermaid-svg-MWPs1LN9R31Qr5fS svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-MWPs1LN9R31Qr5fS .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-MWPs1LN9R31Qr5fS .cluster-label text{fill:#333;}#mermaid-svg-MWPs1LN9R31Qr5fS .cluster-label span{color:#333;}#mermaid-svg-MWPs1LN9R31Qr5fS .label text,#mermaid-svg-MWPs1LN9R31Qr5fS span{fill:#333;color:#333;}#mermaid-svg-MWPs1LN9R31Qr5fS .node rect,#mermaid-svg-MWPs1LN9R31Qr5fS .node circle,#mermaid-svg-MWPs1LN9R31Qr5fS .node ellipse,#mermaid-svg-MWPs1LN9R31Qr5fS .node polygon,#mermaid-svg-MWPs1LN9R31Qr5fS .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-MWPs1LN9R31Qr5fS .node .label{text-align:center;}#mermaid-svg-MWPs1LN9R31Qr5fS .node.clickable{cursor:pointer;}#mermaid-svg-MWPs1LN9R31Qr5fS .arrowheadPath{fill:#333333;}#mermaid-svg-MWPs1LN9R31Qr5fS .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-MWPs1LN9R31Qr5fS .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-MWPs1LN9R31Qr5fS .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-MWPs1LN9R31Qr5fS .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-MWPs1LN9R31Qr5fS .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-MWPs1LN9R31Qr5fS .cluster text{fill:#333;}#mermaid-svg-MWPs1LN9R31Qr5fS .cluster span{color:#333;}#mermaid-svg-MWPs1LN9R31Qr5fS div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-MWPs1LN9R31Qr5fS :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

确定用户功能需求
分解功能需求
确定加权因子
计算未调整功能点数
确定调整因子
计算交付功能点数

具体的实施细节

确定用户功能需求

这里的用户功能需求不包括质量需求和软件开发和维护等过程的技术以及环境需求。

分解功能需求

按照下表的功能单元类型进行分解,尽量分解到最小的功能单元。

数据功能 事物功能
内部逻辑文件
外部接口文件
外部输入
外部输出
外部查询
  • 内部逻辑文件(ILF):用户可确认的一组在软件内部维护的逻辑相关的数据或控制信息。内部逻辑文件的主要用途是通过本软件的一个或者更多的基本过程来控制数据。
  • 外部接口文件(EIF):用户可确认的一组由本软件引用但有其他软件维护的逻辑相关的数据或者控制信息。外部接口文件的主要用途是通过本软件的一个或者更多的基本过程来控制数据引用,即一个软件的外部接口文件应是另一个软件的内部逻辑文件。
  • 外部输入(EI):一个对来自本软件边界意外的数据或者控制信息进行处理的基本过程。外部输入的主要用途是维护一个或更多的内部逻辑文件和(或)改变系统的行为。
  • 外部输出(EO):一个向本软件边界外发送数据或控制信息的基本过程。外部输出的主要用途是通过处理逻辑或者通过数据或控制信息的检索给用户提供信息。该处理过程应至少包含一个数学公式或者计算,产生到处数据,维护一个或多个内部逻辑文件,或改变系统行为。
  • 外部查询(EQ):一个向本软件边界外发送数据或控制信息的基本过程。外部查询的主要用途是通过外部接口文件中的内部逻辑文件进行数据或者控制信息的检索,给用户提供信息。这一处理逻辑不包含数学公式或计算,不产生导出数据,该过程既不维护内部逻辑文件也不改变系统行为。

确定加权因子

功能赴澳洲读按照高、平均或低进行划分。它由某一功能单元涉及的数据元素类型数和记录元素类型数或引用文件类型数共同决定。

数据元素类型数(DET):唯一的、用户可识别的、非重复的字段
记录元素类型(RET):用户可识别的内部逻辑文件或者外部接口文件中的一个数据元素子集;
引用文件类型(FTR):被处理事物所读写或读取的文件,应是内部逻辑文件或者外部接口文件。

ILF与EIF的复杂度矩阵对应表

记录元素类型数 数据元素类型数(1-19) (20-50) (>51)
1 平均
2-5 平均
大于6 平均

EO的复杂度矩阵对应表

引用文件类型数 数据元素类型数 1-5 6-19 >20
0-1 平均
2-3 平均
大于等于4 平均

EI的复杂度矩阵对应表

引用文件类型数 数据元素类型数 1-4 5-15 >16
0-1 平均
2 平均
大于等于3 平均

EQ的复杂度矩阵对应表

引用文件类型数 数据元素类型数 1-5 6-19 >20
0-1 平均
2-3 平均
大于等于4 平均

根据功能单元的复杂度属于高、平均、或者低,按照加权因子对应表确定各功能单元的加权因子。

加权因子对应表

功能单元类型 功能复杂度 低 平均
内部逻辑文件 7 10 15
外部接口文件 5 7 10
外部输入 3 4 6
外部输出 4 5 7
外部查询 3 4 6

计算未调整功能点数

分别将外部输入(EI)、外部输出(EO)、外部查询(EQ),内部逻辑文件(ILF)以及外部接口文件(EIF)的个数和与之对应的加权因子相乘,然后再把各乘积加在一起,其结果即为未调整功能点数(UFP)。

UFP=NEI∗θEI+NEO∗θEO+NEQ∗θEQ…UFP= N_{EI} * \theta_{EI}+ N_{EO} * \theta_{EO}+ N_{EQ} * \theta_{EQ} \dots UFP=NEI​∗θEI​+NEO​∗θEO​+NEQ​∗θEQ​…

其中,NNN是个数,θ\thetaθ是加权因子

确定调整因子

通用系统特征

通用系统特征包括但不限于以下14个方面:

  1. 数据通信
  2. 分布式数据处理
  3. 性能
  4. 系统配置要求
  5. 事物率
  6. 在线数据输入
  7. 最终用户效率
  8. 在线更新
  9. 复杂处理
  10. 可重用性
  11. 易安装性
  12. 易操作性
  13. 多工作场所
  14. 易变更性

系统特征影响度

每个系统特征影响度取值范围0到5,其中0表示未出现影响或无影响,5表示强影响。

调整因子计算公式

将所有系统特征影响度相加获得总影响程度,调整因子VAF的计算公式如下

VAF=0.65+(∑i=1nNi/100)VAF = 0.65 + (\sum^n_{i=1}N_i/100)VAF=0.65+(i=1∑n​Ni​/100)

式中,n是根据实际影响确定的系统性能特征个数(不限于14个),N是第i个影响因素的影响程度。

计算功能点数

将未调整的功能点数(UFP)和调整因子(VAF)相乘饿到功能点数

FP=UFP∗VAFFP = UFP * VAF FP=UFP∗VAF

估算方法示例

GJB8000里还有一个例子,讲的也很好,有兴趣的可以去看看。我不想再敲了。

IFPUG软件功能点计算方法相关推荐

  1. 关于软件功能点评估的问题(一)

    通过仅两个多月的学习和使用,目前对软件功能点评估有一些初浅的认识,望高人前辈指点.公司中有做过评估的同事,但我在经历多次评估后,对其功能评估方法不是完全认可. 评估中遇到的情况如下: 情况一: 在评估 ...

  2. PSP DAILY软件功能说明书

    PSP DAILY软件功能说明书 一.开发背景 你在完成了一周的软件工程作业后,需要提交一个PSP图表,里面有4项,如下所示: 1.本周PSP表格,包含每项任务的开始.中断.结束.最终时间,格式如下: ...

  3. Android智能手机屏蔽电话与屏蔽安装软件功能

    近期做一些项目.须要对手机进行屏蔽自己的固有的功能.在此记录. Android屏蔽电话功能主要是卸载掉Phone.apk. 屏蔽安装软件功能主要是卸载掉PackageInstall.apk 以下以三星 ...

  4. python画简单的图形的代码-Python实现画图软件功能方法详解

    概述 虽然Python的强项在人工智能,数据处理方面,但是对于日常简单的应用,Python也提供了非常友好的支持(如:Tkinter),本文主要一个简单的画图小软件,简述Python在GUI(图形用户 ...

  5. 软件测试功能报告,软件功能测试报告

    <软件功能测试报告>由会员分享,可在线阅读,更多相关<软件功能测试报告(7页珍藏版)>请在人人文库网上搜索. 1.软件功能测试报告1. 概述软件名称:软件版本:(同时注明软件软 ...

  6. as5300g2 nas软件功能_【浪潮混闪存储AS5300G5-可同时提供SAN和NAS两种服务的中端混闪存储系统】价格_厂家 - 中国供应商...

    功能特性 极速性能 (1)平台升级:G5采用全新一代硬件平台,芯片升级.规格升级,性能同比上一代平均提升30%,为提高存储系统的数据处理效率提供有力支撑.同时结合G5的智能软件,如智能缓存加速.智能分 ...

  7. 小甲鱼 OllyDbg 教程系列 (三) :PJ 软件功能限制

    小甲鱼OllyDbg教程:https://www.bilibili.com/video/av6889190?p=8 https://www.freebuf.com/articles/system/87 ...

  8. 泰克示波器查眼图_泰克示波器自带上位机软件功能介绍,了解一下

    有人问,仪器背后那么多程控接口,为什么平时大家都只手动设置调试,从来没见过它们派上用场呢?今天安泰测试马工就给大家介绍一下电子工程师常用的仪器--泰克示波器的上位机软件功能,如果有你常用到的,就快快收 ...

  9. Impinj增强ItemSense软件功能,简化RFID方案部署

    日前,Impinj宣布增强ItemSense软件功能,以简化EPC Gen2 RFID方案部署,管理及监控过程.同时,该公司还推出了Monza 4i标签芯片,定位于汽车应用.此外,公司还还启动了一个拥 ...

最新文章

  1. python子类定制_在Python中实现可定制的Lexer类
  2. 混合多云架构_使用混合多云每个人都应避免的3个陷阱(第4部分)
  3. 软件可用性测试mantis,学生选课系统-软件可用性测试实验.doc
  4. python 搭建web_webpy搭建一个简单的网站
  5. [java核心外篇]__Object类与对象类型的转型
  6. 余承东:华为P50系列无5G版本,但依然流畅
  7. 什么是端到端的训练或学习?
  8. “AI+遥感”产品研究现状
  9. 实现一个基础的spelling corrector
  10. 【游戏开发创新】Unity狗屁不通文章生成器阐述点赞的意义,可生成文字长图保存到本地(Unity | 附源码 | Text转Texture长图 | 详细教程)
  11. win10怎么更新flash到最新版本【系统天地】
  12. Android 选择图片、上传图片之Matisse
  13. php面试常考函数,PHP面试常见算法、函数总结
  14. 梯度下降---偏导数及其几何意义
  15. eclipse32位和64位的区别
  16. CSS垂直居中的三种方式
  17. NB-IOT与物联网
  18. 线程让步yield实现
  19. Maven+Spring Web 项目结构在Eclipse下面的实现
  20. 【Leetcode】914. X of a Kind in a Deck of Cards

热门文章

  1. [W ParallelNative.cpp:212] Warning: Cannot set number of intraop threads after parallel work h
  2. java 保存gif图片_java gif图片保存处理逻辑
  3. 怎么实时查看mysql当前连接数呢
  4. POP3协议,SMPT协议,IAMP协议介绍:
  5. 散转程序c语言,单片机 散转表程序的使用
  6. 0x80073712_更新系统发生0x80073712错误,怎么解决?
  7. 数据库连接池的优点和原理
  8. 精美中文简历LaTex模板集锦
  9. Typora收费了,再找找免费的Markdown编辑器吗?
  10. 积微成巨(1)--collect