Over last few months, I have been privy to lot of talks on Software quality and how we need processes and tools in place to improve software quality. This discussion brings up an very interesting question. What is Software Quality?
Basics first. Let us start with the definition of Quality:
IEEE 610.12-1990) Standard Glossary of Software Engineering Terminology defines quality as:
Basics first. Let us start with the definition of Quality:
IEEE 610.12-1990) Standard Glossary of Software Engineering Terminology defines quality as:
the degree to which a system. component, or process meets (1) specified(ISO 9003-3-1991) Guidelines for the application of ISO 9001 to the Development, Supply and Maintenance of Software defines quality as:
requirements, and (2) customer or user needs or expectations
the totality of features and characteristics of a product or service that bear on its ability to satisfy specified or implied needs.If we are to go by these definition, one thing becomes very clear. Quality is a function of user needs. As long as a product meets the specific requirements or needs of the customer/user, then it is considered to be of good quality. But the catch here are words like "Expectations" and "implied needs".
The question I would pose is - whether the above definitions are exhaustive and inclusive enough to cover all the aspects of Quality?
Let us take an example: Let us assume that you are a vendor of AC Generators. A client has a requirement is to have a 99.9% uptime of the AC Generator he purchases. One of the way to meet this requirement is to have a person deployed at the client site, with a backup AC Generator. If ever and whenever there is a problem the person is expected to switch the production AC Generator with a backup Generator. Through this mechanism the customer requirements can be satisfied.
But is this a quality solution to the customer requirement? I would argue it is. The user does not care two hoots on how you solve his problem as long as he doesn't perceive that he is incurring an unnecessary additional cost/effort. All that a normal customer will care about an efficient and reliable solution that correctly addresses his requirement and if having a person next to the AC Generator is an best of addressing his need, he would be happy with that.
But the question (for you) that remains is - whether this solution will continue to be cost effective(what about wage increases for manual labor?). Is the solution repeatable and scalable (What happens if the same requirement is posed by multiple clients?). Is the solution reliable and efficient (Since the process is manual, Is there a chance of a human error?).
There is definitely a need to augment the core definition of quality with some additional attributes. That is exactly the interpretation, Steve McConnell (of Code Complete fame) provides. He specifies the different attributes of Quality and classifies the same into two broad categories:
Let us take an example: Let us assume that you are a vendor of AC Generators. A client has a requirement is to have a 99.9% uptime of the AC Generator he purchases. One of the way to meet this requirement is to have a person deployed at the client site, with a backup AC Generator. If ever and whenever there is a problem the person is expected to switch the production AC Generator with a backup Generator. Through this mechanism the customer requirements can be satisfied.
But is this a quality solution to the customer requirement? I would argue it is. The user does not care two hoots on how you solve his problem as long as he doesn't perceive that he is incurring an unnecessary additional cost/effort. All that a normal customer will care about an efficient and reliable solution that correctly addresses his requirement and if having a person next to the AC Generator is an best of addressing his need, he would be happy with that.
But the question (for you) that remains is - whether this solution will continue to be cost effective(what about wage increases for manual labor?). Is the solution repeatable and scalable (What happens if the same requirement is posed by multiple clients?). Is the solution reliable and efficient (Since the process is manual, Is there a chance of a human error?).
There is definitely a need to augment the core definition of quality with some additional attributes. That is exactly the interpretation, Steve McConnell (of Code Complete fame) provides. He specifies the different attributes of Quality and classifies the same into two broad categories:
- External Quality - which is customer facing and has attributes like correctness, efficiency and reliability as the attributes
- Internal quality - which is directed inwards and deals more about structure, testability, maintainability, scalability, re usability and extensibility.
Comments
Post a Comment