Albrecht’s Function Point Method
Function point metrics provide a standardized method for measuring the various functions of a software application. It measures the functionality from the user’s point of view, that is, on the basis of what the user requests and receives in return. Function point analysis is a standard method for measuring software development from the user's point of view.
The Function Point measure originally conceived by Albrecht received increased popularity with the inception of the International Function Point Users Group (IFPUG) in 1986. In 2002, IFPUG Function Points became an international ISO standard – ISO/IEC 20926.
What is a Function Point?
FP (Function Point) is the most widespread functional type metrics suitable for quantifying a software application. It is based on five users identifiable logical "functions", which are divided into two data function types and three transactional function types. For a given software application, each of these elements is quantified and weighted, counting its characteristic elements, such as file references or logical fields.
The resulting numbers (Unadjusted FP) are grouped into Added, Changed, or Deleted functions sets, and combined with the Value Adjustment Factor (VAF) to obtain the final number of FP. A distinct final formula is used for each count type: Application, Development Project, or Enhancement Project.
Applying Albrecht’s Function Point Method
Let us now understand how to apply the Albrecht’s Function Point method. Its procedure is as follows −
Determine the number of components (EI, EO, EQ, ILF, and ELF)
EI − The number of external inputs. These are elementary processes in which derived data passes across the boundary from outside to inside. In an example library database system, enter an existing patron's library card number.
EO − The number of external output. These are elementary processes in which derived data passes across the boundary from inside to outside. In an example library database system, display a list of books checked out to a patron.
EQ − The number of external queries. These are elementary processes with both input and output components that result in data retrieval from one or more internal logical files and external interface files. In an example library database system, determine what books are currently checked out to a patron.
ILF − The number of internal log files. These are user identifiable groups of logically related data that resides entirely within the applications boundary that are maintained through external inputs. In an example library database system, the file of books in the library.
ELF − The number of external log files. These are user identifiable groups of logically related data that are used for reference purposes only, and which reside entirely outside the system. In an example library database system, the file that contains transactions in the library's billing system.
Compute the Unadjusted Function Point Count (UFC)
Rate each component as low, average, or high.
For transactions (EI, EO, and EQ), the rating is based on FTR and DET.
FTR − The number of files updated or referenced.
DET − The number of user-recognizable fields.
Based on the following table, an EI that references 2 files and 10 data elements would be ranked as average.
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.
Convert ratings into UFCs.
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 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.
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.