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
component-based applications to perform daily tasks [7].