Whole-part relationships for software component combination

Reusability is a key factor for the success of the development of low-cost applications. Component-based software engineering (CBSE) aims to address this challenge by providing flexible and easy to use software components. Composability is a key concern of CBSE because software components collaborate with difficulty in spite of the fact that they are known to be compositional. Here we propose to formalize a special kind of composability, based on high coupling in which fine-grained components are encapsulated inside high-granularity components that are deployed on the same node. We specifically study the properties of the universal whole-part relationship within a composition framework. We constrain composition design by means of rules derived from the whole-part relationship. These constraints are used to generate contracts at implementation time. Finally, we incorporate built-in test functionality into components to support runtime validation.