Centraldev blog

Archive for the ‘Development’ Category

How software projects estimation works

Tuesday, June 14th, 2011

Many clients new to software development projects find it hard to understand how we estimate their projects. They think we make up numbers in the air with the objective to reach the amount we want to earn. However, it is your right, as a client, to demand a clear explanation on how estimations are made. Here is how we do it at Centraldev.

Once we have a clear idea of what has to be done, we try to organize project requirements into a format that it is more usable for software developers. This can be in the format of Use Cases or User Stories. The advantage we see in these formats is that they provide a clear guide to both the client and the developer of a valuable goal that can be accomplished with the system under design. So, the developer will work on a task until the goal can be completed with the software.

Each work item (either use case or user story) will receive a “weight” estimation from the development. This estimation is based in both the time needed to complete it and the complexity it may involve. Based in previous experience, we can then translate this weight into hours or days.

Apart from the development work items, there are other tasks that are often forgotten like, project, environment and team setup, meetings, planning, testing, project management and data transformation, among others. All these tasks also add up time to the estimation.

Predicting how long a project could take is very difficult and practically impossible. As humans the amount of work we can produce per hour varies very widely. There could be days when we get distracted easily and other days we are much more productive.

Posted in Development | No Comments »

SCRUM for clients

Tuesday, October 20th, 2009

UPDATE: this post has evolved into the About Our Work Methodology page in our website.

This post is intended for customers to understand the implications of using this methodology and how we implement it in our daily work.

Scrum is an agile development methodology based in the following principles:

How we define what to do

It is important for us to clearly understand what you want to do. We usually like to put this on a Project Vision document. Customers often think that, as we developers we are not interested in the business background for a project. Well, not only we are very interested but we strongly need to know all the aspects of the business related to a project in order to understand the project and to make key decisions in the design and implementation stage of the development cycle.

A Project Vision document contains all available thinking about what a project will be. It defines the goals of a project, why they make sense and what the high-level features, requirements or dates for a project will be.

The most important points to cover in the Project vision are:

How we define requirements

Requirements also define “what to do” in a project, although, with a deeper level of detail than what can be found in the Product Features of the Vision document.

There are several types of Requirements. We classify them as Functional and Non Functional (Usability, Reliability, Performance, Supportability, Implementation, Interface, Operations, Deployment and Legal).

Functional Requirements are among the most important because they define the core of the system, what the system must do, its features and capabilities. Functional Requirements are usually defined as User Stories or Use Cases.

We strongly think that requirements should be written by the customer with one or more members of the development team or, at least, participate actively in the requirements definition.

The best method to involve the client in the definition of the system requirements is by using User Stories because they are easier to conceive and because they are formulated in a more natural and spoken language.

User Stories

User Stories define a goal that a specific type of user has when using the system, in a natural language. Although it is not necessary to follow it, we use this format to describe the User Stories:

As a [type of user], I want/can/need/etc. [goal or need], so I can [reason].

An example of a User Story, for an e-learning web site could be:

As a Teacher,I want to create an online test, so I can measure the level of the students.

User Stories have a more important advantage. They are an easier method to have non technical involved people define requirements. For example, it is easier for a Product Owner to write a list of requirements in this format than in the format of a Use Case diagram or a list of Use Cases.

User Stories emphasize verbal communication, in comparison to written language. The use of the first person to describe the goal make them sound more natural and tend to avoid misunderstandings typical of a written document.

We strongly prefer to define Functional Requirements as User Stories or inspired by them (because sometimes they could be too long) because they are a lot much easier to discuss with clients and users.

All the User Stories (or Use Cases or Features, depending on what we decide to use), along with any other requirement that is expressed in any different way are put together in the Product Backlog. This constitutes all what has to be done to complete the product.

We define the Product Backlog in a System Requirements Specifications (SRS) document and we manage it (time and resources) using a spreadsheet. The SRS document could contain additional information about each User Story. The Non-Functional requirements are also described in the SRS.

Acceptance Criteria

While the Product Backlog defines all what has to be done, sometimes it is risky to give the customer a fixed estimate or quote based only in simple User Stories or Features.

To solve this we sit together with the customer and go through each User Story and define what we call the Acceptance Criteria. This describes the high level features a User Story has to meet and the Tests it has to pass in order to be accepted as complete either by the development team or by the customer.

Examples of Acceptance Criteria for the above User Story could be:

As a Teacher,I want to create an online test, so I can measure the level of the students.

Description

  • Multiple choice type test
  • Hints for wrong or good answers (not required).
  • Defaults to 3 answer options.
  • Ability to add as many answer options as needed.
  • Ability to remove unwanted answer options (e.g. I may want only 2)

Acceptance Tests

  • Submit empty form should show a warning message to user, indicating required fields.
  • Created test is only visible in the class for which it was created.

Resources

Scrum Video: http://www.youtube.com/watch?v=Q5k7a9YEoUI
Scrum Presentation: http://www.mountaingoatsoftware.com/scrum-a-presentation

Bibliography

The Art of Project Management – Scott Berkum

UML and Patterns – Craig Larman

Posted in Development | No Comments »

Tel: (+5411) 6380-6725 - Email: contacto@centraldev.net
© 2009 Centraldev. Todos los derechos reservados.