Original Post Date: Monday, July 2, 2012 

The COSMIC method for counting function points arose out of concerns that the IFPUG (NESMA, FisMA) function points are too concerned with data intense business systems and subsequently are not adequate for adequately measuring the size of real time systems.   The COSMIC function point counting method has been designed to be applicable to both business systems such as banking, insurance, etc and real time software such as telephone exchanges and embedded systems such as those found in automobiles and aircraft. 

The COSMIC method uses the Functional User Requirements as the basis for the function point count.  A COSMIC Function Point count is based on a count of the data movements across the boundary.  A data movement is defined as the base functional component which moves a single data group.  There are four types of data movements:

·   Entry – moves a data group from a functional user across the boundary into the process where that data is required

·   Exit – moves a data group from a function process across the boundary to where a functional user requires it

·   Read – moves a data group from persistent storage within reach of the process that requires it.

·   Write – moves a data group from persistent storage within reach of the process which requires it.

To perform a COSMIC function point count, each component is broken down by functional processes and then for each functional process all of the associated data groups are identified.  Then for each data group with each process data movements are assigned and classified as one of the following types.  The purported benefit of COSMIC Function Points over IFPUG Function Points is that there is no upper bound on the number of data movements that can occur within a functional process.

I did a productivity study for COSMIC Function Points based on the ISBSG data base and found some interesting results.  Table 1 shows the results of my analysis and Table 2 compares productivity rates for IFPUG and COSMIC function points.

Table 1

 

Table 2

What I found was that on average, it takes almost twice as long to deliver a COSMIC Function Point than an IFPUG Function Point.  This may be because the sample sizes for IFPUG are larger or it could be because the types of projects that are using COSMIC are more complex, possibly lending credence to the notion that they are adequate for more complex systems.  What experiences have you had with counting function points using different methods?