Estimating what effort is needed to develop an IT solution is not an easy act. The pitfalls are multiple and chances are that you end up guessing.
In this post I will outline how to estimate projects based on the use cases. In addition I will show you how you can use Use Case estimation to negotiate with suppliers.
Estimation can be hard. Luckily a number of techniques exist that can give you a qualified (gu)estimate.
Among others, the following popular estimation techniques for estimation IT development exist:
- Expert Judgment
- Lines of Code (LOC)
- Function Point Estimate
- Use Case Point Estimate
Expert Judgment is when you rely on an estimate based on talking to experts. Especially valid when talking to experts experienced in the domain and with experience from developing similar solutions. Investigations shows that expert judgments can be fairly valid and almost as valid as more proven methodologies. Challenges are for example how to find the right experts and to evaluate their expert level. Furthermore, it can be hard to convince others (for example your supplier) that your estimate is valid, because it is a subjective evaluation.
Lines of Code (LOC) are a technique that is fairly reliable in the hands of an experienced team. The technique says, as a rule of thumb, that it takes X number of hours to develop Y lines of code. For example 100 hours per 1000 lines of code. An disadvantage of this technique is that you need to know how many lines of code you are going to produce – this can be estimated for example for a 1:1 conversion of an existing system, but can be hard to determine in other situations. Another disadvantage is that you need an experienced team to do the estimation, and you need to compare with similar systems – the amount of lines of code in a from-scratch-developed-system might differ from a similar system developed using a industry-standard-solution or framework.
Function Point Estimate, is an estimation technique developed by IBM. It counts the elements of the functional requirements and based on that calculates an estimate. The technique is very usable and accurate. The advantage of this technique is that it is fact based and can be used by teams not experienced in the domain of the solution. Another advantage is that the cost of the project can be based on previous/other projects, and that other estimates using Function Point Estimation within your organization can be used as baselines. A description on how to use Function Point Estimation can be found here: http://en.wikipedia.org/wiki/Function_point
Use Case Point Estimation is a technique developed by the Swede Gustav Karner in 1993. The Use Case Point estimation technique is based on the same principles of Function Point estimation and has the same advantages. It has turned out that Use Case Point (UCP) estimation is as reliable as Function Point estimation.
An explanation of the content of Use Case Point Estimation can be found here: http://en.wikipedia.org/wiki/Use_Case_Points
“What makes this technique particular interesting is that by using UCP estimation you are able to produce a reliable estimate very early in the development cycle.”
“Actually even after sketching the use case model you are able to produce an estimate, apply it to the business case and consider stopping the project at this early stage, if the business case is not positive. That is a strong asset”
The figure below outlines where in the development cycle the various estimation techniques apply.
Lets have a look on a practical example on how to use the UCP estimation technique:
Lets say you’ve created the following simple use case model:
In this use case model there are seven use cases and two actors. The UCP technique involves ten calculation steps. Once learned they are easy to follow and your UCP estimate can be calculated within minutes.
The very first step is to calculate the Unadjusted Use Case Weight (UUCW). For calculating the UUCW you look at the number of use cases in your use case model, categorise them and calculate a UUCW score. The UUCW score will be used in other calculations as we move forward. So, we already know we have seven use cases. Those seven use cases needs to be categorised into Simple Use Cases, Average Use Cases, and Complex Use Cases.
In the table below you can see how each Use Case Category is described. Simple Use Cases are those having 1-3 transactions, and so on.
You just need to determine for each use case how many transactions they have in order to categorise them. To do so, you could have a look at the activity diagram and count the number of times the flow control switches from actor side to system side and vice versa.
For example in use case #1 the activity diagram could look like the one shown below (Notice: The activity diagram could as well be represented by a table showing the steps):
When looking at the activity diagram you can see that the control flow starts in the User side where the user is on a screen typing in some details. At some point in time the User chooses to save the input and clicks “Save”. By doing that, the control flow switches to the System side where the system validates the input.
When counting the transactions you should count the number of times the control flow switches lane (crosses the lane line) – except for error handling – those should not be counted.
So, in the activity diagram above I count three lane crossing – when I subtract the one involved in error handling, I calculate a total of two transactions for that use case.
Imagine doing this for all seven use cases in the use case model, we might end up with following categorising and a total UUCW score of 45:
“As you might have noticed you are now taken advantage of having documented your use cases properly by using activity diagrams with clear division of actor lanes!”
So far, so good.
The next step is to calculate the unadjusted Actor Weight (UAW) score. The UAW score tells something about the complexity of the solution. The Actor categories shown in the figure below doesn’t need much explanation.
When looking at the use case model shown in top (above) of this post, let’s assume that the two actors are human beings. The UAW score is then ‘6’ as stated in the figure above.
The next step in calculating the UCP score is to calculate the Technical Complexity Factor (TCF). The Technical Complexity Factor is often the most confusing part. In short, the TCF score adds an overhead of complexity to your score – the more complex the technical part of your solution is the higher score. Lets have a look at the TCF below:
By filling in the 13 factors above you’ll reach a score of 0,8 (TCF). Notice that the Complexity Factor (not to be confused with TCF) is 0.6. The formula to get to the TCF is just to multiply the Complexity Factor by 0.01 – don’t ask! it just happens to be the formula.
The final calculation to do is calculating the Environmental Complexity Factor. This factor is even more confusing than the TCF score. As you can see from the figure below the impact of various factors are rated. This gives you a sum (ETF) that goes into the ECF formula:
So far the following calculations has been performed:
Unadjusted Use Case Weight : UUCW
Unadjusted Actor Weight: UAC
Complexity Factor: CF
Technical Complexity Factor: TCF
Environmental Technical Factor: ETF
Environmental Complexity Factor: ECF
By having those six formula results you are now able to calculate the Use Case Point result. The Use Case Point for your solution is based on the following formula:
UCP = (UUCW + UAW) x TCF x ECF
Here is what the calculation from the example in this post looks like:
UUCW = 45
UAW = 6
TCF = 0,8
ECF = 1,085
UCP = (45 x 6) x 0,8 x 1,085
UCP = 44,268
Now, what use do you get from that?
Knowing that this project or this solution equals 44,268 worth of Use Case Points tells you a lot about the size of your project/solution. For example if you previously developed a solution worth 88 Use Case Point you now know that (with all other things being equal) this project is about half as big. This is valuable information in estimating the effort.
If you know that the previous solution you developed (the one worth 88 UCP) demanded you 1000 hours of development, then it is likely that this new solution will take you about 500 hours to develop. That is, what the final calculation is all about: The Productivity Factor (PF).
The Productivity Factor (PF) is the hours of development per use Case Point. If the PF equals 10 then; (from the example above) the project estimate is (10 x 44,268) 442,68 hours.
Using the UCP method for creating estimates and discussing those estimates with suppliers can involve a lot of arguing about what the right PF factor should be. The supplier of course, will argue that the PF factor should be fairly high – e.g. 20 or 25. You, on the other hand, might argue that the productivity factor should be way lower – e.g. 9 or 8. So, what is right then? Reading materials explaining UCP estimation often suggests that a productivity factor of 20 is correct. The thing is though, that it depends.
Building your own baseline of PF Factor documentation
What you should do is to start collecting knowledge about your projects and the realised PF calculated. Let’s say you have completed a project and that the UCP point calculated for that project was 120. Now, if you spend 1800 hours developing the solution then your realised PF is: 1800/120 = 15
Imagine doing this for all your projects the result could look like illustrated below.
Now, by tracking your realised PF you can calculate a baseline by calculating an average PF of 12,6.
What the average PF of 12,6 tells you is that in average, when developing solutions in your organisation, using your IT environment, dealing with your business complexity, you spend in average 12,6 hours per use case point.
You could take the UCP baseline calculation a step further. For example if Project1 and Project2 are infrastructure projects and Project4 and Project7 are ERP projects you can create various Realised PF baselines depending on the project type ….. or depending on the suppliers, or in-house / external development, or, or….. The possibilities go on. It only requires a solid base of project tracking.
Using this information to control your suppliers
By having an average PF calculation you are able to create a documented fact based estimate. With a fact based estimate you have a better position when negotiating with suppliers.
- Why can’t you deliver on a PF of 12,6, when all our other current suppliers in average delivers on 12,6 PF?
- If your offer is based on a PF of 30 we believe you are charging too much based on the performance of our other suppliers/projects
- If your offer is based on a PF of 4 we fear that you have not understood the complexity of our project, or that you under-charge just to get your foot in.
- All right, we’ll accept your offer based on a PF of 20 once again, but you must document a strategy on how to optimise your performance to match our other suppliers.
Warning
Remember that UCP estimation and PF calculation are not absolute truths. What you get is an estimate based on facts and an estimate that gives you a feeling of what end the “real” estimate should be in.