1. Introduction
One of the most compelling reasons for adopting component-based approaches in software development, with or without objects, 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].