The project will develop formalisms for dynamic assembly, reconfiguration and type-checking of complex distributed software systems, such as telephone and banking systems, that should be kept running as they evolve through patches or upgrades, and should be able to adapt to changes in the environment. Such formalisms will advance the state of the art in modelling the "temporal" dimension of Global Computing (GC), where the ability to interleave meta-programming activities, like assembly and reconfiguration, with computational activities is a must. The development of these calculi will rely on decisive progress in three areas: calculi for dynamic assembly, calculi for object evolution and adaptation, flexible and compositional type systems.
The project aims to advance the state of the art in modelling and programming software evolution while retaining safety.
More specifically: - We will provide foundational calculi for dynamic assembly and reconfiguration which will be able to describe separate compilation, run-time code generation, dynamic linking and loading. - We will design foundational calculi supporting object capable of changing their behaviour, e.g. by changing class, as well as calculi that are environment adaptable, e.g. able to test existence of objects in the execution environment. - We will develop type systems that support "compositional analysis" through the existence of "principal typings", show how to use such type systems for separate compilation and incremental type inference, and address the issue of combining dynamic type-checking with dynamic assembly and reconfiguration.
DESCRIPTION OF WORK
The project is organized in 5 Workpackages (WPs).
The first three WPs:
1. Frameworks and Calculi for Dynamic Software Assembly;
2. Flexible and Compositional Type Systems;
3. Calculi for Object Evolution aim to develop the calculi and type systems identified as key project objectives.
The main goal will be to carry out the foundational work, which will take the form of frameworks for dynamic assembly and reasoning about properties of different assembly strategies, calculi for object evolution and adaptation, type systems with properties that will make them particularly suitable for use in a dynamic context.
The other two WPs:
4. Applications to Prevalent Languages;
5. Flexible Dynamic Type. Checking for Dynamic Software Assembly are downstream (their feasibility will be re-assessed at the first review point on month 12 of the project), their rationale is:
- to test the portability of innovative ideas expected from WPs 1 and 3, namely facilities supporting object evolution (i.e. allowing an object to change its class or the code of its methods) and environment-adaptable programming, to a major programming language. Such a language will be chosen (at the time of the first review) among the prevalent ones for GC. The emphasis on objects is motivated by the expectation that in any successful language for GC the object paradigm will play a major role;
- To test how the innovative ideas expected from WPs 1 and 2 (and developed fairly independently, but with portability in mind) can be merged in a unifying framework that will account for dynamic assembly, reconfiguration and type-checking. The combination of dynamic type checking with dynamic assembly and reconfiguration is essential, since addressing these issues separately will either fail to guarantee safety and efficiency or be significantly less useful in the GC environment.
Funding SchemeCSC - Cost-sharing contracts
EH14 4AS Edinburgh
SW7 2AZ London