COCOMO Model – Introduction
COCOMO (Constructive Cost Estimation Model) model was proposed by Boehm (1981). According to Boehm, software cost estimation should be done through three stages: Basic COCOMO, Intermediate COCOMO, and Complete COCOMO.
Organic, Semidetached and Embedded Software Projects
According to Boehm (1981), any software development project can be classified into one of the following three categories based on the development complexity: organic, semidetached, and embedded.
Organic: A development project can be considered of organic type, if the project deals with developing a well understood application program, the size of the development team is reasonably small, and the team members are experienced in developing similar types of projects.
Semi-detached: A development project can be considered of semidetached type, if the development consists of a mixture of experienced and inexperienced staff. Team members may have limited experience on related systems but may be unfamiliar with some aspects of the system being developed.
Embedded: A development project is considered to be of embedded type, if the software being developed is strongly coupled to complex hardware, or if the stringent regulations on the operational procedures exist.
Also Read: Software Maintenance
Three stages of software cost estimation
Basic COCOMO Model
The basic COCOMO model gives an approximate estimate of the project parameters. The basic COCOMO estimation model is given by the following expressions:
- KLOC is the estimated size of the software product expressed in Kilo Lines of Code,
- a1, a2, b1, b2 are constants for each category of software products,
- Tdev is the estimated time to develop the software, expressed in months,
- Effort is the total effort required to develop the software product, expressed in person months (PMs).
The values of a1, a2, b1, b2 for different categories of products (i.e., organic, semidetached, and embedded) as given by Boehm are summarized below.
Estimation of Development Effort: For the three classes of software products, the formulas for estimating the effort based on the code size are shown below:
Estimation of Development Time: For the three classes of software products, the formulas for estimating the development time based on the effort size are given below:
Example: Assume that the size of an organic type software product has been estimated to be 32,000 lines of source code. Assume that the average salary of software engineers be Rs. 15,000/- per month. Determine the effort required to develop the software product, the nominal development time, and cost required to develop the product.
From the basic COCOMO estimation formula for organic software:
Intermediate COCOMO model
The basic COCOMO model assumes that effort and development time are functions of the product size alone. However, a host of other project parameters besides the product size affect the effort required to develop the product as well as the development time. Therefore, in order to obtain an accurate estimation of the effort and project duration, the effect of all relevant parameters must be taken into account.
The intermediate COCOMO model recognizes this fact and refines the initial estimate obtained using the basic COCOMO expressions by using a set of 15 cost drivers (multipliers) based on various attributes of software development.
For example, if modern programming practices are used, the initial estimates are scaled downward by multiplication with a cost driver having a value less than 1. If there are stringent reliability requirements on the software product, this initial estimate is scaled upward. Boehm requires the project manager to rate these 15 different parameters for a particular project on a scale of one to three. Then, depending on these ratings, he suggests appropriate cost driver values which should be multiplied with the initial estimate obtained using the basic COCOMO.
In general, the cost drivers can be classified as being attributes of the following items:
- Product: The characteristics of the product that are considered include the inherent complexity of the product, reliability requirements of the product, etc.
- Computer: Characteristics of the computer that are considered include the execution speed required, storage space required etc. Personnel: The attributes of development personnel that are considered include the experience level of personnel, programming capability, analysis capability, etc.
- Development Environment: Development environment attributes capture the development facilities available to the developers. An important parameter that is considered is the sophistication of the automation (CASE) tools used for software development.
Complete COCOMO model
A major shortcoming of both the basic and intermediate COCOMO models is that they consider a software product as a single homogeneous entity. However, most large systems are made up of several smaller sub-systems. These subsystems may have widely different characteristics.
For example, some subsystems may be considered as organic type, some semi-detached, and some embedded. Not only that the inherent development complexity of the subsystems may be different, but also for some subsystems the reliability requirements may be high, for some the development team might have no previous experience of similar development, and so on.
The complete COCOMO model considers these differences in characteristics of the subsystems and estimates the effort and development time as the sum of the estimates for the individual subsystems. The cost of each subsystem is estimated separately. This approach reduces the margin of error in the final estimate.
The following development project can be considered as an example application of the complete COCOMO model. A distributed Management Information System (MIS) product for an organization having offices at several places across the country can have the following sub-components:
- Database part
- Graphical User Interface (GUI) part
- Communication part
Of these, the communication part can be considered as embedded software. The database part could be semi-detached software, and the GUI part organic software. The costs for these three components can be estimated separately, and summed up to give the overall cost of the system.
Also Read: COCOMO Model
Reference: COCOMO Model [NPTEL]