Sunday, 1 April 2012

Effort Estimation with FP

Objective:
How to use Function Point Count to derive project effort.

Scope:

This article will give a practical approach to using "Function point".

Out Of Scope:
Function point analysis is out of this article. Please refer Resource section.

Acronyms:
         
1. FP: Function Point
2. ILF: Internal Logical File.
3. EIF: External Interface file
4. EI: External Inputs
5. EO: External Outputs
6. EQ: External Enquiries
7. RET: Record Element Type
8. DET: Data Element Type
9. FTR: File Type Reference
10. GSC: General System Characteristic
11. VAF: Value Added Factor

FP Counting Diagram



FP Complexity Table





Probelm Context / User Requirements:
We need to develop below module for our system.

Customer Maintenance include customer creation, customer modification, view customer report.
Customer Creation
Application requires ability to create a new customer. Customer Information has following data to be stored
First Name, Last Name, Middle Name, street address1, street address2, Gender, Email ID, Language code.
Please note that there is a combo box for language and is populated from a separate file in a reference data. he combo box list shows code, name.
Customer Modification
Application requires ability to update or modify customer information. Following information that can be modified
First Name, Last Name, Middle Name, street address1, street address2, Email ID, Language code.
View Report

The application requires ability to display all customer records and has field like First Name, Last Name, Middle Name, street address1, street address2, Email ID.

Following steps are followed.
Step 1. Identify type of FP count.

    FP count may be development, application or Enhancement. Depending on the type,
    FP    formula varies.
    For our example it is Development FP Count.

Step 2. Identify application boundary or scope of count.

Scope of count means functionality system is going to deliver, screen collected, data to be stored in application and data to be sent out of application or referred from outside application boundary. With respect to above requirement, please see below application boundary.



Step 3.Determine Unadjusted function point count.

To determine unadjusted function point, we have to identify Data Function and Transaction Function.

Data Function:

Data functions represent the functionality provided to the user to meet internal and external data requirements.

Data functions are either internal logical files (ILF) or external interface files (EIF).

The functional complexity of each ILF and EIF is determined based on the number of Data Element Types (DET) and Record Element Types (RET) associated with the ILF or EIF ILF means logical data that reside in application boundary.

EIF means data being referred externally or sent to external application. Find FP count for Data Function Point ILF and EIF form data function point.

With respect to above application boundary, we identified

Customer Details is ILF- has DET=8 (total no of fields of Customer screen) and RET=1 (No subgroup found for customer details).

Based on ILF complexity metric, complexity=low and FP count=7.

Language File is EIF has DET fields like language code and name, so DET count=2 and RET=1 (No subgroup found for customer details).

Based on EIF complexity metric, complexity=low and FP count=5

Data function point count = 7 + 5 = 12.

Transaction Function

Transaction functions represent the functionality provided to the user for the processing of data by an application.

Transaction functions are either external inputs (EI), external outputs (EO) or external queries (EQ)

The functional complexity of a Transaction Function is determined based on the number of Data Element Types (DETs) and File Types Referenced (FTRs).

With respect to above requirement, we have identified transaction functions.

Create Customer(EI) has det count=8 (total no of fields of Create Customer screen) and FTR count=1 ( referes to customer details(ILF)) .
Based on EI complexity metrics table, complexity=low and FP count=3.

Modify Customer (EI) has det count=7 (total no of fields of Modify Customer screen) and FTR count=1 (refers to customer details (ILF)).

Based on EI complexity metrics table, complexity=low and FP count=3.

Population of language combo box (EQ) has det (count=2) fields like language code and name and FTR=1 (refers to Language File (EIF)).

Based on EQ complexity table, complexity=low and FP count=3.

View Customer report (EQ) has det =6 and FTR=1 (refers to ILF).

Based on EQ complexity table, complexity=low and FP count=3.

EO is not applicable in this example.

So transaction function count=3+3+3+3 =12.

Unadjusted FP count = data function count + transaction function count.

Unadjusted FP count= 12 + 12 = 24.

Step 4. Determine Value Adjustment Factor.

The Value Adjustment Factor consists of 14 General System Characteristics', or GSCs.

These GSCs represent characteristics of the application under consideration. Each is weighted on a scale from 0 (low) to 5 (high).

GSC
 Value (0-5)
Data Communication
Distributed data processing
Performance
Heavily used configuration
Transaction rate
Online data entry
End user efficiency
Online update
Complex processing
Reusability
Installation ease
Operational ease
Multiple sites
Facilitate Change

1

1

4

1

1

1

4

0

3


0

4

4

0

0
Total
24



 
VAF = (sum of all 14 GSC *0.01) + 0.65

VAF = (24 * 0.01) + 0.65






VAF=0.89


VAF range is 0.65 to 1.35

Step 5 Calculate Adjusted FP Count

Adjusted FP count  =  Unadjusted FP Count * VAF
Adjusted FP count  =  24 * 0.89
Adjusted FP count  =  21.36 = 22

Step 6 Calculate Effort

Effort= Adjusted FP Count * Productivity Factor.

Please check value for Productivity Factor in your organization.

Assume Productivity Factor= 15 hr/FP

Effort= 22 * 15

Effort= 330 hr

Conclusion :

We have calculated project effort using Function Point Count.

Resource :

Resource :
For detail FP Counting Practice, Visit  http://www.ifpug.org/publications/manual.htm