’99 little bugs in the code, Only 99 little bugs, Take one down, patch it around, Now you have 198 little bugs in the code’
Most of us will have experienced the irritating result of a software bug at some point in our lives, be it a frozen screen or having an application spontaneously close seemingly without reason. In fact we have almost been conditioned to anticipate glitches in new software, with some users of Apple products delaying the installation of new iOS updates until they know for sure that there will not be any adverse effects before doing so and gamers waiting for the inevitable patch release from developers before progressing too far in game.
When taken into consideration this begins to raise the question, is totally bug free software actually something that is achievable?
When you look at the theory you would think the answer to be yes, with a large number of Quality Assurance processes and techniques available to use, however this is a perfect example of the phrase ‘easier said than done’ in action as there are a number of reasons as to why software can become buggy.
Reason one. The capability of available software is continuously advancing, never staying stationary for too long. As a direct result of this ongoing change, like a loaf of bread left out on the side, software can quickly become stale and undesirable. For example, owners of older Apple products like the iPhone 5 and 5c or the iPad 4 will soon be looking to invest in newer models, as following the release of iOS 11, they will no longer be able to receive software or security upgrades, gradually leaving the devices useless as apps begin to malfunction and security holes remain unresolved.
Reason two. If you take a look at something.com or isitchristmas.com I’m sure you’ll agree that the chances of the code behind these two webpages being bug free is relatively high, simply due to their obvious simplicity. However, neither of these sites will be capable of serving a business purpose other than maybe providing a few minutes of entertainment for a few members of staff. If you were to add a button that opens a new page, making the coding slightly more complex, you introduce a new potential source of bugs. Every time a system becomes more sophisticated the possibility of bugs appearing during its lifetime increases even more.
Reason three. Humans are far from perfect, we constantly make mistakes, so expecting the product of work completed by humans to be perfect is nothing short of foolish. Of course there are the Quality Assurance processes that were mentioned earlier in the article, but then when you think about it these are processes put in place and performed, on the whole, by human beings. Is it unreasonable to think that it is possible for a bug to slip through unnoticed?
If you then consider the flip side of this coin, the users of all this software are only human too and as such will act in unpredictable ways. With complex software systems that perform all sorts of processes and contain a grand number of operation options, it can be quite a feat to try and predict all the possible orders of action that a user may make. Having to think about things like what would happen if they were to click this button more than once or what about if they press this key by accident, would certainly fry anybody’s brain and although automated tests can help to alleviate the possibility of bugs introduced by user action there is a very high chance of something going unnoticed.
These are just a few of the potential reasons as to why totally bug free software is so hard to achieve, others include:
- Communication failure/miscommunication
- Unrealistic development timeframes
- Poor design logic
- Poor coding practices
- Buggy third party tools
- Lack of skilled testing
- Last minute changes
As this article shows the chances of accidently introducing a bug into software systems is extremely high, but here at Zircon we take the quality of the software we produce very seriously. By following a well-planned software lifecycle, which includes appropriate levels of testing, code reviews, and using peer review of all stages, we aim to keep the number of bugs to a minimum. Moreover, should something drastic happen to slip through the net we follow our continuous improvement process to ensure that our processes are rigorous and future occurrences are reduced. From the clients perspective we offer a warranty to give them that extra level of reassurance.