Design of heterogeneous cyber-physical systems