How do you define software quality? There has been a great deal written about software quality, and as perhaps may be expected, many differing points of view regarding just what constitutes software quality. I’ll not attempt to add yet another definition to the mix, although I certainly do have some ideas about the subject.
My recent software quality thoughts have been prompted by my getting up close and personal with an application I originally developed sometime in the late 80′s. It has truly been an eye opener to have the opportunity to look at code which I generated back then. This is code that fails many tests for quality — particularly understandability, consistency and maintainability…and structure?…what’s that?
The design of this application attempted to do what every developer at the time was warned against doing, and that is to design a computer application to mimic a paper system. There was one problem with that warning in this case — that being 1) The customer who was willing to sign the check wanted “exactly” what was available on the paper system, and 2) The paper system in question was the most complete and well designed system I’d ever seen (…and to this day it remains so). Therefore before I produced one table or one line of code I was breaking the rules. Yet, this code has continued in use for all these years (…prompting some begging as year 2000 approached and I was no longer developing — but that’s another story).
The conclusion I’m beginning to develop at this point is that software quality begins with design. What is this application supposed to provide? I had a superior example of design goal with the customers paper system, and I designed to it — and produced a long term, happy customer. It doesn’t get any better than this!
I’m also reminded, as I write this, of an acronym I learned about some time ago from a group of software developers with whom I was working. The acromym NAPWAD stood for “NOT A PROBLEM – WORKS AS DESIGNED”. Of course this was only used in reference to issues that WERE a problem which reflected a design usability issue. The software produced passed the test — it worked as designed — what more could you want?
Software quality? How do you define it?