Component-Based Software Engineering: Putting the Pieces Together