# Friday, November 28, 2008

In our software development business, we are always asked for estimates on:

  1. How long is the project going to take?
  2. How much will it cost?

There is a simple to use online estimation tool at: http://www.cms4site.ru/utility.php?utility=cocomoii

It takes the lines of code and hourly rate as input:

Clicking the go button immediately gives you an effort and cost estimate:

You can fiddle with team skills and project complexity and see the result.

I know some people and organizations are adverse to counting lines of code, but after 17 years in this business and having tried several different estimation methods and models, I have to admit, using COCOMO II as an estimation model has proven in practice, at least for me, the most accurate way of estimating how long a project is going to take and how much it is going to cost.

You can read the extensive COCOMO II estimation model manual at:

http://csse.usc.edu/csse/research/COCOMOII/cocomo2000.0/CII_modelman2000.0.pdf

Friday, November 28, 2008 10:18:23 PM (Pacific Standard Time, UTC-08:00)  #    Comments [2]
Sunday, November 30, 2008 7:31:57 PM (Pacific Standard Time, UTC-08:00)
LOC is an accurate estimation tool. The "black magic" is in:
- the assessment of your teams capabilities (unless you have a good historic stock of projects by that team to compare earlier estimates)
- the project's complexity.
- mapping a user requirement to a # of LOC.

What I haven't found yet is a good estimation tool when the software artifacts are not created using code alone. Stuff like generators, visual mappers, GUI editors etc. Insights into that are helpful.
Sunday, November 30, 2008 9:46:20 PM (Pacific Standard Time, UTC-08:00)
Stephan, thanks for your comments, I totally agree and have a few additional insights that I hope you find useful. Please refer to COCOMO II estimation model manual link at the bootom of my post as it is an excellent reference and answers most of your questions.

Re: assessment of team’s capability – the model does take this into consideration, see 3.2.1.3 Personnel Factors on page 31. While it does take time to establish historical data, the model does supply default historical data – gotta start somewhere right?

Re: projects complexity – see Product Complexity (CPLX) on page 26 and subsequent tables – I think the model does a great job on factoring in complexity.

Re: mapping a user requirement to a # of LOC – this is implicitly implied in the Documentation Match to Life-Cycle Needs (DOCU) on page 29. However, you need to explicitly do so using like a requirements traceability matrix for example. One really good way I have seen this done is either mapping a use case or a feature to LOC’s.

Re: how to account for code generation, visual mappers, and really just configuring as opposed to coding – excellent question! See Counting Unadjusted Function Points (UFP) on page 4 for an approach that we have found to work on non-coded items, but are, in the end, converted into LOC’s. I have found this approach easy to do and still remain quite accurate.

As you peruse through the documentation, you will see many other factors such as the organizations maturity as related to SEI’s Capability Maturity Model, code reuse, both in the sense of reusing code from another project and developing this projects code to be reusable, etc. Pretty extensive.

While this model is not the “silver bullet,” it is, in my humble opinion, the best estimation model we have to date.
Comments are closed.