Program Specialization, Program Optimization, Pervasive Computing, Program Analysis, Cost Analysis, Resource Consumption Analysis, Abstract Interpretation, Global Analysis, Logic and Constraint Programming, Declarative Programming.
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 European Commission 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 optimize 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, using powerful tools and techniques for static analysis and specialization of systems.
The final objectives of the ASAP project are, from more general to more concrete:
In turn, the objectives above will only be achievable if the following scientific objectives are fulfilled:
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:
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 automating code generation for pervasive computing applications. We expect that the proposed project will make several important contributions: