Towards an Engineering Approach to Component Adaptation