Usability is not something you add to a product. It’s something you should design into the product. A methodical approach to producing a user interface is usability engineering. The usability guru Jacob Nielsen has written a book (Jacob Nielsen: Usability engineering) on applying systematic methods throughout the development life cycle to increase ease-of-use for software, websites and other UI’s.
The key word in designing usability is the user. You have to really know the user before making any decisions about the design. If you only assume what the users want, you might end up with a product that nobody needs.
Usability engineering involves several methods, each applied at appropriate times.
Gathering requirements include task analysis, user analysis and environment analysis. In task analysis you determine cognitive and other characteristics that are required of users by the product. These can be, for example, prerequired knowledge and cognitive loading. User analysis helps you describe who will use the product. You need to define the intellectual abilities, cognitive processing abilities, previous experiences and physical capabilities of the user. Environment analysis makes you consider the physical, social and user support environment. In other words you need to determine what the user needs to do and find out the users way of doing things and the context the product will beused in.
Developing and testing prototypes is just what it sounds like: making prototypes based on the requirements and testing them. You need to find out if the prototypes work like wanted, if there are some features missing or if some features are misplaced. Prototypes can range from extremely simple sketches (drawings and post-it notes) to full systems that contain nearly all the functionality of the final system (low-fidelity prototypes/high-fidelity prototypes).
Evaluating design alternatives helps you find the usability problems in a user interface design. Evaluation can be done with heuristic evaluation, for example, where you go through a list of usability requirements and see if they are implemented in the design. The list can include qualities like visibility, learnability, consistency and flexibility.
Analysing usability problems will (hopefully!) help you avoid the same problems in your next design. You have to get to the bottom of the problem: why did it happen in the first place? What caused the problem?
Proposing solutions –how to solve the problems? Refine your design and test it. Again. Make another prototype if needed and test the solutions with it.
Testing an application with users gives you valuable information about features that are too difficult to use, in a wrong place, not needed or perhaps missing. There are a wide variety of different testing methods to use: thinking aloud, field observation, questionnaires…