[competencies] Research:
System Development with Generic Components
Competencies HomepagePublicationsActivitiesWhat else?
overviewprojectspastprojectsresearchawardspaperslecturescv
Generic ComponentsSystem DevelopmentDesign SpacesUsing Design Spaces
 
 

The generic component-based software development process centers around three main activities: component selection, component configuration and instantiation, and composition.
 

Component selection

This activity concerns the hierarchical selection of best fitting components, i.e. components which meet the application requirements best. At the top most level of abstraction, this comprises selecting a system architecture and thereby a functional decomposition into components. Thus, the type of components to be used and their architectural environment are chosen. On the next levels, components and sub-components are chosen from a pool of reusable components to instantiate the architecture. The selection is done with respect to structural constraints as well as functional and non-functional properties.
 

Component configuration and instantiation

In most cases, the selected components will be generic components. As a consequence, they have to be configured and instantiated in order to implement the system (which is, in this context, the custom built run-time platform). Values of generic parameters have to be chosen, determining the concrete properties of the component. Tools will then instantiate the components, i.e., generate their source code.
 

Composition

The instantiated components are successively combined to form larger building blocks, thereby implementing the runtime platform under development. Components to be combined have to be compatible with respect to import and export interfaces, semantics, adherence to protocols, and other aspects of the system architecture. As far as possible, the dependency and compatibility statements are made based on the generic component, i.e., before the decision about exact values of generic parameters are made. In the case where the resulting properties of a configured component can be formulated as a function of the generic parameters and their values, the resulting properties can be predicted prior to component instantiation.
 

Although these activities might anticipate a strict ordering (selection, configuration/instantiation, composition), there are a lot of interdependencies rendering a sequential approach unapplicable. For example, configuring a component can show that the desired properties can not be adjusted, making it necessary to go back and choose a different component. In the same way the selection phase is dependent from the composition phase since only those components should be selected that can sensibly be combined -- as an example on a higher level of abstraction, it is generally counterproductive to combine hard real-time scheduling with virtual memory management. There also dependencies existing between component instantiation and composition. Mismatches found while combining components can, e.g., pose requirements on adaptor components to be configured and instantiated (e.g., if a component is not constructed for remote invocation, it is possible to encapsulate it in an RPC or ROI object which has to be configured accordingly).
 

 
Homepage | Competencies | Publications | Activities | What else
Nov-2004