Human-Computer Interaction Institute
School of Computer Science, Carnegie Mellon University
Early-Stage Software Design for Usability
In spite of the goodwill and best efforts of software engineers and
usability professionals, systems continue to be built and released with
glaring usability flaws that are costly and difficult to fix after the
system has been built. Although user interface (UI) designers, be
they usability or design experts, communicate usability requirements to
software development teams, seemingly obvious usability features often fail
to be implemented as expected. The impact of usability issues becomes
increasingly severe in all kinds of software as computer use continues to
rise in the home, in the workplace, and in education. If, as seems likely,
software developers intend to build what UI designers specify and simply do
not know how to interpret the ramifications that usability requirements have
for the deep structure of the software (i.e. the "software architecture"),
something is needed to help to bridge the gap between UI designers and
software engineers to produce software architecture solutions that successfully
address usability requirements. Usability-Supporting Architectural Patterns
(USAPs) achieve this goal by embedding usability concepts in materials that
can be used procedurally to guide software engineers during the complex task of software architecture design.
In order for usability to be a first-class citizen among software quality attributes, usability design must be made cost-effective for development organizations. To achieve this goal, usability needs to be addressed early in the design process in ways that enable it to be successfully incorporated into software architecture designs and software engineering implementations. Preventing late-stage changes in complex software systems by addressing architecturally-sensitive usability concerns during the architecture design phase is a victory for developers and users alike. This is the goal that this dissertation addresses.
Addressing usability early in the software development process is a non-trivial problem. The usability dicta provided by guidelines, heuristics, and UI design patterns may not give software designers all the information they require to completely and correctly implement basic usability features. I present work to construct and evaluate an approach to the problems of explicitly drawing and communicating the connection between usability concerns and software architecture design, and a tool to deliver that approach to software engineers for use in software architecture design practice. I also discuss a possible extension of the research concepts embodied in the tool to the domain of education research.