I am reading about COMOMO estimation and what I see is margin of error is almost always too high. Also I didn't like the idea to use lines of code to measure progress. So I wonder is COMOMO really a sound estimation method in today's practice. If not, is it replaced by another method?
First of all, the COCOMO approach is rather an estimation model than a method. Estimation models are mathematical algorithms or parametric equations to estimate the cost of a product or project.
The COCOMO approach has a major drawback like all estimation models. They seem to be objective by using a mathematical formula but the quality of the result strongly depends on the (subjective chosen) input values.
In case of the COCOMO model the LoC is the main input value. Hence, the main question is, how do you estimate the LoC for a Software System?
Maybe there are a few experts who are capable to estimate the LoC, but I am pretty sure for most experts (including those) it's easier to estimate directly the effort in man days.
An other question is, in times of Type Less Do More, Code Generation, Model Driven Development etc. is the LoC still (if it ever was) a good criteria to estimate the costs? So, the pure programming effort in a Software Project is much lower than it was 20 years ago and it constantly shrinking.
Overall In my opinion the COCOMO model has no relevance anymore. And I doubt if it ever has once at all.
If not, is it replaced by another method?
There are different approaches for estimating costs. To choose the right one depends on several boundary conditions.
- Are the requirements of the project clear?
- How many experts are available for estimating?
- Is any reliable historical data of similar projects available?
- Is reliable historical data about the team (members) performance available?
If you have some experts you can rely on an expert judgement (an interesting expert judgement method is the Wideband Delphi Method). If you have reliable historical data you can estimate the cost by using analogy/relational based methods. If you have both try to combine those approaches.
Finally, never forget, an effort estimation is only as good as the requirement analysis. If your requirement gathering process fails, is inadequate, your estimation will give you wrong results regardless which technique you choose.