Recently I was asked for more detail about the implementation of COSMIC Function Points as a functional size measure for the software estimation model in TruePlanning® (True S).  Common Software Measurement International Consortium (COSMIC) is a group of software measurement experts who in 1998 recognized the need to improve on the traditional function point methods.  Because the origin of International Function Point User Group (IFPUG) Function Points with IBM, the method tends to favor business systems (though advances have been made to extend IFPUG Function Points with “Software Non-Functional Assessment Process (SNAP) – more on this to come in the future or learn more here).  The creators of COSMIC Function Points based them on principles of software engineering and created a measurement suitable to business applications, real time and infrastructure software.  To learn more about COSMIC Function Points visit the COSMIC website.

Within TruePlanning® when a user is sizing software using COSMIC Function Points the results are calculated based on the values entered for COSMIC Function Points – there is no intermediate translation of the COSMIC Function Points to Source Lines of Code or traditional Function Points.  There is a specific engine for calculating cost and effort directly from COSMIC Function Points.  Each activity in True S (Requirements, Design, Code, Test, etc.) has a baseline productivity that is a function of the Programming Language and the size units (based on industry averages).  This productivity is then adjusted up or down by the model depending on values specified for input parameters indicating operating platform (land, sea, air, etc.), development team characteristics, etc.

The research behind the COSMIC Function points was based on a study of the December 2012 release of the International Software Benchmark Standards Group (ISBSG) database (see here to learn more about ISBSG).  The research was focused on the programming languages represented in this version of the database.  Relationships for programming languages not found in the database (or not plentiful) were determined through a process of extrapolation.  Version 13 of the database was made available early this year and this research will be updated if new trends are established or new development environments (programming languages) are represented.

Many believe that Functional Size is a better measure than the more traditional Lines of Code measure because it is based on business value delivered rather than lines of code delivered (which for the same functionality can vary tremendously based on programming language, programmer style, etc.).  This is certainly true when benchmarking industries, studying productivity and assessing quality.  There have been weaknesses cited in the use of functional size measure around those things that are delivered addressing non-functional requirements.  In an effort to address such criticism the creation of COSMIC Function Points and more recently SNAP have been developed.