The Joel on Software Discussion Group (CLOSED)

A place to discuss Joel on Software. Now closed.

This community works best when people use their real names. Please register for a free account.

Other Groups:
Joel on Software
Business of Software
Design of Software (CLOSED)
.NET Questions (CLOSED)
Fog Creek Copilot

The Old Forum

Your hosts:
Albert D. Kallal
Li-Fan Chen
Stephen Jones

What Makes Software High-Quality?

There's a new essay I wrote about what makes software high-quality, and which parameters and methods, even though they are desirable, are directly parameters of high-quality software:

License is Creative Commons Attribution 2.5 (or later).

Comments are welcome, and linking or mentioning this article will also be appreciated.


      Shlomi Fish
Shlomi Fish Send private email
Tuesday, May 06, 2008
My career is just starting, but off the top of my head:

* loose coupling
* high cohesion
* functions as required for a documented time period w/o failure
* meets performance requirements for a documented time period w/o failure
* has undergone at least a handful of rounds of refactoring
* usability
* readable code that has been commented on where necessary
MoffDub Send private email
Tuesday, May 06, 2008
Maybe fitness for use plays a role too?

If software doesn't serve the purposes of the user, and serve those purposes, why does its ease of installation, whether its code is reusable, etc. - what does that all matter?
Tuesday, May 06, 2008
Now only if your webdesign had a high quality make-over </jerk>
TravisO Send private email
Tuesday, May 06, 2008
There are various well-developed resources you could have used in your article. A great starting point is here:
Steve McLeod Send private email
Tuesday, May 06, 2008
>A great starting point is here... ISO 9126

> # Learnability
> # Understandability
> # Analyzability
> # Changeability

Are those even words? How about "hillbillibillity"? I think that's a key indicator of sw quality...
a2800276 Send private email
Tuesday, May 06, 2008
You have beat testers listed but don't mention QA. This is a vital task that must be done by someone other than the developer. It needs to be done from the early prototypes to the final release and should cover how the software is used in addition to actual bugs.
Tuesday, May 06, 2008
Here's my stab at it, and I did it without the academic waffling:

It's stable; it's (reasonably) fast; it does what users expect it to; and it makes or saves them money, saves them time, or both.

That wasn't so hard, was it?
The Luggage
Tuesday, May 06, 2008
"Are those even words? How about "hillbillibillity"? I think that's a key indicator of sw quality..."

Fake Programmer
Tuesday, May 06, 2008
May I throw in "cashability"? :)
Ryan Smyth Send private email
Tuesday, May 06, 2008
Parameters? What parameters?

Shlomi, Kudos for your efforts, but you created a software wish-list.
I want _my_ software to be fast, reliable and cheap. Here, how's my parameters?

If you are going to define parameters, you ned to be able to quantify them. eg: Ease of installation might be computed by some statistical formula:

NumberOfFailuresPer1000installs / installation time in seconds.

And again, assign a numerical value to any of your benchmarks.

Then the qualtiy of the software is ONE number which is for example the sum of all the individual parameters.

In other word: With all of today's parameters, what is "higher quality": Word 6.0 or Word 7.0? Can YOU provide an answer, after writing your lenghty essay, and justify in with numbers?

Best regards,

Ari Telias
Tuesday, May 06, 2008
Beauty is in the eye of the beholder.

In other words, YMMV.
Steve Hirsch Send private email
Tuesday, May 06, 2008
IMO high quality is software that functions as advertised with an appropriate and predictable amount of care and feeding.

It's just like a car... If I buy a Benz with the expectation of having it in the garage every 3 months, I'm happy. If I buy a Honda and it breaks, I'm unhappy.
Duff Send private email
Tuesday, May 06, 2008
High Quality? That depends on your definition of that term, along with the criticality of the application, along with the requirements.

That's a very vague term, although I'll admit it's a good discussion topic at an QA interview...
QADude Send private email
Tuesday, May 06, 2008
meets users needs
doesn't have bugs
easy to extend
pretty much wraps up what is high quality software.  Everything else mentioned here is supposed to help with that but doesn't guaranty quality in any way, shape, or form.
Tuesday, May 06, 2008
Hi all!

Great comments - thanks. I should note that my list was not meant to be exhaustive, nor did I intend to imply that a software that fared badly on one aspect, was not otherwise high-quality. By all means, what I described was a "weight-formula".

Now only if your webdesign had a high quality make-over </jerk>

Yes, I'm well aware that the web *style* is lacking. I'm not a very good web stylist, and I'd like to hire someone to redesign the page when I have the resources. That put aside, I believe I am a capable web-designer in the general sense of building, designing and maintaing good, usable, and standards-compliant web sites. See:

For a different article where I describe what this involves, and give more free advice.
Shlomi Fish Send private email
Tuesday, May 06, 2008
Stability and usability.
Invader Zim
Tuesday, May 06, 2008
A minor point, but it's "software", not "a software".
John Topley Send private email
Tuesday, May 06, 2008
Steve Hirsch:
>>Beauty is in the eye of the beholder.

In other words, YMMV.<<

Ding!  Tell him what's he's won, Johnny!

As with any product, quality is more about perception than anything else, and tends to vary with specific use cases.

My definition of quality software:
- does what it's designed for
- does it right
- no glaring errors, or at least none that don't have some sort of workaround

For instance, Word and Excel, for the most part, do what they're designed for.  And they do it reasonably well.  They have their flaws, but the first do they mostly get right.

ClearCase does version control, but it doesn't really do it right.  The checkout mechanism, for instance, not only prevents concurrent development, it also offers no safeguard against some putz checking out a file you need and then going on vacation for two weeks.  But this is intended behavior, so it's not an error, just a case of doing things badly.

What's a glaring error?  Example: at my old job, programmers would regularly be locked out of the development database, because of known issues in Oracle that required administrator intervention.

My view is that reliability is the Big Test, the point where most products will ultimately stand or fall.  And this goes for all goods, not just software.  I don't care if your Ferrari can do 130 MPH; if it's in the shop every two months, I'll stick with my old sedan.
Justice Walker
Tuesday, May 06, 2008
Source is available? Has a home page? What on earth does this have to do with quality? I lost interest after that.
Greg Send private email
Tuesday, May 06, 2008
That should be:
"the first TWO they get mostly right."
Justice Walker
Tuesday, May 06, 2008
Justice -- in Clearcase, checkout reserved vs. unreserved, no?
Tuesday, May 06, 2008
That is an important distinction, but I never had much chance to see the difference in practice.  I recognize that any tool can be used incorrectly or downright abused, but it irks me that a "proper" use of ClearCase makes for such hassles.

Branching provided some help, but not always.  I recall a situation where I needed to check out a file that somebody else was using on a different branch.  ClearCase would attempt to send an email to the other user to let him know that merging would be needed.  But, sending the email would get blocked by the anti-virus software we were using, and then ClearCase would lock up completely.  Great job guys.

Then again, we had two full-time ClearCase administrators, so maybe its popularity is just a vast conspiracy to keep IT employment rates high.
Justice Walker
Tuesday, May 06, 2008
Premium packaging materials.
Tuesday, May 06, 2008
@Justice - good point on the dedicated Clearcase administrator!  Every place I've seen that uses it comes with at least one guy who does nothing else.
Tuesday, May 06, 2008
Software is high quality, if and only if, it serves the purpose of it's users and business.

If anyone of these things are missing, it's quality is unimportant or useless.

You can talk about the design, if it's high quality or not, but that would require a separate discussion.

Tuesday, May 06, 2008
High Quality software is one that is performant, does the task at hand, and pays all developer "taxes" -

Does you application wake up properly from sleep?  Does it look proper on a non-default theme?  Does it screw up on non-English Windows?  etc.
Tuesday, May 06, 2008
A problem with

<<<Software is high quality, if and only if, it serves the purpose of it's users and business>>>

and many of the 'ilities' mentioned in this thread is that they are so abstract that:

1) everybody agrees that they are positive qualities, but
2) people start fighting over their true meaning right after that
3) they provide virtually no clue for the developer on what to do concretely in the problem at hand

I consider these bold qualities completely meaningless for all practical purposes. I much rather prefer long lists of concrete best practices that provide guidance when developing the software. Such a list can get very long and some of the best practices may not be applicable in some cases, but it provides guidance and the best practices can be discussed meaningfully.
Karel Thönissen Send private email
Wednesday, May 07, 2008
John Topley: yes, I know "software" is a collective noun. The problem is that in Hebrew, we can use "tokhnah" for both "software" (as a collective noun), and a "piece of software", or a "software application" (as a singular object). So it may be an Hebraism.

I've tried to grep for all places and fix them, but may have missed a few. It will be corrected in the 2nd edition.
Shlomi Fish Send private email
Wednesday, May 07, 2008

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
Powered by FogBugz