At time of publication: | hci@hud, School of Computing and Mathematics, University of Huddersfield |
Currently: | Lancaster University alan@hcibook.com |
Paper presented at DSV-IS'95 part of the Eurographics DSV-IS Series of Workshops on the Design Specification and Verification of Interactive Systems.
Download full paper in PDF (124K) or compressed postscript (672K)
Full reference:
A. J. Dix (1995). Moving between contexts. Design, Specification and Verification of Interactive Systems '95, Eds. P. Palanque and R. Bastide. Toulouse, France, Springer Wien. pp. 149-173.
Any action is performed in a particular context. So what does it mean to do the 'same' thing in a different context? There is no simple answer to this question, it depends on the interpretation of the operation and even then may be ambiguous. This is not a purely theoretical problem, but occurs in practical computational problems. This paper examines this issue looking at three different problems: multi-user undo, distributed update and the simultaneous development of a document in multiple formats. In each case, we find formal rules which any sensible translation must obey. We also see that dynamic pointers, a generic specification and implementation concept defined in previous work, can be used to generate default translation rules which suffice in many circumstances. This is because dynamic pointers can themselves be seen as a translation of location information between different contexts.
- 1 Introduction
- 2 Group and long-term undo
- 2.1 The problem
- 2.2 Commutativity
- 2.3 Levels of interpretation
- 2.4 Changing contexts
- 2.5 Example translations
- 3 Merging updates
- 3.1 Moving between contexts
- 3.2 Long term interaction
- 3.3 They are all different
- 4 Composing translations
- 4.1 Undo composition
- 4.2 Merge composition
- 5 Dynamic pointers
- 5.1 Updates - the pull function
- 5.2 Using dynamic pointers for translations
- 5.3 More properties of dynamic pointers
- 6 Parallel development
- 6.1 Working together
- 6.2 Translators
- 6.3 A common format
- 6.4 Maintaining an invariant
- 6.5 Using dynamic pointers
- 6.6 Generating pull functions
- 7 Conclusions