1. Introduction
One of the most compelling reasons for adopting component-based approaches to software development is the premise of reuse. The idea is to build software from existing components primarily by assembling and replacing interoperable parts. The implications for reduced development time and improved product quality make this approach very attractive [1].