Monday, July 28, 2008

COTS Feature Bloat and Software Quality

I'm celebrating today. I finally finished making the changes for the 2nd edition of Surviving the Top Ten Challenges of Software Testing! It's been a long time coming, but I'm excited.

We have practically re-written the chapter on tools and automation and have added a new challenge on requirements.

Bill Perry wrote the new chapter on requirements and makes an interesting point that 10% or more of the features in software are never requested as a need by a user. They just "appear".

I was having lunch with week with my friend Frank Rowland who asked the searching question, "Why do software and systems change so much?" Now keep in mind that Frank only upgrades hardware every 5 or 6 years or so, so he struggles a lot with version conflicts. But his question is still valid.

Even people who buy new hardware every 2 years have major issues with version conflicts.

My answer to Frank boiled down to three major things that drive change in the applications and systems we use:

1) Hardware factors, which would include things like processor obsolescence, memory limits, etc. It seems like the developers always have the latest and greatest hardware. So, the new version of your favorite package will likely require an upgrade to use it. It's interesting that every Microsoft Operating System released requires a new machine to work well (and even then, there are often conflicts with other apps that may not be ready for the new OS).

2) Customer demands, which I actually think are the lesser of the reasons, but still a factor. With COTS (commercial off-the-shelf software), it may take years to get that helpful feature to be a reality. The vendors have a tough decision on which features will help the most customers.

3) Profit motives, which are perhaps the greatest drivers. Let's face it, any business depends on repeat business (except perhaps funeral homes). Anyway, software developers and publishers really depend on new versions being sold. Now the issue is getting people to see the value in the new features.

I still use MS Office 2000 because I've tried the demos of Office 2003 and 2007 and I really can't see the value in upgrading. Even when I bought my MacBook, I just downloaded Open Office and have been very happy with it. I have other applications that plug into PowerPoint that work best with PowerPoint 2000.

It's almost comical (if it wasn't so sad) how complex just using a PC has become. Just read the support forums for any application - web based, PC-based or otherwise. Whenever anyone asks, "Why am I having a problem with..." there will be a variety of suggestions, most of which are relating to configuration and compatibility issues. You almost have to be a developer or professional troubleshooter just to survive.

So change happens and most of the time, it's a pain in terms of time and frustration. I don't look for things to get better. Ever.

I see it like having to learn a new language and culture. I'm bi-lingual. I can speak English and computer. It's interesting to me that the PC was supposed to put the power back into the hands of the user, which it did. However, it's now like owning a car. About all I can do is change the oil and brake pads and keep the tires properly inflated. Everything else requires special tools and computers, which I don't own.

To sum all this up, when you're thinking about bringing in a new or updated COTS product, be prepared for lots of breakage. When testing COTS, your main concerns are 1) will it work for me in my environment and 2) what will it break?

The vendor can't test for these things. To neglect testing these things is inviting some pain, perhaps disaster (data loss, long downtimes, etc.). You can test COTS, but it takes a different mindset from the user point of view.

And, yes, change still happens!