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)
Entry
1 CFPEntry
a data movement that moves a data group from a functional user across the boundary into the functional process where it is required.
Exit
1 CFPExit
a data movement that moves a data group from a functional process across the boundary to the functional user that requires it.
Read
1 CFPRead
a data movement that moves a data group from persistent storage into the functional process that requires it.
Write
1 CFPWrite
a data movement that moves a data group from inside a functional process to persistent storage.
Applicability of COSMIC
COSMIC 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, in short, all software.
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 COSMIC principles for measuring functional size of software
COSMIC 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;
As an approximation for measurement purposes, 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.
The COSMIC measurement process
The COSMIC measurement process has three phases, as shown in the Figure below:
For a comprehensive overview of the method, see the Introduction to the measurement process. 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.