Usability and Software Architecture

The Scene: "Oh, no, we can't change THAT!"

The usability analyses or user test data are in; the development
team is poised to respond. The software had been carefully modularized so
that modifications to the UI would be fast and easy. When the usability
problems are presented, someone around the table exclaims, “Oh, no,
we can’t change THAT!” The requested modification or feature
reaches too far in to the architecture of the system to allow economically
viable and timely changes to be made. Even when the functionality is right,
even when the UI is separated from that functionality, architectural decisions
made early in development have precluded the implementation of a usable
system. The members of the design team are frustrated and disappointed that
despite their best efforts, despite following current best practice, they
must ship a product that is far less useable than they know it could be.

Separation is NOT enough

This scenario need not be played out if usability concerns
are considered during the earliest design decisions of a system, that is,
during the architectural design, just as concerns for performance, availability,
security, modifiability, and other quality attributes are considered. The
relationships between these attributes and architectural decisions are relatively
well understood and taught routinely in software architecture courses. However,
the prevailing wisdom in the last 20 years has been that usability had no
architectural role except through modifiability; design the UI to be easily
modified and usability will be realized through iterative design, analysis
and testing. Separation of the user interface has been quite effective,
and is commonly used in practice, but it has problems. First, there are
many aspects of usability that require architectural support other than
separation, and, second, the later changes are made to the system, the more
expensive they are to achieve. Forcing usability to be achieved through
modification means that time and budget pressures are likely to cut off
iterations on the user interface and result in a system that is not as usable
as possible.

U&SA Approach

Recent research conducted jointly by the U&SA project
at the Human-Computer Interaction Institute & Software Engineering Institute
at Carnegie Mellon University has investigated the relationship between
architectural decisions and usability. This project gives usability specialists
and software developers alike an explicit link between their two realms
of expertise, allowing both to participate more effectively in the early
design decisions of an interactive system. It gives the entire design team
the tools to consider usability from the very earliest stages of design,
and allow informed architectural decisions that do not preclude usability.