Towards an integrated approach for managing the variability and evolution of both software and hardware components