Software Architecture and Usability

An article that I co-authored was just published in the Oracle Technology Network (as part of their “Mastering J2EE” series).
The topic was usability and software architecture.

It was a challenging topic to write about: making usability relevent from an architectural perspective is surprisingly hard to do. Our main inspiration was the groundbreaking work on the topic done by the Usability and Software Architecture Project at CMU, and their European compatriates, the STATUS project.

Those projects are great, but somewhat overwhelming in their scope (STATUS lists something like 130 usability patterns). We tried to capture the design patterns for functionality that are _most_ painful to implement after the fact, and most directly tied to particular usability heuristics: In particular, we focussed on Undo, Cancel, Progress Bars, and History Logs.

One thing that struck me: most of the stuff that we discuss in the article is more doable and relevent (and _certainly easier to implement) in a rich client than in a web-based html user interface. For example, I’ve never seen “undo” implemented in a web application. But I came very close to implementing it in a flash-based application me and my team were working on last summer. In general, after reviewing the literature on software architecture and usabilility, I’m more convinced than ever of the importance of RIAs.

Comments? Feedback? As always, the thread below is open…