Practical Software Measurement

How Can I Tell When My Software will be Reliable Enough to Deliver?

Usually when I am online making a payment or using social media, I am not thinking about software quality. But lately I feel like I have been encountering more bugs than usual.  From activities like clicking on a link where I should be able to input my payment information, to doing a search and receiving an error message, or being redirected to a completely different page which had nothing to do with the mission I had set out to accomplish.  These bugs are sometimes frustrating and I started to wonder what could have been done to prevent these from being released into production.

Since I spend a lot of time speaking with people that manage software projects, I have noticed that quality is often one of the most overlooked aspects of a software system. People I’ve spoken with have mentioned that quality is often not even discussed during the early planning stages of development projects, but it is usually a deciding factor when the software is ready to be released and should be considered from the beginning of the project.

Using a tool like SLIM early in the planning stages of a project can help us with these issues. Not only can it provide reliable cost and schedule estimates, but it can also help estimate how many defects one can expect to find between system test and actual delivery. It can also estimate the Mean Time to Defect (MTTD), which is the amount of time between errors discovered.

Software Defect Tracking

SLIM generates these estimates empirically and it does this based on just a few inputs including system size and a Productivity Index. The Productivity Index is an empirically-driven measure of efficiency that takes into account the complexity of the software, the experience level of the team, and the tools and methods being used in the project environment. This information, along with the SLIM reliability models that are built into the tools, allows for the estimates to be generated reliably.  SLIM can also provide the ability to evaluate project tradeoffs, answering questions like, what impact would increasing the staff, or increasing functionality have on the reliability of the system?

While evaluating the impact of adding people and increasing functionality, it can also generate new cost estimates for each additional scenario, and in doing so allow the estimator to evaluate the full impact of all the project parameters involved. Using these types of empirically-based tools can help determine when these software products that we use everyday will be reliable enough for delivery to the public, hopefully saving us some unneeded frustration.