Typical user interfaces for user control of devices such as CE devices (e.g., TV, VCR, DVD player, CD player, etc.) are such that user tasks are not represented in the devices. Instead, a set of device functions are presented to the user and the user selects combinations of these device functions to perform a task. For example, to watch a video tape requires the user to select the input (e.g., tape), rewind the tape and press play on a VCR. As a result, the user cannot simply specify that he/she wishes to ‘watch’ ‘video tape’ to automate the above operations. Users cannot express desired tasks to be performed (e.g., ‘watch’ ‘video tape’), rather users must directly control devices to perform desired functions (e.g., selecting the input, rewinding the tape and pressing play on a VCR).
This is similar to conventional software architecture wherein tasks map into the idea of an application. For example, if a user wants to write a letter, the user runs a word processor that has the appropriate functionality. However, apart from a well known functionality mapping to a well-known name, this expresses little to the user. Another alternative has been to present the user with a set of options in the form of a menu. Several systems allow well-known tasks to be listed in menu options (e.g., spell-check document or instant record on a VCR). However, such systems only provide device functions to the user.
Yet another alternative has been to allow a user to express the task graphically (e.g., using lines to connect together a set of depicted devices to perform a desired task). The problem with this approach is that it does not mask the complexity of using the devices from the user. It simply graphically represents the function selections to the user and asks the user to specify the connections necessary to perform a task.
Yet another alternative has been a system that discovers devices, and thereby the services available in an ad-hoc environment. The system identifies the services that could be aggregated and finally suggests the possible service combinations to the user. While suggesting the aggregated service combinations to the user, the system scores the services based on any user preferences set and execution history for the user and displays the service with the highest score to the user. However, in such a system the services are ranked based on user preferences and execution history without considering the context of the user, which results in scoring the services in a way that does not reflect the user intentions at that particular instant.