Monday 2 February 2015

Software fails, it is inevitable

If you search the web for big and famous software bugs or failures you'll find plenty of them like the followings:
  • The famous Y2K problem in the year 2000 we experience.
  • Similar to Y2K, we will face a problem in 2038 in which the Unix timestamp variable which is a 32 bit integer gets full, why just to this simple math 2,147,483,647/3600/24/365 ~ 68 years then it started from 1970 so 1970+68=2038!
  • The famous northeast blackout of 2003 was the result of a race hazard in monitoring software.
  • The Mariner 1 crash was because of a wrong piece of the program. The programmer should have used the average speed in a calculation instead of the instant speed.
  • NASA's Mars Polar Lander loss of communications happened in December 1999 was because of software error.
  • NASA's Spirit rover got unresponsive after landing on Mars, because of storing too many files on its flash memory. The problem solved just by deleting the unwanted files.
  • ...

Why do such things happen? 
We sometimes think this is only us, I mean ordinary programs in ordinary companies who make mistakes or write programs with bugs, but this is not true, don't worry, everybody in every company can make a mistake and makes. There are hundreds of these costly historical mistakes available to read and learn on the internet. 

The reason in a way is that software generally is a complicated creature and anytime you modify it, or add a patch, or have it to interact with other software or thing, you not only increase the software ecosystem complexity but introduce a new player to the ecosystem with some unknown behavior. You may see the ecosystem works well for a while but since you don't know how the new part works in not happened situations your software ecosystem will always be in risk of getting crashed or unstable.

Even God's program has bug!
Yes, it has. If you consider the information (I mean stored data) and the program exists in the human DNA which makes a single cell to a newborn human baby in 9 months, then when you consider the babies with born diseases or disabilities you'll find that this highly advanced God program also sometimes fails. Or when you read the current studies that show most of the cancers causes are because of wrong cell division, not the way people live or interact with the environment, you'll see that it is not only we human do mistakes in programming, God does the same.

Why I am writing this post!?
I just wanted to install a very small app (A 10K patch for already paid application) in my MacBook with OS X Yosemite‎, it crashed and got boot problem. It took an hour for me to remove the problem. The point is I'm sure those software developers did their best to develop and test the software in different Mac OS versions and environments, but they never had and will not have the chance or enough resource to test their small app in all available or possible software environments. 

No comments:

Post a Comment