Tuesday, April 16, 2013
Usability is Not an Architecture Quality Attribute
No one would dispute the importance of usability in the assessment of an application, but is Usability is an attribute of architecture? Usability, in the normative sense, refers to an application’s appearance, intuitiveness, and conformance to interaction standards familiar to the user.
An important book on the subject of Software Architecture is the SEI Software Architecture in Principle by Bass, Clements, and Kazman. In their first edition, they include the following:
Making a system’s user interface clear and easy to use is primarily a matter of getting the details of a user’s interaction correct … but these details are not architectural.
This would support my proposition that the normative definition of Usability relates to the user interface, as opposed to structural concerns like performance, security, and availability.
In subsequent editions of the book, they not only refute their original assertion, they include a section titled, “Usability Mea Culpa (or that’s not Architecture),” in which they decidedly changed their position and claimed that Usability is an architectural attribute.
They should have stuck to their original guns!! Usability is such an important concern; it should be elevated to a level as equally important, but separate from, an application’s architecture.
That being said, there is a definition of Usability that would fit under the architecture umbrella. You will not use a system you do not trust. Trust stems from things like availability, performance, security, and integrity. If you enter data and it gets garbled, it does not matter how elegant the interface - you will not use the system again. It is in THIS capacity that architects should concern themselves with Usability.
There is an argument to be made that experts in Human Computer Interfaces (HCI) engage in Usability Architecture, but that is not the typical path of the debate. Generally, the Usability conversation is concerned with consistency of interface; both in terms of industry accepted norms and consistency throughout the application.
Usability is critical to the success of software systems. At the level of granularity and detail at which most architects function, Usability is addressed via performance, integrity, security, and availability, not user interfaces. While Usability (user interface) is at least as important as architecture, it is not an Architecture Quality Attribute.