A Software Component Development Meta-Model for Product Lines

In this paper, we present an asset-based meta-model of software components for the development activities that supports a process going from a design specification down to the delivery of software components to the customer. We think that such a meta-model is needed to clarify software component-based development and ease the identification and realisation of variability in the context of domain engineering. This meta-model covers three activities we name “design”, “implementation”, and “delivery”. Our meta-model allows the expression of the development transformations such as software component composition, splitting up, abstraction and refinement. We stress the flexibility brought by this meta-model, such as the possibility to progressively take the contextual dependencies into account and delay technological choices. Finally, we present an approach to reuse not only implementation components but also whole parts of a component-based development, possibly including variability. Such COTS with variability can become domain-engineering building blocks for product-lines.