A Refinement Driven Component-Based Design