How to estimate a software project?

Estimating software projects is never straightforward and everybody has an opinion on what is the right way to do it. In this article I’ll give you my two cents on the matter.

It is usually told that the initial phase for every project should be to create a Backlog where you describe the entire project. However, I think this approach is wrong for agile projects because it compromises the flexibility and responsivity of this kind of projects. So is there any special tip for estimating agile projects? I like to use Rational Unified Process (RUP). Using this approach you identify 4 phases where you can then use Scrum Methodology or another agile technique in order to develop your project. 

Here are the 4 phases:

  1. Inception: In this phase your client and you have to be as creative as you can in order to devise all the various features of the app and identify any possible problem that can affect the end users of your future software.
  2. Elaboration: In this phase each member involved has to be more critical and concrete in order to create a detailed backlog based on User Case or User Story, depending on what is your necessity. Also here, you have to divide, estimate the effort of each activity and also prioritize them.
  3. Construction: This phase is where the coding starts and all of the team becomes involved. In this phase it is crucial to split the app’s behaviour into as many separate functionalities as possible, and ideally have one functionality ready to be deployed at the end of each sprint. Also, you should make sure that each member of your team is efficiently allocated to some task and that they know what is their responsibility and their goal within the project.
  4. Transition: as the coding part is finished, this phase is where you deliver the software to your client. In this phase it is important to make sure that the acceptance tests run smoothly and that your client get a positive perception of your final product.

Are there any disadvantages to RUP? 

One problem that may arise in application is that it is not always clear how to map the different development elements to the various phases. For instance, if you are going to create a mock-up for your app, where does it belong to? The answer is not pre-determined: if the mockup is needed to convey a general idea it will go in the Inception phase; on the other hand, if it is used for specifying a behavior of the app, it belongs in the Elaboration phase.

In my next post, I am going to talk about which tools can be used for RUP. 

Thanks for reading :D. 

Leave a Reply