Tuesday, April 20, 2010

Function Point Analysis – Quick Reference

I have tried putting the method of calculating functional point in simple words by removing the detailed explanation, you can check the attached document for quick  reference.




One example of using is given below,



In EI’s the points are defined for low/Average/High are given as below,



Complexity
Points/Weight
Low
3
Average
4
High
6


During calculation consider the above table for multiplication.



EI
5 Low
x 3 =
15


3 Average
x 4 =
12


3 High
x 6 =
18
45




What is a ``Function Point''?
Function points are a standard unit of measure that represent the functional size of a software application. In the same way that a house is measured by the square feet it provides, the size of an application can be measured by the number of function points it delivers to the users of the application. A simple five step counting process To start at a high level, there are five steps in the process of counting FPs.

They are: 1. Determine the type of count.
 2. Identify the scope and boundary of the count.
3. Determine the unadjusted FP count.
4. Determine the Value Adjustment Factor.
5. Calculate the Adjusted FP Count.

 Five standard "functions" In counting FPs there are five standard "functions" that you count. The first two of these are called Data Functions, and last three are called Transaction Functions.
The names of these functions are listed below.
1. Data Functions: 1. Internal logical files (ILF)
2. External interface files (EIF)
2. Transactional Functions:
1. External Inputs (EI)
2. External Outputs (EO)
3. External Inquiries (EQ)

Important terms used
User identifiable Defined requirements for processes and/or groups of data that are agreed upon, and understood by, both the users and software developers. Control information This is data that influences and elementary process of the application being counted. It specifies what, when, or how data is to be processed. Elementary process An elementary process is the smallest unit of activity that is meaningful to the user. An elementary process must be self-contained and leave the business of the application being counted in a consistent state. Data Element Type, or DET A data element type is a unique, user recognizable, non-repeated field. This definition applies to both analyses of data functions and transactional functions. Record Element Type, or RET A record element type is a user recognizable subgroup of data elements within an Internal Logical File or External Interface File. FTR is a "file type referenced", so it can be either an ILF or an EIF.

(1) Data Functions - Internal Logical Files (ILFs) ILFs represent data that is stored and maintained within the boundary of the application you are counting. When counting ILFs you are basically counting the data functions that your application is being built to maintain. Samples of things that *can* be ILFs include: 1. Tables in a relational database. 2. Flat files. 3. Application control information, perhaps things like user preferences that are stored by the application. 4. LDAP data stores. RETS Data Element Types (DETs) 1-19 20-50 51+ 1 L L A 2 to 5 L A H 6 or more A H H Weights: Complexity Points Low 7 Average 10 High 15

(2) Data Functions - External Interface Files (EIFs) EIFs represent the data that your application will use/reference, but data that is not maintained by your application. Data Element Types (DETs) RETS 1-19 20-50 51+ 1 L L A 2 to 5 L A H 6 or more A H H EIF Weights: Value No. or Function Points Low 5 Average 7 High 10

 (3) Transaction Functions - External Inputs (EI's) An external input (EI) is an elementary process that processes data or control information that comes from outside the application boundary. The primary intent of an EI is to maintain one or more ILFs and/or to alter the behavior of the system. Examples of EIs include: 1. Data entry by users. 2. Data or file feeds by external applications. FTR's Data Element Types (DET's) 1-4 5-15 16+ 0-1 L L A 2 L A H 3 or more A H H Weights: Complexity Points/Weight Low 3 Average 4 High 6

(4) Transaction Functions - External Outputs (EO's) An external output (EO) is an elementary process that sends data or control information outside the application boundary. The primary intent of an external output 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 contain at least one mathematical formula or calculation, create derived data maintain one or more ILFs or alter the behavior of the system. EO examples include: 1. Reports created by the application being counted, where the reports include derived information. FTR Data Element Types (DET) 1-5 6-19 20+ 0-1 L L A 2-3 L A H 4 or more A H H Complexity Points/Weight Low 4 Average 5 High 7

(5) Transaction Functions - External Inquiries (EQ's) An external inquiry (EQ) is an elementary process that sends data or control information outside the application boundary. The primary intent of an external inquiry is to present information to a user through the retrieval of data or control information from an ILF of EIF. The processing logic contains no mathematical formulas or calculations, and creates no derived data. No ILF is maintained during the processing, nor is the behavior of the system altered. Examples of EQs include: 1. Reports created by the application being counted, where the report does not include any derived data. 2. Other things known as "implied inquiries", which unfortunately, are a little out of scope for this paper. FTRs Data Element Types (DETs) 1-5 6-19 20+ 0-1 L L A 2-3 L A H 4 or more A H H Complexity Points/Weight Low 3 Average 4 High

 Function Point Calculation Step 1: Determine the count resulting from ILF's
Objectives of Function Point Analysis 1. Measure software by quantifying the functionality requested by and provided to the customer. 2. Measure software development and maintenance independently of technology used for implementation. 3. Measure software development and maintenance consistently across all projects and organizations.
ILF No. RETs No. DETs Complexity Function Points
Project 1 3 Low 7
Entity 1 6 Low 7
Process Group 1 2 Low 7
Process 3 13 Low 7
Total: 28      


Step 2 : Determine the count resulting from EIF's - No data Step 3 : Determine the count resulting from EI's The table below lists the External Inputs in the application. It also lists the number of DETs and FTRs for each process, and the complexity that results from the number of DETs and FTRs.
Process # DETs FTR Names # FTRs Resulting Complexity # FPs
Create Project 5 Project 1 Low 3
Add Entity 7 Project, Entity 2 Average 4
Edit Entity 7 Project, Entity 2 Average 4
Delete Entity 4 Project, Entity 2 Low 3
Add Process Group 3 Project, ProcessGroup 2 Low 3
Edit Process Group 3 Project, ProcessGroup 2 Low 3
Delete Process Group 4 Project, ProcessGroup 2 Low 3
Add Process 9 Project, Process, ProcessGroup 3 High 6
Edit Process 9 Project, Process, ProcessGroup 3 High 6
Delete Process 5 Project, Process, ProcessGroup 3 High 6
Clone Process 3 Project, Process, ProcessGroup 3 Average 4
        Total: 45

Step 3 : Determine the count resulting from EO's
Process DETs FTRs Resulting Complexity # FPs
UFPC Report 7 3 Average 4
      Total: 4

Step 4 : Determine the count resulting from EQ's
Process DETs FTRs Resulting Complexity # FPs
ILF/EIF Report 6 2 Average 5
Display List of Entities 5 2 Low 4
Display List of Process Groups 2 2 Low 4
Display List of Processes 7 3 Average 5
Implied Inquiry - Process Group ComboBox on the Add/Edit Process Dialog 1 2 Low 4
      Total: 22

Final Calculation
Function Type Complexity Multiplier Line Item Sub-Total Section Total
ILF 4 Low x 7 = 28  
  0 Average x 10 = 0  
  0 High x 15 = 0 28
         
EIF 0 Low x 5 = 0  
  0 Average x 7 = 0  
  0 High x 10 = 0 0
         
EI 5 Low x 3 = 15  
  3 Average x 4 = 12  
  3 High x 6 = 18 45
         
EO 0 Low x 3 = 0  
  1 Average x 4 = 4  
  0 High x 6 = 0 4
         
EQ 3 Low x 4 = 12  
  2 Average x 5 = 10  
  0 High x 7 = 0 22
         
      Unadjusted Function Point Count: 99


Reference http://www.devdaily.com/FunctionPoints/