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 expressed in terms that a user can understand. It is completely independent of the technology used to create it. COSMIC size is usually determined from the requirements, but can also be reverse-counted from other software artefacts, e.g. designs, installed systems, etc.
The Basics of COSMIC Sizing
Each data movement = 1 COSMIC Function Point (CFP)
Applicability of the method
The COSMIC method may be used to size any 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, retrieve data and output data. In short, most software. Experience has shown that the method can also often be successfully applied to size ‘data manipulation-rich’ software, e.g. some scientific/engineering software.
Subject to the above, the method may be applied to measure the Functional User Requirements (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 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 by sending data related to the event;
- 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 smallest size of a functional process is 2 CFP. There is no upper limit to the size of a functional process. Single functional processes have been measured in banking of over 60 CFP and in avionics of over 100 CFP.
For an overview of the COSMIC method, please read the Introduction to the COSMIC method, or the translation in French or Italian. A similar document is available in Dutch, Portuguese and Russian.
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:
For a more detailed overview of the method see the ‘Introduction to the COSMIC method of measuring software’. For the detailed measurement rules, see the ‘Measurement Manual.
All COSMIC Method documents are obtainable free-of-charge from the downloads section of the Knowledge Base section.