Assuming a suitable component packaging capability exists, the next challenge involves configuring packages in accordance with the appropriate configuration parameters of the middleware platform. Configuration of middleware involves selecting the right set of tunable knobs and their values at different layers of the middleware. For example, in QoS-enabled component middleware such as CIAO, both the components and the underlying component middleware framework may have a large number of configurable and tunable parameters, such as end-to-end priorities, size of thread pools, internal buffer sizes, and data marshaling strategies. These parameters can be set at various stages of development lifecycle, such as during composing an application or deploying an application in a specific environment. The goal is to satisfy the functional and systemic requirements of DRE applications by taking into account the properties of the target environment, without prematurely committing to physical resources, such as a specific host machine or choice of a network. For multi-layer middleware, such as CIAO, there exist multiple layers of middleware that must be configured. More so, the configuration parameters chosen at different layers must be semantically compatible with each other.
CoSMIC comprises the following tools for multi-layer middleware configuration: