Last week on the East Coast Main Line, which connects London to Edinburgh, a software malfunction left five trains stranded mid-track and significantly delayed others after a power supply issue knocked out the signaling system. According to reports, software that should have instructed the backup signaling system to kick in failed to function, causing all signals on the line to default to “Red,” halting trains where they stood. The failure left more than 3,000 rail passengers stranded or delayed for more than five hours on a Saturday afternoon.
Software failures like this one have become all too commonplace in recent years. We treat news of software failures as though they were inevitable and almost expected. But why? When exactly did we decide that software failure was an unavoidable part of business?
Shouldn’t we do a better job of assessing the structural quality of software before it is deployed rather than waiting for it to fail and then fixing the problem? After all, we know what causes poor software quality:
Assessing the Answers
OK, so we know what the problems are, but how do we fix them? First of all, software issues need to be dealt with before they become a problem, not after 3,000 passengers are left stranded on the tracks or a stock exchange is forced to halt trading. To ensure sound structural quality out of the gate, application software should be assessed during the build process using a platform of automated analysis and measurement.
Not only can automated analysis and measurement resolve the code issues that often accompany acquired software, building on top of old software, rapid development and developer inexperience, it also grants significant visibility to the work being done by individual developers. While such scrutiny may seem invasive – like “Big Brother” watching over their shoulders – static analysis via automated analysis and measurement can actually be an effective tool for professional development. After all, if you don’t know where someone needs help, you can’t provide it.
Whether it’s the software or the developer, though, automated analysis and measurement grants visibility into the issues and provides a basis that leads to improved software quality. And ultimately, optimal software quality – not just “good enough” software quality – should be every company’s goal.