Is Your Software Usable?


In practice, the usability or user-centered design (UCD) technologies are underused in software engineering. This is because usability or UCD is not only related to computer science, but also involved by psychology and other subjects. What’s more,  usability technologies are developed separately outside the software engineering world.  They have their own theories, concepts, models, and tools. Therefore, usability technologies may be difficult for software developers to understand and implement.

This article is about to introduce the basic concepts of software usability and explain why it is important to software development. Then, we will explore a potential solution to integrate usability engineering into software development and the methods of usability evaluation.

What is software usability?

It is a preconception, “Usability only refers to the appearance of the software product.”

Usability or UCD is a term related to the concepts of multiple areas, like computer science, psychology, human factors and so on. Briefly, I think usability is a user-centered measurement based on the subjective perspectives and experience of users. The aim of usability is to reflect the quality of the interactions between software products and users.

One of the most popular explanation of usability is based on five dimensions [1][2]: learnability, efficiency, memorability, error rate, satisfaction. More specifically, learnability measures the time required to make a new user become skilled in using a particular software product. Efficiency means how convenient the software is to help a user improve his productivity. Memorability refer to how quickly a user can pick up his knowledge about the software product after a period without using it. And the error rate here means how many errors a use may make when performing his tasks. Finally, satisfaction represents how willing a user may be to use the software product.

In my opinion, measuring software usability based on these five attributes may be inappropriate. Because some criteria are overlapped with others. For example, memorability is highly related to learnability. If a software product is easy to be understood and learned, it may probably be efficiently memorized and be quickly picked up after a period of no using. Efficiency should take error rate into consideration, because high error rate can reduce the performance of efficiency significantly. Moreover, satisfaction is actually influenced by all the other criteria. It should be regarded as the essence of the usability, since usability is a user-centered measurement. In my view, it is arguable that  there may be only two key attributes of software usability, understandability and efficiency. Understandability means software product can be understood and learned quickly by user without too much information needed to remember. Efficiency means required tasks can be performed by simple and a few operations which can also reduce the errors made by users and increase users’ productivity.

Why it is important?

In my view, the center of the software industry is user. High usability can lead to the high popularity of the software product. However, low usability can reduce the original values of the product and users may prefer using other alternative software products with good user interface. Let’s make up a simple but inappropriate example, we designed a more powerful tablet OS than Andriod or iOS, but users have to type command to perform all the tasks. That can be a huge disaster to users.

Usability engineering is not just a decorative process after the whole software product is already built. It should take part in the software development life cycle early. Because some end-users’ interests or preferred behaviors may influence the functions of the software, even the architecture of the system. For example, for a particular software, users may prefer being able to cancel any ongoing tasks under any conditions and backup to the previous state. This kind of need may affect the system design.

Integrating usability engineering in software development

The good point for usability engineering to engage in software development life cycle may be the use case analysis phase which is widely used in modern iterative software development [3]. In each iteration, a usability team will focus on task analysis. task analysis is about to explore the expectations of end-users, how users perform their tasks, what is the responsibilities of users and understand the motivation and strategy behind users’ behaviors. The main methods of task analysis are site visit, interview and survey. Once usability analysis and use case analysis have been done, the usability team and the software development team should negotiate with each other to investigate the factors that may influence the future design of each team. Communication is extremely important between two teams. Since these two teams are speaking different languages and using different tools, it is necessary to have at least one ‘bilingual’ in each team who has basic knowledge about the technologies used by other team to make the communication more effective and efficient. After discussion, the usability team will  focus on interface design and prototyping. And then test and evaluate the usability of the prototype for the next iteration.

Usability evaluation

There are a great deal of methods that can be implemented in the evaluation of usability, like usability testing, thinking around, and heuristic evaluation. Among these technologies, heuristic evaluation is the most popular one. This method performs usability tests with a group of usability experts. They test the prototype based on a set of principles to discover and identify usability problems. Due to its cheap and efficient nature, heuristic evaluation is a very good fit in iterative software development. However, usability is a kind of subjective measurement, views from a small group of experts may bias the results, especially when it comes to the public. So, I think, besides heuristic evaluation, we can implement thinking aloud approach at the same time in the early development life cycle. The less complete our product is, the more problems can be directly exposed by users. These negative attitudes can provide experts more psychological information for future heuristic evaluation.


In this article, we introduced the concept of software usability that usability not only refer to the appearance of the user interface but also relates to other areas like psychology and human factors. It is also essential to recognize the importance of user-centered design. We also explored the possible approach to integrate usability engineering into software development and the methods of usability evaluation. I think software development can benefit a lot from the integration of usability engineering. Because user is the center of the software industry, a powerful software need an efficient and easy understandable interface to support and attract end-users to perform their tasks.


[1] Holzinger, A. (2005). Usability engineering methods for software developers. Communications of the ACM48(1), 71-74.

[2] Ferré, X., Juristo, N., Windl, H., & Constantine, L. (2001). Usability basics for software developers. IEEE software18(1), 22-29.

[3] Seffah, A., & Metzker, E. (2004). The obstacles and myths of usability and software engineering. Communications of the ACM47(12), 71-76.