Monday, August 9, 2010

Robustness of Software

Recently I read someone saying that he preferred a particular piece of software over the other because the former was more ‘robust’. That made me think for a moment about ‘robustness’ of software. Robustness of a tangible thing is easy to comprehend, but how do we understand robustness of software? And more importantly, how do we measure it, or compare robustness of two pieces of software?

Robustness of software is a very important concept. Robustness can be defined as the property because of which a piece of software runs and functions correctly even with unexpected or invalid inputs or in stressful environments. So every time your laptop’s Windows stops working (is hung), or a program crashes and stops working until you restart it or reboot, you witness poor robustness of the software or a program!

The main reason for software crash is that it comes across situations where the programmer’s or designer’s assumptions have been violated. Every piece of software has a number of errors. It is virtually impossible to debug and clean it from all errors. There are errors which occur in unusual circumstances which are beyond a human mind to be predicted. So now the question which comes to mind is: How can we ensure robustness in our software?

Unix philosophy says that robustness results from ‘transparency’ and ‘simplicity’. If a programmer can examine the source code and comprehend easily how it works, there are more chances that the errors would be fixed in advance. Another obvious way is to write codes accommodating a wide range of situations. Having small, modular programs which are connected to others is also a good way. Another very path breaking method makes use of ‘redundancy’ to ensure robustness.

Errorfree programs and hustle free operations are not only good but also very critical in many situations. Do you know that Ariane 5 spacecraft exploded 36 seconds after its start because its software contained an error which changed its direction and the spacecraft broke down due to aerodynamic forces? Therefore, the best thing to do is to let the software undergo a proper robustness test. Or should I say a ‘robust’ robustness test?

- Rahul

HTML Hit Counter
HTML Hit Counter

No comments: