FP Counting Process involves the following steps −
Step 1 − Determine the type of count.
Step 2 − Determine the boundary of the count.
Step 3 − Identify each Elementary Process (EP) required by the user.
Step 4 − Determine the unique EPs.
Step 5 − Measure data functions.
Step 6 − Measure transactional functions.
Step 7 − Calculate functional size (unadjusted function point count).
Step 8 − Determine Value Adjustment Factor (VAF).
Step 9 − Calculate adjusted function point count.
Note − General System Characteristics (GSCs) are made optional in CPM 4.3.1 and moved to Appendix. Hence, Step 8 and Step 9 can be skipped.
There are three types of function point counts −
Function points can be counted at all phases of a development project from requirement to implementation stage. This type of count is associated with new development work and may include the prototypes, which may have been required as temporary solution, which supports the conversion effort. This type of count is called a baseline function point count.
Application counts are calculated as the function points delivered, and exclude any conversion effort (prototypes or temporary solutions) and existing functionality that may have existed.
When changes are made to software after production, they are considered as enhancements. To size such enhancement projects, the Function Point Count gets Added, Changed or Deleted in the Application.
The boundary indicates the border between the application being measured and the external applications or the user domain. (Refer Figure 1)
To determine the boundary, understand −
Compose and/or decompose the functional user requirements into the smallest unit of activity, which satisfies all of the following criteria −
For example, the Functional User Requirement − “Maintain Employee information” can be decomposed into smaller activities such as add employee, change employee, delete employee, and inquire about employee.
Each unit of activity thus identified is an Elementary Process (EP).
Comparing two EPs already identified, count them as one EP (same EP) if they −
Do not split an EP with multiple forms of processing logic into multiple Eps.
For e.g., if you have identified ‘Add Employee’ as an EP, it should not be divided into two EPs to account for the fact that an employee may or may not have dependents. The EP is still ‘Add Employee’, and there is variation in the processing logic and DETs to account for dependents.
Classify each data function as either an ILF or an EIF.
A data function shall be classified as an −
Internal Logical File (ILF), if it is maintained by the application being measured.
External Interface File (EIF) if it is referenced, but not maintained by the application being measured.
ILFs and EIFs can contain business data, control data and rules based data. For example, telephone switching is made of all three types - business data, rule data and control data. Business data is the actual call. Rule data is how the call should be routed through the network, and control data is how the switches communicate with each other.
Consider the following documentation for counting ILFs and EIFs −
Apply the following rules to count DETs for ILF/EIF −
Count a DET for each unique user identifiable, non-repeated field maintained in or retrieved from the ILF or EIF through the execution of an EP.
Count only those DETs being used by the application that is measured when two or more applications maintain and/or reference the same data function.
Count a DET for each attribute required by the user to establish a relationship with another ILF or EIF.
Review related attributes to determine if they are grouped and counted as a single DET or whether they are counted as multiple DETs. Grouping will depend on how the EPs use the attributes within the application.
Apply the following rules to count RETs for ILF/EIF −
RETS | Data Element Types (DETs) | ||
---|---|---|---|
1-19 | 20-50 | >50 | |
1 | L | L | A |
2 to 5 | L | A | H |
>5 | A | H | H |
Functional Complexity: L = Low; A = Average; H = High
Functional Complexity | FP Count for ILF | FP Count for EIF |
---|---|---|
Low | 7 | 5 |
Average | 10 | 7 |
High | 15 | 10 |
To measure transactional functions following are the necessary steps −
Transactional functions should be classified as an External Input, External Output or an External Inquiry.
External Input (EI) is an Elementary Process that processes data or control information that comes from outside the boundary. The primary intent of an EI is to maintain one or more ILFs and/or to alter the behavior of the system.
All of the following rules must be applied −
The data or control information is received from outside the application boundary.
At least one ILF is maintained if the data entering the boundary is not control information that alters the behavior of the system.
For the identified EP, one of the three statements must apply −
Processing logic is unique from processing logic performed by other EIs for the application.
The set of data elements identified is different from the sets identified for other EIs in the application.
ILFs or EIFs referenced are different from the files referenced by the other EIs in the application.
External Output (EO) is an Elementary Process that sends data or control information outside the application’s boundary. EO includes additional processing beyond that of an external inquiry.
The primary intent of an EO is to present information to a user through processing logic other than or in addition to the retrieval of data or control information.
The processing logic must −
All of the following rules must be applied −
Additionally, one of the following rules must apply −
External Inquiry (EQ) is an Elementary Process that sends data or control information outside the boundary. The primary intent of an EQ is to present information to the user through the retrieval of data or control information.
The processing logic contains no mathematical formula or calculations, and creates no derived data. No ILF is maintained during the processing, nor is the behavior of the system altered.
All of the following rules must be applied −
Additionally, all of the following rules must apply −
Apply the following Rules to count DETs for EIs −
Review everything that crosses (enters and/or exits) the boundary.
Count one DET for each unique user identifiable, non-repeated attribute that crosses (enters and/or exits) the boundary during the processing of the transactional function.
Count only one DET per transactional function for the ability to send an application response message, even if there are multiple messages.
Count only one DET per transactional function for the ability to initiate action(s) even if there are multiple means to do so.
Do not count the following items as DETs −
Attributes generated within the boundary by a transactional function and saved to an ILF without exiting the boundary.
Literals such as report titles, screen or panel identifiers, column headings and attribute titles.
Application generated stamps such as date and time attributes.
Paging variables, page numbers and positioning information, for e.g., ‘Rows 37 to 54 of 211’.
Navigation aids such as the ability to navigate within a list using “previous”, “next”, “first”, “last” and their graphical equivalents.
Apply the following rules to count DETs for EOs/EQs −
Review everything that crosses (enters and/or exits) the boundary.
Count one DET for each unique user identifiable, non-repeated attribute that crosses (enters and/or exits) the boundary during the processing of the transactional function.
Count only one DET per transactional function for the ability to send an application response message, even if there are multiple messages.
Count only one DET per transactional function for the ability to initiate action(s) even if there are multiple means to do so.
Do not count the following items as DETs −
Attributes generated within the boundary without crossing the boundary.
Literals such as report titles, screen or panel identifiers, column headings and attribute titles.
Application generated stamps such as date and time attributes.
Paging variables, page numbers and positioning information, for e.g., ‘Rows 37 to 54 of 211’.
Navigation aids such as the ability to navigate within a list using “previous”, “next”, “first”, “last” and their graphical equivalents.
Apply the following rules to count FTRs for EIs −
Apply the following rule to count FTRs for EO/EQs −
Additionally, apply the following rules to count FTRs for EOs −
FTRs | Data Element Types (DETs) | ||
---|---|---|---|
1-4 | 5-15 | >=16 | |
0-1 | L | L | A |
2 | L | A | H |
>=3 | A | H | H |
Functional Complexity: L = Low; A = Average; H = High
Determine the functional complexity for each EO/EQ, with an exception that EQ must have a minimum of 1 FTR −
EQ must have a minimum of 1 FTR FTRs |
Data Element Types (DETs) | ||
---|---|---|---|
1-4 | 5-15 | >=16 | |
0-1 | L | L | A |
2 | L | A | H |
>=3 | A | H | H |
Functional Complexity: L = Low; A = Average; H = High
Measure the functional size for each EI from its functional complexity.
Complexity | FP Count |
---|---|
Low | 3 |
Average | 4 |
High | 6 |
Measure the functional size for each EO/EQ from its functional complexity.
Complexity | FP Count for EO | FP Count for EQ |
---|---|---|
Low | 4 | 3 |
Average | 5 | 4 |
High | 6 | 6 |
To calculate the functional size, one should follow the steps given below −
Recollect what you have found in Step 1. Determine the type of count.
Calculate the functional size or function point count based on the type.
Development Function Point Count consists of two components of functionality −
Application functionality included in the user requirements for the project.
Conversion functionality included in the user requirements for the project. Conversion functionality consists of functions provided only at installation to convert data and/or provide other user-specified conversion requirements, such as special conversion reports. For e.g. an existing application may be replaced with a new system.
DFP = ADD + CFP
Where,
DFP = Development Function Point Count
ADD = Size of functions delivered to the user by the development project
CFP = Size of the conversion functionality
ADD = FP Count (ILFs) + FP Count (EIFs) + FP Count (EIs) + FP Count (EOs) + FP Count (EQs)
CFP = FP Count (ILFs) + FP Count (EIFs) + FP Count (EIs) + FP Count (EOs) + FP Count (EQs)
Calculate the Application Function Point Count
AFP = ADD
Where,
AFP = Application Function Point Count
ADD = Size of functions delivered to the user by the development project (excluding the size of any conversion functionality), or the functionality that exists whenever the application is counted.
ADD = FP Count (ILFs) + FP Count (EIFs) + FP Count (EIs) + FP Count (EOs) + FP Count (EQs)
Enhancement Function Point Count considers the following four components of functionality −
EFP = ADD + CHGA + CFP + DEL
Where,
EFP = Enhancement Function Point Count
ADD = Size of functions being added by the enhancement project
CHGA = Size of functions being changed by the enhancement project
CFP = Size of the conversion functionality
DEL = Size of functions being deleted by the enhancement project
ADD = FP Count (ILFs) + FP Count (EIFs) + FP Count (EIs) + FP Count (EOs) + FP Count (EQs)
CHGA = FP Count (ILFs) + FP Count (EIFs) + FP Count (EIs) + FP Count (EOs) + FP Count (EQs)
CFP = FP Count (ILFs) + FP Count (EIFs) + FP Count (EIs) + FP Count (EOs) + FP Count (EQs)
DEL = FP Count (ILFs) + FP Count (EIFs) + FP COUNT (EIs) + FP Count (EOs) + FP Count (EQs)
GSCs are made optional in CPM 4.3.1 and moved to Appendix. Hence, Step 8 and Step 9 can be skipped.
The Value Adjustment Factor (VAF) is based on 14 GSCs that rate the general functionality of the application being counted. GSCs are user business constraints independent of technology. Each characteristic has associated descriptions to determine the degree of influence.
General System Characteristic | Brief Description |
---|---|
Data Communications | How many communication facilities are there to aid in the transfer or exchange of information with the application or system? |
Distributed Data Processing | How are distributed data and processing functions handled? |
Performance | Did the user require response time or throughput? |
Heavily Used Configuration | How heavily used is the current hardware platform where the application will be executed? |
Transaction Rate | How frequently are transactions executed daily, weekly, monthly, etc.? |
On-Line Data Entry | What percentage of the information is entered online? |
End-user Efficiency | Was the application designed for end-user efficiency? |
Online Update | How many ILFs are updated by online transaction? |
Complex Processing | Does the application have extensive logical or mathematical processing? |
Reusability | Was the application developed to meet one or many user’s needs? |
Installation Ease | How difficult is conversion and installation? |
Operational Ease | How effective and/or automated are start-up, back-up, and recovery procedures? |
Multiple Sites | Was the application specifically designed, developed, and supported to be installed at multiple sites for multiple organizations? |
Facilitate Change | Was the application specifically designed, developed, and supported to facilitate change? |
The degree of influence range is on a scale of zero to five, from no influence to strong influence.
Rating | Degree of Influence |
---|---|
0 | Not present, or no influence |
1 | Incidental influence |
2 | Moderate influence |
3 | Average influence |
4 | Significant influence |
5 | Strong influence throughout |
Determine the degree of influence for each of the 14 GSCs.
The sum of the values of the 14 GSCs thus obtained is termed as Total Degree of Influence (TDI).
TDI = ∑14 Degrees of Influence
Next, calculate Value Adjustment Factor (VAF) as
VAF = (TDI × 0.01) + 0.65
Each GSC can vary from 0 to 5, TDI can vary from (0 × 14) to (5 × 14), i.e. 0 (when all GSCs are low) to 70 (when all GSCs are high) i.e. 0 ≤ TDI ≤ 70. Hence, VAF can vary in the range from 0.65 (when all GSCs are low) to 1.35 (when all GSCs are high), i.e., 0.65 ≤ VAF ≤ 1.35.
As per the FPA approach that uses the VAF (CPM versions before V4.3.1), this is determined by,
Adjusted FP Count = Unadjusted FP Count × VAF
Where, unadjusted FP count is the functional size that you have calculated in Step 7.
As the VAF can vary from 0.65 to 1.35, the VAF exerts an influence of ±35% on the final adjusted FP count.
Function points are useful −
In measuring the size of the solution instead of the size of the problem.
As requirements are the only thing needed for function points count.
As it is independent of technology.
As it is independent of programming languages.
In estimating testing projects.
In estimating overall project costs, schedule and effort.
In contract negotiations as it provides a method of easier communication with business groups.
As it quantifies and assigns a value to the actual uses, interfaces, and purposes of the functions in the software.
In creating ratios with other metrics such as hours, cost, headcount, duration, and other application metrics.
International Software Benchmarking Standards Group (ISBSG) grows and maintains two repositories for IT data.
There are more than 6,000 projects in the Development and Enhancement Projects repository.
Data is delivered in Microsoft Excel format, making it easier for further analysis that you wish to do with it, or you can even use the data for some other purpose.
ISBSG repository license can be purchased from − http://www.isbsg.com/
ISBSG offers 10% discount for IFPUG members for online purchases when the discount code “IFPUGMembers” is used.
ISBSG Software Project Data Release updates can be found at − http://www.ifpug.org/isbsg/
COSMIC and IFPUG collaborated to produce a Glossary of terms for software Non-functional and Project Requirements. It can be downloaded from − cosmic-sizing.org