Towards a component-based, model-driven process supporting variability of real-time software