TrainingConferencesAbout UsContact UsAdvertiseSQE.comRSS Feed

StickyMinds.com: brain food for building better software

Log In
 Clarify Your Search Criteria

Tips on Using Our Search Feature(s)
 
StickyMinds.com Home
ResourcesTopicsCommunityPowerPassBlogs
Home  >  Detail: Revisiting the Definition of Software Quality



A StickyMinds.com Original
Article Picture
Revisiting the Definition of Software Quality

By Robert L. Glass

Send This Content to a FriendGet a Short Link to This ContentPrint This ContentSee User Comments About This Content

Summary: In this column, Bob Glass returns to a topic that stimulated a lot of discussion on this Web site in his previous column--the definition of software quality. Here, he responds to your comments, which totaled more than double the usual number. Bob stands his ground (with some clarifications) on what quality is…and isn’t.


Seapine
I’ve been having some fun recently, looking over all the comments you readers have made on the articles I’ve posted to date on this Web site. And there was a big surprise among all those comments. My column on the definition of software quality (“Quality: What a Fuzzy Term”) stirred up a great deal of discussion—more than twice the number of comments for any column to date. 
 
So let’s revisit that whole definition of software quality. 
 
What Readers Said 
In the twenty-seven comments so far, there are basically three themes: 
 
1. Quality can or cannot be defined. 
2. Quality can be defined, and it’s______________. 
3. To talk about quality, we must talk about_______________. 
 
Let me tackle these themes one at a time. 
 
With regard to whether or not quality can be defined, seven people flat-out said, “Quality cannot be defined.” Five people said that quality CAN be defined, but I failed to do it in my article. Two people said that quality CAN be defined, but its definition must be project specific. And one person defended me, saying I did in fact define what quality was. One out of twenty-seven isn’t bad! (I’ll return to all of these issues below.) 
 
Regarding choosing sides as to the definition of quality, five people said that it was about the customer. Three people said quality was about meeting requirements. One person said it was a lack of errors. (Once again, I’ll return to these issues below.) 
 
As for broadening the topic of quality, two people said quality would be meaningless unless it could be quantified. Two other people said that quality emerged from concerned and caring developers. One person said that “documentation” should be added to whatever definition of quality was to be used. And one person said that good process was the way to get good quality.  
 
What Does It All Mean? 
Now, let me take a step back from all this input. One thing seems particularly apparent. Though my article may have been provocative, it wasn’t as clear as it should have been. And another thing is equally apparent. No matter how clear I am in what I say, some people are going to stick to their guns and disagree with whatever definition I provide. 
 
With all of that in mind, let me take one more stab at what I intended to say in my column. I wanted it to say what I thought software quality was. And I wanted, perhaps even more strongly, to say what I believe it is not. 
 
First, what do I believe quality is? (Given the number of “you never defined the term” comments, obviously I didn’t do this one very well.) I believe very strongly in this nearly-40-year-old definition. Quality is a collection of “ilities”: 
-reliability - the ability to operate error free 
-modifiability - the ability to have enhancement changes made easily 
-understandability - the ability to understand the software readily, in order to change/fix it 
-efficiency - the speed and compactness of the software 
-usability - the ability to use the software easily 
-testability - the ability to construct and execute test cases easily 
-portability - the ability to move the software easily from one environment to another 
(Note that in the previous column, I failed to mention “efficiency.” Although it doesn’t end in “ility,” that was a serious omission.) 
 
You’ll probably notice the ordering I’ve put on these “ilities.” If there were such a thing as a universal ordering, this would be my choice—reliability first (the software has to work), portability last (platform independence doesn’t matter for many software systems). But there’s not such a universal ordering, and there shouldn’t be. For one thing, everyone’s ordering priority might be very different. For another thing (and this is the most important reason of all), the ordering of the “ilities” should be project dependent. If you’re building a system that is to be platform independent, then portability should leap to the top of the list. If you’re building a system that you expect to keep around for a long time, then the two maintainability traits—modifiability and understandability—should move to the top of the list. If you’re working on a hard real-time problem, where nanoseconds and/or memory space count a lot, then efficiency belongs at the top of your list. In fact, ordering the “ilities” at the beginning of a project is a vital, identifiable task—and one in which your customers/users must participate. 
 
So there’s my clarification about the definitions of quality. And, with this elaborated definition, I think I’ve covered the ground many of you suggested, such as the thought that quality should be project specific (my answer being that the elements of the definition don’t change, but the ordering must). 
 
Second, what do I believe quality is NOT? That’s where I presented the following equation: 
 
User satisfaction = Compliant Product + Good Quality + Delivery Within Budget/Schedule 
 
No one seemed to disagree with this equation in their comments. The equation is nicely intuitive, and captures something I believe is extremely important about a lot of vital characteristics.  
 
But notice what happens when you accept this equation. Quality stands alone, distinct from all the other entities mentioned in the equation. It’s NOT the same as “user satisfaction.” That’s a much more complicated entity, for which good quality is only a subset. It’s NOT the same as “compliant product” (meeting requirements)—that’s clearly different from quality. It’s NOT the same as “delivery within budget/schedule.” I don’t mean to diminish the importance of user satisfaction, or meeting requirements, or meeting estimation constraints. Those are all really important things. It’s just that they are separable from, and rather importantly different from, quality. 
 
And what about those of you who suggested that the topic of quality should be broadened? Here’s how I feel about the suggestions readers made: 
 
How about the thought that quality should be quantified? That’s a tough one. My first answer would be “yes, of course it should.” But how? If you, like me, believe that quality is a collection of “ilities,” then it is those “ilities” that you must quantify. For some, it’s easy—reliability and efficiency. For others, it’s next to impossible—modifiability and understandability. Wishing and believing that quality should be quantified are not enough to make it so. Some elements are quantifiable, others are not. 
 
What about those ways of enhancing quality, like “caring/concerned developers” and “good software process”? Good people and good process are both roads to good quality. 
 
And finally, what about the role of documentation in all of this? There’s no doubt in my mind that documentation is important. Especially user documentation, but also accurate and up-to-date maintenance documentation. But I think it is important that we separate software from its auxiliary features, such as documentation. Getting good documentation is important, and it is a matter of managerial will, as well as technical skill. 
 
Normally, I hate to revisit old topics. But in this case, with all the intriguing comments readers came up with, I think it was valuable. I hope you’ll agree.


About the Author
Robert L. Glass is president of Computing Trends (publishers of the "Software Practitioner" newsletter). He has been active in the software field for 45+ years. He is the author of more than 20 computing books and 60 papers and is a columnist for several computing periodicals.

Back to Top
 

StickyMinds.com Weekly Column From 10/08/01 

Member Comments
Add Your CommentExpand Comments
 
Comment:    
by Rajeev Gupta 9/20/2006

ISO definition of Quality: The totality of features and characteristics of a product or service that bear on its ability to satisfy stated or implied needs. (ISO 8402: 1986, 3.1)




This definition captures both funcional and non-functional requirements. And BTW, the official name of all "illities" is Systemic Qualities. And there are a lot more Systemic qualities than what Robert has mentioned - for instance - interoperabiliy, availability, scalability, etc. As some of the other fellow...Read On

 
 
Comment:    
by Tom Walton 12/26/2005

This is a bit late but I just ran across this article. I think that quality is defined as "the lack of waste" and is measured in dollars. This definition covers all of the other definitions that I have seen, including the "ilities". Waste can be incurred either by the producer of a good or service or by the user of that good or service. Trains and buses that run on time reduce the waste of people's time when they miss a connection or have to wait. This has a cost for both the passengers and the train company. People's time has a value. People who regularly get poor service from the train will go by car, bus or air...Read On

 
 
Comment:    
by VISHAL SADANA 6/20/2005

There are various ways to define Software Quality. Quality is a multi-faceted concept that can only be understood from a defined perspective. Most important element of software quality is its measurement. We have heard about process metric and product metric, but I have developed a software end-product metric which combines the views of the customer,quality assurance members, quality managers and the developers. If anyone is interested in reading about it, do write to me.

 
 
Comment:    
by Khaled Zoheir 10/14/2001

I see Quality as the Quality of how things are done and the quality of the thing being done. i.e. it has two major components Process and Product. Process and Product quality themselves are composed of many components. Following is a table that I am suggesting for my company to use as a quality index: Project Quality Index: Processes Quality Index: 10% Requirement Gathering Quality Index: 20% Requirement Quality Index: 50% Requirement Stability Index: 25% Change Management Index: 25% Testing Quality Index: 20% Unit Test Index (Slipped Bugs %): 35% ...Read On

 
 
Comment:    
by Andrea Thisell 10/12/2001

I see this as a very philoshophical topic without any finite answers. I think that Bob did a fine job getting as specific about what quality is and what is not, without saying "it depends" every 2 seconds. I think many of the readers are looking for more granularity, but they aren't willing to accept the reduction in scope. They're quick to find what doesn't apply to them, but do they see that changing it would then make it not apply to some other set of readers. And I'm sorry to say that some of the responders lost all credibility with me when they try to pick apart Bob's mathematical equations with incorrect math themselves! "Basic"...Read On

 
 
Comment:    
by Donald Starr 10/11/2001

Bob, I like the equation you used: "User satisfaction = Compliant Product + Good Quality + Delivery Within Budget/Schedule ". It's a good starting point for discussion. However, if we apply some basic math and solve the equation for Good Quality, we get this new form of the equation: Good Quality = User Satisfaction + Compliant Product + Delivery within Budget/Schedule. Does this hold true for the content of the rest of your article? If your "lities" do apply, then they must be attributes that are associated with one or more of the variables in the equation. I'd have to associate most of them with either the "User Satisfaction"...Read On

 
 
Comment:    
by Bret Pettichord 10/11/2001

Another great column! I like the formula "User satisfaction = Compliant Product + Good Quality + Delivery Within Budget/Schedule." I would like to note, however, that "Compliant Product" is usually defined as meeting "Functional Requirements" (realizing that document requrements are not always the real requirements). The author defines "Good Quality" in terms of the "ilities" (plus efficiency). These "ilities" need a less awkward name. My suggestion to call them "qualities" seems to be going no where (although i may try to press the point in a future column). (BTW, i usually find that availability is a key quality, although missing from the...Read On

 
 
Comment:    
by Robert Lee 10/9/2001

In 1999, near the end of a project that was way overdue, I conducted an e-mail survey of the developers and project leader. The e-mail was simply: ====== As a survey, would you each rank the following aspects of quality in regard to delivering the XXXXX product? There is no penalty for interesting answers, but I would like to discover how united our focus is on the following: * Consistency * Correctness * Testability * Global Efficiency * Local Efficiency * Maintainability / Clarity * Personal Convenience * Personal Expression * Size * Speed of Delivery * User-friendliness * ====== The survey...Read On

 
 
Comment:    
by Mark Geschelin 10/9/2001

So what find myself thinking when I’m reading your article is there are short term and long term value propositions. The short term value proposition for the paying customer is what seems to drive much of “QA” though it has elements related to quality it isn’t a definition that has integrity (in the sense of whole and complete). Does it do what I want, today? Is it here when I need it, today? Then there is product Quality: Issues around the packaging of this release. Can we install it? Do the documentation and support work? Does the product do everything that it is supposed to, if not will we fix it in a timely manner? Then there is...Read On

 
 
Comment:    
by Frank Gorham 10/9/2001

To understand the domain of software quality we must appreciate the direct perspectives that perceive individual qualities. Everyone likes whatever makes their own job easier, more organized, efficient and recognized. The software engineer likes maintainability. The software manager likes explainability. The customer likes reliability. The purchaser likes features. The product manager likes software that is on time. The regulatory agency likes good documentation. We can all identify the direct qualities of software that support our own values. Then we must see how qualities are indirected or sublimated from the qualities of others. We are...Read On

 
 
Comment:    
by Anson DeWolf 10/9/2001

I agree with Gábor Ponyi, Philip Crosby was right; but his simply stated definition requires that you get the requirements right at the very beginning of your project and the first requirement is to define and prioritize the list of “ilities” for each project.

 
 
Comment:    
by Jim Budelman 10/9/2001

The important part of all of this is we are discussing the IMPORTANT issue - Quality Software. If you want a somewhat different perspective, read the book - "I know it when I see it: a modern fable about Quality", by John Guaspari. Having been involved on just about every end of this kind of discussion and on every end of product development, I can assert that quality is deucedly hard to achieve, no matter what tools you use to do it! Keep discussing the ideas, everybody, we are not there yet, nor is it in sight. JB MCSE NT 4, MCSE Win 2000, CNE 5

 
 
Comment:    
by Carl Slate 10/9/2001

It seems that we are getting two seperate issues confused, or at least we need to clarify the concepts. I can not agree that quality software means satisfying requirements. I have particpated in to many projects where the requirements did not satisfy the real problem. For me, how you satisfy the problem dictates the definition of Software Quality. If you believe that Software is THE solution to a problem, then I think that you have to consider documentation, manageability, training, etc as part of your definition of quality or at least how you approach quality. IF you consider Software to be PART of the solution then I think that Robert...Read On

 
 
Comment:    
by John Howland 10/9/2001

I disagree that documentation is an "auxiliary feature" of software. If you follow a "good" formal process, much of the documentation is required to develop the software. If the documentation used to develop is not kept up to date, then the software becomes defective by definition. Keeping maintenance docs up should be a formal part of any refactoring/defect squashing effort. Except for this one issue, I otherwise like what Robert has to say. It helps me give something my mnagement can sink their teeth into.

 
 
Comment:    
by Robert M Melendez 10/9/2001

I've been rereading Weinberg's QSM. His definition of quality notes the fuzziness of Knowlton's note by pointing out that quality is relative to the person attempting to get value from the software. Inverted, this says there is no absolute measure of quality. Glass partially acknowledges this by noting that the priority order of his ilities changes with a project's goal. I suggest that Glass' ilities are not the quality itself but a model for measuring it by focusing us on values that someone, say potential customers, might believe important. I do take exception to the user satisfaction equation. Remove "Good Quality" and I believe the...Read On

 
 
Comment:    
by Jan Erik van der Laan 10/9/2001

My thoughts on this issue are: "Quality is in the eye of the beholder". In other words: quality is a subjective entity. How interesting is it then, to know what quality is comprised of? As testers we do not improve the quality of the product; we can only try to find out what "ilities" are important to the customer and then privide insight into the extend in which the requirements for these "ilities" are met. The customer decides on quality. When you're in the quality improvement business, you can only try to improve (in what ever way) the extend to which the requirements for these "ilities" are met. Still, the customer decides on...Read On

 
 
Comment:    
by Arun Ramu 10/9/2001

The -ilities that you use to define quality can be seen as bringing granularity to the definition of product quality. IEEE has a whole standard on this issue and all the possible -ilities have been dealt with in a lot more detail. Also, Documentation does form a part of this under Maintainability (more maintability implies better the documentation etc). Finally, IEEE also clearly highlights the approah to measure these -ilities. One just needs to read this standard (IEEE 1061-1992) to grasp the entire idea more clearly.

 
 
Comment:    
by James Knowlton 10/8/2001

If user satisfaction is a completely discrete entity from quality (as is argued here), then who are you making the thing for? Yourself? Ultimately, I think the whole issue is fuzzy...for example, if a feature "works", i.e. is reliable in the eyes of the Quality Engineer, but the design makes it unusable to a customer, is it a quality issue? Of course it is.

 
 
Comment:    
by Gábor Ponyi 10/8/2001

this definition of sw quality (a bunch of ilities + 1 ency) lacks a very important attribute -- ility if i may -- manageablility. how do you go forward with this definition of quality? ok, you order them depending on your project's needs. but how do you decide throughout the project that the product is e.g more usable than relibale, or vica versa? if you can not, why would you want to prioritize them in the first place? i would stick with Philip Crosby's definition of quality: conformance to requirements. requirements you can manage, ilities you can not. i think you are still better of with Cosby's definition even if you can not/is very...Read On

 
Back to Top



 
Ads By Google
What's This?
 
 



Home   |   Resources   |   Topics   |   Community   |   PowerPass



© 2010 StickyMinds.com. All rights reserved.
StickyMinds.com is a division of Software Quality Engineering.
Privacy Policy    Terms & Conditions    Link to StickyMinds.com    Feedback


Seapine




Agile Development Practices 

STARWEST