Using COCOMO to Help Decide
on a Design

You are about to start a large development project for an external customer. The contract has already been signed.  Delivery is schedule for 12 months from project initiation.  Price is set at $650,000.  There is a fee for late delivery.

Much of the circumstances of the project are fixed. You don't have a choice of which analyst to use (they have average abilities), or which process model to use (a version of waterfall). What you do have is three very different approaches submitted by the architectural design team.

The first design promises to be fairly short in the number of likely source lines of code (SLOC) - about 10,000. However, the complexity of this solution is extremely high. For this option you must use the best development team with the highest level of experience. They are expensive - average salary of $120,000 per year ($10,000/PM).

A second solution, that has an average complexity level, calls for reusing code from a previous project. With this solution, the total size of the product is expected to be about 20,000 SLOC, with about 5,000 of that being reused code(*). Since this solution has nominal complexity, you will have to use a programming team with nominal abilities. Their average salary is $90,000 per year.

A third solution is to build the product with an extremely simple brute force approach. This low complexity solution is expected to result in about 25,000 lines of code. Since the solution is so simple, you will be stuck with an only okay group of programmers that make about $60,000 each. These programmers are not in the bottom 1/4 of programmers, but in the next 1/4 just below average.

A final concern is the time. The contract calls for a delivery within 12 months, with a penalty of 5% of the total sale for every month over 12 months. Again, the price is $650,000. So, if the project time ends up being 13.5 months, then your profit goes down by $48,750 (1.5months * 0.05/month * $650,000 = $48750).

Which plan is most profitable to your company? You will need to use a spreadsheet and COCOMO II to calculate your estimates.

(*) -- enter "15000" on the "new" line, and enter "5000, 0, 0, 0, 100" on the "modified" line