The COSMIC method defines the principles, rules and a process for measuring a standard functional size of a piece of software. ‘Functional size’ is a measure of the amount of functionality provided by the software, completely independent of any technical or quality considerations.

Applicability of the method

The COSMIC method may be used to size software such as business applications; real-time software; infrastructure software such as in operating systems; and hybrids of these. The common characteristic of all these types of software is that they are dominated by functions that input data, store and retrieve data, and output data. The method is not designed to be applicable to size software that is dominated by functions that manipulate data, as in typical scientific and engineering software.

Subject to the above, the method may be applied to measure the FUR of software:

  • At any level of decomposition, e.g. a ‘whole’ piece of software or any of its components, sub-components, etc;
  • In any layer of a multi-layer architecture;
  • At any point in the life-cycle of the piece of software;

The principles for measuring the COSMIC functional size of a piece of software

The COSMIC method measures a size as seen by the ‘functional users’ of the piece of software to be measured, i.e. the senders and/or intended recipients of the data that must enter or exit from the software, respectively.

The method uses a model of software, known as the ‘COSMIC Generic Software Model’, which is based on fundamental software engineering principles, namely:

  • Functional user requirements of a piece of software can be analyzed into unique functional processes, which consist of sub-processes. A sub-process may be either a data movement or a data manipulation;
  • Each functional process is triggered by an ‘Entry’ data movement from a functional user which informs the functional process that the functional user has identified an event that the software must respond to;
  • A data movement moves a single data group of attributes describing a single ‘object of interest’, where the latter is a ‘thing’ of interest to a functional user;

There are four types of data movement sub-processes. An ‘Entry’ moves a data group into the software from a functional user and an ‘Exit’ moves a data group out. ‘Writes’ and ‘Reads’ move a data group to and from persistent storage, respectively.

As an approximation for measurement purposes (and in light of the applicability of the method, described above), data manipulation sub-processes are not separately measured.

The size of a piece of software is then defined as the total number of data movements (Entries, Exits, Reads and Writes) summed over all functional processes of the piece of software. Each data movement is counted as one ‘COSMIC Function Point’ (‘CFP’). The size of a functional process, and hence the size of a piece of software, can be a minimum of 2 CFP, with no upper limit.

The process for measuring the COSMIC functional size of a piece of software

The COSMIC measurement process has three phases, as shown in the Figure below:

overview COSMIC FSM



For the detailed measurement rules, see ‘The COSMIC Functional Size Measurement Method v4.0: Measurement Manual, the COSMIC Implementation Guide for ISO/IEC 19761: 2011’. There is another important document in the v4.0 series, namely:

Introduction to the COSMIC method of measuring software (A more detailed overview of the method than is given here)
All COSMIC Method documents are obtainable free-of-charge from the downloads section of the Knowledge Base section.