Decomposition of Distributed Programs into Communication-Closed Layers