Clients of reactive systems often change their priorities. For example, a human user of an email viewer may attempt to display a new message while a large attachment is already downloading. To the user, an email viewer that delayed display of the message would exhibit a failure analogous to priority inversion in real-time systems. We propose a new quality attribute, attentiveness, intended to provide a unified way to model the forms of redirection offered by application-level reactive systems to accommodate the changing priorities of their clients. Modeling attentiveness as a quality attribute provides systems designers with a single modeling framework for policy and architectural decisions to address trade-offs among criteria such as responsiveness, overall performance, behavioral predictability, and state consistency. Clients of the reactive system could be human users or system components. This latter possibility suggests that the modeling framework must support an appropriate kind of composability, which would enable it to support architectural design of attentive systems at scale. At the policy level, the framework models a diverse set of familiar redirection options including cancel, undo, defer, suspend/preempt, and ignore. At the architectural level, the framework includes a suite of concepts to support the design of attentive systems and the refactoring of existing systems to enhance attentiveness. These concepts include: (1) Distinguishing "short" operations (such as an event notification) from "long" operations (such as an unbounded data transfer over a network). (2) Technical means to encapsulate long operations to prevent interference with redirection. (3) Technical means to enable use of light-weight checkpoints to support redirection while executing "long" operations. (4) Consolidation of responsibility for redirection to a relatively small group of components in the system. Policy and architecture come together in the form of a set of positive and negative patterns for realizing attentive systems. These patterns are derived from case studies of attentiveness failures and successes. This paper summarizes the key concepts of attentiveness, including modeling and architecture. The concepts are assessed against a variety of case studies, including refactoring experiments and new development projects involving both human-system interaction (in a document editor) and system-system interaction (in a client-server application). A principal goal is to develop a modeling framework and set of associated practices that can guide incremental improvements in enhancing the attentiveness of both existing and new reactive systems.
Gregory S. Hartman, William L. Scherlis. Attentiveness: Design for Reactivity at Scale. International Journal of Software and Informatics, 2011,5(3):487~507Copy