Software reuse is one of the main methods to improve development efficiency.
In order for a software component to be reusable in various contexts, it has
to provide a high degree of configurability. This is usually paid for with
run-time resources like CPU cycles and memory requirements. In the market
segment of high volume production embedded systems (e.g. automotive market),
the additional per device costs often surpass the savings in development
costs. This is why there is usually a low level of reuse in embedded systems
code.Vendors of certain software components for the embedded market (e.g. operating systems) address this problem by the application of software generators. These generators compute an optimized version of the software component given the application's design parameters. In contrast to the parameters and variables which are dynamic at run time of a given application, design parameters (or static parameters) are already known at design time. The generator concept allows a high level of flexibility without sacrificing run time efficiency.
Designing software generators is different from the usual development process. Research in the field of `Generative Programming' aims at providing methods and tools to support this task. `Partial Evaluation' promises to provide some means of automation. A partial evaluator computes an optimized version of a program, given it's source code and information on which of the program's variables are static as well as the values of these variables. Our research focuses on applying partial evaluation in the development process for embedded system software components.