前言

本文的目标读者是从事软件行业想快速了解软件开发过程工作量评估的人员。软件工作量评估方法很多,如代码行法、类比法、WBS、故事点、用例点、NESMA、FPA、cosmic、COCOMOⅡ等。本文只是选取主流评估方法进行简述,每一种方法在实际操作过程中有若干条计数规则,在此并未阐述,并不能作为评估工作的实施指南。实际使用方法时,需以各方法发布机构发布的官方文档为准。

一、 功能点 FPA 方法

(一) 简介

FPA 是从用户角度出发度量软件规模的一种方法。它从用户的角度出发,将系统分为数据功能和事物功能两大类,分别根据具体的规则来计算功能点,最后结合系统的特征因子来调整功能点数, 从而得到最终的系统规模。

FPA 较适用于商业数据处理、管理信息系统的估算,因为它能更好地反映系统需求上的复杂度和数量。从满足客户需求的角度讲,FPA 具有阶段性,对用户早期参与项目管理、项目经理制定项目计划更有意义。

(二) 重要概念

功能点估算法是从用户视角出发,对软件的规模从逻辑设计的角度进行度量的标准方法。

在功能点估算的过程中,以下概念应贯穿始终:

1、 用户视角

用户视角(User View)是指功能点被用户所认可,由用户需求书面正式描述,且独立于所采用的开发技术。

2、 穿越系统边界

穿越系统边界(Application Boundary)是指数据或控制信息由系统内发送到系统外,或由系统外发送到系统内。
是否穿越系统边界是 FPA 重要的判断标准。

3、 IPO 的异同

输入(Input)、处理过程(Process)和输出(Output)的同与不同亦是FPA 重要的判断标准。

(三) FPA 估算方法基本步骤

1、 收集可得的文档

文档可以包括需求、数据/对象模型、类图、数据流图、用例、过程描述、报表显示、界面显示、用户手册,以及其它软件开发文档。

2、 确定计数范围和边界并识别功能用户需求

计数范围和边界需识别计数目的。不同的计数目的决定了计数范围和软件边界的划分。实际使用过程中通常为系统的管理边界, 特殊系统会以架构为边界。

3、 度量数据功能

数据功能的计算工序(Counting Procedures)包括以下活动:

FPA 将数据功能分为两类,分别为内部逻辑文件(ILF)和外部接口文件(EIF)。

1) 识别内部逻辑文件 ILF

内部逻辑文件(Internal Logical File,简称ILF)是在系统边界内部维护的一组用户可识别的逻辑上相关的数据或控制信息。ILF 的首要目的是保存由被度量系统的一个或多个基本流程维护的数据。

2) 识别外部接口文件EIF

外部接口文件(External Interface File,简称 EIF)是用户可识别的、逻辑相关的数据组或控制信息组,其由被度量应用所引用,但在另一应用边界内维护。EIF 的主要目的是保存由被度量应用的一个或多个基本过程引用的数据。这意味着一个应用的 EIF 必定是另一个应用的ILF。

3) 识别数据功能 DET

数据元素类型(Data Element Types,简称DETs)是指在一个ILF 或EIF 内,用户可认知的、唯一的、非重复的字段。如客户姓名、年龄、地址、联系方式等。

4) 识别数据功能 RET

记录元素类型(Record Element Types,简称 RETs)是指在一个ILF 或EIF 内,用户可认知的数据元素子集。如客户的家庭信息为客户信息的 RET 。

5) 确定ILF 或EIF 的贡献度

根据每一个已确认的 ILF 和EIF 的复杂度(DETs 和RETs 数量),对其进行分类,并赋予未调节功能点数值(Unadjusted Function Points,简称UFP)的过程,即为确定其贡献度。

6) 确定ILF 或EIF 的贡献度值

对用户而言,ILF 与EIF 的业务意义是完全不同。因此,对于贡献度相同的 ILF 和EIF,其未调节功能点值是不同的。

4、 度量事物功能

事物功能的计算工序(Counting Procedures)包括以下活动:

FPA 将事物功能分为三类,外部输入(EI)、外部输出(EO)和外部查询(EQ)。

1) 识别外部输入(EI):是处理来自系统边界外部的数据或控制信息的一个基本过程。其首要目的(Primary Intent,简称 PI) 是维护一个或多个ILFs 或者去改变系统行为。

2) 识别外部输出(EO):是发送数据或控制信息到系统边界外部的一个基本过程。其首要目的(PI)是通过处理逻辑呈现信息给用户,并非或者另外检索数据或控制信息。

3) 识别外部查询(EQ):是发送数据或控制信息到系统边界外部的一个基本过程。其首要目的(PI)是通过从一个 ILF 或EIF 检索数据或控制信息,呈现信息给用户。

4) 基本过程

把功能用户需求组合或分解为最小活动单元,满足以下条件:

  1. 对用户有意义,构成一个完整的事务;

  2. 自包含;

  3. 使应用的业务保持持续状态,

例 :功能用户需求要求提供维护员工信息的功能。该需求被分解为较小的工作单元,如添加员工信息、修改员工信息、删除员工信息和查询员工信息。

5) 识别事物功能 DET

数据元素类型(Data Element Types,简称DET)是指在一个EI、EO 或EQ 内,用户可认知的、唯一的、非重复的字段。

6) 识别事物功能 FTR

引用文件类型(File Types Referenced,简称FTR)是指一个交易功能读取或维护的一个ILF,或者一个交易功能所读取的一个
EIF。

7) 确定EI、EO 和EQ 的贡献度

根据每一个已确认的 EI、EO 和EQ 的复杂度(FTRs 和DETs 数量),对其进行分类,并赋予未调节功能点数值(Unadjusted Function Points)的过程,即为确定其贡献度。

8) 确定EI、EO 和EQ 的贡献度

我们应注意到,贡献度相同的 EI、EQ,其未调节功能点值是相同的;与EI、EQ 贡献度相同的 EO,其未调节功能点值略高。

5、 计算功能规模

1) 计算未调整功能点数

UFP= ILFs+EIFs+EIs+EOs+EQs

2) 确定系统调节因子

在实际软件项目开发过程中因技术因素和环境因素会对软件项目工作量有不同程度的影响。可根据组织级基准库设定相关调整因子(System Adjustment Factor,简称SAF)。如应用类型、质量特征、开发语言、团队背景、评估时点等。

计算调整后的功能点数  AFP=UFP*SAF

3) 确定生产率PDR

可根据系统特点测算组织级系统基准生产率。

4)测算工作量

工作量  AE=AFP*PDR

6、 报告功能点计数结果

将功能点计数过程和工作量计数结果编写报告呈现给读者。

二、 COSMIC 方法

(一) 简介

COSMIC 是通用软件度量国际联盟的简写(Common Software Measurement International Consortium,COSMIC),它成立于1998 年,是一个由全球软件度量专家组成的非盈利自愿性组织,致力于软件规模度量方法的研究与推广。2002 年 1 月COSMIC 所推出的全功能点规模度量方法成为了 ISO 的标准,最新标准为 ISO/IEC 19761:2011“软件工程—COSMIC—功能规模度量方法”。

COSMIC 方法包含了一组应用模型、原则、规则和过程度量给定软件的功能性用户需求的方法。其结果是一个数字化的“量化数值”,根据 COSMIC 方法得到的软件功能规模。它适用于以下领域的软件功能度量:

业务应用软件,这类软件通常用于支持业务管理。如银行、保险、电信等。 实时软件。用于过程控制和自动数据获取软件。如嵌入式程序、中间件。平台软件,如可复用的构建及设备驱动程序等。

功能规模是通过“数据移动(Data movement)”的个数来度量。

(二) 原理

功能规模是通过“数据移动(Data movement)”的个数来度量。

(三) 度量过程

COSMIC 方法的度量分为三个阶段:

1、 度量策略阶段

确定度量目的 确定度量范围 确定功能用户 确定需求描述详细程度

2、 映射阶段

识别功能处理 识别兴趣对象与数据组(兴趣对象指软件要处理的数据对象,如客户;数据组是一组兴趣对象属性的组 合,如客户姓名、年龄,联系方式等)识别数据属性识别数据移动(输入、输出、读、写)

3、 度量阶段

新增需求计数变更需求计数本地化规则计数(定制规则)生成度量报告

(四) 数据移动种类

4 种类型的数据移动:输入(Entry)、输出(eXit)、读(Read) 和写(Write)。

输入(E),是从用户穿越被度量系统的范围传输数据到系统内部,这里提到的用户既包括系统的使用人员,也包括其他软件或者硬件系统。输出(X),是一个数据组从一个功能处理通过范围移动到需要它的用户。读(R),是从永久性的存储设备读取数据。写(W),是存储数据到永久性的存储设备。

(五) 示例

用户借阅图书,图书管理员需录入借阅人信息并保存到数据库中,同时提供查询登记列表功能。此时录入借阅人信息为一个输入
CFP,提示信息为一个输出 CFP,保存录入信息为一个写CFP,查询登记列表功能查询条件输入为一个输入CFP 和从数据库读取登记信息为一个读CFP。然后汇总计算出总功能点数为 5 个 FP。

原则:每一个功能必须有一个输入,一个输出或一个写,即至少2 个CFP

(六) 工作量测算

参考FPA 方法和用例点方法工作量测算方法,设定相关技术调整因子和环境调整因子以及生产率,测算软件工作量。

使用COSMIC 方法要求度量者对软件系统的实现非常清楚,了解系统的内部结构,并对系统能够明确划分出应用层级,以及层级之间的数据处理和数据移动。

三、用例点方法

用例点方法(use case point method,UCP),是由Gustav Karner在1993年针对FPA(function point access)方法而提出的一种改进方法,是在面向对象开发方法中基于用例估算软件项目规模及工作量的一种方法。UCP的基本思想是利用已经识别出的用例和执行者,根据他们的复杂度分类计算用例点。

用例模型(Use-Case Model)是系统功能及系统环境的模型, 它可以作为客户和开发人员之间的契约。用例贯穿整个系统开发的一条主线。同一个用例模型即为需求工作流程的结果,可当做分析设计工作流以及测试工作流程的输入使用。

UCP 估算是以用例模型为基础,通过计算用例点和项目生产率的取值,计算用例点和工作量的换算,得到项目开发所需的以人小时数为单位的工作量。UCP 算法受到 FPA 和MKⅡ方法的启发,在对Use Case 的分析的基础上进行加权调整得出的一种改进方法。

UCP 估算方法的基本步骤如下:

1) 对每个角色进行加权,计算未调整的角色的权值UAW;

2) 计算未调整的用例权值UUCW;

3) 计算未调整的用例点 UUCP;

4) 计算计数和环境因子 TEF;

5) 计算调整的用例点UCP;

6) 根据规模和工时的转换因子来计算工作量。

(一) 估算用角色值UAW

首先将软件需求用Use Case 方式表达,其次利用参与者的数量乘以相应的权值来计算 UAW。


(二) 估算用例权值 UUCW

利用Use Case 的数量乘以相应的权值来计算 UUCW。

(三) 估算未调整的用例点 UUCP

估算未调整的用例点(UUCP),将角色权值和用例权值相加即为未调整的用例点数:

UUCP=UAW+UUCW

(四) 估算技术和环境因子 TEF

UCP 估算方法中有 21 个适用性因子,其中包括开发系统的技术复杂度和开发环境,即分为 13 个技术复杂度和 8 个环境复杂度因子。

1、技术复杂度因子 TCF:其中权重为该复杂度对系统的影响权值,value 为影响等级 0-5 之间的值来确定。0 表示技术因子与本项目无关;3 表示技术因子对本项目的影响一般;5 表示改技术因子对本项目有很强的影响。

2、环境复杂度因子:其中权重为该复杂度对系统的影响权值,value 为影响等级 0-5 之间的值来确定。0 表示项目组成员都不具备该因素;3 表示环境因子对本项目的影响程度为中;5 表示本项目组成员都具有该因素。

(五) 估算UCP

以上UUCP、TCF、ECF 三个参数每个参数都是独立定义和计算。经过技术因子和环境因子对UUCP 调整后得到UCP 完整公式为:

UCP=UUCPTCFECF

(六) 估算工作量

项目工作量估算也就是 UCP 的值乘以相对应的生产率PF。

工作量  AE=UCP*PF

3种常见软件项目工作量评估方法简述相关推荐

  1. 软件项目工作量评估方法简述之COSMIC功能点方法

    (一) 简介 COSMIC 是通用软件度量国际联盟的简写(Common Software Measurement International Consortium,COSMIC),它成立于1998 年 ...

  2. 关于软件项目工作量估算的若干问题

    作者:张克强 软件项目工作量估算从估算依据上看可以分成如下两类: 1,基于规模估算 2,基于工作量估算 基于规模估算的情况下,需要估算软件项目的规模.本文首先来看规模方面的问题. 问题1:如何表达规模 ...

  3. 软件项目工作量估算中使用的功能点方法是什么?

    简单的说,功能点方法是一种估算软件项目大小的方法,它是从用户视角出发,通过量化系统功能来度量软件的规模,这种度量主要基于系统的逻辑设计.功能点规模度量方法在国际上的应用已经比较广泛,并且已经取代代码行 ...

  4. 软件项目规模评估方法之软件源代码行法

    软件项目规模的评估方法有很多,我们近期会把这些方法一一进行梳理然后发布出来供大家学习了解.今天我们来说说软件项目规模评估方法中的软件源代码行法. 软件源代码行法(SLOC)是以软件的源代码行数量来计算 ...

  5. 软件项目工作量估算之软件复用程度分析

    软件工作量估算是我们在对一个软件项目成本估算过程中,在完成软件规模估算后需要进行的第2项估算工作.在软件项目工作量估算过程中,我们除了要进行风险分析外,还要考虑软件复用的程度. 软件复用就是将已有的软 ...

  6. 常见软件项目开发模式思考

    一.软件项目 在2000左右 程序员还是一种比较罕见的工作,那是的个人台式机还是当时富裕家庭的高级娱乐用品,一开始网络程序员部分前后端,PHP.JSP.ASP这些技术形成了最早的网络程序.BS 系统 ...

  7. 几种常见软件过程模型的比较

    瀑布模型 瀑布模型(经典生命周期)提出了软件开发的系统化的.顺序的方法.其流 程从用户需求规格说明开始,通过策划.建模.构建和部署的过程,最终提供一 个完整的软件并提供持续的技术支持. 优点: 1. ...

  8. 四种常见软件开源协议介绍-GPL、LGPL、BSD、Apache

    今天介绍四种常见的开源软件协议: GPL(GNU General Public License) LGPL(GNU Lesser General Public License) BSD(Berkerl ...

  9. 浅析软件研发成本估算过程之估算软件项目工作量

    在完成规模估算后,应当开展工作量估算工作,若当前项目未开展规模估算,也可直接启动工作量估算工作.工作量估算时,可采用方程法.类比法和类推法. 方程法:即基于基准数据建立参数模型,通过输入各项参数,确定 ...

  10. 【项目篇-项目选题与类型】创赛项目来源、项目选题建议;四种常见类型项目各自内容的侧重点与区别

    目录 创赛项目来源 软件平台类 创新想法 命题类比赛项目 为自己的毕设/课设做准备 学长学姐既有专利/论文/毕设转化 老师/企业给题 商务创业类:建立商业模式.服务体系,提出解决方案,社会实践转化,谋 ...

最新文章

  1. python从数据库取数据保存为excel_python读取数据库表数据并写入excel
  2. java中function实现_Java中的functor实现
  3. OpenCv的连通域操作
  4. WINCE BSP中source文件中的宏定义
  5. linux文件控制驱动程序,Linux设备驱动程序学习(6)-高级字符驱动程序操作[(3)设备文件的访问控制]...
  6. Scrum立会报告+燃尽图(十月二十三日总第十四次)
  7. SSD硬盘的几个常见概念SATA、PCIE、M.2、AHCI、NVME总结
  8. JS学习——贪吃蛇代码(简易版)
  9. 单片机和嵌入式系统的区别
  10. PPT汇报片配音及视频格式生成方法
  11. mysql 整型最大值_在SQL中如何获取整数的最大值?
  12. Android中 dip 和 px 的关系
  13. 如何把妹子拍得更好看?
  14. 教你如何查看已经撤回的微信消息!
  15. python中的yield是什么意思_python中yield指的什么意思
  16. android适配器报空指针错误,适配器总是出现空指针问题
  17. CAD基础+常用快捷(一)
  18. Echarts折线图曲线图和三维图
  19. 苹果开发者账号个人(Individual)、公司(Company/Organization)、企业(Government Organization)账号区别
  20. Safari不能浏览网页的一种解决方法

热门文章

  1. GHOST XP SP3快速装机版
  2. 详解动态代理及其实现原理
  3. android按钮延迟显示出来,android Toast显示延迟的优化方案
  4. 【web素材】04—40款个人主页简历网页模板及企业单页
  5. ubuntu18.04 Nvidia 显卡的风扇调速及startx的后果 --转载
  6. (转载)人工智能在围棋程序中的应用——复旦大学附属中学(施遥)
  7. 地下城php补丁怎么用,dnf补丁怎么用,教你如何学会使用补丁
  8. winpe修复改linux工具,巧用WinPE修复故障系统的解决方法
  9. ecshop二次开发指南
  10. 用python写了个简单的178漫画下载器