After describing recently the rather sophisticated sensitivity analysis features of Full Monte, I was asked what use the results were. Knowing which tasks are likely to affect ones project completion date — or maybe the date of an important milestone — is clearly of interest, but what can you actually do with this information? As it turns out, quite a lot.

But first, what is **sensitivity analysis**? Wikipedia defines it as **“***the study of how the uncertainty in the output of a mathematical model or system ….. can be apportioned to different sources of uncertainty in its inputs.*” In the project scheduling context, the inputs are the task durations and the outputs are the calculated dates. It is sometimes regarded as an alternative way of dealing with uncertainty, instead of doing risk analysis, but as we shall see to do it properly it should be an integral part of risk analysis.

When we talk about the sensitivity to the duration of a particular task, there is an implied assumption of *ceteris paribus*, or “all else being equal,” but what exactly does that mean? A simple-minded approach might take it to mean that all the other task durations are fixed at their most likely values. So we might do two deterministic critical path calculations, one with the subject task duration at its optimistic value and one with it at its pessimistic value, while all other task durations take their most likely values.

But the mere fact that we are doing sensitivity analysis means that we recognize the uncertainty about at least one task duration, so it is reasonable to suppose that there is uncertainty associated with other task durations as well. This being the case, doing two deterministic critical path calculations will not cut it because it ignores merge bias among the other tasks. Dealing with this correctly involves making sensitivity analysis an integral part of risk analysis, but the details are beyond the scope of this paper so let’s return to the main point.

Sensitivity analysis tells us which tasks most affect our chances of finishing our project on time, but what use is this information? One could quote the old adage, “forewarned is forearmed.” In other words, just knowing about a potential problem is better than not knowing about it. But there is more to it than that.

To some extent it is equivalent to the critical path in a deterministic analysis. (Note, by the way, that although uncertainty complicates the situation, so that the critical path is typically replaced by a number of paths which *might* be critical, the project finish cannot be sensitive to a task which has no chance of being critical.) So, one thing you might be able to do is to add resources or re-arrange your project logic, just like you would try to do with a critical task in a deterministic analysis.

The other thing you might be able to do is improve the quality of your estimate. It is not always understood that uncertainty about a task duration (or anything else) is not so much about the task itself but about our knowledge (or lack of knowledge) about the task. As Laplace said, “Chance is but a measure of our ignorance.” This means that potentially we can improve our knowledge and thereby get a more precise estimate.

Of course this usually comes at a cost, and whether it is worth incurring this cost depends upon how sensitive the chance of achieving our goals is to it. Sensitivity analysis gives us an objective way of determining which task durations warrant the cost of more detailed study.

By way of example, I recently undertook a software project which involved reading information from the database of a project management system I was not familiar with. A cursory examination of the database tables indicated that it seemed straightforward except for one thing; the definition of the calendars was held in what is known as a BLOB, or “Binary Large OBject.” Basically this is just a stream of bytes, so the database schema did not tell me anything about its content and I feared that disentangling it might take 3 months. On the other hand, if it turned out to be easy it might take only a week or so. Since it would definitely be on the critical path, I took the time to write a short program to see what it contained, and was delighted to see that it was a humanly-readable character string. There is still some work involved, but this small investment allowed me to revise my estimate from “1 to 13 weeks” to “1 to 2 weeks”.

Of course it could have gone the other way, but the point is not necessarily to get a shorter estimate but rather to get a more precise estimate, i.e. to reduce the *range* of the estimate. Your results may vary, as they say, but forewarned is forearmed!

To find out more about Barbecana click here