Background
COSMIC function points are a unit of measure of software functional size. There are other ways to assess software size, but COSMIC Sizing is the most universal, meaningful and useful approach. The functional size is consistent regardless of the technology used to build it. The size can be estimated, or if all requirements are available, measured. Early estimation is very useful for planning and managing software endeavours (projects or product management). The process of measuring software size is called functional size measurement (FSM). COSMIC functional size measurement is applicable to business software, real-time software and infrastructure software at any level of decomposition (from a whole software system down to a single re-usable component or a user story). The functional size (inc COSMIC Function Points – CFP) is independent of the technology or processes used to develop the system. COSMIC is an ISO standard. It is a refined improvement over its predecessors (IFPUG and Mark II FP). The unit of size is the COSMIC Function Point or CFP.
Uses
Once you have measured (or estimated) the size in COSMIC Function Points you can then use this as the base metric to :
- Estimate development effort
- Estimate project duration
- Estimate project quality achievement
- Estimate test effort
- Control scope creep
- As the basis for fixed price contracts
- Assess the replacement cost of a software asset
- Estimate maintenance and replacement costs
- Assess the achievement of quality (defect removal rates)
- and more..
COSMIC is an international standard for measuring software size: ISO/IEC 19761:2011.
Why Estimate Size?
We estimate software size early for many reasons, including:- To assess the viability of doing the work.
- To rightsize the team and allocate sufficient time to do quality work.
- To know the cost, when assessing outsource proposals.
- To know when will it be done?
- To forecast defects (potential, discovery and removal)
- To reduce risk. If we estimate well we can avoid the $1m project from becoming a $3m problem.
Based on Principles
The COSMIC Function Point sizing method of measuring software requirements is based on two main principles:
1. The ‘Software Context Model’
Defines the software to be measured
- Software is bounded by hardware and typically structured into layers.
- The scope of any piece of software to be measured shall depend on the purpose of the measurement and shall be confined wholly within a single layer.
- The functional users of a piece of software to be measured shall be identified from its Functional User Requirements (FUR) as the senders and/or intended recipients of data to/from the software respectively.
- A precise COSMIC size measurement of a piece of software requires that its FUR are known at a level of granularity at which its functional processes and sub-processes may be identified.
- An approximate COSMIC size measurement is possible if its FUR are measured at a high level of granularity by an approximation approach and scaled to the level of granularity of the functional processes.
2. The ‘Generic Software Model’
Generic concepts applicable to all software
- A piece of software interacts with its functional users across a boundary, and with persistent storage within the boundary.
- The FUR of a piece of software can be mapped into unique functional processes.
- Each functional process is started by its triggering Entry data movement. The data group moved by the triggering Entry is generated by a functional user in response to a triggering event.
- A functional process shall include at least one Entry data movement and either a Write or an Exit data movement. There is no upper limit to the number of data movements in a functional process
- Each functional process consists of sub-processes, data movements (DMs) and data manipulations.
- As an approximation for measurement purposes, the COSMIC method assumes that the functionality of any data manipulation is accounted for by the data movement with which it is associated.
- There are four data movement types, Entry, Exit, Write and Read.
- A data movement moves a single data group, which consists of a unique set of data attributes that describe a single object of interest.
COSMIC is principle-based, so it works on any type of software.
Why we Recommend COSMIC
The principles of functional sizing in COSMIC are inspired by the original work by Allan Albrecht who created the IFPUG function point idea. COSMIc is a rethink that has several advantages over it’s predecessor:
- It retains a strong correlation between COSMIC size and effort.
- It is simpler to learn and use than predecessors.
- It does not require knowledge of all the requirements to perform a size measurement.
- It is designed for multi-layered software
- It is designed for embedded systems as well as application software
- COSMIC estimation can be automated more accurately than IFPUG.
- It is 100% free to learn and use.
Three Steps to Counting Cosmic Function Points
1 Measurement Strategy – Determine the purpose of the measurement
as per the Software Context defined above e.g. are we measuring an entire application or just a single component / layer. Who are the functional users interacting with the software.
2 Determine the parameters of the ‘Generic Software Model’
From the Functional User Requirements (FUR)
- Triggering Events
- The Functional Processes
- Objects of Interest (and Data groups)
- Data movements
3. Count the Data Movements
For a new application: count the new Data movements (DMs)
For system modifications : Add the new DMs , changed DMs and removed DMs.
And that’s it, the sum of the DMs is the CFP total!
Most commonly we will measure an entire application treating each layer independently, so just count up all the new functionality and you have the total size.
Definitions
Keyword | Definition |
---|---|
Functional Process | A set of data movements … for the software being measured, that is unique within those FUR and that can be defined independently of any other functional process in those FUR.
Each functional process starts processing on receipt of a data group moved by its triggering Entry data movement. The set of all data movements of a functional process is the set that is needed to meet its FUR for all the possible responses to its triggering Entry. |
Functional User | the ‘senders or intended recipients of data’ (can be human or connected systems or devices such as sensors) |
Functional User Requirement (FUR) | Statements of functional requirements, eg. software specification or user stories. |
Object of Interest | any ‘thing’ (physical or conceptual) in the world of the functional user, about which the software being measured must process or store/retrieve data |
Data Group | consists of one or more data attributes that all describe a single object of interest |
Triggering Event | Each functional process is started by its triggering entry data movement. The data group moved by the triggering Entry is generated by a functional user in response to a triggering event. |
Automated COSMIC Function Points
Now that we have introduced you to the principles and fundamentals behind the COSMIC sizing methodology, you’ll be wanting to try it out. If you are looking for a short cut, a fast way to a rapid estimation, just import your stories into ScopeMaster and let it do the work for you. ScopeMaster analyses written user stories and automates the size estimation in COSMIC Function Points (CFP).