This work exploits novel approaches to the design of software systems. The approach recasts software systems as "open infrastructures", open to change, adaptation and revision. This is achieved through the use of causally-connected, "reflective" self-representations; that is, in addition to a traditional programming interface, these systems present a view into their inherent internal structures, and allow users and programmers to manipulate these structures so as to adapt the systems to particular needs.
This approach to system design originated in the design of computer programming languages, and has more recently begun to be applied to other areas of systems software organisation. This project looks at the way in which this technique can be exploited in the design of interactive systems. By reorganising not only the process of design, but, crucially, the artefacts of design within a framework which emphasises change and adaptability, we are attempting to find a model of system organisation which builds on the insights of sociological investigations of computer-based working activity.
There are two main strands to this work. Prospero is a reflective toolkit for the creation of collaborative applications. As well as offering components and behavioural structures for incorporation into collaborative systems, Prospero exploits a reflective representation of its own structure to allow application developers to adapt Prospero's facilities to particular application domains. At the same time, as part of an ongoing collaboration with others in the Architecture and Document Services Technology Centre and at PARC, we are investigating a view of reflective representations as "accounts" which systems provide of their own activities, and the way in which such accounts allow users to interpret system action and manage their interactions.
Technically, this project can be seen as addressing three related issues: the role of abstraction and representation in software engineering, the design of collaborative systems, and the relationship between social science and software design.
In the first area, it builds on the work of the Embedded Computational Area in PARC's Systems and Practices Lab, and the use of computational reflection and metaobject protocols to address some of the problems with "abstraction" in the engineering of software systems. Explicit self-representation provides a means for programmers to understand and modify internal aspects of a system--aspects which are normally hidden behind abstraction barriers and visible only through their "interference patterns". Open implementations are a fundamental change in the way in which we think about and construct software systems.
Collaborative systems provide a rich set of problems where this approach is valuable, from the internal representations of activities, through the distributed management of replicated data, to the aspects of interface linkage within groups. This allows us to capitalise on existing work on object languages and distributed systems, while further applying the approach to the design of interfaces and the relationship between system behaviour and everyday activity.
Finally, collaborative systems provide a bridge between the technical aspects of system design and ongoing investigations of working activity from a sociological perspective. While these approaches have led to a call for a reorientation of the process of design, and in particular techniques such as participative design, this work goes deeper in addressing the consequences of observational investigations for the fundamental structure of computer systems. We believe that such an integrative approach is crucial to the development of more flexible and more usable systems, and to capitalising on the value of ethnographic studies of working activity.
Xerox is currently the world leader in the development of the conceptual framework and programming techniques which underlie open implementations. This work contributes to the development of this approach and the maintenance of Xerox's leadership position. These techniques are the basis of an approach to system design which emphasises efficiency, portability and reuse. As Xerox's business revolves increasingly around scalable digital systems, these techniques become increasingly relevant to our business activities.
More fundamentally, this work focuses on a set of techniques which can be used to design computational artefacts which are sensitive to the issues raised by sociological investigations of work practice. This implies a fundamental change to the way in which we interact with systems, and the way in which these systems fit into everyday working processes--a change which conveys a major competitive advantage. In the work with A&DSTC, we are specifically attempting to carry across these developing understandings into the computational basis of Xerox's document product line.