Revision with unchanged content. Building software systems from previously existing components can save time and effort while increasing productivity. The key to a successful Component-Based Development (CBD) is to get the required components. However, components obtained from other developers often show different behaviours than what are required. Thus adapting the components into the system being developed becomes an extra development and maintenance cost. This cost often offsets the benefits of CBD. Imprecise component specifications and user requirements are the main reasons that cause the difficulty of finding the required components. Furthermore, there is little support for component users and developers to collaborate and clear the misunderstanding when selecting components, as CBD has two separate development processes for them. This book aims at building a framework in which component users and developers can collaborate to select components with tools support, by exchanging component and requirement specifications. These specifications should be precise enough so that behavioural mismatches can be detected. This book would interest software developers and component vendors. It is also a reference for researchers in component-based software engineering.