Linked by Thom Holwerda on Tue 6th May 2008 15:15 UTC, submitted by Shlomi Fish
Features, Office "Which parameters make software applications high-quality? And which parameters or methods, while desirable, are not directly 'quality'?" This is the question the author of this article asks himself. Most of his 'parameters' make a lot of sense, but be aware that the article is about what makes an open source program high quality, and not programs in general. This important bit is stated in the one-sentence 'abstract'.
Thread beginning with comment 313151
To read all comments associated with this story, please click here.
What Makes Software High-Quality
by evangs on Tue 6th May 2008 18:41 UTC
evangs
Member since:
2005-07-07

Seeing as the article is mostly crap, I thought I'd give my own 2 cents on what makes software "high quality".

1) Intuitiveness
The software needs to be intuitive to use. It must not do something that the user doesn't expect. It needs to adhere to the UI guidelines of the platform, since this would be most intuitive for users of said platform.

2) "Discoverability"
This follows on from intuitiveness. The software should be easy enough to use that you can pick it up from the get go without having to resort to a manual. It should be designed so that more advanced features can be "discovered" along the way. That way, the user isn't bogged down by the initial steep learning curve.

3) Documentation
This is the manual that the user can fall back on when points 1) and 2) don't hold true. Every feature needs to be documented, with more material focused on the more complex aspects of the software. For example with an image manipulation package, there's no real need to document most of the items under the standard File, Edit menus. However, it would be good to document the functionality of filters. It would be even better if you documented how to perform common tasks, e.g. red eye removal, sharpening and image, noise reduction, etc.

4) Stability
The application needs to be stable and not crash when the user performs some common operation. It is granted that bugs and thus crashes will happen. These can be minimized by being rigorous in the development phase, by testing frequently and thoroughly. Unit tests and automated testing tools help a lot here.

5) Support
Bug reports need to be addressed quickly. Even if a fix isn't released, an acknowledgment should at least be given so that the user knows that their feedback has been received. Developers should also keep users abreast of the latest developments, and plans for the project. Not all users are keen to know this, but there are many who do. These users tend to be the keen ones (i.e. enthusiasts), who are more likely to spread the news of your product by word of mouth. Keep them up to date, keep them happy and your product will do well.

6) Speed
Your software doesn't have to be a speed demon. It shouldn't be too sluggish either. What is important is "perceived speed". If a process is going to take longer than a second, provide a progress bar so that your users know that your program hasn't hanged. One example could be the an image editing program I use on the Mac. When you perform an operation, it doesn't show a progress bar! This may not be an issue when you're working with 2 MP images and operations take a second or two to complete. However, it is a big issue when you are dealing with 10 MP images. The application looks like it's completely hanged until the operation completes, some 20 seconds later. The GIMP actually performs slower than this particular app if you time the operations, but it doesn't feel slower since it shows a progress bar and you know that the the application hasn't hanged! Always always provide feedback to your user when performing long operations. Failure to do so will frequently result in your app being called "slow" even if it is faster!

Wow .... that's a long list -.-

Reply Score: 5

ari-free Member since:
2007-01-22

yes software has to be 'responsive' and can't lock on you.

Reply Parent Score: 3

Doc Pain Member since:
2006-10-08

From a developer's standpoint (and maybe a user's, too), I like this point most:

3) Documentation
This is the manual that the user can fall back on when points 1) and 2) don't hold true. Every feature needs to be documented, with more material focused on the more complex aspects of the software. For example with an image manipulation package, there's no real need to document most of the items under the standard File, Edit menus. However, it would be good to document the functionality of filters. It would be even better if you documented how to perform common tasks, e.g. red eye removal, sharpening and image, noise reduction, etc.


Picking up your example of an image manipulation program, there are some features that are interesting for, let's say, a graphics engineer for commercials, a photo technician or a guy who postprocesses images for a newspaper. Words like "histogram", "color separation" or "handling of artifacts" come into mind - words the average user (who possibly insists on having a pirated copy of the latest "Photoshop" on his PC in order to watch his holiday pictures) does not understand. --- On one hand, a good documentation could explain what these functions are used for, how they work and how you could use them for specific problems. On the other hand, the first mentioned professionals will know, they don't need such kind of documentation.

Documentation in general is important. At this point, I'm usually praising the BSD operating systens where everything (system binaries, tools and utilities, maintenance procedures, kernel interfaces, drivers, library calls and file layouts) have their own manpage which is available without any external connection just after install. And you have the system handbook on your hard disk, too, in different languages. In my opinion, it's great just to type "man mencoder" or something similar to get a manpage that as been written with the user in mind, containing examples and explainations that are easy to follow and that do enable the reader to achieve his goal. Sadly, this tradition doesn't seem to be followed anymore by "modern" applications...

Reply Parent Score: 2

ShlomiFish Member since:
2005-10-10

I mentioned many of the things you've mentioned here in my article, although possibly not clearly enough. (I don't know). I'm sorry that you felt the article was "mostly crap", but many of the things you've mentioned appear there.

Oh well, I guess you can't please all the people all the time. Nor should you try.

That put aside, I found your comment to be insightful (but I only skimmed it).

Reply Parent Score: 1