Small, Medium and Large or Low, Average  and High?

Small, Medium and Large or Low, Average and High?

As noted in Counting IFPUG Function Points, The Process and More, there are two data functions: Internal Logical Files (ILF) and External Interface Files (EIF).  ILFs are logical groups of user-recognizable data maintained within the boundary of the application being sized and EIFs are logical groups of user-recognizable data referenced within the boundary of the application being sized, but maintained in another application.  Both of these data functions come in three sizes.  IFPUG uses the labels of low, average and high, but because of my personal background small, medium and large feels better. The different sizes represent file size complexity. I feel that using the word complexity when determining the size of a file (or a transaction) is confusing as complexity in development and maintenance generally is applied to a set of concepts that is much broader than size.

How do we size ILFs and EIFs?

The size of logical files is determined by the number of data element types and the number of record element types.  Clear as mud?  A data element type (DET) is defined as a user-recognizable, non-repeated attribute[1].  The IFPUG Counting Practice Manual goes into depth on rules to help recognize and count DETs in a standard manner.  If you ever do a count with me you might hear me ask whether the DET is maintained or retrieved; whether the DET is unique; whether the DET should be counted as part of another DET, or whether the DET is needed to create a relationship with another group of data.  Once we have a handle on the rules to ensure we only count unique, user-recognizable attributes, counting the DET is as simple making tic marks on a piece of paper and then summing them up.

Where DETs is a simple concept, record element types is more difficult. The definition of a record element type (RETs) is a user-recognizable subgroup of data elements within an ILF or EIF.  Classifying groups of data as RETs requires understanding the relationships between groups of data.  For example, an HR system that has a group of DETs used to define employees and another group of used to define employee dependents.  Looking at the relationship between the logical groups “employees” and “dependents,” it is apparent that a dependent can’t exist without an employee, but that an employee does not need to have a dependent.  We would consider employee and dependents to be two RETs, employee is a mandatory subgroup and dependent is an optional subgroup.  Understanding the basic data modeling and normalization techniques is useful for identifying RETs.

Once you have worked through counting DETs and RETs for either an ILF or an EIF, we can determine the size of the logical group.  IFPUG provides a simple matrix to derive size.

RETs

1 – 19 DETs

20 – 50 DETs

51 + DETs

1

Low

Low

Average

2 – 5

Low

Average

High

6+

Average

High

High

Using the matrix is a matter of counting the number of RETs in a logical group, finding the corresponding row and then finding the corresponding column for the number of DETs that you counted for the logical group.

Using the employee and dependent example from above, let’s assume that employee has 8 DETs (Employee Number, Name, Address, City, State, Zip, Work Location, and Job Code) and dependent had 8 DETs (Employee Number, Name, Address, City, State, Zip, Relationship and Birth Date).  The total count of DETs would be 15 (employee number is not counted twice because it is repeated in both entries).  We would find the column and row in them matrix that corresponds to two RETs and 15 DETs which tell us that the logical group was classified as low. We would then repeat the process for each ILF and EIF we identified and counted during the function point count.


[1] Function Point Counting Practice Manual 4.0, Part 3 2-24

Advertisements