News

Parametric Composition of Components

A basic requirement of any structural system supporting modular reuse of components is the ability to use parameters to customize the behavior of components. However, it is frustrating and limiting if only primitive (or leaf) components are parameterizable. As a result, a mechanism for parameterizing new components created from existing components is required.

A common paradigm for parameterized composed components is to restrict the use of parameters in composed components such that a composed component's parameters can only be used to define sub-component parameters. However, in a structural system, components are often composed structurally and behavior is heavily determined by structure. Thus, parameters should be able to control the structure of the composed components (i.e. the connections among the existing components that constitute the composed component) in addition to the usual sub-component parameter setting capability.

Often, this structural parametricity is limited to very regular structures such as the size of arrays of regularly interconnected blocks. The difficulty with this approach is that slight irregularities preclude the parametricity of a composed component. Our work with the Liberty Simulation Environment (LSE) has lead us to conclude that parameters should be able to control structure through reasonably rich programming language constructs.

Note, however, that providing reasonable semantics for such a component composition language in the presence of type inference and a desire to keep simple specifications simple is non-trivial. More information on the construction of a model specification language that meets these requirements is forthcoming.

Synergies and Interactions

All the features and abstractions listed on the main page play a role in the construction of the overall specification language (including component composition features). This is because the semantics of this language play an important role in all areas of specification and thus decisions pertaining to this area affect all the others, including Component Polymorphism, Component Computation Customization (CCC), Data Abstraction, and Parametric Scalability.

The type system used for basic data types on connections will influence the semantics of the polymorphism as well as any type inference. The requirements for type inference, CCC, and polymorphism will affect what the natural programming language structures for composing components will be, especially with regard to composite data types. More information regarding these design tradeoffs will be available in the future pages describing the design of the Liberty Structural Specification (LSS)