Component-based software development (CBSD) involves multiple roles. Framework builders create the infrastructure for components to interact; developers identify suitable domains and develop new components for them; application assemblers select domain-specific components and assemble them into applications; and end users employ components based applications to perform daily tasks [7].