New COCOMO® II book now available! Don't be left behind! Order yours today!
available at this site
require a PDF or Postcript
COCOMO II is a model that allows one to estimate the cost, effort, and schedule when planning a new software development activity. It consists of three submodels, each one offering increased fidelity the further along one is in the project planning and design process. Listed in increasing fidelity, these submodels are called the Applications Composition, Early Design, and Post-architecture models. Until recently, only the last and most detailed submodel, Post-architecture, had been implemented in a calibrated software tool. As such, unless otherwise explicitly indicated, all further references on these web pages to "COCOMO® II" or "USC COCOMO® II" can be assumed to be in regard to the Post-architecture model.
The implemented tool provides a range on its cost, effort, and schedule estimates, from best case to most likely to worst case outcomes. It also allows a planner to easily perform "what if" scenario exploration, by quickly demonstrating the effect adjusting requirements, resources, and staffing might have on predicted costs and schedules (e.g., for risk management or job bidding purposes).
The original COCOMO® model was first published by Dr. Barry Boehm in 1981, and reflected the software development practices of the day. In the ensuing decade and a half, software development techniques changed dramatically. These changes included a move away from mainframe overnight batch processing to desktop-based real-time turnaround; a greatly increased emphasis on reusing existing software and building new systems using off-the-shelf software components; and spending as much effort to design and manage the software development process as was once spent creating the software product.
These changes and others began to make applying the original COCOMO® model problematic. The solution to the problem was to reinvent the model for the 1990s. After several years and the combined efforts of USC-CSE, IRUS at UC Irvine, and the COCOMO® II Project Affiliate Organizations, the result is COCOMO® II, a revised cost estimation model reflecting the changes in professional software development practice that have come about since the 1970s. This new, improved COCOMO® is now ready to assist professional software cost estimators for many years to come.
Note on Nomenclature:
The original model published in 1981 went by the simple name of COCOMO®. This is an acronym derived from the first two letters of each word in the longer phrase Constructive Cost Model. The word "constructive" refers to the fact that the model helps an estimator better understand the complexities of the software job to be done, and by its openness permits the estimator to know exactly why the model gives the estimate it does. Not surprisingly, the new model (composed of all three submodels) was initially given the name COCOMO® 2.0. However, after some confusion in how to designate subsequent releases of the software implementation of the new model, the name was permanently changed to COCOMO® II. To further avoid confusion, the original COCOMO® model was also then re-designated COCOMO® 81. All references to COCOMO® found in books and literature published before 1995 refer to what is now called COCOMO® 81. Most references to COCOMO® published from 1995 onward refer to what is now called COCOMO® II.
(If in examining a reference you are still unsure as to which model is being discussed, there are a few obvious clues. If in the context of discussing COCOMO® these terms are used: Basic, Intermediate, or Detailed for model names; Organic, Semidetached, or Embedded for "development mode," then the model being discussed is COCOMO® 81. However, if the model names mentioned are Application Composition, Early Design, or Post-architecture; or if there is mention of "scale factors" Precedentedness, Development Flexibility, Architecture/Risk Resolution, Team Cohesion, or Process Maturity, then the model being discussed is COCOMO® II.)
The software implementation of the model also follows a specific naming convention. The theoretical model is referred to as COCOMO® II. The USC-CSE software implementation of the model is referred to as USC COCOMO® II, to distinguish it from other academic or commercial implementations of the model. The complete designation of the first release of our implementation was USC COCOMO® II.1997.0. There was a follow-up release called USC COCOMO® II.1997.1. The next release of the tool is called USC COCOMO® II.1998.0. The calendar year component of the designation (e.g., 1997, 1998) identifies the calibration. Within any given calendar year, only one official calibration of the model parameters will be released by USC. The current plan is to release a new calibration annually, as ever more historical projects get added to the calibration database, and as improved statistical techniques are applied to the calibration activity. However, while within any calendar year there will only be one calibration release, there may be one or more releases of the USC software using that calibration. The final component of the full designation identifies the specific software release. Thus USC COCOMO® II.1997.0 and ~.1997.1 have the same parameter values, and cost estimates made by either implementation can be directly compared. But the ~1997.1 version incorporated changes in the software which made the tool easier to use over the ~1997.0 version. USC COCOMO® II.1998.0 has a completely new calibration, and thus its output cannot be legitimately compared directly with estimates made by either of the 1997 releases of the tool.
COCOMO® and Function Points
We would like to address two misconceptions about COCOMO®, source lines ofcode (SLOC) and function points (FP):
Misconception 1. COCOMO® does not support the use of function points.Function-point versions of COCOMO® have been available since the Before YouLeap commercial COCOMO® implementation in 1987. COCOMO® II supports the useof either function points or source lines of code. In both cases, this isdone via "backfiring" tables of source lines of code per function point forsource languages at different levels.
Misconception 2. It is irresponsible to use SLOC as a general productivitymetric, but it is not irresponsible to use FP as a general sizing parameter forestimation. This breaks down into two cases:
2a. Your organization uses different language levels to develop software.In this case, it is irresponsible to use SLOC as a productivity metric, asyou get higher productivity/SLOC at higher language levels. However, it isalso irresponsible to use FP as your general sizing metric for estimation,as pure FP will give you the same cost (or schedule or quality) estimatefor a program with the same functionality developed using differentlanguage levels, which is clearly wrong. To get responsible results inthis case, FP-based estimation models need to use some form of backfiringto account for the difference in language level.
2b. Your organization always uses the same programming language (level).Here, it's responsible to use pure FP as your sizing metric for estimation.But it's also responsible to use SLOC as your productivity metric.
*The first published paper detailing COCOMO® II.
The first USC-CSE implementation of COCOMO® II was released to the general public in mid-1997. USC COCOMO® II.1997 is calibrated to 83 data points (historical software development projects), using a 10% weighted-average approach (35kb) to blending empirical data with expert opinion to calibrate the model parameters. Over those 83 data points, the '97 release demonstrates an accuracy of within 20% of actuals 46% of the time for effort, and within 20% of actuals 48% of the time for a nonincremental development schedule.
USC COCOMO® II.1998.0 beta was released in October 1998. The '98 version of the model has been calibrated to 161 data points, this time using a Bayesian statistical approach (119kb) to blending empirical data with expert opinion to calibrate the model. Over those 161 data points, the '98 release demonstrates an accuracy of within 30% of actuals 75% of the time (and within 30% of the actuals 80% of the time after stratification by organization) for effort, and within 30% of actuals 72% of the time (within 30% of the actuals 81% of the time after stratification by organization) for a nonincremental development schedule.
USC COCOMO® II.1999.0 was released in mid-1999 and USC COCOMO® II.2000.0 has been released in conjunction with the publication of our new COCOMO® book in July 2000. While each release of the USC COCOMO® II tool has seen improvements in its user friendliness, for logistical reasons related to preparation of materials for our book, the 1998, 1999, and 2000 model calibrations are the same. That is, no new data points have been added to the database used to calibrate the 1999 and 2000 releases of the tool beyond those that appeared in the 1998 calibration database. The same 161 datapoints noted above appear in all three implementations. With publication of the new book achieved, however, our attention is again now focusing on improving the calibration of the tool itself, and it is anticipated that USC COCOMO® II.2001.0 will indeed have a new calibration.
Finally, experience has shown that if an organization calibrates the multiplicative constant in COCOMO® II to its own empirical data, the accuracy of the model can be greatly improved over the generic calibration results indicated above.
|COCOMO® II||COCOMO® 81|
Once a calibrated version of COCOMO® II was finally released to the public, the need to provide a single, concise, authoritative resource documenting the model and explaining the use of the USC COCOMO® II software became apparent. To that end, members of the COCOMO® research group have authored a book called Software Cost Estimation With COCOMO® II (Prentice Hall, July 2000) shown above on the left. The book explains the theory behind the model, while keeping a focus on the practical informational needs of the professional software cost estimator.
Rather than as a replacement of Software Engineering Economics (Prentice Hall, 1981) shown above on the right, which was Barry Boehm's earlier text detailing the theory and application of COCOMO® 81, this new book should be viewed as an updated supplement (in practical terms it supercedes about one third of the material in the original book). For the software professional, it serves quite well as a stand-alone resource, providing all the information needed to effectively apply the USC COCOMO® II tool. For the student studying software economics, it complements Boehm's original text, omitting the broaderdiscussions of software project management still valid in the earlier book, while providing insight into the changes in software development practice that have occurred over the past twenty years and which have made the development of COCOMO® II necessary.
Both books can be ordered at Amazon.com:
Software Cost Estimation with COCOMO® II
Software Engineering Economics
As errata for the new book and it's accompanying compact disc are identified, they will be documented here:
To help us improve the next edition of the COCOMO® II book and included software, we would also be most grateful if you would care to report to userrors both conceptual and typographic that you discover in the course of using both the text and its included CD:
|Report text errors to: email@example.com|
|Report CD and software errors to: firstname.lastname@example.org|
The key factor in continuing to improve the predictive accuracy of COCOMO® II is good data. As is explained in the introduction, annual releases of the tool to the public with ever better parameter calibrations are planned. This is contingent, however, on the continued addition of historical projects to the COCOMO® II calibration database. To that end, we are asking for the help of the software industry in collecting data. If you or the organization you work for has the ability to supply software development project data, we would like to hear from you. The benefit to you for participating in data collection will be the availability of a more accurate predictive model for estimating your software project costs.
There are two ways in which to participate in the COCOMO® II data collection program. The first is by returning to us completed hardcopies of the COCOMO® II cost estimation questionnaire. The second, more recent, and simplist method is by returning to us on a floppy disk the saved project files created by you while using the USC COCOMO® II software.
We have proven procedures that we have followed successfully for over four years to prevent the compromise of any information entrusted to us that could be considered proprietary by data suppliers. Moreover, we would be glad to discuss any specific accommodations you might need to permit your participation in this data collection effort.
For your convenience, we are providing below for download copies of the COCOMO® II data collection instrument, and the standard data nondisclosure agreement USC-CSE enters into with most of our data suppliers. The USC COCOMO® II software is available here.
For further information or to discuss participation in the COCOMO® II data collection program, please contact us.
Data Collection Documents:
IMPORTANT NOTE: If you need feedback regarding some unique matter relative to USC-CSE activities or research or Affiliate business for which you know one of the parties below is the person with whom you should be dealing, then please by all means contact that individual. However, if you have generic questions regarding COCOMO® or the software tools available at this site--including problems with ftp and/or downloading--you will receive a faster response by using the appropriate e-mail accounts listed in theFor Further Information section near the bottom of this web page rather than sending identical e-mail requests individually to each member of the research group.Such duplicate requests require us to spend unnecessary effort coordinating and eliminating multiple responses.Thanks for everybody's cooperation along these lines....
Primary funding and technical support of the development of COCOMO® II has been provided by the members of the COCOMO® II Project Affiliates' Program. We would like to take this opportunity to acknowledge the generous assistance of our program members, without whose help the development of COCOMO® II would have been impossible.
The COCOMO® II Affiliates' Program enables interested organizations to participate in the development and definition of COCOMO® II. In return for their financial support and technical assistance, the program provides Affiliates with evolving model definitions, tools for experimentation, and opportunities to provide feedback. The program also provides Affiliates with associated reports, tutorials and model tailoring guidelines, as well as participation in workshops on COCOMO® II and related issues. Affiliate members also receive calibrated releases of the USC COCOMO® II software well before the public at large.
For your convenience, we are providing for download a copy of the COCOMO® II Affiliates' Program Prospectus, which describes the program in detail, and also contains a program membership form. For further information or to discuss participation in the COCOMO® II Affiliates' Program, please contact us.
The COCOMO® II Affiliates' Program is not to be confused with the more encompassing USC-CSE General Affiliates' Program.
For answers to the most frequently asked questions about COCOMO® go here.
The various USC software implementations of COCOMO® II have been developed by graduate student programming teams under the leadership of Dr. Ellis Horowitz. The tool is available for Unix, Microsoft Windows, and Java-enabled environments. The program files download in compressed format and need to be unzipped with the appropriate utility.
Note: occasionally, some users experience difficulties in downloading software and documentationfrom our website, either directly from this page itself, or from our ftp site. If users experience trouble, usually itmanifests in the form of a "timeout error" while trying to establish a connection to our server. This is a function ofthe way the firewall is implemented on our end, which requests a domain ID which your server is likely not sending or at least our server is not interpreting if you areexperiencing this kind of difficulty. In this event, send a request to email@example.com what happened and what files you are trying to download, and we will attempt to send you via e-mail the filesthat you desire.
*This is a self-extracting program that installs USC COCOMO® II.1999.0 and Excel Analyzer Tool which imports into Excel 97 a CSV data file exported from COCOMO® II.
This is a beta version.
*This is a self-extracting program that installs USC COCOMO® II.1998.0 and Excel Analyzer Tool which imports into Excel 97 a CSV data file exported from COCOMO® II.
The ~97.2 software corrects a bug in the calibration function found in the USC COCOMO® II.1997.1 implementation.
*The ~97.2 software corrects a bug in the calibration function found in the USC COCOMO® II.1997.1 implementation.
*Developed by Dr. Ray Madachy, this is an innovative COCOMO® II implementation that uses heuristics to flag potential risks found in specified project development conditions.
For discussions of known bugs in USC COCOMO® II software go here.
COCOMO® 81 is a model that allows one to estimate the cost, effort, and schedule when planning a new software development activity, according to software development practices that were commonly used in the 1970s through the 1980s. It exists in three forms, each one offering greater detail and accuracy the further along one is in the project planning and design process. Listed by increasing fidelity, these forms are called Basic, Intermediate, and Detailed COCOMO®. However, only the Intermediate form has been implemented by USC in a calibrated software tool.
The implemented tool provides cost, effort, and schedule point estimates. It also allows a planner to easily perform "what if" scenario exploration, by quickly demonstrating the effect adjusting requirements, resources, and staffing might have on predicted costs and schedules (e.g., for risk management or job bidding purposes). Over 63 data points in the COCOMO® 81 calibration database, the Intermediate form demonstrates an accuracy of within 20% of actuals 68% of the time for effort, and within 20% of actuals 58% of the time for a nonincremental development schedule.
COCOMO® 81 has a rich legacy. Originally published by Dr. Barry Boehm in 1981 under the simple name COCOMO®, it went on to become (and arguably remains) the most widely used software project cost estimation model throughout the world. It has also existed in other incarnations, the most prominent being Ada COCOMO®. After nearly twenty years of solid service, however, it is finally being retired in favor of COCOMO® II, which models the way software is built today in the 1990s, and will continue to be built well into the new century.
Boehm, Barry W., Software Engineering Economics, Prentice Hall, 1981.
Dr. Boehm's 1981 book is still the most complete resource for information regarding original COCOMO®, as well as providing a wealth of material that will improve one's understanding and application of COCOMO® II.
COCOMO® 81 Downloads (Software and Documentation):
The USC COCOMO® 81 implementations were developed by graduate student programming teams under the direction of Dr. Ellis Horowitz. Expert COCOMO® 81 was developed by Dr. Ray Madachy. The web-based COCOMO® 81 Calculator was developed by Dr. Brad Clark. The program files download in compressed format and need to be unzipped with the appropriate utility.
*This is an innovative COCOMO® 81 implementation that uses heuristics to flag potential risks found in specified project development conditions.
For an extensive bibliography of software cost estimation related papers and books go here.
|Beginning with COCOMO® itself, The COCOMO® Suite is a collection of six COCOMO®-related estimation models in various stages of development. These models attempt to estimate impacts on software system cost, development schedule, and even return on technology investment associated with a variety of software development approaches and processes.|
|Click on the graph to view website visitor statistics:|
|To the Center for Software Engineering Home Page|
Copyright 1995-2001 The University of Southern California
The written material, text, graphics, and software available on this page and all related pages may be copied, used, and distributed freely as long as the University of Southern California as the source of the material, text, graphics or software is always clearly indicated and such acknowledgement always accompanies any reuse or redistribution of the material, text, graphics or software; also permission to use the material, text, graphics or software on these pages does not include the right to repackage the material, text, graphics or software in any form or manner and then claim exclusive proprietary ownership of it as part of a commercial offering of services or as part of a commercially offered product.