The COSMIC Generic Software Model 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 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, 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.
VisualFSM COSMIC Quick Start