Saturday, March 27, 2010

Software is still Soft!

Hardly a day passes by without having to hear about a new bug in Windows! No major commercial software application lives its life healthy, even for a few weeks, without a patch coming to its rescue. Hundreds of thousands of small, medium and large software programs that the software developers around the world write are delivered with bugs that come with it for free and are ready to fly right on the face of the user at the first given opportunity. Nobody will take a software engineer to the court saying his/her software had a bug for he/she will quote the fourth law of ‘software physics’, namely, “no software is ever written bug free”! ‘No test can prove a software program bugs-free, so, why ever bother to write one’ would be the argument ‘your honour’ will be subjected to in any case. Seem the elite practitioners of the technology in the software industry, would rather like to take comfort in this eternal knowledge and continue to enjoy producing bug compatible software programs until eternity.

It is not very easy to get an end-user upset very much (to the point of him breaking his keyboard and mouse) even with a software application that dumps its core at precise intervals or throws exceptions that question his commonsense with messages that only Martians can understand. If nothing else, the application might want to at least hang once in a while just for the fun of it! Still the user will simply reboot the machine and restart the program (to the absolute frustration and dismay of the developer. How much hard he/she should try to get the user kick his/her back?). The secret is that the users have by now learned very much not to trust any software applications and by chance if any of them decide to work correctly, well, sometimes it rains in the summer too! In short, the Software is still, well, what its first name says. Soft!

A user may think if he can at least expect to see similar errors and failures in two similar software applications. Well, you may pardon him for his ignorance as he surely must be a novice to the software industry. As they say, that would be like asking for two people traveling in the same airplane going to the same destination paying the same price. For serious ones, as we all know, it can’t happen primarily because there is no standard way of ‘manufacturing’ a software product and hence no basis in expecting the end products to meet any sort of ‘standard’ too. No two software engineers write a program the same way (hey, don’t we consider that a little below our dignity?). So, one can always guarantee that if two software developers write the same application and if there are X number of bugs in one version, the total number of bugs will be 2X with hardly any duplicates!
All the pun aside, it is very evident that the software house as a whole need to undergo a big cleanup. It is time we see a major paradigm shift in the software industry that would enable creation of highly robust and reliable software products far more consistently. The time has come where the software companies should start making product recalls whenever they find critical problems with their products out there in the market as the automakers recall their design-flawed vehicles or the tire makers recall their faulty rollers. And for this to happen in the software industry, the way software products are created today would need a radical change.

Currently existing models for certification and evaluation (CMM models, for example) of software creation processes are not equipped to meet these challenges. There is no notion yet of certifying the end product. These processes still leave too much to the individual fancy when it comes to the actual act of creating the software. The developer will still may opt to catch an exception or check for a null division in his code if he is on at least half his right mind or will prefer to care the least for those fineries if he had to juggle with his boss the previous night and is sitting there with a fuming ‘devil may care’ inside!
In not so far a future, software may have to cease to exist in the form as seen today. Software engineers may not write programs anymore using programming languages like Java, C++, C or BASIC, or even English for that matter, in ‘emacs’ and ‘vi’ like text editors or their other higher-end fancier counterpart IDEs (Integrated Development Environment). Software may be created through a well-defined and unified process that adheres to a strict industry standard using tools that implements the said standard, giving no room for programmer errors. The paradigm might be, “Software no more be written, they be manufactured”. Software will no more bear the excuse of being an “art”, they will be the result of a mundane commodity creation act. One may think in terms of software products being manufactured in a manufacturing setup that will deliver consistently the same quality software product time and again, the set of inputs, external and internal, and the process being the same. Needless to say, the said ‘Software Manufacturing Process Standard’ is something that is non-existent today and will have to be evolved and established by the software community. This standard will set guidelines for creating the Software Manufacturing Tools, including essential features and programming constructs to be provided, process flow for program creation, code translation standards etc., and will set the quality standards for the end product.

Many of the modeling tools, paradigms and automatic code generators were efforts to address a few of the dimensions of this bigger challenge. However these efforts with their limited scope had hit end of the road and would desperately need a breakthrough in terms of a fundamentally different solution idea. Meanwhile, on the other extreme side, majority of the software applications are still made in the ‘IT cottage industry’, where the word ‘design’ itself is considered a luxury and ‘primitive’ environment in term of mindset, competency and tools define the norm inside those cozy multi-storied high-tech glass buildings.

An auto shop will not let two different technicians on the manufacturing floor create pieces differently, probably walking around with a hammer and a handheld welding machine, even if they wish so. Uniformity and discipline gets auto-enforced in the form of well-defined processes and quality control. This is what is giving us the confidence to drive our car at 100mph on a 35mph zone. Software products needs to provide this level of confidence and should come equipped with those air bags to protect against anything untoward.

No comments:

Post a Comment