System-level Design Technologies for Heterogeneous Distributed Systems