The general idea around (Smart) estimation is to be able to express project effort at any given time before or during a project. Doing so, you should be aware of something which is called the Cone of Uncertainty. This simple but valuable graph demonstrates that estimates will get better as the project progresses, but also that when estimating a project beforehand, you should definitely take some margins into account. Next, the basic question to answer to get sounds estimates will be: how do we get from sizing (complexity x velocity) to working out the effort and hours?
Estimating Smart projects
Projects that are executed using the agile methodology Smart are based on smart use cases. Estimation than becomes a quite clear process, based on the same smart use cases. There are a couple of steps in this process. First of all your will need to establish a measure for the complexity (C) of your projects. And next, you will need to map that to hours to spend on the project, that is you will need to find what your projects’ velocity (V) is.
Read more at Smart process.
Establish project complexity (C)
In Smart projects, we tend to take the following steps:
- Model smart use cases. First of all, during the projects, all requirements are expressed using smart use cases. The complexity is expressed in smart use case points. Read more at Modeling smart use cases.
- Apply smart use case scale. The complexity of smart use cases is estimated using a simple, straightforward scale. This scale ranges from 1 to 5, but also includes 8 and 10 for specific, extreme complexities. Read more at Smart estimation scale.
- Apply smart use case stereotypes. Additionally, we have a collection of standard types of smart use cases. These stereotypes, as we tend to address them, describe re-occurring requirements in projects, such as master-detail, calling a service, publishing a report, or doing extractions in data warehouse projects. Each of these stereotypes has a default complexity. Read more at Smart use case stereotypes.
- Estimate smart use cases. Under normal circumstances, the smart uses are estimated either using a simple spread sheet (which we normally generate from the UML model using our code generator Tobago MDA) or during smart estimation poker workshops. This will present you with a measure of the (functional) complexity of the project. Read more at Smart estimation poker.
Establishing (iteration) velocity (V)
In (agile) projects, each team is different. Different in size, in average complexity, in development environment, in distribution, in the amount of formality required. Therefore, the velocity (the time needed to implement a smart use case point) differs as well. In Smart projects, we take the following steps:
- Establish iteration velocity. In Smart projects, we work in short iterations. To us, what is most important is to establish the iteration velocity, that is the number of smart use case point that can be implemented in a single iteration.
- Establish initial iteration velocity. When doing a first estimate (mostly at proposal writing time, during the Propose or Scope stages of Smart), there is no information available for establishing iteration velocity. We’ll take our best shot by comparing the project at hand to previous projects. Be aware never to be more optimistic than the figures allow you to.
- Establish next iteration velocity. For following iterations, we establish the iteration velocity using the burn down charts from our online Agile Dashboard, or from other tools (such as a project spread sheet) by diving the number of realized smart use case point to the number of iterations. For instance, if we realized 15 smart use cases, with a total number of 60 smart use case points in 2 iterations, we say that the iteration velocity for coming iterations will be 30 smart use case points. Read more at Agile Dashboard.
- Pick smart use cases. Next iteration thus start with the iteration kick-off, where the customer picks 30 point worth of new smart use cases. Read more at Smart stage Plan.
- Establish project velocity. Don’t forget to establish the final project velocity at the end of your project. This will help you in upcoming proposals and projects.