Trouble understanding the COCOMO model

cocomoplanningproject-management

In the basic COCOMO Model which is used to estimate the development time of software

Effort : a * KLOC^b = X person months

Development time : c * Effort^d = Y months

where a , b , c , d are constants derived from the table below depending on the type of your software project

enter image description here

Question 1

Assuming X = 10 , Effort will be equal to 10 person months.

Does 10 person months mean that the effort required to complete this project will be 1 month if we have 10 people working on it

OR

Does 10 person month mean that the effort required to complete the project will be 10 months if we have 10 people working on it.

Question 2

Do the constants have any SI units like the SI unit of Effort is person months

I am confused by the terminology

Best Answer

Before going too far two books that you really should read:

The basic COCOMO model has some issues with it that were outdated and addressed in the COCOMO II model. From the cited wikipedia page:

COCOMO II is the successor of COCOMO 81 and is better suited for estimating modern software development projects. It provides more support for modern software development processes and an updated project database. The need for the new model came as software development technology moved from mainframe and overnight batch processing to desktop development, code reusability, and the use of off-the-shelf software components.

While the effort of "10 man months" is an estimation of effort it assumes the perfectly divisible task. If you are digging 10 holes in the ground, you can have one person dig 10 holes or 10 people dig one hole - and the 10 people will do it about 10 times faster. As has often been noted, this doesn't work well with software programming.

Of particular interest in this is the paper "Effect of Schedule Compression on Project Effort" [link] which looks into the relative cost of the percent of the most efficient schedule.

Another thing to read is How Software Estimation Tools Work written by one of the people who is often cited the algorithms for software estimation tools.

Effort / staff = time period

As you note, that doesn't work well for programming.

From something I wrote a long time back and didn't cite well I had the following table to tack on to the end of the estimated effort (digging a bit more, it looks a bit like something from the COCOMO II Schedule Equation). Take a default schedule multiplier (3.67) multiply the cube root of the time estimation (your case 10 months).

3.67 * 101/3 = 7.9

This represents the best case for a software development project timeline.

Where do these numbers come from? Fitting 20k projects to a curve.

From this 7.9 we've got a few things we can get from it:

  • Least effort = 2x optimal delivery time (15.8 months)
  • Region of impossibility = < 75% of best case delivery time (5.9 months)

There's a lot going on behind the COCOMO and COCOMO II model. These numbers are fits to a sampling of huge numbers of software projects and unless you understand what you are feeding into the model (to match what the model expects) the numbers you get out won't match anything even vaguely resembling reality.

Realize also that you've gotten about 2/3 of the way through the estimation process. It doesn't end with the estimated effort (10 man months) and continues on with the scheduling. That last bit of the Duration is often dropped or forgotten when the estimate of 10 man moths comes out and they'll just toss 3 people on it and have it done in 3 months (and then it fails because its in region of impossibility)

Further reading: