The COSMIC method

All the information related to this method is freely available throughout its website www.cosmicon.com. The site allows visitors not only having an overview of the method, but downloading related articles, case studies, and the most recent version of the measurement manual translated in 12 languages. In addition, the site contains a Frequently Asked Question section useful for all type of audiences.

A brief overview of the COSMIC method is as follows:

  1.  The Basic Functional Component (BFC) is the data movement.   
  2.  The measurement unit is a COSMIC Function Point (CFP), which represents one data movement.   
  3. A functional user of a software application can be: a human, another software application, or a hardware device.   
  4. A boundary is a conceptual interface between the functional users and the software application.    
  5. The functional users interact with the software application via data movements.    
  6. There are four types of data movements: Entry (E), eXit (X), Read (R), and Write (W).
    a. An Entry occurs when a data group is moved from a functional user into the software. b. An eXit occurs when a data group is moved from the software to a functional user. c. A Read occurs when a data group is moved from a persistent storage into the software. d. A Write occurs when a data group is moved from the software into a persistent storage.
  7. A functional process is a set of data movements (at least 2).    
  8. A functional process is an elementary component of a set of Functional User Requirements.   
  9. A functional process is triggered by a data movement (an Entry) from a functional user.   
  10. A data movement moves a single data group, which is a distinct, non-empty, non-ordered and non-redundant set of data attributes of the same object of interest.    
  11. The functional size of software is calculated in CFP by adding together the data movements.

To illustrate the above steps and concepts, Figure shows a graphical representation of how to obtain the functional size of a functional user requirement by using the COSMIC method. The explanation of this Figure is next.

Scope of measurement: Measure the size of the functionality "Create a new customer"
Functional user: Salesman 

Figure : Example of the COSMIC method

Pre-conditions: The salesman is already logged in the system and has selected the option "Create Customer"
Flow of events:

  1. The salesman enters the name and email of the new customer (John Smith, js@hotmail.com) and press OK.  
  2. The system verifies if the customer already exists in the database.   
  3. If the customer exists, an error message is displayed.  
  4. If the customer is new, the system asks the salesman to confirm the data that is going to be saved by pressing OK. If needed, the salesman can correct the customer data.   
  5. A new customer is created into the database.   
  6. A confirmation or error message is displayed.

Boundary: Limit between the salesman and the system

Functional processes: 1) Verify if the customer exists in the database, 2) Create a new customer in the database.

Data group (DG): Customer (Name & e-mail)
Data attributes: Name, email

Data movements (DM):
Functional process 1: Verify if the customer exists in the database
The salesman enters the Customer data and presses OK (Triggering event - Entry)
Retrieve the existing customers from the database to verify if John Smith already exists as customer (Read).  
A confirmation message OR an error message -if the customer already exists- (eXit).

Functional process 2: Create a new customer in the database.
The salesman verifies/corrects the customer data and presses OK (Triggering event - Entry)
The customer data is stored in the database (Write)
Confirmation OR Error message (eXit) 

Functional size:

Count 1 CFP (Cosmic Function Point) per Data Movement, as shown in below (Table 4.2).

 

Table

: Example of counting Function Points with the COSMIC method 

Process

Subprocess

Data Group

(DG)

DM

CFP

 

Comment

Verify if the customer exists in the database

The salesman enters the Customer data and presses OK

Customer

E

1

 

 

The system retrieves the existing customers from the database to verify if John Smith already exists as customer

 

Customer

R

1

 

 

A confirmation message OR an error message (if the customer already exists)

Software Messages

X

1

 

Create a new customer in the database

The salesman verifies/corrects the customer data and presses OK

Customer

E

1

This movement is considered as an Entry because the salesman can retype the customer data

 

The customer data is stored in the database

Customer

W

1

 

 

Confirmation or error message

Customer

X

1

 

Total functional size= 6 CFP

Suggested references for beginners are: