Designing reconfigurable systems: Methodology and guidelines