Specialization modules
What is a specialization module ?
We have developed a declarative approach that aims to integrate program
specialization into the software development process to systematically and
efficiently instantiate/configure generic software components. Our approach
relies on a declaration language which enables a component developer to express
the configurability of a component. The declarations consist of a collection
of specialization scenarios that precisely identify what program constructs
are of interest for specialization. The scenarios of a component do not clutter
the component code; they are defined aside in a specialization module
.
Specializable components are created from the declarations and the component
code through a compilation process. This phase mainly corresponds to carrying
out several analyses to automatically determine how to specialize the component
accordingly to the declared specialization scenarios. Once generated, specializable
components can be distributed to be tailored by application builders by
specifying appropriate specialization values.
We have designed our declaration language in the context of the C language
and implemented the corresponding compiler. We have used our specializer,
named Tempo
, as our specialization engine to which we have added verifications in order
to make the specialization process predictable with respect to the declarations.
We have also developed a graphical environment both to assist the component
developer in the process of making components specializable and to enable
component users to create specialized components.
Papers
-
An Environment for Building Customizable Software Components
A.-F. Le Meur, C. Consel, B. Escrig
In IFIP/ACM Conference on Component Deployment, pages 1-14,
Berlin, Germany, June 20-21 2002.
-
Towards Bridging the Gap Between Programming Languages and Partial Evaluation
A.-F. Le Meur, J. L. Lawall, C. Consel
In ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based
Program Manipulation (PEPM '02),
pages 9-18, Portland, OR, USA, Jan 14-15 2002.