For the results of computer-based scientific calculations to be useful, the computer programs that produce these results must be carefully checked for errors. The ReQueST project provides automatic methods for checking e-Science applications for errors which would cause the program to fail because it runs out of resources such as memory or allotted processing time.
The ReQueST project uses state-of-the art computer science technology to attach mechanically-checkable certificates of resource consumption in the form of mathematical proofs to mobile Java applications. This 'proof-carrying' approach to mobile code allows code producers to ship programs to code consumers in such a way that a wary consumer can quickly check key properties of the code - in this case, its maximum resource usage - before running it. In this way, service providers can protect themselves against errors in user-supplied code.
Grid Services technology provides such a collaborative service-provider framework for virtual organisations involved in e-Science. The ReQueST project builds proof-carrying code technology into the Grid Services framework by supporting it from application code up to the service description level. In this way the Request project advances the current state-of-the-art in the Grid technology used in e-Science.
For the results of computer-based scientific calculations to be useful, the computer programs that produce these results must be carefully checked for errors. The ReQueST project provides automatic methods for checking e-Science applications for errors which would cause the program to fail because it runs out of resources such as memory or allotted processing time.
The ReQueST project uses state-of-the art computer science technology to attach mechanically-checkable certificates of resource consumption in the form of mathematical proofs to mobile Java applications. This 'proof-carrying' approach to mobile code allows code producers to ship programs to code consumers in such a way that a wary consumer can quickly check key properties of the code - in this case, its maximum resource usage - before running it. In this way, service providers can protect themselves against errors in user-supplied code.
The research took advantage of related work on proof-carrying Java code for mobile devices conducted in parallel by ourselves and our partners under the European-funded Mobius Integrated Project. This enabled us to pursue additional work on formalising the Java memory model and studying the validity of common optimisations on multi-threaded programs, which showed that important program transformations such as common subexpression elimination are unsafe, despite claims to the contrary. Further topics included separation logic and polytope-based methods for resource bound analysis.
The analysis techniques used to produce certificates are being developed further in a commercialisation project which aims to produce user-friendly technology for detecting common faults in Java code.