views:

251

answers:

7

Hi,

I am writing a system requirements document and need to include non-functional requirements relating to the usability of the system, but am not sure of the best way to express this.

"The system shall be easy to use" seems a bit vague to me, and not testable. Are there any 'official' standards/guidelines that can be adhered to relating to the usability of a program?

+7  A: 

Usually, we try to hash out an application-specific definition of 'easy to use'. For example, for our current project, easy to use means:

-All delays in the system longer than .5 seconds will produce a dialog box that says "Please wait."

-It is possible to reach any given system function from the main window in less than 3 clicks.

-It is possible to accomplish any given task with just the keyboard, without the mouse.

-All buttons in the system will adhere to established button convention (link to established button convention regarding size, naming, position, etc.)

-All screens will have a help button. Each help button on a given screen must provide at least one 'topic' for each control on the screen.

-etc.

These sorts of things are testable, and taken together, constitute a 'pretty good' usability standard. That said, nothing substitutes for actual users trying it out.

GWLlosa
@[alex77]: if you can't measure it or test it, it's not a requirement.
Steven A. Lowe
A: 

Here's GNOME's documentation regarding human interfacing. This is intended as an example of how to specify, not what to specify (as I don't agree with everything they're saying in there).

Eduard - Gabriel Munteanu
There's a linux joke somewhere there about GNOME writing usability documents... :)
GWLlosa
+3  A: 

Usability requirements are hard because the only way to know if your system is usable is by having real users try it out. How will you know if your requirements have been met? To do that, you need formal metrics for usability. Those metrics have to somehow be extracted from the results of usability testing, and if you abstract your usability testing to the point where you're just getting metrics out, you're missing out on its usefulness.

Some items like "must be able to do X with Y many clicks" or "system must respond in Z milliseconds or less" are useful, but they're actually functional requirements that have to do with usability, not usability requirements in themselves. It's quite possible (if not likely) that you can design and implement a system that meets all such formal requirements and is still frustrating for the users. Again, the only way to know is through usability testing.

Adam Bellaire
+2  A: 

Well, 'The system shall be easy to use' is exactly the kind of documentation that frustrates both designers and developers, so let's see if we can do a little better than that shall we? :)

To start with, you may find it helpful to sit down and imagine exactly who the intended user is. Give them a background, give them a bit of colour, then send them to your imagined application and try and figure out how they as individuals would want to interact with it.

Remember, different users are concerned about different aspects of usability. Don't just concentrate on the story path you think you would follow if you were using the application.

Next it might be helpful to break the site down into usability components. Does it have a lot of pictures? If so, what's the best way of presenting a lot of pictures to a user. Does it have a deeply nested menu structure? Might there be a better way than a sitetree to help your users navigate their way around? Usability design patters will help you here. A good resource for design patterns for usability can be found here and here. Design patterns are good because they clearly explain to everyone involved how certain functionality is supposed to work.

Take a moment to consider accessibility in combination with usability. How the site work with javascript turned off is always a very good place to start and can be a great help to developers who tend to get very tired of watching their designer stick yet another <a> link on a page that is going to need to submit a form.

Remember, usability is about clarity and it begins with clear communication to the people building the system. If you can't speak clearly about what you want built how do you expect the developers to build something functional? Take the extra time to paper prototype if you have to.

My reply may be a little too 'web' focused to be of enormous use to you, but I hope it provides a few useful tidbits amongst my ranting.

Steerpike
+2  A: 

Metrics & Usecases.

We have a number of personas that encapsulate our different customer types.

We have the user poweruser (George, he's a nerdy, university type),the non-tech person (Frank, who can barely use a calculator) and someone in between (Susie, she knows how to surf the web and can talk to tech support but don't ask her what emacs is).

Based on that we say:

  • For feature X, George should be able to access it without using the help or pausing longer than a few seconds, Suzie may need to look at the help but probably won't and if Frank does it better be real clear because he doesn't have much patience.

Now, for metrics, we also have usability study guidelines, like out of 10 people, 8 should be able to access Feature Y without looking at the help or be able to do it with 30 seconds.

Those are really subjective, but it might help you get going to in the right direction. Plus, it may help you talk to non-developer types who "just want it to work and be easy".

It wouldn't hurt to read Joel on Software articles too.

cbrulak
+1  A: 

The most unambiguous way to include usability requirements in a requirements document that I could find is: make lots of screen mock-ups (and connect them with the "flow" of the performed actions, e.g. by having an arrow point from one item at image1 to the relevant next item on image2 etc.). If people actually see how something is supposed to work, it's easier to understand and leaves less room for interpretation.

ISW