The overall aim of this project is to develop techniques which enable the development of sophisticated and reliable software systems that are easy to maintain, and can be deployed on new generation, pervasive computing platforms.
Such platforms are becoming ever smaller and more powerful, and are embedded everywhere, even in living organisms. They can contain sophisticated models of our personal environment that help us to make everyday decisions; they have the power to do mathematical and logical reasoning in order to perform intelligent tasks. As a result, system development and validation techniques have to keep pace with the huge requirements for intelligent, user-oriented applications that must run on devices with reduced computing resources.
Development tools for pervasive computing platforms has been identified by the EC as one of the main areas that require drastic improvements. Indeed, the development tools available for such pervasive computing platforms are lagging behind the state-of-the-art and there is a strong need by industry to optimise development cost, reliability, and time to market. Unfortunately, the tendency of current software engineering techniques is to produce more and more bloated, general-purpose systems, built from large libraries of pre-written modules. While this approach can increase productivity and reliability, it is wasteful of computing resources. Pervasive system developers are always forced to operate on the boundaries of available computing resources, even though processors, storage and communication networks are getting cheaper. One wants to pack as much functionality as possible into a given device. The main approaches adopted are either to produce by hand "stripped-down" versions of full systems in an ad-hoc manner, or to write applications from scratch taking limited resources into account. This project proposes a different approach: the automated generation and validation of specialized systems from general ones.
The final objectives of the ASAP project are, from more general to more concrete:
1. To automate as much as possible the development of sophisticated and reliable software Systems for pervasive computing platforms;
2. To develop a novel method for system development for pervasive computing, based on the automatic generation of specialized systems e.g. from general, already existing ones;
3. To develop a novel integrated tool which implements the above method and make it available to system developers as open source code.
In turn, the objectives above will only be achievable if the following scientific objectives are fulfilled:
1. To study the particular needs and requirements of pervasive computing applications. This will be possible by the collaboration within the project of experts in pervasive computing with experts in techniques for program analysis and transformation;
2. To advance the state of the art in analysis and specialization techniques. Factors often neglected by existing techniques, such as memory usage and low-level efficiency issues should also be taken into account;
3. To pay special attention to correctness issues, both at development and exploitation time. Pervasive systems often interact with other systems which may in turn provide erroneous data;
4. To make our techniques capable of dealing with all the features of realistic programming languages. Many existing tools and techniques are only useful for toy programming languages or restricted versions of real ones;
5. To apply the method and tools proposed to a set of case studies in pervasive computing. This would provide both feed-back and measurable criteria for the degree of success of the project.
DESCRIPTION OF WORK
In order to implement the integrated tool mentioned above, we will use Constraint Logic Programming (or CLP for short).
There are several reasons for this:
- The ASAP partners all have considerable practical experience of building and using analysis and specialization tools based on CLP;
- The state of the art in program analysis and transformation is at least as advanced for CLP as for other languages - and arguably more advanced in practical terms;
- CLP languages have a comparatively clean semantics which makes them amenable to automatic analysis and transformation techniques. These first three points will, in our opinion, greatly contribute to keep the risk level of the project within reasonable bounds, while allowing the exploration of highly innovative techniques for system development;
- One of the partners is the developer of an advanced CLP system distributed as free software. Thus, required improvements to the system will be readily available, and it will be possible to distribute a self-contained, open source version of the integrated tool;
- CLP has a great potential for the implementation of intelligent, user-oriented applications. Note, however, that the fact that we plan to implement the tool in CLP does not mean that the source programs the tool can analyze and specialize are restricted to CLP programs. In addition to CLP, the tool will handle programs written in other paradigms via the use of implemented semantics. This is possible because CLP provides a suitable platform on which to build a wide variety of semantic models for other formalisms, including imperative, functional, concurrent and object-oriented languages, implementing both hardware and software systems. It is also important to stress that the goal of the project is not to propose CLP as the language to implement all pervasive computing applications but rather to demonstrate that improved techniques for program analysis and specialization are ideal candidates for automat ing code generation for pervasive computing applications.
We expect that the proposed project will make several important contributions:
- Provide a thorough study of the particular requirements for software development found in the context of pervasive computing;
- Develop an important, programming-language independent, body of knowledge about resource-aware program analysis and specialization techniques;
- Develop tools for the improvement of programs with respect to resource consumption (memory usage, size of program, number of execution steps), which is essential in the context of pervasive computing, but is also useful for program development in general;
- Make freely available an integrated tool which implements all the techniques developed in the project;
- Demonstrate systematic techniques for applying CLP analysis and specialization tools to code written in other languages, via implemented semantics;
- Develop methods for transferring the technology developed in this project to similar automated systems aimed at developing pervasive computing applications in other programming paradigms.
Funding SchemeCSC - Cost-sharing contracts
BS8 1TH Bristol
SO17 1BJ Southampton