Usability in Software Products

[article]
Member Submitted

Introduction
In today’s world software companies face increasing challenges, if they need to fulfill requirements as per customer needs/demands and also up to their satisfaction. In the past software organizations were developing products by giving importance to the feature implementation and least regarding how simple it is to use. But, in the present situation there is heavy competition due to availability of similar products or services and this continues to increase in future too. Any software organization or product can sustain only if the offerings are outstanding in all respects when compared with others.

Customers in today's world want to be pampered with the best of features and qualities in any software. A user today is very much aware and choosy about what exactly he wants to see in the software and not ready to compromise on any inadequacies. Due to which, the sense lies in delivering software with ever-higher levels of functionality, reliability, responsiveness, usebility, performance and also beauty.

User operations are steadily increasing and product purchases are increasing based on usability. The goal is to adapt software to user's actual work styles, rather than forcing users to adapt their work style to the software. In order to sustain in the present competitive environment it is critical that every user software interaction must generate positive customer experience. User experience is of high importance; to be successful, software need to eliminate user discomfort. But it's unfortunate that UI design is still considered a secondary in the development life cycle of many software products. When developing completely new solutions to customer problems, it is very much necessary to bring the users along in the development process. This is the only way to fully explore the new opportunities occurring as development proceeds. To achieve an efficient development process, cross-functional teams are formed to support the iterative process. The teams include end users & people from implementation, documentation & testing are given the total responsibility for the total quality of the development feature. In the industries, it is widely accepted that quality has to be built, not tested into a product.

This paper discusses the concept of usability & why it should be an important part of any software project. How it can be fit-in at every phase of software life cycle, so as to achieve a user-friendly application.

Usability Basics:
What is usability?
Usability is the measure of the quality of a user's experience when interfacing with a product or system.

Usability applies to every aspect of a product with which a person interacts Hardware, Software, menus, icons, messages, documentation, training & online help. Every design & development decision made throughout the product cycle has an impact on that product's usability. A useful product

  • Is easy to learn
  • Is efficient to use
  • Provide quick recovery from errors/li>
  • Is easy to remember
  • Is visually pleasing

As customers depend more & more on software to get their jobs done, usability can be the critical factor that your applications will be used.

Why usability is important?

  • To reduce the number of support calls from users
  • Poor usability is a major reason why users call software technical support lines
  • Charging users for support increases potential dissatisfaction with the product
  • Usability testing helps improve user acceptance
  • Usability can help differentiate your product from those of your competitors
  • If two products are substantially equal in utility the product with more usability will probably be regarded as superior
  • Small differences in usability can have a big effect on user preference
  • Finally remember that every product gets tested for usability eventually. Users perform usability testing on your product every time they use it & they decide further deals/orders based on their experience with product use. By testing the product before releasing it to market, you can help ensure that user’s experiences with the product will be positive.

Usability in Development process:
Usability will be considered from the requirement phase. But the clarity of ‘how usable the product features’ will not be made completely clear. Due to which the next phase of development will also carry forward some of these unclear usability requirements.

Say for ex: Usability requirement in a PRD is:

  • The ease of install and deployment; Install should be simple, easy to use & quick.

Since this is a general requirement, the developers implement this feature in his/her own style. First of all, user interface is thought of very late in the process, thereby reducing the scope of usability. Secondly, developers mostly design & implement UI, which is biased towards an easier coding process. Majority of developers focus on implementation of feature and give less importance to the usability of the same.

To overcome this limitation, every developer should be explained regarding how Importance the usability is! Whatever component/module they develop should not only be the feature complete but also should be easy to use.

A developer who implements a component with GUI or any feature where user's experience needs to be measured, should be shared with other team members & test engineers to get the feedback on his/her implementation & accordingly do the necessary modifications. This needs to be done in the beginning stage itself to optimize effort. Any review process (Design, HLD, etc) should also have focus on usability than just feature reviews.

Any defect raised against GUI by the test engineers should be considered seriously and has to be acted positively. Please note that for most developers, a GUI defect is never a worthy bug. Appearance/usability defects are mostly regarded as enhancements or suggestions instead of defects due to their technical simplicity. As long as a defect does not induce a serious crash in the apply or affect general functioning, it can be ignored. This will be the attitude of majority of developers/managers in the software industry. Such people often discourage testers to report UI bugs. This results in developing ‘Usability less’ products to the customers. For the benefit of developers there are UI guidelines made available. These guidelines are collections of recommendations that designers & developers follow when creating the UI applications.

But this again resulted into problems. As an application designer, following UI Guidelines might help to ensure that the product you give your users allows them to apply skills they have already learned to do common tasks & learn new tasks more easily. However you cannot rely solely on the guidelines to ensure the usability of your product. UI guidelines are often too general. On the one hand, to be guidelines they must be somewhat general. Yes it's that very generality that makes them difficult to apply.

While designing an application visual consistency can be helpful. Consistency in other elements can make it easier for users to transfer skills when learning different applications. Specific UI guidelines help maintain consistency across different products, but consistency by itself is not the ultimate goal. Moreover consistency in itself doesn’t ensure usability. Guidelines may be a reasonable starting point. You must test your product with users to make sure that your initial design decisions are the best for your users and the work for which they are using your product.

Usability in Testing Process
Usability testing is the gold standard by which you can determine if the design of an application meets the needs of its intended users and allows them to work productively. Usability testing cannot be made completely automated, as it requires lot of manual testing since user’s views/feedback is the one, which really matters. Like all other testing, usability testing also has objectives defined and is as follows.

  • How easy is it for users to bring up what they want?
  • How easily can they navigate through the menus?
  • Usability testing should be iterative process which means at-least two or three times during the life cycle of a product this testing has to be performed
  • To identify discrepancies between user interfaces of a product and the human engineering requirements
  • Testing of the user documentation is also an essential component/li>

Historically, usability testing has been one of many components of system testing as it is requirement based. Hence, usability testing is considered a validation activity rather than a verification activity, because it requires real users to interact with the end product.

Usability characteristics, which can be tested, include the following:

  • Accessibility: Can users enter, navigate & exit with relative ease?
  • Responsiveness: Can users do what they want, when they want, in a way that's clear?
  • Efficiency: Can users do what they want in a minimum amount of steps and time
  • Comprehensibility: Do users understand the product structure, its help system and Documentation

Commonly followed usability test process:

  • Define the objective of the test.
  • Define the subjects precisely and recruit them.
  • Plan the tests and develop all necessary materials.
  • Put subjects in a workroom or lab with their workstations, possibly using video cameras and a one-way window to an observation room.
  • Conduct the test
  • Using video cameras and/or human observers, record the subject’s every word & gesture.
  • Experts and developers analyze results and recommend changes.

Software testers should also be trained for usability testing and they should be instructed to focus on usability while testing apart from the functionality testing. Ideally speaking testers should only facilitate the usability testing process, but they should not be the actual one's to test it to achieve better results. I suggest that aesthetic issues should be dealt by a representative group (mostly testers, developers & users), formulated by knowledgeable experts in consultation with graphic/UI designers. Such representative groups are more productive. The representative user group should have a mixture of ignorant users as well as knowledgeable/experiences users having prior experience in similar domains.

Conclusion:
In my experience, usability testing is inexpensive. If performed in all the Phases of development and treated with the same level of seriousness by all the engineers, then it is very unlikely that your product is not satisfied by the customers. Test engineers should focus and give timely inputs on the usability of the product at every phase. If usability testing is performed in the final phase, then the issues raised may not get fixed due to release pressures. Hence, it should start from the beginning phase of product development life cycle. Testers and developers should build an interest towards usability and should never consider this as the least priority.

Usability testing should be as part of identified test cycles and set of test cases should be developed to have a clear focus on the usability. It is always better to do a comparison study with the competitive products to obtain a better usability product.

Finally, I would like to conclude this paper with the following proposals.

  • Developers should ponder about usability defects and must fix up the issues.
  • Testers should not get gratified and get moved due to developer’s unidirectional attitude. Other than that both developer & tester should aid each other in festooning the product from user-friendly perspective.
  • A software product, in turn the company can be successful ipso facto that users easy understandability makes or breaks their decision in buying or not busying the product.
  • Instead of re-developing and giving a patronymic which has a chance of getting conjure or perjure impression for customers, it is always advisable to make consecrate effort in developing an all user friendly in the first instance itself. This will definitely result in good return of investments (ROI), wins customers satisfaction, have a strong hold in the competitive market and in turn the company's reputation.

Let's start making our dream true from this moment itself.

About the author

AgileConnection is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.