The original COCOMO Model has now been superceded by COCOMO 2. However, a brief review of the original COCOMO model provides insight into the evolution of software estimation approaches. This paper has been excerpted from SEPA, 4/e.
The hierarchy of COCOMO models takes the following form:
Model 1. The Basic COCOMO model is a static, singlevalued model that computes software development effort (and cost) as a function of program size expressed in estimated lines of code (LOC).
Model 2. The Intermediate COCOMO model computes software development effort as a function of program size and a set of "cost drivers" that include subjective assessments of product, hardware, personnel and project attributes.
Model 3. The Advanced COCOMO model incorporates all characteristics of the intermediate version with an assessment of the cost driver's impact on each step (analysis, design, etc.) of the software engineering process.
To illustrate the COCOMO model, we present an overview of the Basic and Intermediate versions. For a more detailed discussion, the reader is urged to study [BOE81].
The COCOMO models are defined for three classes of software projects. Using Boehm's terminology these are: (1) organic mode–relatively small, simple software projects in which small teams with good application experience work to a set of less than rigid requirements (e.g., a thermal analysis program developed for a heat transfer group); (2) semidetached mode –an intermediate (in size and complexity) software project in which teams with mixed experience levels must meet a mix of rigid and less than rigid requirements (e.g., a transaction processing system with fixed requirements for terminal hardware and data base software); (3) embedded mode –a software project that must be developed within a set of tight hardware, software and operational constraints (e.g., flight control software for aircraft).

SEPAweb: Pointers to a number of COCOMO calculators can be found in project planning resources

The Basic COCOMO equations take the form:
E = a_{b} KLOC ^{b}_{b}
D = c_{b} E ^{d}_{b}
where E is the effort applied in personmonths, D is the development time in chronological months and KLOC is the estimated number of delivered lines of code for the project (express in thousands). The coefficients a_{b} and c_{b} and the exponents b_{b} and d_{b} are given in Table 1.
Table 1. Basic COCOMO Model




















The basic model is extended to consider a set of "cost driver attributes" [BOE81] that can be grouped into four major categories:
1. Product attributes
a. required software reliability
b. size of application data base
c. complexity of the product
2. Hardware attributes
a. runtime performance constraints
b. memory constraints
c. volatility of the virtual machine environment
d. required turnaround time
3. Personnel attributes
a. analyst capability
b. software engineer capability
c.applications experience
d. virtual machine experience
e. programming language experience
4. Project attributes
a. use of software tools
b. application of software engineering methods
c. required development schedule
Each of the 15 attributes is rated on a 6 point scale that ranges from "very low" to "extra high" (in importance or value). Based on the rating, an effort multiplier is determined from tables published by Boehm [BOE81], and the product of all effort multipliers results is an effort adjustment factor (EAF). Typical values for EAF range from 0.9 to 1.4.
The intermediate COCOMO model takes the form:
E = a_{i} KLOC ^{b}_{i} x EAF
where E is the effort applied in personmonths and KLOC is the estimated number of delivered lines of code for the project. The coefficient a_{i} and the exponent b_{i} are given in Table 2.
Table 2 INTERMEDIATE COCOMO MODEL












COCOMO represents a comprehensive empirical model for software estimation. However, Boehm's own comments [BOE81] about COCOMO (and by extension all models) should be heeded:
Today, a software cost estimation model is doing well if it can estimate software development costs within 20% of actual costs, 70% of the time, and on its own turf (that is, within the class of projects to which it has been calibrated ... This is not as precise as we might like, but it is accurate enough to provide a good deal of help in software engineering economic analysis and decision making.
To illustrate the use of the COCOMO model, we apply the basic model to the CAD software example [described in SEPA, 5/e]. Using the LOC estimate and the coefficients noted in Table 5.1, we use the basic model to get:
E = 2.4 (KLOC) ^{1.05}
= 2.4 (33.2) ^{1.05}
= 95 personmonths
This value is considerably higher than the estimates derived using LOC. Because the COCOMO model assumes considerably lower LOC/pm levels than those discussed in SEPA, 5/e, the results are not surprising. To be useful in the context of the example problem, the COCOMO model would have to be recalibrated to the local environment.
To compute project duration , we use the effort estimate described above:
D = 2.5 E^{ 0.35}
= 2.5 (95) ^{0.35}
= 12.3 months
The value for project duration enables the planner to determine a recommended number of people, N, for the project:
N = E/D
= 95/12.3
~ 8 people
In reality, the planner may decide to use only four people and extend the project duration accordingly.
REFERENCES
[BOE81] Boehm, B., Software Engineering Economics, PrenticeHall, 1981.
[PUT92] Putnam, L. and W. Myers, Measures for Excellence, Yourdon Press, 1992.