Search This Blog

2009-12-03

Estimation using Fuction Point Analysis-EI(Part 1)

Fuction point is a unit of measurefor software size based on user requirements(not the internal process i.e we should not consider the internal complexity or workflow,only consider the user requirement).It was developed by Mr.Allan Albrecht at IBM in the late 1970s,as an alternative of line of code.(line of code has some limitations like its vary language to language and its difficult to predict).

Software measure is a numerical value assigned to a software project depending on the complexity of project.The complexity of software can be known from "Data Collected" and "ClientArtifacts".It can be-1)Function Points2)Use case points3)Lines of codeand convert to Man days,Man month or Man hours numerical values.

The objective of this tutorial is how to calculate this Function point and arrive to Man days so that you can give a proposal to a client.

First see what are the different operations a user does with an application-

The major element of Function point analysis is Application boundaries.There are two Application boundaries--1.Internal:Data which is maintained and directly controlled by application(ILF)-2.External:When data is referenced to external entities(EIF)The more you have external application boundary the more complexity.So first differentiate the application boundary before FPA.

Now come to the rest of the elements like EI,EO,EQ,EIF and ILF etc.EI(External Input)-EI moves the data in to the application from external app boundary to internal boundary.EI mainly updates ILF information.For every add/update and delete count one EIEvery input screen is not a EI.i.e Query screen ,login screen,menus reports screen cannot be counted as EI even there is a user input.Process that maintain ILF like windows process or batch process that update database should be counted as EI.EI has two attributes which basically define the complexity of EI-1.File type reference(FTR):FTR is a file or data referenced by EI.Count 1 FTR for every ILF maintained.Count 1 FTR for every ILF referenced.Count 1 FTR for every EIF referenced.-2.Data element type(DET):DET are fields and attributes.In the above customer screen Customer code,Customer Name are fields or attributes ,so these are DETs.DET should be unique and user recognizable.If the customer screen comes again for another operation from another menu we should not count DET.Foreign keys are also DET's.Suppose customer ID is foreign key of address table ,then this foreign key should be counted as DET.Auto generated fields are also counted as DET as they are maintained in the ILF.Because we have to write seperate logic to create autogenerate numbers.Duplicate fields populated by the same user input should be counted as one DET.Error message are counted as DET.

So In this example there is 12 DET and 3 FTR,So from EI rating table 6 is a complexity level of customer screenIf we consider, 3 is a simple,4 is a medium and 6 is a complex,then from EI complexity table we can get the complexity value "complex" for this Customer screen