In our task analysis, developer and user collaborated in identifying user roles and the primary, higher level tasks performed by these roles. We then decomposed these tasks into subtasks, down to a level where developer and user agreed that further decomposition was unnecessary. To this task decomposition we added object flow information, concentrating on the flow of objects between roles, since these are key to multi-user, multi-role support.
An extended task model of this type was produced both for the current system of performing the user's tasks and for our proposed new system. A direct route across the 'design chasm' from the model of the users' current tasks to a model of proposed improved tasks was developed and applied. This method involved (i) mapping object flows through the model of current roles and tasks, (ii) identifying key tasks to be supported by the proposed system, (iii) mapping proposed object flows through these key tasks, and (iv) extending the object-key task mapping into a new task model.
Details of the user-developer collaboration in constructing and verifying the task models and of the processes of moving from current task model through proposed task model to application design are beyond the scope of this paper.
The proposed task model provided a basis for our overall system design. This was first realised through scenario based paper prototyping in which the interaction structure was derived from the modelled task structure and the user interface objects were derived from the modelled objects. We then further exploited this task model in the following areas of application implementation:
Thus, the workflow system in our application displays task-object pairings, in priority order, in a 'work agenda' for each user role. The user selects a task-object pair and the system launches an appropriate form through which the user can perform the chosen task. In performing the task the user makes use of a variety of commands designed to support the performance of the subtasks of the task in hand. Upon completing the task, the user updates the status of the object being manipulated and then simply closes the form.
Behind the scenes, and based upon the object flow information derived from the extended task model, the application automatically sets the status of the current task to 'complete' and initiates one or more consequent new task-object pairings which then appear in the work agenda of the appropriate user roles.
Thus, it is possible for the application to enforce a notion of a current role and to enable only the commands necessary for the current task-object pairing. Alternatively, and this is the approach adopted in our application, the union of roles authorised for the current user is formed and commands enabled for all these roles. Our reasoning here is that subtasks of the primary roles may be interleaved if a user is playing more than one role at once. Forcing the user explicitly to switch roles in order to perform different subtasks would be rather annoying.
To illustrate this point consider the entry points that have to be defined for context sensitive help. Given an explicit representation of the interrelationships described above, entry points may be generated using a set of conventions agreed between developers and technical authors. This is enhanced further by the fact that the system is at least aware of the primary task in hand, and so can support some rudimentary navigation to relevant help topics. For example, the user may be offered help topics on how to perform certain subtasks, as well as the more common object based help topics.
Command enablement is a function of the task model and the commands themselves are designed to support the subtasks of the primary higher level tasks which are used to enable the commands. If there are commands which are not linked to a subtask, one may ask why they are included at all. If a task does not have an associated command, then how does the user perform that task and does the application truly meet the user's needs?
Finally the model supports the use of a form of context sensitive help which has been the objective of help research for some time [1]. The next step in our current work is to carry the complete task decomposition through until run-time and attempt to keep track of the user task at a finer granularity. Given the proposed relationships to be stored for command enablement, the prospect of having low level task information combined with object selection has a great deal to offer in providing truly context sensitive help.
This has illustrated that the uses of task models are not confined to analysis activities but may successfully be applied throughout software development, including application design and implementation.