Computer programs at your service
If you want to use a computer to solve a specific problem, there are normally two options. The first is to use "off-the-shelf" software like Access or Excel, but this is often not possible for larger businesses, or for smaller companies or individuals whose needs aren't entirely mainstream. For such cases, you either need to use off-the-shelf software and (often repetitive) manual work to get the required result or get a software development team to write special-purpose software.
The disadvantages of the latter are that it takes time and money to get the product and that more often than not it does not exactly do what the user wants. It is easy to identify two reasons for this: the software development team didn't really understand the problem domain and hence couldn't understand what was required. Also, the requirements might have changed from the initial version.
Fast forward to the future: A biologist requires a program that checks her recent genetics results against similar results stored (in different formats) around the world, performs some statistical analysis of the differences that show how significant her results are and presents the details in a graphical fashion. She simply goes to a special web application, logs in and describes what she wants to do in her own terms. The web application assembles and executes a program on the fly and after a short wait presents the biologist with the results that she wanted.
The Ad-Hoc Web Applications project at Leicester, led by Dr Reiff-Marganiec, investigates how this can be achieved. The basic building blocks are services (small pieces of software) adressing specific tasks (such as translating data to a common format, performing a 2-way Anova on a data set). These services in themselves are rather simple and are written by specialists. Technologies to develop and make services available via the web already exist -- however, to combine them one still requires programmers.
On the end-user side there are tools to define rules (policies) in the end-user's lingo that describe their preferences (e.g. "I always want to compare my data against that stored by other scientists in my research group and that at the XYZ lab but I don't trust those of Dr Smith", "I use Anova tests to establish variance", "I like results as bar charts") and requirements ("Here is new data and I need a variance analysis"). Expressing end-user goals by policies has been explored in the area of telecommunications very recently and been considered to be useful.
Our aim is to make it possible for service composition to be driven by policies that end-users formulate, in a natural and easy way, as high-level goals that the composite system should achieve. The specification of such policies should ensure that the self-assembled application fulfils the end-user's requirements to the same extent that a special purpose application would, without a programmer having to be involved. This is a complex problem that involves many deep research aspects. Questions to be addressed include "How can user's express their preferences and requirements?", "How can services be combined in dynamic ways (on-the-fly)?", "How can we map between the users intentions and the services", "What if user intentions are contradictory? (maybe Dr Smith has moved to XYZ lab)". Also, what if services are charged for but we only have a limited budget for their use? And what about alternative services which might be available (or a service temporarily not being available)?