A Unifying Platform-Based Approach for the Design of Heterogeneous Systems