Albrecht 的功能点方法

功能点度量提供了一种标准化方法来测量软件应用程序的各种功能。它从用户的角度来衡量功能,即根据用户请求和收到的回报来衡量。功能点分析是从用户的角度衡量软件开发的标准方法。

最初由 Albrecht 构想的功能点度量随着 1986 年国际功能点用户组 (IFPUG) 的成立而越来越受欢迎。2002 年,IFPUG 功能点成为国际 ISO 标准 - ISO/IEC 20926。

什么是功能点?

FP(功能点) 是最广泛的功能类型度量,适用于量化软件应用程序。它基于五种用户可识别的逻辑"功能",分为两种数据功能类型和三种事务功能类型。对于给定的软件应用程序,每个元素都被量化和加权,计算其特征元素,例如文件引用或逻辑字段。

结果数字(未调整的 FP)被分组为已添加、已更改或已删除的功能集,并与价值调整因子 (VAF) 相结合以获得最终的 FP 数量。每个计数类型使用不同的最终公式:应用程序、开发项目或增强项目。

应用 Albrecht 的功能点方法

现在让我们了解如何应用 Albrecht 的功能点方法。其过程如下 −

确定组件的数量(EI、EO、EQ、ILF 和 ELF)

  • EI − 外部输入的数量。这些是派生数据从外部到内部跨越边界的基本过程。在示例图书馆数据库系统中,输入现有读者的借书证号码。

  • EO − 外部输出的数量。这些是派生数据从内部传递到外部的基本过程。在示例图书馆数据库系统中,显示借给读者的书籍列表。

  • EQ − 外部查询的数量。这些是具有输入和输出组件的基本过程,可从一个或多个内部逻辑文件和外部接口文件中检索数据。在示例图书馆数据库系统中,确定当前借给读者的书籍。

  • ILF − 内部日志文件的数量。这些是用户可识别的逻辑相关数据组,完全位于应用程序边界内,通过外部输入进行维护。在示例图书馆数据库系统中,图书馆中的书籍文件。

  • ELF − 外部日志文件的数量。这些是用户可识别的逻辑相关数据组,仅用于参考目的,并且完全位于系统之外。在示例图书馆数据库系统中,包含图书馆计费系统中的交易的文件。

计算未调整的功能点数 (UFC)

  • 将每个组件评为低、平均

  • 对于交易(EI、EO 和 EQ),评级基于FTRDET

    • FTR −更新或引用的文件数量。

    • DET − 用户可识别字段的数量。

    • 根据下表,引用 2 个文件和 10 个数据元素的 EI 将被评为 平均

FTRs DETs
1-5 6-15 >15
0-1 Low Low Average
2-3 Low Average High
>3 Average High High
  • For files (ILF and ELF), the rating is based on the RET and DET.

    • RET − The number of user-recognizable data elements in an ILF or ELF.

    • DET − The number of user-recognizable fields.

    • Based on the following table, an ILF that contains 10 data elements and 5 fields would be ranked as high.

RETs DETs
1-5 6-15 >15
1 Low Low Average
2-5 Low Average High
>5 Average High High
  • Convert ratings into UFCs.

Rating Values
EO EQ EI ILF ELF
Low 4 3 3 7 5
Average 5 4 4 10 7
High 6 5 6 15 10

Compute the Final Function Point Count (FPC)

  • Compute value adjustment factor (VAF) based on 14 general system characteristics (GSC).

General System Characteristic Brief Description
GSC 1 Data communications How many communication facilities are there to aid in the transfer or exchange of information with the application or system?
GSC 2 Distributed data processing How are distributed data and processing functions handled?
GSC 3 Performance Was the response time or throughput required by the user?
GSC 4 Heavily used configuration How heavily used is the current hardware platform where the application will be executed?
GSC 5 Transaction rate How frequently are transactions executed daily, weekly, monthly, etc.?
GSC 6 On-Line data entry What percentage of the information is entered online?
GSC 7 End-user efficiency Was the application designed for end-user efficiency?
GSC 8 On-Line update How many ILFs are updated by online transaction?
GSC 9 Complex processing Does the application have extensive logical or mathematical processing?
GSC 10 Reusability Was the application developed to meet one or many user’s needs?
GSC 11 Installation ease How difficult is conversion and installation?
GSC 12 Operational ease How effective and/or automated are start-up, back-up, and recovery procedures?
GSC 13 Multiple sites Was the application specifically designed, developed, and supported to be installed at multiple sites for multiple organizations?
GSC 14 Facilitate change Was the application specifically designed, developed, and supported to facilitate change?
  • Weigh each GSC on a scale of 0 to 5 based on whether it has no influence to strong influence.

  • Compute the FPC as follows −

    FPC = UFC * (0.65+(sum(GSC) * .01))

Complexity

Complexity is a separate component of size. It is of two types −

  • Complexity of a problem − It is the amount of resources required for an optimal solution to the problem.

  • Complexity of a solution − It is the resources needed to implement a particular solution. It has two aspects. They are as follows −

    • Time complexity − The resource is computer time.

    • Space complexity − The resource is computer memory.

Measuring Complexity

One aspect of complexity is efficiency. It measures any software product that can be modeled as an algorithm.

For example: If an algorithm for solving all instances of a particular problem requires f(n) computations, then f(n) is asymptotically optimal, if for every other algorithm with complexity g that solves the problem f is O(g). Then, the complexity of the given problem is big - O of the asymptotically optimal algorithm for the problem’s solution.