第一部分:功能点分析(FPA)

在这份白皮书中,Nesma提供了关于使用功能点分析(FPA)进行软件功能点估算的信息,并支持您在这个领域的活动。

该信息围绕以下六个主题展开:

1.功能点分析(FPA)简介

2.FPA是如何工作的?

3.附加的FPA指南

4.功能点分析方法

5.功能尺寸测量的ISO标准

6. Nesma和IFPUG

1、功能点分析(FPA)介绍

功能点分析(FPA)是一种测量信息系统功能大小的方法。FPA通过查看与业务中用户相关的(功能性的)事务和(逻辑的)数据文件来测量功能大小。衡量单位是“功能点”;信息系统的功能大小由一定数量的功能点表示。

功能点是衡量信息系统功能大小的良好方法;衡量单位“功能点”可以以各种方式利用。

FPA通常用于预算系统开发项目。信息系统的开发成本与其大小有关:系统越大,开发成本就越高。根据过去项目的经验,组织知道实现一个功能点需要多少小时(平均值):生产率。大小(功能点数量)× 生产率(每功能点小时数)是项目预算制定过程的基础。

FPA可用于开发和增强项目。

FPA是一种快速的方法,不需要计算机知识。假设有合适的文档,执行FPA不需要太多时间。估计对于一个需要一千个开发小时的系统,FPA可以在大约一小时内完成。

1.1.FPA提供什么?

“功能点”是唯一的测量单位,可以具体而客观地讨论待开发信息系统的大小。像“该系统大约有314个功能点”这样的陈述提供了比“这是一个相当大的系统”更多的信息。

因此,“功能点”作为衡量单位提供了以下机会:

  • 更好和更早地进行项目成本估算和预算。

使用功能用户要求,确定信息系统的功能大小(功能点数量)。利用过去已完成项目的实践经验,确定项目的预期生产率(每功能点小时数)。通过将大小和预期生产率相乘,得到项目开发过程的预算基础。

  • 更好地控制项目。

可以将功能用户要求的更改表达/大小化为功能点,使其具体化、量化和可控制。

  • 更好地沟通有关系统开发项目的信息

如果两个人进行功能点分析并确定不同数量的功能点,这必然是由于对功能用户要求和待构建系统的不同解释引起的。在进行FPA时,不清楚或不完整的功能用户要求变得可见。

  • 衡量生产率。

消耗的开发小时数除以构建和实施的信息系统的功能点数,得到项目生产率。可以将其与标准生产率进行比较。差异可以分析,并可能导致未来项目的具体控制和改进措施。

  • 衡量信息系统质量。

每功能点每单位时间的错误数量是信息系统质量的指标。

  • 提高系统开发过程的质量。

减少沟通不畅和引入新的控制措施,作为生产率和质量分析的结果,可以改善软件开发过程的质量。

1.2.FPA不提供什么?

• FPA不是一种项目管理方法

• FPA不能自动提供无误的项目估算;但在项目预算制定过程中提供重要支持

• FPA不是一种项目计划方法。

  • 项目的哪些阶段可以进行FPA?

只要了解信息系统的功能用户要求即可进行FPA。功能用户交易的数量和概念数据模型至关重要。

这可能发生在建议/可行性阶段或需求/分析阶段,但在功能设计阶段肯定会发生。在项目生命周期的早期阶段,可能需要使用指示性或估算的功能点计数来进行FPA估算,因为执行(详细)FPA所需的所有必要信息可能不可用。

  • 哪些项目阶段可以使用FPA进行估算?

FPA可以估算系统开发生命周期中每个阶段的开发工作量。实际上,根据过去项目的经验,人们知道每个项目阶段需要多少小时才能完成该阶段的每个功能点。

对于构建阶段,FPA提供了非常好的估算,因为该阶段的活动非常具体,而且在项目之间相对相似。

在信息系统的运行阶段,可以使用FPA来估算信息系统的运行成本:每年每功能点的小时数。

  • 可以使用FPA的项目类型是什么?

可以将FPA用于开发或增强项目。在增强项目中,可能会发生实施功能需要额外的技术工作量的情况,因为系统的技术构造方式使得增强项目的构建变得困难。然而,在这些情况下,FPA也指示了实际提供了多少功能。额外所需的技术修改会通过降低项目的预期生产率(每功能点所需的工时更多),与标准交付率相比来考虑。

2、FPA是如何工作的?

FPA是一种确定信息系统或项目功能大小的方法。功能大小可以用于不同的目的,例如预算。

本文介绍了FPA方法的简要描述。然而,为了进行高质量的FPA,有必要参考FPA计数实践手册。该手册描述了精确的定义、计数规则和指南。在单独的文档中,提供了许多实际示例和案例研究。

FPA执行以下步骤来确定信息系统或系统开发项目的大小:

• 步骤1:确定与用户相关的系统功能

• 步骤2:确定每个功能的功能复杂性

• 步骤3:计算系统的未调整功能点数

第1步:确定与用户相关的系统功能

FPA测量信息系统向用户提供的功能量。这些功能包括逻辑事务和逻辑数据文件。重要的是,用户需要并认可这些功能。这就是为什么FPA将这些功能称为用户功能。

FPA区分五种类型的用户功能:

• 内部逻辑文件(ILF)

• 外部接口文件(EIF)

• 外部输入(EI)

• 外部输出(EO)

• 外部查询(EQ)

内部逻辑文件包含对用户相关的永久数据。信息系统引用并维护数据。在FPA的上下文中,“维护”意味着添加、更改或删除数据。

外部接口文件也包含对用户相关的永久数据。信息系统引用数据,但数据由另一个信息系统维护(在另一个系统中,它是一个ILF)。

外部输入接收来自应用程序边界外的信息,并维护信息系统的内部逻辑文件。

示例:更新客户文件中的客户数据;处理并保存订单交易到订单信息系统中;介质不重要:纸张、屏幕、磁带、数据通信等。

外部输出呈现信息系统的信息。

示例:显示所有应付账款的列表;生成和打印发票;生成带有付款指令的磁盘;介质不重要:纸张、屏幕、磁带、数据通信等。

外部查询是外部输出的一种特殊(简单)类型。

外部查询根据唯一的标识搜索条件呈现信息系统的信息,而不应用其他处理(例如计算)。例如:显示客户号为123456789的客户的信息。

第2步:确定每个功能的功能复杂性

对于用户功能,FPA区分三个复杂性水平:

• 低

• 中

• 高

为了确定用户功能的复杂性,FPA提供了明确的标准来评估用户功能的信息处理量。这些标准可以在FPA计数实践手册中找到。

备注:在系统生命周期的早期阶段,用户功能的功能可能尚未详细到足以确定用户功能的复杂性。在这些情况下,可以进行估算功能点计数。

在估算功能点计数中,可以识别所有用户功能,但是为其分配一个默认的复杂性水平:

• 逻辑文件(ILF、EIF):低

• 用户事务(EI、EO、EQ):中

第3步:计算系统的未调整功能点数

当确定了用户功能(步骤1)及其复杂性(步骤2)后,可以使用以下矩阵为用户功能分配一定数量的功能点:

复杂性

功能类型

内部逻辑文件

7

10

15

外部接口文件

5

7

10

外部输入

3

4

6

外部输出

4

5

7

外部查询

3

4

6

对所有确定的用户功能的功能点进行求和称为未调整功能点数。

3、附加的FPA指南

本段提供了关于额外的Nesma指南的更多信息,这些指南符合IFPUG FPA指南(IFPUG CPM 4.2)的一般框架,并且倾向于对其进行澄清。因此,它们对于每个FPA计数器都可能具有很大的价值,包括那些使用IFPUG规则的人。Nesma和IFPUG的计数规则是相同的(除了一些小的差异)。关于这些以及其他额外的FPA指南的详细信息,您可以在Nesma计数实践手册CPM 2.3(英文版)中找到。

  • 3.1.(非常)早期功能点计数方法

Nesma定义了三种类型的功能点计数:

• 详细功能点计数(通常的计数方式)

• 估算功能点计数

• 指示性功能点计数

估算和指示性功能点计数方法是由NESMA开发的,以便在系统生命周期的早期进行功能点计数。Nesma的指示性功能点计数在全球范围内广为人知,被称为“荷兰方法”。关于这些早期功能点方法的详细信息,包括示例和有关这些方法准确性的统计信息,您可以在本白皮书的后续部分找到。

  • 3.2.处理物理媒体

IFPUG CPM 4.2不幸地并没有就此问题提供具体的指南。没有指南,即使是经过认证的FPA计数器对此也有非常不同的解释,结果是对应用程序确定的功能点数量存在很大差异。对于Nesma而言,物理介质本身并不会增加额外的功能。如果从不同的物理媒体读取相同的输入,则只计为一个外部输入,如果输入数据元素类型和逻辑处理是相同的。如果将相同的输出写入不同的物理介质,则在逻辑布局和逻辑处理相同的情况下,只计为一个外部输出(或外部查询)。关于这一点,IFPUG在其计数实践手册4.2中并没有做出明确的说明。

  • 3.3.使用多个选择标准进行查询(“与/或情况”)

IFPUG CPM 4.2很遗憾尚未就此问题提供具体的指导方针。没有指导方针,即使是经过认证的FPA计数器也有非常不同的解释,因此导致应用程序功能点数量的巨大差异。

这通常是一个问题;例如,一个带有州标识和姓氏的选择屏幕。用户可以输入其中一个或两个项目以选择客户(例如,显示华盛顿特区的所有客户)。

应该将每个明确的“与/或情况”视为单独的EO/EQ,还是只计算一个EO/EQ?

Nesma采用一种中间方式:

“当用户有更多选项(即,“与/或情况”)时,计算彼此相互排斥的选择。排除所有其他选择的每个选择或选择组合都单独计数”。

  • 3.4.其他额外的Nesma指南

Nesma已经针对几个其他问题制定了计数指南。尽管相关,但这些问题对功能点计数的影响要小于上述问题。所有这些提示和指南都可以在Nesma的计数实践手册(英文版)中找到。

这是其他额外计数指南的摘要:

• 在特定情况下应用FPA的指南。

• 在系统生命周期中使用FPA的指南。

• 在应用FPA时特别关注的二十个常规要点和指南,例如:

• 基于传统设计进行计数

• 计数应用程序包

• 从屏幕计数

• 报表生成器和查询功能

• 数据的共享使用

• 关于计算功能的组合效应的指南

• 确定何时必须将外部输出视为唯一的指南

• 不同语言的输出产品的指南

• 其他许多额外的提示、注意事项,在计数功能类型时可能会用到。

4、功能点分析方法

Nesma认可三种功能点分析方法:

• 详细功能点分析

• 估算功能点分析

• 指示性功能点分析

这三种方法都是独立的功能尺寸测量(FSM)方法。高级FPA方法和指示性FPA方法不需要详细的用户需求,而使用这些方法确定的功能大小与使用详细的FPA方法确定的功能大小非常接近。因此,这两种方法非常适用于在软件开发生命周期的早期阶段应用,或者在需要快速确定功能大小的情况下。

本段的信息也可作为免费文档提供,包括荷兰语、英语、葡萄牙语和日语。请参阅Nesma网站。

4.1、详细FPA

这是通常的功能点分析方法,执行如下:

• 确定所有功能的所有功能类型(ILF、EIF、EI、EO、EQ)

• 对每个功能的复杂性进行评定(低、中、高)

• 计算总的未调整功能点数

4.2、高级FPA(也称为估算FPA)

高级功能点分析方法执行如下:

• 确定所有功能的所有功能类型(ILF、EIF、EI、EO、EQ)

• 将每个数据功能(ILF、EIF)的复杂性评定为低,每个事务功能(EI、EO、EQ)的复杂性评定为中

• 计算总的未调整功能点数

因此,这种近似与详细功能点分析方法的唯一区别在于复杂性不是针对每个单独的功能确定的,而是默认值。

4.3、指示性FPA

指示性功能点分析方法的执行如下:

- 确定数据功能(ILFs和EIFs)的数量;

- 计算应用程序的总未调整功能点数如下:指示性大小(fp)= 35 x ILFs的数量 + 15 x EIFs的数量

因此,这个近似值仅基于逻辑文件(ILFs和EIFs)。

指示性功能点分析是基于这样的假设进行的:每个ILF平均大约有三个EI(用于在ILF中添加、更改和删除信息)、两个EO以及一个EQ,每个EIF平均大约有一个EO和一个EQ。

4.4、指示性、高级和详细FPA的示例

本节通过一个小案例研究来说明三种FPA方法:一个维护客户数据和产品数据并参考供应商数据的应用程序。要想得到更准确的功能大小,就需要更详细的用户需求。这就是为什么这个案例研究按照精度递增的顺序呈现了三种功能点分析方法的原因:

- 指示性功能点分析

- 高级(估计)功能点分析

- (详细)功能点分析

  • 指示性FPA评估示例

指示性功能点分析只需要关于数据功能的信息。

用户需求:

• 用户希望维护客户数据和产品数据,并参考供应商数据。

这个(粗略的)规范就足够进行指示性功能点计数了:

• ILF:客户和产品

• EIF:供应商

数据功能

功能类型

功能点数(默认)

客户

ILF

35

产品

ILF

35

供应商

EIF

15

指示性功能点大小

85功能点

  • 高级FPA评估示例

要进行高级功能点分析还需要有关事务性功能的信息,因此需要更详细的用户需求:

- 用户希望添加、更改、删除客户数据,希望查询客户,并且还需要四个不同的包含计算数据的客户报告。

- 用户希望添加、更改、删除产品数据,希望查询产品,并且还需要一个包含计算数据的产品报告。

- 用户希望使用供应商编号查询供应商,并且还需要一个包含总计结果的供应商报告。

这些更详细的用户需求规范显示了实际的事务性功能量,从而使得能够进行估计的功能点计数。

数据或事务功能

功能类型

复杂度(默认)

功能点(未调整)

客户

ILF

7

产品

ILF

7

供应商

EIF

5

添加客户

EI

4

更改客户

EI

4

删除客户

EI

4

查询客户

EQ

4

客户报告1

EO

5

客户报告2

EO

5

客户报告3

EO

5

客户报告4

EO

5

添加产品

EI

4

更改产品

EI

4

删除产品

EI

4

查询产品

EQ

4

产品报告

EO

5

查询供应商

EQ

4

供应商报告

EO

5

估计的功能大小

85 fp

  • 详细FPA评估示例

进行详细功能点计数时,不仅需要每种功能类型(EI、EO、EQ、ILF、EIF)的功能数量,还需要确定每个单独功能的功能复杂性(低、中、高)。在FPA中,(数据或事务)功能的功能复杂性是根据与该功能相关的DET数、RET数和引用的文件类型来确定的。这就是为什么用户需求(就像在我们讨论估算功能点计数时在本示例中所述的那样)需要进行更详细的分析:事务功能(EI、EO、EQ)使用哪些数据元素(DETs)和逻辑文件(引用的文件类型),以及数据功能(ILF、EIF)由哪些逻辑数据组(RETs)和数据元素(DETs)组成。对用户需求的这种详细分析可能会得出以下功能点计数:

数据或事务功能

功能类型

复杂性

功能点数(未调整)

客户

ILF

10

产品

ILF

7

供应商

EIF

5

添加客户

EI

6

更改客户

EI

4

删除客户

EI

3

查询客户

EQ

3

客户报告1

EO

4

客户报告2

EO

5

客户报告3

EO

4

客户报告4

EO

7

添加产品

EI

4

更改产品

EI

3

删除产品

EI

3

查询产品

EQ

4

产品报告

EO

5

查询供应商

EQ

3

供应商报告

EO

5

功能点大小

85 fp

4.5、结论

在这个特定的案例研究中,所有三种方法的结果都是相同的85个功能点的功能大小。通常情况下,结果并不完全相同,但仍然非常接近。下面是基于估算和指示性功能点分析方法准确性的研究结果。

  • 基于100多个项目数据库的研究结果

Nesma利用约100多个开发和实施的应用程序数据库进行了估算和指示性FPA近似方法的准确性研究。这些实施的应用程序同时使用了所有三种FPA方法进行测量。结果以两个图表呈现:

  1. 通过高级功能点分析方法测量的大小与通过详细功能点分析方法测量的大小:               

2. 通过指示性功能点分析方法测量的大小与通过详细功能点分析方法测量的大小:

在两种情况下都有很好的相关性(直线)。然而,在指示性功能点分析图表中,有一些情况下存在相当大的偏差(高达约50%)。这就是为什么在使用指示性功能点分析时应该谨慎的原因。这种指示性FPA方法的优点是在很短的时间内就能轻松地得到应用程序大小的粗略估计。

在具有比正常输入或输出量多(或少)的应用程序中,可能需要更改35和15的乘数,但是该方法背后的理念通常是适用的。

  • 何时使用哪种方法进行功能点计数

详细的功能点分析比估算或指示性分析更准确,但也需要更多时间和更详细的规格说明。使用哪种功能点分析方法取决于项目经理和系统生命周期中的阶段。

高级功能点分析和详细功能点分析的结果非常接近。在这两种FPA方法的结果中没有统计学上显著的差异。这就是为什么许多组织选择默认使用高级FPA方法而不是详细FPA方法的原因。

在许多应用程序中,指示性功能点分析能够给出出人意料地好的应用程序大小估计。进行指示性功能点分析通常相对容易,因为可以使用现有的数据模型或者用很少的工作量制作数据模型。但要小心使用该方法,因为它只提供了应用程序大小的粗略指示,可能存在偏差。

5.功能点分析的ISO标准

本部分为您提供有关功能大小国际标准的信息。这个标准更像是一个参考框架,而不是一个具体的类似FPA的方法。这就是为什么ISO将该方法称为FSM:功能大小测量。

在这个参考框架内,目前已有多种FPA方法获得了ISO认证,其中包括Nesma、IFPUG和Cosmic。

接下来是Francois Collier(ISO SC7主席)的一篇文章,概述了FSM标准的路径和FPA方法的认可。

功能大小测量标准系列是JTC 1标准化过程的最佳利用示例之一。

对软件开发产品的许多挑战之一是找到方法来正确估算从需求到软件产品开发所需的工作量和时间。为了解决这个问题,IBM的Allan Albrecht在1970年代末开发了一种称为功能点分析(FPA)的测量方法,它以对软件用户有意义的术语量化了软件中包含的功能。

随着时间的推移,随着FPA变得越来越流行,它不断发展并出现了一些变体。为了解决这个问题,ISO/IEC JTC 1/SC7于1993年决定启动功能大小测量(FSM)的工作。成立了一个由12个国家和主要的FSM方法发展用户组代表组成的工作组(WG12)。这些组织是国际功能点用户组(IFPUG)、共同软件度量国际联盟(COSMIC)、英国软件度量协会(UKSMA)和荷兰软件度量协会(Nesma)。

该工作组遵循的策略是首先制定一系列有关FSM的通用标准和指南,即14143系列标准。这套标准是使用正常的共识建立ISO过程制定的。一旦这些标准出版,已建立的方法标准制定组织被邀请使用JTC1 PAS过程获得ISO认可,IFPUG(ISO/IEC 20926)、UKSMA(ISO/IEC 20968)和NESMA(ISO/IEC 24570)接受了这一邀请。COSMIC(ISO/IEC 19761)标准则按照常规ISO过程进行。

这项工作的成果是,所有四种主要的FSM方法现在都符合ISO/IEC标准设置的最低要求,并且它们现在也都是ISO/IEC标准。

5.1、Nesma FPA被ISO认可

NESMA-FPA方法已被ISO认证为官方ISO标准。该标准的基础是NESMA FPA计数实践手册。该标准命名为NESMA ISO/IEC 24570。标准的完整名称是:

ISO/IEC IS 24570 软件工程- NESMA功能大小测量方法版本2.1-功能点分析应用的定义和计数指南

这是Nesma的一项成功,并且是国际认可的明确标志。ISO认证可以被视为对FPA方法的质量的保证。

6.Nesma和IFPUG

当Nesma在1990年发布了其第一个版本的手册《功能点分析的定义和计数指南》时,它假设了当时有效的IFPUG计数实践手册(IFPUG CPM 2.0)的原则。

在那些日子里,FPA特别被用来衡量生产率,因此人们是根据已经构建的应用程序进行计数的。当然,这就是IFPUG CPM 2.0计数指南的出发点。然而,Nesma也希望将FPA用于预算目的,因此希望在应用程序功能的基础上提前进行计数。为了做到这一点,它调整了一些计数准则,以便能够应用于逻辑模型。这不可避免地导致了Nesma和IFPUG在那个时候计算功能点时存在一些差异。

随着IFPUG CPM 4.0(1994年)的出版,IFPUG也开始根据功能计算功能点,并断言FPA计数必须独立于实施。由于这种理念的变化,以及Nesma和IFPUG之间的密切合作,NESMA和IFPUG的计数指南不断接近。

随着IFPUG CPM 4.1(1999年)的出版,FPA计数指南变得相同,除了一些指南。随着IFPUG CPM 4.2(2004年)的出版,IFPUG和NESMA之间的最后一个主要差异消失了。

6.1、IFPUG FPA和Nesma FPA之间的差异

Nesma和IFPUG现在都使用相同的理念、概念和术语以及FPA内的相同规则和指南。

有关剩余(微小)差异的实际洞见,请查阅文档:Nesma和IFPUG的FPA-当前情况。该文档定期更新。

6.2、附加的FPA指南:使计数问题更具体

尽管IFPUG FPA和Nesma FPA之间已经没有了重大差异,但Nesma还是发布了一些具体的操作指南,用于帮助计数器解决复杂的计数问题。到目前为止,IFPUG尚未(或者较少)提供关于这些问题的具体指南。这些额外的FPA指南适用于使用IFPUG计数实践手册的FPA计数器。

这些额外的FPA指南对每个功能点分析师都是相关的。Nesma CPM详细介绍了所有这些内容。如果您想了解Nesma计数实践手册涵盖的主题,可以查阅Nesma CPM的目录。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐