Friday, May 20, 2011

Software Estimation

Being worn-out with just project estimation and re-estimation alone for the past few months, why not write some thing about software estimation though its not a small topic for me write few lines and finish off. So, here goes a very small snap-shot...

As like the saying, 'Don't fail to plan unless you plan to fail', a crystal clear planning is the basic necessity for successful execution of a project and estimation forms of the one important basics of the plan.

By Software estimation what we estimate on:
        1) Effort: Estimation of amount of work to be done. Eg: Number of Function Points involved or LOC to be developed.
        2) Time & Cost: Time needed to get the work done. Usually expressed in work-months/man-months/Person-weeks.
        3) Resource: Involves estimation of hardware (Well we can't develop a cloud management system with just 2 Desktop terminals!), software (Need to pay for MS products!), human resource (most important part: rightly skilled human resource availability), network infrastructure etc...

So, how are these estimations done and what are considered while estimating?
Input or factors to be considered:
        1) Historical data (Experience matters!!!)- Historical data from prior project on similar domain/technology/
        2) Complexity - Effort needed for developing a inventory management system and space shuttle monitoring system are not same. Complexity of the requirement matters!
        3) Resource Skill level - A very important factor, which leads to include training cost. In some cases, this is a deciding factor for project implementation platform too!
        4) Prior experience on similar projects - Lessons learned always helps in future!
        5) Tools - Usage of which can ease the job to fasten the implementation/test phases. There is difference in writing code in Eclipse and EditPlus.
        6) Process - Agile/XP/Waterfall too matters. (2hrs/day on Stand-up meetings will have impact on T&C!)
        7) Development platform - They say, its faster and easier to develop using Java/JEE.
        8) Of course Software requirement :) (We are not arrows with out target! But includes both FR and NFR)

So, how these estimated are done? There are lots and lots of estimations techniques: COCOMO, parametric model - Cost Driver based estimation, SDM, SLIM etc...

After doing all, should we rely on what was estimated during project initiation till project closure? A very important thing, estimate must be revised over the phases of the project at different stages. Requirement takes different image over the course of execution and as usual unexpected surprised welcomes every new day. Beyond everything, T&C requirements should be kept on track. Cost-over run project gets scrapped too! These mandates the revision of estimates at due intervals.

Reminds me of my S/W Engg Prof. iterating, "None of the Software projects completes on estimated cost and time".
After all, those are just estimates and not actuals! We need something under the term called, "Variance" too!


allen perumal said...

Great thoughts you got there, believe I may possibly try just some of it throughout my daily life.

Software Estimation Techniques Training in Chennai

manav said...

Great thoughts you got there, believe I may possibly try just some of it throughout my daily life.

Function Point Estimation Training