Function Point Analysis (FPA)
Function Point Analysis (FPA) is a sizing measure of clear business significance. First made public by Allan Albrecht of IBM in 1979, the FPA technique quantifies the functions contained within the software in terms that are meaningful to the software users. The measure relates directly to the business requirements that the software is intended to address. It can therefore be readily applied across a wide range of development environments and throughout the life of a development project, from early requirements definition to full operational use.
Function Point Analysis Methods
Nesma recognizes three function point analysis methods:
1. Detailed function point analysis - This is the usual function point analysis method and is performed as follows:
- Determine all functions of all function types (ILF, EIF, EI, EO, EQ)
- Rate the complexity of every function (Low, Average, High)
- Calculate the total unadjusted function point count
2. High Level (a.k.a. Estimated) function point analysis - The high-level function point analysis method is performed as follows:
- Determine all functions of all function types (ILF, EIF, EI, EO, EQ)
- Rate the complexity of every data function (ILF, EIF) as Low and of every transactional function (EI, EO, EQ) as Average
- calculate the total unadjusted function point count
So, the only difference between this approximation with the detailed function point analysis method is that the complexity is not determined per individual function but by default.
3. Indicative function point analysis - The indicative function point analysis method is performed as follows:
- Determine the number of data functions (ILFs and EIFs);
- Calculate the total unadjusted function point count of the application as follows: indicative size (fp) = 35 x number of ILFs + 15 x number of EIFs
So this approximation is based solely on the logical files (ILFs and EIFs).
The indicative function point analysis is based on the assumption that there will be about three EIs (to add, change, and delete information in the ILF), two EOs, and one EQ on average for every ILF, and about one EO and one EQ for every EIF.
All these three methods are self-contained Functional Sizing Measurement (FSM) methods on their own. The high-level FPA method and the indicative FPA method do not require detailed user requirements, while the functional size determined using these methods is very close to the functional size determined using the detailed FPA method. That’s why these two methods are very suited to be applied early in the software development life cycle or in case the functional size needs to be determined fast.
Function Point Analysis Template
Function Point Analysis Worksheet
Step 1. Count Number of Functions in Each Category
Step 2. Apply Complexity Weighting Factors
Simple Average Complex
Number of Outputs ____ x 4 ____ x 5 ____ x 7 Number of Inputs ____ x 3 ____ x 4 ____ x 6 Number of Inquiry Outputs ____ x 4 ____ x 5 ____ x 7 Number of Inquiry Inputs ____ x 3 ____ x 4 ____ x 6 Number of Files ____ x 7 ____ x 10 ____ x 15 Number of Interfaces ____ x 5 ____ x 7 ____ x 10 Total (FP):
Step 3. Apply Environmental Factors Environmental Factor Rating (0, 1, 2, 3, 4, 5)
Data Communications Distributed Computing Performance Requirements Constrained Configuration Transaction Rate Online Inquiry and/or Entry End-User Efficiency Online Update Complex Processing Reusability Ease of Conversion/Install Ease of Operation Used at Multiple Sites Potential for Function Change Total (N):
Step 4. Calculate the Complexity Adjustment Factor (CAF) CAF = 0.65 + (0.01 x N) =
Step 5. Compute Adjusted Function Points (AFP) AFP = FP (Raw) x CAF =
Step 6. Convert to LOC (Optional) LOC = AFP x LOC/AFP =
Function Point Analysis Examples
The following examples are based on actual known quantifiable benefits achieved by organizations involved in utilizing function point measurements for performance management.
- A large financial services company implemented a Function Point Analysis-based metrics program in order to identify process improvements and increase productivity. The process identified 12 major process improvement initiatives that were funded based on an analysis of current productivity and forecasted improvements. The company was able to measure a productivity improvement of over 45% for the 2-year period following the implementation of the improvement opportunities.
- An insurance company piloted Function Points on a number of selected projects. Estimates were revised based on benchmark data that identified unrealistic schedules and budgets. One project also identified a 50% scope creep based on Function Point Analysis. The user customer agreed to additional funding and a 6-month extension to the schedule after being presented with the Function Point details.
- DoD planned to use a COTS solution to replace a major human resources application projected to cost over $100 million. A Function Fit Analysis was performed using Function Point Analysis to determine how well the COTS matched the requirements. It was discovered that only 2% of the COTS functionality was useable. 98% of the solution would have to be delivered as new development and enhancements to the COTS package. Fortunately, in this situation, the problem was identified early in the process and the proposed COTS solution was rejected
- A leading software contractor was having major project and relationship management problems with a key customer. Disputes included claims of poorly defined user requirements, significant unpaid scope creep, and unrealistic due dates. The project was Function Point counted 3 times during the initial design phases. The resulting analysis calculated a 300% scope increase. The data was used to gain user involvement, clarify requirements and increase the contract budget and schedule.
- Based on ongoing function point measurement and productivity analysis, an organization improved productivity by over 40% by reducing over-staffing and non-productive time associated with projects.
- A customer negotiated a 30% improvement in productivity and a 50% cost reduction (cost per function point) as the result of a baseline study and supplier agreement to outsourcing terms.
Benefits of Function Point Analysis
There are several benefits on applying function point analysis in organizations:
- A tool for determining the size of a purchased package by counting all the functions included.
- Provides assistance to users in determination of benefits of a package for their organization, by counting the functions that specifically match their requirements. When assessing the cost of the package, the size of the functions that will be effectively used, the productivity and cost of the staff is possible to perform a “make or buy” analysis.
- Supports the analysis of productivity and quality, either directly or in conjunction with other metrics such as effort, cost, and defects. But if the development method of the organization is chaotic (each project is developed in a different way), even if the function points counting of the project and the effort record have been made correctly, the analysis of productivity among the projects would have been impaired.
- Supports the project scope management. A challenge of any project manager is to control “scope creep”, or the increase of the scope. To make estimates and measurements of function points of the project at every stage of its life cycle is possible to determine whether the functional requirements increased or decreased, and whether this variation corresponds to new requirements or requirements that already exist and were just more detailed.
- Complements requirements management to assist in verifying the soundness and completeness of the specified requirements. The process of counting function points favors a structured and systematic analysis of the requirements specification and brings similar benefits to a peer review process.
- A tool for estimating costs and resources for software development and maintanance. By carrying out a count or estimate function points early in the lifecycle of a software project, it’s possible to determine its functional size. This measurement can be used as input for many models of effort, time, and cost estimation.
- A tool to support contract negotiation. Function points can be used to generate several service level indicators (SLA – Service Level Agreement) in software development and maintenance contracts. Besides that, it allows contract establishments by using unit price – function points – where a unit represents a tangible asset to the client. This modality allows for a better risk distribution between the client and provider.
- A normalization factor for software comparison or for comparison of productivity in the use of differents methods. Several organizations, such as ISBSG, provide a data repository of software projects that enable the implementation of benchmarking with similar projects in the market.
Function Point Analysis Certification
The International Function Point users group offers the following certification in Function Points:
- The CFPS Fellow - The CFPS designation indicates that the accredited individual, by passing a rigorous exam and achieving a score of 90% or better, has mastered the fundamentals of Function Point Analysis at a significant depth and breadth in applying the Function Point Analysis rules.
- The Certified Function Point Practitioner (CFPP) - The Certified Function Point Practitioner (CFPP) designation recognizes the knowledge and skill at applying the FPA rules that are high but not up to the Certified Function Point Specialist (CFPS) standards. The CFPP requires that the candidate has a minimum of 80% overall on the exam and a minimum of 70% in each of the three sections: Definition, Implementation, and Case Study.
- The Zero Function Point Problem
- About Function Point Analysis
- Introduction To Function Point Analysis
- Fundamentals and Introduction of Function Point Analysis
- To Evaluate the Function Point Analysis: A Case Study
- A Case Study Approach to Measure the Function Points from the Points of Relationships of UML
- Overview of Function Point Analysis