Tuesday, March 30, 2010

Effort estimation for software development - the agile way

Estimating how long it will take to develop a software product is hard task. There are several approaches to be considered for effort estimation:
1. expert estimation: the figures are produced through a judgement process by experienced people
2. formal estimation methods: the figures are computed in an algorithmic way, usually based on historical data and on the parameters of the project to be estimated
3. a combination of the previous methods: some activities and tasks are estimated by experts, other using formal methods.
Historically speaking there are no studies that prove beyond doubt that one approach is better than the other or a method that is superior to others. Ideally each organization should choose the estimation method(s)that best fit the types of projects to be estimated.
I personally prefer expert estimation methods because are lightweight and additionally I tend to give credit to a person instead of an algorithm. On the other hand I don’t like "wild guessing", even if an expert is guessing. Considering this, my favourite estimation way of estimating is the following agile method:
1. decompose the project into phases, activities, tasks (i.e. work break down structure)
2. classify each task by complexity (e.g simple, medium, complex) and size (e.g. small, medium, large)
Note: there may be more complexity and size levels, but usually 5 is the upper limit.
3. define for each complexity-size category the estimated time for completion ( this should not be "wild guessing", but an estimation based on experience :) )
4. aggregate the estimations for tasks in a bottom-up manner to get the project estimation.
One thing to remember is to revisit and refine the estimates as the project progresses, assumptions are clarified, open points are closed and more information is available.

Wednesday, February 3, 2010

What is sofware development?

Software development (SWD for short) is the technical and artistic act of creating software. Althouhg many people think of SWD as beeing the same with computer programming, it is a more complex human activity that ususally includes research, development, training, maintenance, re-engineering, overall management, etc. SWD is ususally conducted based on a development methodology that best fits the purpose of developing the software product . The development methodology defines proceses and methods that, when followed, ensure the successful completion of software product creation.

It's alive ... my blog!!!

Today I've started my blogger life, few clicks and I'm free to share my thoughts with the citizens of the blogosphere. Mathematically speaking, the set of citizens interested about my thought is probably an empty set today :), but, who knows, probably the situation will change over time!


PS: I hope my blog will not die young

Search This Blog