Runtime Service Composition via Logic-Based Program Synthesis

Sven Lämmermann · KTH Publication Database DiVA (KTH Royal Institute of Technology) · 2002

Dynamic composition of services from components at runtime can help to provide flexible service infrastructures, but requires advanced composition techniques. To address this problem, we have developed a composition method that is tailored to services. The method integrates an efficient deductive program synthesis technique with a specification language. The work is realized in the context of an objectoriented software platform. The platform introduces a declarative extension to an object-oriented programming language in order to combine advantages of objectoriented programming with positive sides of declarative programming. We introduce the notion of declarative service programming. The declarative part uses the extended structural synthesis of programs, which we have developed. The extended structural synthesis of programs is an extension of the structural synthesis of programs (SSP). In contrast to the original SSP, our extensions allow program composition for dynamic environments. In pure SSP, the context in which components are used has to be specified in advance, i.e. statically. Service configurations are represented as classes and interfaces. We introduce metainterfaces as logical specifications of classes. They can be used in two ways: as specifications of computational usage of classes or as specifications of new classes composed from classes already supplied with metainterfaces. A metainterface is a specification that 1) introduces a collection of interface variables of a class, 2) introduces axioms showing the possibilities of computing provided by methods of the class, in particular, which interface variables are computable from other variables under which conditions, and 3) introduces metavariables that connect implicitly different metainterfaces and reflect on the conceptual level mutual needs of components. Our aim in designing the specification language has been to make it as convenient as possible for a software developer. This language allows a simple and exact translation into the language of logic used by the synthesis process, but we have tried to avoid excessive use of logical notations. We have implemented a prototype for automated compositional synthesis. It has been used in several experiments to show the feasibility of fully automated service composition. We describe some service composition examples. We present performance measurements of service compositions involving large number of component specifications. Our prototype implementation has shown good synthesis performance for services occurring in practice.

Read the paper · More papers on PaperTik