by Troy Magennis
The software development community struggles with a way to identify if their projects are on-schedule given the inherent risks of constant invention that inevitably has elements of uncertainty and risk. Current practice is for developers to estimate a software project, and attempt to consider (up-front) all variations to get a viable estimate of time and cost. This process is laborious, and even with due rigor, project slip when the realization that estimates versus actual times fail to match. This leads to costly project overruns and lack of trust in future estimates. As part of the Agile movement for software development, we think there is a better way and are championing the use of Monte-Carlo simulation as a ways of assessing likely progress and dealing with delays as early as possible.
Developers are asked to estimate projects in order for budgeting and staff sizing to occur. Many times estimates given by developers are (and can only be) best guesses, and some of these will be shorter and some will be longer than estimated. This behavior of this uncertainty seems ideal for solving using Monte Carlo simulation where thousands of iterations of a projects requirements can be randomly combines to see the likely histogram of days to complete.
Some early work as a proof-of-concept1 used guessed ranges (worst-case, most-likely, and best-case in days) for modeling risk in each software requirement. These estimates proved that it was possible to give a likelihood of hitting a desired date, but as the projects were carried out real data from prior requirements can (and should) be used to tune the model. Being able to utilize actual data and find the appropriate probability distribution of prior actual versus estimate intelligence, and then using these distributions in forward forecasting risk of missing a date is the next target for tuning our model. EasyFit from MathWave is the tool of choice to carry out this distribution selection and fitting process, and to generate random distributions based on that selection.
Every team estimates slightly differently (more experience, better understanding of their business partners, etc.) and every project has different complexities, meaning the ability to turn the distribution curves for each project in mandatory if any simulation is to make sense. Having a tool that allows you to quickly integrate actuals from a team means our models are simply more accurate, and therefore our decisions are better. By using EasyFit, we can tune each model for project and team, and compare and contrast their distributions in the search for opportunities and best-practice.
Our work is early, but we have high hopes that one day as an industry segment, we can be seen to use mathematics rather than black magic when answering the seemingly simple question - when will my software product be completed and how much will it cost?